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 환경의 정상 여부를 알린다.
목차
목차
- 1장. 클라우드와 데브옵스 혁명
- 인프라 관점이 아닌 클라우드 관점으로 생각하기
- 자체 하드웨어 배포 대 클라우드 배포
- 비용 분석
- 적시 제공 인프라
- 데브옵스 문화 받아들이기
- 데브옵스의 기원
- 개발자 대 운영자 딜레마
- 상용 환경의 차이
- 데브옵스 문화의 주요 특징
- AWS에 배포하기
- AWS 생태계를 최대한 활용하는 방법
- AWS를 이용해 데브옵스 문화와 시너지를 이루는 방법
- 요약
- 질문
- 더 읽을거리
- 인프라 관점이 아닌 클라우드 관점으로 생각하기
- 2장. 첫 번째 웹 애플리케이션 배포하기
- 기술 요구사항
- 계정 생성 및 구성
- 계정 등록
- 루트 계정에 멀티 팩터 인증(MFA) 사용하기
- IAM에서 신규 사용자 생성하기
- 명령줄 인터페이스(CLI) 설치하고 구성하기
- 첫 번째 웹 서버 작성하기
- 아마존 머신 이미지(AMI)
- 인스턴스 유형
- 보안 그룹
- SSH 키 생성하기
- EC2 인스턴스 띄우기
- SSH를 이용해 EC2 인스턴스에 접속하기
- 간단한 Hello World 웹 애플리케이션 생성하기
- EC2 인스턴스 종료하기
- 요약
- 질문
- 더 읽을거리
- 3장. 코드로 인프라 다루기
- 기술 요구사항
- 클라우드 포메이션으로 인프라 관리하기
- 클라우드 포메이션 시작하기
- AWS 클라우드 포메이션 디자이너
- 클라우드 포머
- 클라우드 포메이션을 이용해 Hello World 예제 다시 작성하기
- 클라우드 포메이션 콘솔에서 스택 생성하기
- 템플릿을 소스 관리 시스템에 추가하기
- 클라우드 포메이션 스택 업데이트하기
- 변경 세트
- 클라우드 포메이션 스택 삭제하기
- 구성 관리 시스템 추가하기
- 앤서블 시작하기
- 컴퓨터에 앤서블 설치하기
- 앤서블 플레이그라운드 생성하기
- 앤서블 리포지터리 생성하기
- 모듈 실행하기
- 임의의 명령어 실행하기
- 앤서블 플레이북
- EC2 인스턴스에 깃과 앤서블 설치하기
- 모니터링
- 요약
- 질문
- 더 읽을거리
- 기술 요구사항
- 테라폼이란 무엇인가?
- 테라폼 시작하기
- 자동화된 프로비저닝을 위한 테라폼과 AWS
- 테라폼 리포지터리 생성하기
- AWS 인스턴스 프로비저닝을 위한 첫 번째 테라폼 템플릿
- AWS 인스턴스 프로비저닝을 위한 두 번째 테라폼 템플릿
- AWS, 테라폼, 앤서블 통합하기
- 푸시 기반 접근법으로 앤서블을 테라폼에 통합
- 풀 기반 접근법으로 앤서블을 테라폼에 통합
- 요약
- 질문
- 더 읽을거리
- 기술 요구사항
- CI 파이프라인 구축하기
- 앤서블과 클라우드 포메이션으로 젠킨스 서버 생성하기
- CI 환경 준비하기
- CI 환경을 이용해 helloworld 애플리케이션 구현하기
- CI 파이프라인 상용화하기
- 연속 배포 파이프라인 구축하기
- 연속 배포를 위한 새로운 웹 서버 생성하기
- 코드 디플로이로 helloworld 애플리케이션 통합하기
- AWS 코드 파이프라인으로 배포 파이프라인 구축하기
- 요약
- 질문
- 더 읽을거리
- 기술 요구사항
- 모놀리식 애플리케이션
- 모놀리식 애플리케이션이란 무엇인가?
- 모놀리식 애플리케이션 확장하기
- 모놀리식의 장점
- 데이터베이스
- 데이터페이스를 RDS로 이동하기
- RDS 유형 선택하기
- 백업
- 다중 AZ
- ElastiCache
- 일래스틱 로드 밸런서(ELB)
- 적합한 ELB 선택하기
- 밸런서 배포하기
- SSL 인증서 구성하기
- ALB와 Auth0 통합
- 로드 밸런서 프리워밍
- 액세스/오류 로그
- 다음 단계
- EC2 머신 바깥으로 상태 정보 이전하기
- 로그 내보내기
- 오토스케일링 그룹 구성하기
- 오토스케일링으로 이전하기
- 마이크로서비스와 서버리스 사용하기
- 요약
- 질문
- 더 읽을거리
- 기술 요구사항
- Hello World 애플리케이션 도커화하기
- 도커 시작하기
- 도커 기본
- 도커 이용하기
- Dockerfile 작성하기
- EC2 컨테이너 서비스 이용하기
- 도커 이미지를 관리할 ECR 리포지터리 생성하기
- ECS 클러스터 생성하기
- ALB 생성하기
- ECS helloworld 서비스 만들기
- ECS에 배포하는 CI/CD 파이프라인 작성하기
- 상용 ECS 클러스터 생성하기
- 코드 빌드로 컨테이너 생성 자동화하기
- 코드 파이프라인으로 배포 파이프라인 생성하기
- 소스 코드에 클라우드 포메이션 템플릿 추가하기
- 코드 파이프라인에 대한 클라우드 포메이션 작성하기
- 클라우드 포메이션 스택 시작 및 구성하기
- 요약
- 질문
- 더 읽을거리
- 기술 요구사항
- IAM 보안
- 루트 계정
- IAM 사용자의 비밀번호 정책 구성하기
- 클라우드 트레일
- VPC 플로우 로그
- 단일 서브넷의 플로우 로그 생성하기
- 플로우 로그 검증하기
- VPC 플로우 로그 고려사항
- VPC 서브넷
- 라우팅 및 서브넷 유형
- 엔드포인트 라우팅
- AWS WAF
- 웹 애플리케이션 플레이그라운드 환경
- DoS/DDoS 공격 차단하기
- SQL 인젝션(SQLi)에 대한 WAF
- 요약
- 질문
- 더 읽을거리
- 기술 요구사항
- 모니터링을 위해 애플리케이션 측정하기
- AWS 클라우드 와치
- 클라우드 와치를 사용해 helloworld 애플리케이션 모니터링하기
- 애플리케이션에 로그 추가하기
- 애플리케이션에 메트릭과 이벤트 추가하기
- EC2에서 클라우드 와치로 로그, 이벤트 및 메트릭 보내기
- 클라우드 포메이션 템플릿 업데이트하기
- ECS에서 로그, 이벤트 및 메트릭 다루기
- 일래스틱서치, 키바나 및 파이어호스를 이용한 고급 로그 인프라
- 인프라 모니터링하기
- EC2 모니터링하기
- 클라우드 와치로 사용자 정의 메트릭 제공하기
- ECS 클러스터 모니터링
- ALB와 ELB 인스턴스 모니터링하기
- 클라우드 와치와 SNS를 이용해 알람 생성하기
- AWS 상태 모니터링 및 알람
- 요약
- 질문
- 더 읽을거리
도서 오류 신고
정오표
정오표
[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의 클라우드 컴퓨팅 표준 로드맵을 살펴보는 것이 좋다.