AWS를 이해하고 글로벌 서비스를 위한 인프라 구축에 대해 배울 수 있습니다!
이 책에서는 프로토타이핑부터 시작해 전 세계를 대상으로 하는 서비스를 아마존 웹 서비스(AWS; Amazon Web Service)를 이용해 개발하는 과정을 다룬다. 이 과정을 따라가다 보면 AWS를 이해하고 글로벌 서비스를 위한 인프라 구축에 대한 통찰력을 얻을 수 있을 것이다.
★ 이 책에서 다루는 내용 ★
- 기본적인 AWS 사용법
- 효율적인 인프라 구축 방법과 구축을 위한 도구, 효율적인 구축을 위한 DevOps 조직 구축
- 효율적인 인프라 관리를 위한 인프라 자동화, 모니터링, 업무 처리 시스템 구축
- 클라우드 환경에서의 소프트웨어와 인프라의 통합
인터넷 서비스의 폭발적인 성장으로 소프트웨어와 인프라의 관계를 다시 설정해야 하는 요구가 생겨났다. 비교적 유연하게 환경 변화에 적응할 수 있는 소프트웨어와 달리, 인프라는 유연하게 대응하기가 쉽지 않다. 인프라는 서비스의 성장이 예상된다고 해서 마음대로 늘리거나 줄일 수 있는 성격의 것이 아니다. 그나마 서비스의 성장 곡선을 예측할 수 있다면 위험 부담 없이 인프라 계획을 세울 수 있겠지만 그렇지 않으면 엄청난 부담을 떠안아야 한다.
이러한 배경 속에서 클라우드 서비스가 전면에 떠올랐다. 클라우드 서비스는 유연하게 인프라를 운영할 수 있게 돕는다. 전기를 얻기 위해 집집마다 자가발전을 할 필요 없이 이미 구축된 공공 전기망에 코드를 꼽는 것으로 전기를 사용할 수 있는 것처럼 이미 구축된 클라우드 서비스에 접속하는 것만으로 인프라를 사용할 수 있다.
이 책에서는 가상의 회사를 하나 만들 것이다. 이 가상의 회사는 프로토타이핑부터 시작해 전 세계를 대상으로 하는 서비스를 AWS를 이용해 개발한다. 이 과정을 따라가면서 AWS를 이해하고 글로벌 서비스를 위한 인프라 구축에 대한 통찰력을 얻을 수 있을 것이다.
이 책의 특징과 이 책에서 다루는 내용은 다음과 같다.
- 이 책은 레퍼런스 가이드가 아니다. AWS에 인터넷 서비스를 위한 인프라를 구성하는 아이디어를 제공하는 것이 이 책의 목적이다. AWS의 기능에 대해서는 기본적인 사용법을 다루는 정도이며, 세부적인 사용법을 담고 있지는 않다.
- 주로 어떤 식으로 인프라를 구성해야 하고, 이를 위해 어떤 도구를 사용해야 하는지 등 인프라 구성 차원에서 좀 더 넓게 바라본다.
- 구성한 인프라를 효율적으로 관리하기 위한 인프라 자동화, 모니터링, 업무 처리 시스템 구축 등을 살펴본다.
- 클라우드 환경에서 소프트웨어와 인프라를 통합하는 방법을 찾는다.
윤상배
웹 프로그래밍으로 시작해 시스템/네트워크 소프트웨어 개발, 검색엔진 개발, 인터넷 서비스 품질관리, 가상화와 클라우드, IoT 서비스 개발, 보안 솔루션 개발 등 다양하고 폭넓은 경력을 갖추고 있다. 최근에는 도커 컨테이너를 기반으로 하는 SaaS, PaaS 서비스 개발 업무를 담당하고 있다.
- 조선대학교 원자력 공학과 졸업
- NCsoft 오픈마루 스튜디오: 인터넷 서비스 품질 관리
- KT Cloudware: 퍼블릭 클라우드 인프라 구축 및 클라우드 기반 서비스 개발
- LG전자: IoT 인프라 구축 및 IoT 기반 서비스 개발
- Codigm: Cloud IDE를 위한 컨테이너 서비스 개발
김창수
단순 반복 작업을 피하기 위해 다양한 종류의 관리 애플리케이션을 제작하고 있으며, 다양한 자동화 도구를 이용한 효율적인 애플리케이션의 자동 배포 방식을 연구하고 있다.
- 성균관대학교 컴퓨터공학과 졸업
- Ahems, KT Cloudware를 거쳐 CloudStack/OpenStack 관련 연구 진행
- KINX에서 AWS를 이용한 대규모 서비스 인프라의 구축과 관리 업무를 담당
- ▣ 01장: AWS 소개
- 1.1 AWS의 특징
- 1.2 IaaS, SaaS, PaaS
- 1.3 AWS 글로벌 인프라
- 1.4 AWS 프리 티어 계정 생성
- 1.5 AWS 대시보드
- 1.6 AWS 주요 서비스
- EC2
- AMI
- 기본 네트워크 구성 요소
- 1.7 VPC 네트워크
- 인터넷 게이트웨이
- IP 주소와 IP 서브넷
- Routes
- 1.8 확장성과 가용성에 대한 방향 설정
- 1.9 RDS(데이터베이스 서비스)
- 1.10 EBS와 Instance store
- 1.11 S3
- 1.12 클라우드프런트
- 1.13 IAM
- 1.14 마치며
- ▣ 02장: 프로토타이핑 서비스 개발
- 2.1 프로토타이핑을 위한 AWS 서비스 인프라 설계
- 2.2 VPC 네트워크 구성
- VPC 생성
- Route 설정
- 2.3 EC2 인스턴스 생성
- 인스턴스 생성
- EIP 할당과 접속
- User data 확인
- EBS 볼륨 마운트
- 2.4 웹 서비스 실행
- 2.5 MySQL(RDS) 설치 및 설정
- RDS 설정
- RDS 인스턴스 만들기
- 2.6 마치며
- ▣ 03장: 지역 서비스를 위한 AWS 인프라 구축
- 3.1 기본 인프라 정책
- 3.2 프로토타이핑 인프라의 개선
- 3.3 서비스 가용성을 확보하기 위한 인프라 구성
- 3.3 가용성 존을 포함한 VPC 구성
- 3.5 ELB를 이용한 로드 밸런싱 환경 구성
- 3.6 도메인 설정 - Route 53
- 3.7 SSL 오프로드
- 3.8 RDS 관리
- Multi-AZ와 읽기 전용 복제
- Multi-AZ 설정
- 읽기 전용 복제 설정
- 데이터베이스 백업과 복원
- 3.9 마치며
- ▣ 04장: DevOps
- 4.1 애자일과 DevOps
- 4.2 DevOps와 클라우드
- 4.3 DevOps를 위해 필요한 요소(자동, 자동, 자동)
- 서버 설정 자동화와 자동 배치
- 모니터링
- 테스트, 빌드 및 배포의 자동화
- 4.4 AWS API를 이용한 인프라 관리 도구 개발
- AWS API
- AWS API를 사용하기 위한 조건
- IAM의 관리
- 4.5 Boto 라이브러리 소개
- Access key와 Secret Access Key 준비
- 파이썬과 Boto 라이브러리 설치 및 준비
- EC2 인스턴스 생성
- SQS 모니터링
- 4.6 AWS CLI
- RDS의 생성
- 4.7 마치며
- ▣ 05장: 글로벌 인프라 구축
- 5.1 네이밍을 이용한 인프라 구조 잡기
- 5.2 네이밍과 호스트 이름
- 5.3 VPC 네트워크 설계
- 5.4 VPC 유닛 확장
- 5.5 VPN을 이용한 VPC 네트워크 통합
- 5.6 Site-to-Site OpenVPN 설정
- 서버와 클라이언트에 대한 ip forward 설정
- OpenVPN PKI 환경 설정
- OpenVPN 서버 설정
- OpenVPN 클라이언트 설정
- VPC 라우팅 설정
- 시큐리티 그룹 설정
- 5.7 개발자와 운영자를 위한 VPN 연결
- Host-To-Site OpenVPN 구성
- OpenVPN 서버 설치
- VPN 유저 관리
- 관리 네트워크 연결 설정
- 5.8 NAT서브넷 구축
- NAT
- NAT 인스턴스 설정
- VPC 네트워크 설정
- Managed NAT Gateway 설정
- 5.9 마치며
- ▣ 06장: 셰프(Chef)를 이용한 클라우드 인프라 관리
- 6.1 셰프
- 데이터와 로직의 분리
- 셰프의 구성
- 리소스
- 셰프 서버, 셰프 클라이언트, 셰프 워크스테이션의 배치
- 6.2 셰프 서버의 설치
- 준비
- 내려받기 및 설치
- 유저 추가
- Organizations 추가
- 6.3 셰프 워크스테이션의 설치
- 내려받기 및 설치
- 나이프 환경 설정
- 6.4 쿡북 개발
- 셰프와 루비
- Hello World 쿡북 만들기
- 6.5 셰프 노드에 쿡북 적용
- 셰프 노드 생성
- 셰프 클라이언트 내려받기 및 설치
- 6.6 좀 더 복잡하고 현실적인 예제
- 유저 관리 쿡북 만들기
- 데이터백 만들기
- 유저 생성
- 유저 ssh key 관리
- 6.7 셰프를 이용한 AWS 인스턴스 배치 자동화
- 셰프 클라이언트를 포함한 AMI 개발
- Cloud-init를 이용한 초기화 스크립트 실행
- 인스턴스 자동 설정
- 6.8 마치며
- 6.1 셰프
- ▣ 07장: 인프라 모니터링 시스템 구축
- 7.1 장애 허용과 장애 내성
- 7.2 인프라 장애와 서비스 장애별 대응 정책 수립
- 7.3 모니터링 시스템 구성
- 클라우드워치
- 7.4 자빅스 모니터링 서버 설치
- 7.5 자빅스 에이전트 설치와 모니터링
- 자빅스 에이전트 설치 및 설정
- 네트워크 설정 변경
- 호스트 등록
- 사용자 정의 매트릭 추가
- 자빅스 서버에 유저 매트릭 추가
- 트리거 설정
- 그래프 만들기
- 알람 전송
- 미디어 타입 추가
- 7.6 서비스 모니터링
- 서비스 모니터링 환경 구성
- 웹 서비스 모니터링 도구의 개발과 적용
- 7.7 마치며
- ▣ 08장: AWS 인프라 보안
- 8.1 시큐리티 그룹
- 시큐리티 그룹의 기본 정책
- 8.2 네트워크 ACL
- 네트워크 ACL과 시큐리티 그룹의 조합
- 8.3 운영체제 보안
- 기본 유저 정책
- 루트로의 switch user 제한
- sudo 명령을 이용해 애플리케이션 단위로 루트 권한을 제한
- SSH를 통한 유저 접근 정책
- 8.4 IAM
- IAM을 구성하는 유저, 그룹, 정책
- 효율적인 IAM 보안 정책
- 8.5 마치며
- 8.1 시큐리티 그룹
- ▣ 09장: 개발자, 운영자, 고객의 통합
- 9.1 이슈 추적 시스템
- 9.2 이슈 추적 시스템 선택
- 9.3 지라 설치
- 9.4 지라를 이용한 서비스 품질 관리
- 프로젝트 생성
- 9.5 고객 및 테스터 요청 관리 시스템 개발
- 지라 API를 이용한 매시업 서비스 개발
- 커스텀(custom) 필드 추가
- 9.6 지라의 응용
- 9.7 마치며
- ▣ 10장: AWS 인프라의 효율적인 운용을 위한 팁
- 10.1 EC2의 효율적인 사용
- 스팟 인스턴스
- 예약 인스턴스
- 10.2 태그를 이용한 리소스의 분류
- 태그
- IAM과 태그를 사용한 리소스 권한 관리
- 비용 관리
- 태그 에디터
- 10.3 인스턴스 메타데이터
- 인스턴스 메타데이터
- 인스턴스 메타데이터의 구조
- 인스턴스 메타데이터 사용 예제
- 10.4 시큐리티 그룹의 효율적인 사용
- EC2에 시큐리티 그룹 적용하기
- 10.5 Route 53을 이용한 효율적인 도메인 관리
- 라우팅 정책
- 10.6 S3를 이용한 스태틱 웹 호스팅
- S3 스태틱 웹 호스팅 설정
- Route 53을 사용한 S3 스태틱 웹 호스팅 설정
- 10.7 클라우드프런트로 콘텐츠를 빠르게 제공
- 클라우드프런트 도입
- 클라우드프런트의 장점
- 클라우드프런트 설정
- 10.8 EC2 없이 AWS 람다를 이용해 서비스 작성
- AWS 람다
- API 게이트웨이를 사용한 람다 호출
- 이미지 미리보기 생성
- 10.9 마치며
- 10.1 EC2의 효율적인 사용
- ▣ 11장: CI 도구를 이용한 지속적인 통합
- 11.1 젠킨스를 이용한 지속적인 통합
- 11.2 젠킨스의 시스템 구성 위치
- 11.3 젠킨스 설치
- 11.4 테스트 주도 개발
- 유닛 테스트
- 테스트 커버리지
- 유닛 테스트 예제
- 젠킨스를 이용한 자동 빌드 및 테스트 수행
- 11.5 마치며
- ▣ 12장: AWS의 빅데이터와 IoT 서비스들
- 12.1 AWS를 이용한 IoT 인프라 구축
- 12.2 IoT 서비스를 위한 인프라스트럭쳐
- IoT 인프라의 구성
- MQTT
- 12.3 AWS IoT 서비스 사용하기
- AWS IoT 서비스 개요
- AWS IoT 서비스 개발 개요
- 응용
- 12.4 AWS 키네시스를 이용한 대용량 데이터 처리
- 키네시스의 사용 예
- 키네시스를 이용한 웹 트래픽 분석
- 클라우드포메이션으로 샘플 애플리케이션 구축하기
- 키네시스와 SQS의 차이점
- 12.5 마치며