Top

AWS를 통한 효과적인 데브옵스 구축 2/e [테라폼, 앤서블, 깃허브 등 다양한 AWS 도구 사용하기]

  • 원서명Effective DevOps with AWS, 2nd Edition: Implement continuous delivery and integration in the AWS environment (ISBN 9781789539974)
  • 지은이요게쉬 라헤자(Yogesh Raheja), 주세페 보르게세(Giuseppe Borgese), 나다니엘 펠슨(Nathaniel Felsen)
  • 옮긴이이준호
  • ISBN : 9791161754536
  • 35,000원
  • 2020년 09월 23일 펴냄
  • 페이퍼백 | 512쪽 | 188*235mm
  • 시리즈 : 클라우드 컴퓨팅

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/effective-devops-aws-2e

요약

테라폼, 앤서블, 깃허브, AWS 코드 파이프라인 등을 활용한 데브옵스 구축을 위한 지침서다. 1판에서는 트로포스피어(Troposphere)라는 파이썬 라이브러리를 이용한 클라우드 포메이션 스크립트 생성으로 인프라를 구성한 반면에서 2판에서는 잘 알려진 테라폼으로 인프라를 구성해 1판에 비해는 좀 더 일반적인 방법을 제시한다. 데브옵스를 실현하기 위해서는 많은 솔루션을 사용할 수 있어야 한다. 이 책을 통해서 데브옵스에 관한 전반적인 솔루션을 이해하고 실제 코드를 다룰 것이다. 이 책이 100% 정답은 아니더라도 데브옵스의 전체 라이프사이클을 빠짐없이 경험해 볼 수 있을 것이다.

이 책에서 다루는 내용

■ 클라우드 포메이션을 이용해 자동화된 AWS 인스턴스 프로비저닝 구현
■ 앤서블로 프로비전된 인프라에 애플리케이션 배포
■ 테라폼을 이용해 인프라 관리
■ AWS상의 자동화된 테스트로 CI/CD 파이프라인 구축 및 배포
■ AWS ECS를 이용한 CI/CD 파이프라인을 위한 컨테이너 이해
■ AWS 환경 모니터링 및 보안 강화

이 책의 대상 독자

개발자, 데브옵스 엔지니어 또는 소프트웨어 인프라에 AWS를 사용해 구축하는 팀과 같이 일하고 있다면, 이 책은 당신을 위한 책이다. 그러나 이 책을 최대한 활용하려면 기본적인 전산 과학 지식이 요구된다.

이 책의 구성

