앱이나 온라인 콘텐츠 사업을 지속적으로 발전시키기 위해서는 기술을 활용해 실패에 대한 영향을 최소화하면서 신속하게 사용자에게 가치를 제공하는 것이 중요하다. 이를 실현할 수 있는 핵심 기술 중 하나가 퍼블릭 클라우드 서비스와 컨테이너 기술이다. 이 책은 대표적인 퍼블릭 클라우드 서비스인 Amazon Web Services(AWS)와 컨테이너 기술에 초점을 맞춘다. AWS를 중심으로 한 컨테이너 활용을 위한 설계 포인트와 실습 내용을 소개하고, 특히 실습은 단순히 문서를 기반으로 하는 절차가 아니라 프로덕션 환경에서의 가동이나 실제 운영을 가정한 설계 방식을 체험할 수 있는 형태로 구성했다.
Contents
Chapter 01: 컨테이너 개요
1-1 컨테이너 기술
__서버 가상화와 컨테이너
__컨테이너의 장점
1-2 도커란
__도커 개요
__알아둬야 할 기본 도커 조작
__컨테이너를 운용할 때의 과제
1-3 오케스트레이터란
__오케스트레이터가 해결할 수 있는 것
__대표적인 컨테이너 오케스트레이터
1-4 컨테이너 기술을 도입하기 위해 고려해야 할 것
__컨테이너를 전제로 하는 애플리케이션을 개발하는 방법
__컨테이너 설계·운용에 임하는 자세
__개발 팀 역할 분담 개편
Chapter 02: 컨테이너 설계에 필요한 AWS 기초 지식
2-1 AWS가 제공하는 컨테이너 서비스
__제어 플레인
__데이터 플레인
__저장소(Repository)
__기타
2-2 아키텍처 구성 예
__ECS on EC2
__ECS on Fargate
__EKS on EC2
__EKS on Fargate
2-3 각 아키텍처를 적용한 사용 예
__온프레미스 또는 EC2에 쿠버네티스를 사용하는 경우
__블록체인을 이용하는 풀 노드(Full node)를 구축하는 경우
__기계 학습이 필요한 경우
__높은 자원 집약율을 실현하고자 하는 경우
__SI로 서비스를 만드는 경우
__자사 제품으로 서비스를 개발하는 경우
2-4 AWS에서 컨테이너를 이용할 때의 장점
__로드맵 정보 제공
__지속적인 요금 개정
__다수의 컨테이너 활용 사례
__풍부한 학습 매뉴얼
Chapter 03: 컨테이너를 이용한 AWS 아키텍처
3-1 이 장을 읽기에 앞서
3-2 Well-Architected 프레임워크 활용
3-3 설계 대상 아키텍처
__이 장에서 다룰 AWS 서비스
__예제 웹 애플리케이션 개요
__설계 요구사항과 기본 아키텍처
3-4 운영 설계
__모니터링과 옵저버빌리티(Observability)의 중요성
__로깅 설계
__지표 설계
__트레이스 설계
__CI/CD 설계
__이미지 유지 보수 운영
__Bastion 설계
3-5 보안 설계
__공동 책임 모델의 이해
__컨테이너 개발 보안 모범 사례
__이미지에 대한 보안 대책
__레지스트리에 대한 보안 대책
__오케스트레이터에 대한 보안 대책
__컨테이너에 대한 보안 대책
3-6 안정성 설계
__다중 AZ 구성을 통한 가용성 향상
__장애 시 절체 및 복구
__시스템 유지 보수를 위한 서비스 정지
__서비스 할당량 고려
3-7 성능 설계
__성능 설계 아이디어
__Step 1: 비즈니스상 성능 요건
__Step 2-1: 자원 할당
__Step 2-2: 확장 전략 검토
__Step 3: 테스트 수행
__Step 4: 지표 확인
__Step 5: 용량 할당 및 확장 전략의 수정
__성능 설계에 필요한 사고방식
3-8 비용 최적화 설계
__비용 최적화 아이디어
__ECS 태스크 수와 자원 크기 산정
__Compute Savings Plans 활용
__ECR 컨테이너 이미지 관리
__개발·스테이징 환경의 ECS 태스크 실행 시간대 조절
__Fargate Spot 활용
__컨테이너 이미지 크기 줄이기
Chapter 04: 컨테이너 구축하기(기초편)
4-1 실습으로 만들 AWS 구성
__CloudFormation 템플릿을 이용한 구축
4-2 네트워크 구축
__VPC와 서브넷
__인터넷 게이트웨이
__라우팅 테이블
__보안 그룹
__CloudFormation을 이용한 자원 생성
4-3 애플리케이션 구축
__예제 애플리케이션 개요
__예제 애플리케이션 구축
4-4 컨테이너 레지스트리 구축
__컨테이너 레지스트리 생성
__컨테이너 레지스트리용 네트워크 생성
__애플리케이션 등록
__컨테이너 애플리케이션 등록
4-5 오케스트레이터 구축
__ECS on Fargate 동작 이미지 확인
__오케스트레이터 구축 내용 확인
__CloudWatch Logs용 VPC 엔드포인트 생성
__Blue/Green 배포용 ALB 추가
__Internal용 보안 그룹 변경
__Blue/Green 배포용 IAM 역할 생성
__ECS 구축
__컨테이너 배포 확인
4-6 데이터베이스 구축
__보안 그룹 생성
__Aurora 인스턴스의 네트워크 구성
__Aurora 인스턴스 생성
__데이터베이스 접속을 위한 준비
__Secrets Manager 설정
4-7 애플리케이션 간 통신 확인
__DB에 접속하는 프런트엔드 애플리케이션 등록 및 실행
__통신 확인
Chapter 05: 컨테이너 구축하기(실천편)
5-1 실습에서 구축할 AWS 구성
5-2 운영 설계: Code 시리즈를 이용한 CI/CD
__CodeCommit 생성
__CodeBuild 생성
__CodeDeploy에 대해
__CodePipeline 생성
__응용 프로그램 수정 및 파이프라인 실행 확인
5-3 운영 설계 & 보안 설계: 애플리케이션 이미지 추가 설정
5-4 성능 설계: 수평 확장을 이용한 가용성 향상
__ECS 서비스에 Auto Scaling 설정 추가
__Auto Scaling 동작 확인
5-5 보안 설계: 응용 프로그램 무단 접근 방지
__AWS WAF
__WAF 생성
__WAF 추가 후 확인
5-6 운영 설계 & 보안 설계: 로그 수집 기반 구축
__로그 관리용 S3 버킷 생성
__FireLens용 컨테이너 기본 이미지 생성
__ECS 작업에 로그 라우터 컨테이너 추가
__로그 출력 확인
5-7 운영 설계: Fargate를 이용한 Bastion 구축
__Fargate Bastion으로 이용할 컨테이너 이미지 등록
__각종 IAM 설정
__Systems Manager의 VPC 엔드포인트 생성
__Systems Manager 인스턴스 티어 변경
__Fargate Bastion용 작업 정의 생성
__Fargate Bastion 실행
5-8 보안 설계: Trivy/Dockle을 이용한 보안 확인
부록A: AWS 계정 생성 및 설정
부록B: 생성한 자원 삭제
Author
아라이 마사야,우마카츠 아츠시,양현
머리말, 1장, 3장 담당으로 주로 금융 업계의 고객에 대한 비즈니스 제안과 시스템 설계, 개발, 운영을 담당. UI/UX 디자인 및 스마트폰 앱, 서버 사이드 프로그램 등이 가능한 풀스택 엔지니어로 클라우드 아키텍처 설계와 개발이 특기이다. 업무 외에도 강연과 기고, AWS 커뮤니티 운영 등 폭 넓은 활동 중이다.
머리말, 1장, 3장 담당으로 주로 금융 업계의 고객에 대한 비즈니스 제안과 시스템 설계, 개발, 운영을 담당. UI/UX 디자인 및 스마트폰 앱, 서버 사이드 프로그램 등이 가능한 풀스택 엔지니어로 클라우드 아키텍처 설계와 개발이 특기이다. 업무 외에도 강연과 기고, AWS 커뮤니티 운영 등 폭 넓은 활동 중이다.