1장, ‘클라우드와 데브옵스 혁명’에서는 데브옵스와 클라우드 여행을 시작하는 모든 사람에게 기초 지식을 제공한다. 데브옵스 문화, 데브옵스 용어 및 AWS 생태계에 대한 이해는 다음 장들의 이정표가 될 것이다.
2장, ‘첫 번째 웹애플리케이션 배포하기’에서는 AWS 인증 모범 사례 실습 및 가장 간단한 형태의 AWS 인프라 프로비저닝을 연습한다. 간단한 웹 애플리케이션을 작성해 가장 단순한 형태로 애플리케이션을 AWS에 배포하는 방법을 배우고 그 후 인스턴스를 종료한다. 모든 절차를 AWS CLI로 구현한다. 사용 가능한 여러 AWS 서비스와 그 밖의 유명한 서비스 및 제품을 이용해 수동 작업을 자동화하는 방법을 배우고, 다음 장부터 자동화를 구현한다.
3장, ‘코드로 인프라 다루기’에서는 AWS 기본 도구인 클라우드 포메이션과 클라우드 포메이션 템플릿 작성에 사용하는 기법을 이용해 프로비저닝 자동화를 처리한다. 그런 다음 애플리케이션 배포를 자동화하는 구성 관리 시스템 앤서블을 소개한다.
4장, ‘테라폼 코드로 인프라 다루기’에서는 테라폼의 기본을 다룬다. 테라폼 템플릿으로 첫 번째 AWS 인스턴스를 프로비저닝하고 또 다른 테라폼 템플릿으로 애플리케이션을 배포해 테라폼 구현 능력을 키운다. 끝으로 테라폼과 앤서블을 활용해 인프라 프로비저닝 및 애플리케이션 배포 자동화를 통합하는 AWS 프로비저닝을 다룬다.
5장, ‘연속 통합과 연속 배포 추가하기’에서는 자동화된 테스트 프레임워크가 포함된 AWS의 데브옵스 서비스를 사용해 CI/CD 파이프라인을 구성한다. 버전 컨트롤, 연속 통합, 테스트 자동화 도구, AWS 기본 데브옵스 도구 및 인프라 자동화 도구 같은 여러 도구를 이용한 기술 프레임워크를 준비해 얼마나 빨리 실패해야 하고 이런 잦은 실패가 어떻게 안정적인 상용 환경을 이끄는지 배운다.
6장, ‘인프라 확장하기’에서는 확장 가능한 AWS 인프라를 구축하는 데 있어 비용 효율적이고 유용한 AWS 서비스를 소개해 성능에 기반한 비전을 제시한다. 일래스틱 캐시, 클라우드 프론트, SQS, 키네시스 등을 이용해 애플리케이션 프레임워크를 구축한다.
7장, ‘AWS에서 컨테이너 실행하기’에서는 도커 시장에서 가장 유명한 틈새 기술 중 하나를 소개한다. 도커를 통해 컨테이너에 대한 모든 개념을 배운다. ECS로 AWS 컨테이너 환경을 준비하고 애플리케이션을 위한 완벽한 ECS 프레임워크를 구축한다. 끝으로 AWS 데브옵스 도구셋을 이용해 AWS ECS에 서비스를 배포하기 위해 완벽한 CI/CD 파이프라인을 구축한다.
8장, ‘AWS 환경의 보안 강화하기’에서는 AWS 감사 서비스와 역할에 대해 제한된 접근을 제공하고 관리하는 AWS IAM 서비스를 배운다. 이를 통해 AWS VPC 모델을 강화하고 결과적으로 랜섬웨어와 기타 취약점으로부터 보호할 수 있게 하고 AWS 환경의 변화를 인지하고 보안을 강화하는 방법을 배운다.
9장, ‘모니터링과 알람’에서는 AWS 클라우드 와치 서비스를 이용해 AWS 환경 모니터링 프레임워크를 구축한다. 로그를 시각화하기 위한 일부 유명한 대시보드 도구를 이용한다. 끝으로 AWS SNS 서비스를 이용해 알람 프레임워크를 생성하고, 사용자에게 AWS 환경의 정상 여부를 알린다.

저자/역자 소개

지은이의 말

데브옵스 운동은 현대 기술 회사의 일하는 방식을 변화시켜왔다. 클라우드 컴퓨팅 혁명의 선두 주자인 아마존 웹 서비스(AWS, Amazon Web Services)는 데브옵스 원칙을 구현하는 데 도움이 되는 넓은 범위의 관리형 서비스를 출시했으며 데브옵스 운동의 핵심 공헌 회사이기도 하다. 이 책에서는 기술 스타트업이 AWS에서 서비스를 시작하고 확장하는 방법을 이해하고 적용하는 방법을 배운다. 이 책은 인프라를 코드로 취급하는 방법을 설명한다. 인프라를 코드로 취급한다는 것은 인프라 리소스를 소프트웨어를 다루듯이 쉽게 온라인과 오프라인으로 구축하는 것을 의미한다. 또한 애플리케이션을 최신으로 유지하도록 연속 통합과 연속 배포 파이프라인을 구축한다.
모든 내용을 다룬 후 컨테이너 같은 최근 기술을 이용해 트래픽 폭증에도 사용자에게 최대의 성능을 제공하도록 애플리케이션을 확장하는 방법을 배운다. 또한 모니터링과 알람도 살펴본다. 이를 통해 서비스를 이용하는 데 있어 가장 좋은 경험을 사용자에게 제공할 수 있다. ‘결론’에서는 많은 AWS 관리자가 데브옵스를 사용할 때 활용하는 클라우드 포메이션, 코드 디플로이 같은 내장형 AWS 도구를 다룬다.
이 책의 끝에서는 가장 최신이자 가장 훌륭한 AWS 도구를 이용해 플랫폼과 데이터의 보안을 보장하는 방법을 배운다.

지은이 소개

요게쉬 라헤자(Yogesh Raheja)

IT 분야에서 10년째 활동해온 공인 데브옵스 및 클라우드 전문가다. OS, 소스 코드 관리, 빌드 및 배포 도구, 연속 통합/배포/전개 도구, 컨테이너, 구성 관리 도구, 모니터링, 로깅 도구 및 공용/사설 클라우드 기술 전문가다. 기술적인 전문성을 전 세계의 청중들에게 콘퍼런스, 웨비나, 블로그 링크드인으로 공유하는 것을 즐긴다.
『Automation with Puppet 5』와 『Automation with Ansible』을 집필했으며, 유데미(Udemy)에 온라인 강좌를 개설했다. 또한 『Implementing Splunk 7, Third Edition』, 『Splunk Operational Intelligence Cookbook, Third Edition』 같은 팩트출판사의 여러 책들도 검토했다.

주세페 보르게세(Giuseppe Borgese)

현재 지멘스(Siemens)에서 데브옵스 AWS 전문가로 일하고 있다. 인터넷 기술 석사 학위를 취득했으며, 공인 자격증을 4개 갖고 있는 AWS 공인 데브옵스 엔지니어 전문가다. AWS 튜토리얼 시리즈가 포함된 유튜브 채널과 리눅스 아카데미 같은 유명한 블로그의 수많은 기사 등을 통해 AWS 커뮤니티에 공헌해왔다. 또한 VMWare와 시스코의 자격증을 갖고 있다. 이 책은 그의 두 번째 책이자 팩트출판사에 출간된 첫 번째 책이다. 이 책에서는 6장 ‘인프라 확장하기’와 8장 ‘AWS 환경의 보안 강화하기’를 집필했다.

나다니엘 펠슨(Nathaniel Felsen)

10여 년 전 용어조차 없던 시절 데브옵스 엔지니어링 개념으로 작업을 시작했던 데브옵스 엔지니어다. 작은 스타트업 회사에서 시작해 쿨리스(Qualys), 스퀘어(Square), 최근에는 미디엄(Medium) 같은 대기업까지 여러 회사에서 일했다.
직장 밖에서는 활동적인 자녀들을 돌보고 아내와 가끔 데이트하는 저녁을 즐기는 멋진 삶을 살고 있다. 프랑스인이지만 와인보다는 친구들과 함께 현지의 스타우트 맥주를 즐겨 찾는다. 프랑스의 컴퓨터공학 관련 명문 대학교인 EPITA(Ecole Pour l'Informatiqueet les Techniques Avancées)에서 시스템, 네트워크 및 보안 관련 석사 학위를 취득했다.

옮긴이의 말

이 책은 2018년 출간된 『AWS를 이용한 데브옵스 완벽 구축』의 개정판이다. 2년의 시간이지만 참 많은 것이 변했다. 번역 당시에 데브옵스는 생소한 개념이었으나 이제 데브옵스는 당연한 절차로 여겨진다. 클라우드의 저변 확대로 인프라 구성을 수작업으로 하는 경우는 IDC 기반 일부 서비스 외에는 사라진 것 같다. 초반에 AWS 기반으로 인프라 및 서비스 플랫폼 구성 시, 각 서비스별로 설치 스크립트를 작성하고 테스트하고 수작업으로 인프라 구성을 했었다. 실제 장비 도입에 따른 시간 지연 없이 빠르게 인프라를 구성할 수 있었기 때문에 시간 내의 성공적인 구축이 가능했다. 그 후에도 빠른 구축의 장점으로 적극적으로 AWS를 활용해 인프라를 구성했지만 시간이 경과하면서 데브옵스를 기반으로 구축하지 않은 관계로 유지보수에 많은 어려움을 겪게 됐다. 그 후에 코드 기반 인프라 구성 관리를 제안 및 도입했지만 상용에 운용 중인 기존 서비스에 데브옵스를 적용하기는 쉽지 않았다. 그래서 그 이후에 구성되는 신규 서비스는 모두 코드로 구성해 관리하게 하고 그대로 진행 중이다. 한 발 더 나아가 컨테이너 기반(도커, 쿠버네티스)으로 구축을 진행했고 현재는 모든 인프라 및 서비스의 설치 변경은 모두 소스 관리 시스템을 기반으로 한 코드로 진행되고 있다. 이로 인해 구축 속도가 매우 빠르고 구축된 스크립트의 재사용이 매우 편하다. 또한 인프라 변경도 소스로 관리되므로 변경 관리가 용이하다. 그리고 운영 부담이 대폭 줄어들어 시스템 엔지니어 한 명이 서비스 플랫폼을 통째로 관리할 수 있게 됐다.
이 과정을 겪으면서 초반부터 데브옵스로 시작하는 것이 얼마나 중요한지 알 수 있었다. 한번 구축하고 나면 그 이후 변경하기란 거의 불가능에 가깝다. 그러므로 초반에 적극적으로 데브옵스를 채택해야 나중에 큰 효과를 얻을 수 있다. 많은 소프트웨어, 솔루션, 방법론 등이 준비돼 있으므로 이제는 얼마든지 데브옵스의 채택이 가능한 상태다. 물론 내가 근무하는 곳의 환경이 이렇게 바뀐 것이므로 저변 확대라는 말로 일반화하기는 힘들 듯하다. 아직도 수작업으로 인프라를 구성하는 곳이 많을 것으로 예상하고 있다. 그러나 데브옵스의 적용은 정말 유익하다. 초반에는 여러 저항에 부딪히겠지만 이를 달성한 이후의 비즈니스 속도는 그렇지 않은 곳에서 도저히 따라오지 못할 수준의 빠른 전개가 가능할 것이다.

옮긴이 소개

이준호

서울대학교를 졸업하고 숭실대학원에서 소프트웨어공학을 전공했다. Open API 플랫폼, IPTV 콘텐츠 관리 플랫폼, UCC 콘텐츠 서비스 플랫폼을 설계, 구축, 운영했으며, IPTV 플랫폼에 대한 진단 및 개선 관련 컨설팅을 진행했다. 넥슨 코리아에 입사해 AWS 기반의 게임 서비스 플랫폼 설계 구축을 진행했고, 클라우드 포메이션, 테라폼, 앤서블, 깃을 활용해 AWS 관리형 쿠버네티스 플랫폼인 EKS에 데브옵스화된 게임 서비스 인프라 구축을 진행했다. 현재는 대학원에서 빅데이터, 머신러닝 및 AI 관련 수학 중이다.

목차

목차
  • 1장. 클라우드와 데브옵스 혁명
    • 인프라 관점이 아닌 클라우드 관점으로 생각하기
      • 자체 하드웨어 배포 대 클라우드 배포
      • 비용 분석
      • 적시 제공 인프라
    • 데브옵스 문화 받아들이기
      • 데브옵스의 기원
      • 개발자 대 운영자 딜레마
      • 상용 환경의 차이
      • 데브옵스 문화의 주요 특징
    • AWS에 배포하기
      • AWS 생태계를 최대한 활용하는 방법
      • AWS를 이용해 데브옵스 문화와 시너지를 이루는 방법
    • 요약
    • 질문
    • 더 읽을거리

  • 2장. 첫 번째 웹 애플리케이션 배포하기
    • 기술 요구사항
    • 계정 생성 및 구성
      • 계정 등록
      • 루트 계정에 멀티 팩터 인증(MFA) 사용하기
      • IAM에서 신규 사용자 생성하기
      • 명령줄 인터페이스(CLI) 설치하고 구성하기
    • 첫 번째 웹 서버 작성하기
      • 아마존 머신 이미지(AMI)
      • 인스턴스 유형
      • 보안 그룹
      • SSH 키 생성하기
      • EC2 인스턴스 띄우기
      • SSH를 이용해 EC2 인스턴스에 접속하기
      • 간단한 Hello World 웹 애플리케이션 생성하기
      • EC2 인스턴스 종료하기
    • 요약
    • 질문
    • 더 읽을거리

  • 3장. 코드로 인프라 다루기
    • 기술 요구사항
    • 클라우드 포메이션으로 인프라 관리하기
      • 클라우드 포메이션 시작하기
  • AWS 클라우드 포메이션 디자이너
    • 클라우드 포머
    • 클라우드 포메이션을 이용해 Hello World 예제 다시 작성하기
    • 클라우드 포메이션 콘솔에서 스택 생성하기
    • 템플릿을 소스 관리 시스템에 추가하기
    • 클라우드 포메이션 스택 업데이트하기
    • 변경 세트
    • 클라우드 포메이션 스택 삭제하기
  • 구성 관리 시스템 추가하기
    • 앤서블 시작하기
    • 컴퓨터에 앤서블 설치하기
    • 앤서블 플레이그라운드 생성하기
    • 앤서블 리포지터리 생성하기
    • 모듈 실행하기
    • 임의의 명령어 실행하기
    • 앤서블 플레이북
    • EC2 인스턴스에 깃과 앤서블 설치하기
    • 모니터링
  • 요약
  • 질문
  • 더 읽을거리

  • 4장. 테라폼 코드로 인프라 다루기
    • 기술 요구사항
    • 테라폼이란 무엇인가?
      • 테라폼 시작하기
      • 자동화된 프로비저닝을 위한 테라폼과 AWS
    • 테라폼 리포지터리 생성하기
      • AWS 인스턴스 프로비저닝을 위한 첫 번째 테라폼 템플릿
      • AWS 인스턴스 프로비저닝을 위한 두 번째 테라폼 템플릿
    • AWS, 테라폼, 앤서블 통합하기
      • 푸시 기반 접근법으로 앤서블을 테라폼에 통합
      • 풀 기반 접근법으로 앤서블을 테라폼에 통합
    • 요약
    • 질문
    • 더 읽을거리

  • 5장. 연속 통합과 연속 배포 추가하기
    • 기술 요구사항
    • CI 파이프라인 구축하기
      • 앤서블과 클라우드 포메이션으로 젠킨스 서버 생성하기
      • CI 환경 준비하기
      • CI 환경을 이용해 helloworld 애플리케이션 구현하기
      • CI 파이프라인 상용화하기
    • 연속 배포 파이프라인 구축하기
      • 연속 배포를 위한 새로운 웹 서버 생성하기
      • 코드 디플로이로 helloworld 애플리케이션 통합하기
      • AWS 코드 파이프라인으로 배포 파이프라인 구축하기
    • 요약
    • 질문
    • 더 읽을거리

  • 6장. 인프라 확장하기
    • 기술 요구사항
    • 모놀리식 애플리케이션
      • 모놀리식 애플리케이션이란 무엇인가?
      • 모놀리식 애플리케이션 확장하기
      • 모놀리식의 장점
    • 데이터베이스
      • 데이터페이스를 RDS로 이동하기
      • RDS 유형 선택하기
      • 백업
      • 다중 AZ
      • ElastiCache
    • 일래스틱 로드 밸런서(ELB)
      • 적합한 ELB 선택하기
      • 밸런서 배포하기
      • SSL 인증서 구성하기
      • ALB와 Auth0 통합
      • 로드 밸런서 프리워밍
      • 액세스/오류 로그
      • 다음 단계
    • EC2 머신 바깥으로 상태 정보 이전하기
      • 로그 내보내기
    • 오토스케일링 그룹 구성하기
      • 오토스케일링으로 이전하기
    • 마이크로서비스와 서버리스 사용하기
    • 요약
    • 질문
    • 더 읽을거리

  • 7장. AWS에서 컨테이너 실행하기
    • 기술 요구사항
    • Hello World 애플리케이션 도커화하기
      • 도커 시작하기
      • 도커 기본
      • 도커 이용하기
      • Dockerfile 작성하기
    • EC2 컨테이너 서비스 이용하기
      • 도커 이미지를 관리할 ECR 리포지터리 생성하기
      • ECS 클러스터 생성하기
      • ALB 생성하기
      • ECS helloworld 서비스 만들기
    • ECS에 배포하는 CI/CD 파이프라인 작성하기
      • 상용 ECS 클러스터 생성하기
      • 코드 빌드로 컨테이너 생성 자동화하기
      • 코드 파이프라인으로 배포 파이프라인 생성하기
      • 소스 코드에 클라우드 포메이션 템플릿 추가하기
      • 코드 파이프라인에 대한 클라우드 포메이션 작성하기
      • 클라우드 포메이션 스택 시작 및 구성하기
    • 요약
    • 질문
    • 더 읽을거리

  • 8장. AWS 환경의 보안 강화하기
    • 기술 요구사항
    • IAM 보안
      • 루트 계정
      • IAM 사용자의 비밀번호 정책 구성하기
    • 클라우드 트레일
      • VPC 플로우 로그
      • 단일 서브넷의 플로우 로그 생성하기
      • 플로우 로그 검증하기
      • VPC 플로우 로그 고려사항
    • VPC 서브넷
      • 라우팅 및 서브넷 유형
      • 엔드포인트 라우팅
    • AWS WAF
      • 웹 애플리케이션 플레이그라운드 환경
      • DoS/DDoS 공격 차단하기
      • SQL 인젝션(SQLi)에 대한 WAF
    • 요약
    • 질문
    • 더 읽을거리

  • 9장. 모니터링과 알람
    • 기술 요구사항
    • 모니터링을 위해 애플리케이션 측정하기
      • AWS 클라우드 와치
    • 클라우드 와치를 사용해 helloworld 애플리케이션 모니터링하기
      • 애플리케이션에 로그 추가하기
      • 애플리케이션에 메트릭과 이벤트 추가하기
      • EC2에서 클라우드 와치로 로그, 이벤트 및 메트릭 보내기
      • 클라우드 포메이션 템플릿 업데이트하기
      • ECS에서 로그, 이벤트 및 메트릭 다루기
      • 일래스틱서치, 키바나 및 파이어호스를 이용한 고급 로그 인프라
    • 인프라 모니터링하기
      • EC2 모니터링하기
      • 클라우드 와치로 사용자 정의 메트릭 제공하기
      • ECS 클러스터 모니터링
      • ALB와 ELB 인스턴스 모니터링하기
      • 클라우드 와치와 SNS를 이용해 알람 생성하기
      • AWS 상태 모니터링 및 알람
    • 요약
    • 질문
    • 더 읽을거리

  • 부록. 해답
  • 도서 오류 신고

    도서 오류 신고

    에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

    오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

    (예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

    정오표

    정오표

    [p. 23 : 코드 주소]
    http://www.http://www.acornpub.co.kr/book/effective-devops-aws-2e
    ->
    http://www.acornpub.co.kr/book/effective-devops-aws-2e

    [p. 30 : 아래서 6행]
    https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-145.pdf에서 클라우드 컴퓨팅에 대한 국립 표준 기술 연구소 (NIST, National Institute of Standard and Technology)의 정의와 https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf에서 NIST의 클라우드 컴퓨팅 표준 로드맵을 살펴보는 것이 좋다.
    ->
    https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-145.pdf에서 클라우드 컴퓨팅에 대한 국립 표준 기술 연구소 (NIST, National Institute of Standard and Technology)의 정의와 NIST의 클라우드 컴퓨팅 표준 로드맵을 살펴보는 것이 좋다.