아마존 웹 서비스를 다루는 기술 출간 및 원고 공개

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

"아마존 웹 서비스를 다루는 기술: 실무에서 필요한 AWS 클라우드의 모든 것!"이 출간되었습니다. 그리고 출간과 동시에 원고도 함께 공개합니다.

윈도우 프로젝트 필수 유틸리티 Subversion, Trac, CruiseControl.NET 이후 6년만에 두 번째 책을 내게 되었습니다. 이번 아마존 웹 서비스를 다루는 기술은 AWS 리소스들의 사용 방법을 자세히 알아보고, 실무와 유사한 3가지 예제를 통해 실제 서비스를 구축하는 방법까지 준비하였습니다.

책에서 다루는 AWS 리소스는 EC2, Security Group, Elastic IP, AMI, CloudWatch, S3, CloudFront, RDS, DynamoDB, ElastiCache, IAM, Route 53, ELB, Auto Scaling, VPC, Glacier, CloudFormation, Elatic Beanstalk, OpsWorks, CloudSearch, SNS, SES, SQS, Elastic Transcoder입니다. 또한, 각 리소스별 주요 AWS API 사용 방법을 Node.js용 예제 코드와 CLI(명령행 인터페이스)를 통해 설명합니다.

글로벌 사진 사이트 구축하기 예제는 S3, RDS, SQS, IAM, ELB, Auto Scaling, AMI, CloudWatch, CloudFront, Route 53을 조합하여 핀터레스트, 인스타그램과 같은 사진 공유 사이트를 구축하는 방법입니다. S3에 이미지 파일을 저장한 뒤 CloudFront로 전 세계 어디든 빠른 속도로 이미지 파일을 전송하고, SQS와 S3를 사용하여 웹 서버에서 받은 이미지 파일을 이미지 변환 서버에서 처리하는 방법까지 설명합니다.

자동 확장 가능한 콘서트 티켓 예매 사이트 예제는 S3, RDS, ElastiCache(Redis), IAM, ELB, Auto Scaling, AMI, CloudWatch, CloudFront, Route 53을 조합하여 짧은 시간에 사람이 많이 몰리는 콘서트, 월드컵 티켓 예매, 학교 수강 신청과 같은 사이트를 구축하는 방법입니다. CloudFront를 사용하여 웹 서버의 부하를 줄이며, 사용자가 몰려도 ELB와 Auto Scaling을 통해 EC2 인스턴스를 늘려서 대응하고, ElastiCache의 Redis와 socket.io를 사용하여 실시간으로 좌석 정보를 갱신하는 방법을 제공합니다.

자동 확장 가능한 모바일 게임 서버 예제는 S3, ElastiCache(Redis), RDS, DynamoDB, IAM, ELB, Auto Scalingm AMI, Route 53를 조합하여 일반적으로 많이 보는 모바일 게임 서버를 구축하는 방법입니다. RESTful 형식의 API로 게임 서버를 작성하는 방법(유저 정보, 점수 등록, 아이템 구입 등)과 ElastiCache의 Redis를 사용하여 순위를 산출하는 방법, RDS에 게임 데이터를 저장하는 방법, DynamoDB에 게임 로그 데이터를 저장하는 방법을 설명합니다.

마지막으로 부록에서는 요금 계산기, Windows EC2 인스턴스, s3fs, s3cmd 사용 방법과 요금 절약 방법, AWS Visual Studio, Eclipse 툴킷을 소개합니다. 그리고 S3, Git, Subversion으로 Auto Scaling 그룹에 소스를 배포하는 방법을 설명합니다.

이 책은 AWS를 처음 접하는 초급자를 위한 책입니다. 클라이언트 개발과 서버 개발을 함께 해야하고, 서버 운영과 관리까지 맡아야하는 열악한 환경의 스타트업 개발자에게 큰 도움이 되었으면 합니다. 또한, AWS를 도입하여 비용을 줄이고자 하는 대기업에서는 기본적인 사용 방법을 익히는 지침서가 되었으면 합니다.

책 구입

전자책 구입

목차

  1. 왜 AWS인가?
    1. 가상화와 클라우드 컴퓨팅
    2. 아마존 웹 서비스
    3. 스타트업과 클라우드 컴퓨팅
    4. 다양한 활용 사례
      1. 화성탐사로버 큐리오시티
      2. 넷플릭스
      3. 애니모토
      4. 아모레퍼시픽
      5. 모바일 게임 쿠키런
  2. AWS 기본 개념 살펴보기
    1. 리전, 지역
    2. 가용 영역
    3. 에지 로케이션
  3. AWS 계정 생성하기
  4. 가상 서버를 제공하는 EC2
    1. EC2 인스턴스 유형
    2. EC2 인스턴스 구매 옵션
    3. EC2 인스턴스 생성하기
    4. EC2 인스턴스에 접속하기
      1. Windows에서 PuTTY로 접속하기
      2. Linux, Mac OS X에서 접속하기
    5. 가상 스토리지를 제공하는 EBS
      1. EBS 볼륨 생성하기
      2. EC2 인스턴스에 EBS 볼륨 장착하기
      3. EC2 인스턴스에서 EBS 볼륨 포맷하기
      4. EC2 인스턴스에서 EBS 볼륨 마운트하기
      5. EC2 인스턴스에서 EBS 볼륨 제거하기
    6. EBS 스냅샷 활용하기
      1. EBS 스냅샷 생성하기
      2. EBS 스냅샷으로 EBS 볼륨 생성하기
      3. EBS 스냅샷으로 AMI 생성하기
      4. EBS 스냅샷을 다른 리전으로 복사하기
    7. 인스턴스 스토리지를 Root 장치로 사용하는 EC2 인스턴스 생성하기
    8. EC2 기타 설정 및 기능
  5. Security Group으로 방화벽 설정하기
  6. 고정 IP를 제공하는 Elastic IP
    1. Elastic IP 할당받기
    2. Elastic IP 연결하기
  7. EC2 인스턴스 접속을 위한 키 쌍
    1. 키 쌍 생성하기
    2. 외부 키 쌍 파일 사용하기
      1. PuTTY로 생성한 키 쌍 파일 활용하기
      2. Linux와 Mac OS X에서 생성한 키 쌍 파일 활용하기
    3. 이미 생성된 EC2 인스턴스에서 공개 키 바꾸기
  8. AMI
    1. AWS Marketplace
    2. EC2 인스턴스로 AMI 생성하기
    3. AMI를 다른 리전으로 복사하기
    4. 인스턴스 스토리지를 Root 장치로 사용하는 EC2 인스턴스 생성하기
  9. API와 툴 사용을 위한 액세스 키 생성하기
  10. AWS 리소스의 상태를 모니터링하는 CloudWatch
    1. CloudWatch 알람 생성하기
    2. CloudWatch 커스텀 측정치 사용하기
  11. HTTP 프로토콜과 연동되는 스토리지 S3
    1. S3 버킷 생성하기
    2. S3 버킷에 파일 올리기/받기
    3. S3 세부 설정하기
      1. S3 객체 권한 관리하기
      2. S3 버킷 권한 관리하기
      3. S3 정적 웹사이트 호스팅 사용하기
      4. HTTP Referer로 S3 접근 제한하기
      5. S3 객체 스토리지 클래스, 암호화 설정하기
      6. S3 객체 메타데이터 설정하기
      7. S3 버킷 로그 설정하기
      8. S3 버킷 버저닝 설정하기
      9. S3 버킷 수명 주기 설정하기
      10. S3 버킷 기타 설정
  12. 전 세계에 콘텐츠를 배포하는 CDN 서비스인 CloudFront
    1. CloudFront 배포
    2. S3와 CloudFront 연동하기
    3. CloudFront 커스텀 오리진 사용하기
      1. EC2와 CloudFront 연동하기
      2. 외부 서버와 CloudFront 연동하기
    4. Signed URL로 CloudFront 콘텐츠 사용 제한하기
      1. Signed URL 사용 설정하기
      2. Signed URL 서명을 위한 CloudFront 키 쌍 생성하기
      3. Canned Policy를 사용한 Signed URL 생성하기
      4. Custom Policy를 사용한 Signed URL 생성하기
    5. Invalidation으로 CloudFront 콘텐츠 갱신하기
  13. 확장 가능한 관계형 데이터베이스를 제공하는 RDS
    1. RDS DB 인스턴스 클래스
    2. RDS 예약 인스턴스
    3. RDS 데이터베이스 엔진과 라이선스 모델
    4. RDS DB 인스턴스 생성하기
    5. RDS DB 인스턴스 Security Group 생성 및 설정하기
    6. RDS DB 인스턴스 사용하기
    7. RDS DB 스냅샷 활용하기
      1. RDS DB 스냅샷 생성하기
      2. RDS DB 스냅샷으로 RDS DB 인스턴스 생성하기
      3. RDS 스냅샷을 다른 리전으로 복사하기
    8. RDS를 특정 시점으로 복구하기
    9. RDS DB 인스턴스 Read Replica 생성하기
    10. RDS DB 인스턴스 성능 확장하기
    11. RDS 기타 설정 및 기능
  14. 확장 가능한 NoSQL 분산 데이터베이스를 제공하는 DynamoDB
    1. DynamoDB의 데이터 모델
    2. DynamoDB에 맞는 데이터 구조 설계하기
    3. DynamoDB 테이블 생성하기
    4. DynamoDB 테이블에 데이터 추가하기
    5. DynamoDB 데이터 쿼리하기
    6. DynamoDB 기타 설정 및 기능
  15. 확장 가능한 분산 인 메모리 캐시를 제공하는 ElastiCache
    1. ElastiCache 캐시 노드 유형
    2. ElastiCache 예약 캐시 노드
    3. ElastiCache Memcached 클러스터 생성하기
    4. ElastiCache Memcached 클러스터 Security Group 생성 및 설정하기
    5. ElastiCache Memcached 클러스터에 캐시 노드 추가하기
    6. ElastiCache Redis 클러스터 생성하기
    7. ElastiCache Redis 클러스터 Security Group 생성 및 설정하기
    8. ElastiCache Redis 클러스터 스냅샷 활용하기
      1. ElastiCache Redis 클러스터 스냅샷 생성하기
      2. ElastiCache Redis 클러스터 스냅샷으로 Redis 클러스터 생성하기
    9. ElastiCache Redis 클러스터 Read Replica 생성하기
  16. 사용자와 그룹을 생성하여 접근제어 및 권한관리를 제공하는 IAM
    1. IAM 그룹 생성하기
    2. IAM 사용자 생성하기
    3. IAM 사용자로 AWS 콘솔에 접속하기
    4. IAM 역할 활용하기
      1. IAM 역할 생성하기
      2. IAM 역할을 사용하는 EC2 인스턴스 생성하기
    5. IAM 기타 설정 및 기능
  17. AWS 리소스와 연동 가능한 DNS 서비스 Route 53
    1. Route 53 Hosted Zone 생성하기
    2. Route 53 A 레코드 생성하기
    3. Route 53와 S3 연동하기
    4. Route 53와 CloudFront 연동하기
    5. Route 53 DNS Failover 활용하기
    6. Route53 Latency Based Routing, Weighted Round Robin, Geo Routing 설정하기
    7. Route 53에서 도메인 구입하기
  18. 부하 분산과 고가용성을 제공하는 ELB
    1. ELB 로드 밸런서 생성하기
    2. EC2 인스턴스에 웹 서버 실행하기
    3. ELB 로드 밸런서 Sticky Session 기능 사용하기
  19. 자동으로 EC2 인스턴스를 생성하여 서비스를 확장하는 Auto Scaling
    1. Auto Scaling에 사용할 AMI 생성하기
    2. EC2 생성 옵션 설정과 Auto Scaling 그룹 생성하기
  20. 가상 네트워크를 제공하는 VPC
    1. VPC 생성하기
    2. VPC 서브넷 생성하기
    3. VPC 인터넷 게이트웨이 생성하기
    4. VPC 기타 설정 및 기능
  21. 데이터 보관 및 백업을 위한 매우 저렴한 스토리지 서비스 Glacier
    1. Glacier 볼트 생성하기
    2. Glacier 볼트에 파일 올리기
    3. Glacier 볼트에서 파일 받기
  22. 서버 구성을 자동화하는 CloudFormation
    1. CloudFormation 템플릿 기본 구조
    2. EC2 인스턴스를 생성하는 CloudFormation 템플릿
    3. EC2 인스턴스를 생성하고 웹 서버를 설치, 실행하는 CloudFormation 템플릿
    4. EC2 인스턴스를 생성하고 Security Group을 설정하는 템플릿
    5. CloudFormation 템플릿으로 CloudFormation 스택 생성하기
  23. 간편하게 사용하는 애플리케이션 플랫폼 서비스 Elastic Beanstalk
    1. Elastic Beanstalk으로 Node.js 애플리케이션과 환경 생성하기
    2. AWS 콘솔에서 Elastic Beanstalk Node.js 애플리케이션 배포하기
    3. Git으로 Elastic Beanstalk Node.js 애플리케이션 배포하기
    4. Elastic Beanstalk 환경 URL 교체로 무중단 배포하기
  24. 애플리케이션 구성과 배포를 자동화하는 OpsWorks
    1. OpsWorks 스택 생성하기
    2. OpsWorks PHP 레이어 생성하기
    3. OpsWorks PHP 인스턴스 생성하기
    4. OpsWorks PHP App 생성하기
    5. OpsWorks PHP App 배포하기
    6. OpsWorks 커스텀 Chef 레시피 사용하기
  25. 검색 서비스를 제공하는 CloudSearch
    1. CloudSearch 검색 인스턴스 유형
    2. CloudSearch 검색 도메인 생성하기
    3. CloudSearch 검색 도메인에 데이터 올리기
    4. CloudSearch 검색 도메인에서 검색하기
      1. CloudSearch 검색 자동완성 사용하기
      2. CloudSearch 검색 식 사용하기
    5. CloudSearch 검색 도메인 엔드포인트 주소 활용하기
      1. CloudSearch 인덱스 구조를 설계하고 검색 도메인 생성하기
      2. CloudSearch 검색 도메인 엔드포인트로 데이터 올리기
      3. CloudSearch 검색 도메인 엔드포인트 주소로 검색하기
  26. 푸시 알림 서비스 SNS
    1. SNS 토픽과 이메일 구독 생성하기
    2. SNS 토픽에 메시지 보내기
    3. SNS로 구글 안드로이드에 푸시 알림 보내기
      1. 구글 GCM API 사용 등록하기
      2. SNS 애플리케이션 생성하기
      3. 예제 안드로이드 애플리케이션 실행 및 Registration ID 생성하기
      4. SNS 애플리케이션에 엔드포인트 추가하기
      5. SNS 애플리케이션의 엔드포인트에 메시지 보내기
      6. SNS 토픽에 GCM 구독 생성하기
    4. SNS로 애플 iOS에 푸시 알림 보내기
      1. iOS App ID 생성하기
      2. 인증서 요청 생성하기
      3. APNS 인증서 생성하기
      4. SNS 애플리케이션 생성하기
      5. 예제 iOS 애플리케이션 실행 및 Device Token 생성하기
      6. SNS 애플리케이션에 엔드포인트 추가하기
      7. SNS 애플리케이션의 엔드포인트에 메시지 보내기
      8. SNS 토픽에 APNS 구독 생성하기
  27. 이메일 전송 서비스 SES
    1. 이메일 주소 인증하기
    2. 도메인 인증하기
    3. 프로덕션 액세스 권한 얻기
    4. SES로 테스트 메일 보내기
    5. SES SMTP로 메일 보내기
  28. 메시지 큐를 제공하는 SQS
    1. SQS 큐 생성하기
    2. SQS 처리 실패 큐 생성하기
    3. SQS 큐에 메시지 보내기/받기
  29. 동영상 인코딩 서비스 Elastic Transcoder
    1. Elastic Transcoder 파이프라인과 작업 생성하기
  30. AWS API, CLI 활용하기
    1. Node.js용 AWS SDK 설치하기
    2. AWS CLI 설치하기
    3. EC2
    4. CloudWatch
    5. ELB
    6. Auto Scaling
    7. S3
    8. CloudFront
    9. DynamoDB
    10. CloudSearch
    11. SNS
    12. SES
    13. SQS
  31. 글로벌 사진 사이트 구축하기
    1. 이미지, 소스 저장용 S3 버킷 생성하기
    2. 이미지 정보 저장용 RDS DB 인스턴스 생성하기
    3. 이미지 처리용 SQS 큐 생성하기
    4. S3, SQS 접근용 IAM 역할 생성하기
    5. 웹 서버용 ELB 로드 밸런서 생성하기
    6. 웹 서버, 이미지용 CloudFront 배포 생성하기
    7. Route 53로 도메인 연결하기
    8. Node.js로 웹 서버 작성하기
      1. 웹 서버 및 사이트 내용 둘러보기
    9. 웹 서버 AMI 생성하기
    10. 웹 서버 Auto Scaling 설정하기
    11. Node.js로 이미지 변환 서버 작성 및 구축하기
      1. 이미지 변환 서버 내용 둘러보기
      2. 이미지 변환 서버 구축하기
    12. 사진 사이트 동작 확인하기
  32. 자동 확장 가능한 콘서트 티켓 예매 사이트 구축하기
    1. 소스 저장용 S3 버킷 생성하기
    2. 좌석 데이터 저장용 RDS DB 인스턴스 생성하기
    3. 좌석 상태 갱신용 ElastiCache 캐시 클러스터 생성하기
    4. S3 접근용 IAM 역할 생성하기
    5. 웹 서버용 ELB 로드 밸런서 생성하기
    6. 웹 서버용 CloudFront 배포 생성하기
    7. Route 53로 도메인 연결하기
    8. Node.js로 웹 서버 작성하기
      1. 웹 서버 및 사이트 내용 둘러보기
    9. 웹 서버 AMI 생성하기
    10. 웹 서버 Auto Scaling 설정하기
    11. 티켓 예매 사이트 동작 확인하기
  33. 자동 확장 가능한 모바일 게임 서버 구축하기
    1. 소스 저장용 S3 버킷 생성하기
    2. 순위 산출용 ElastiCache 캐시 클러스터 생성하기
    3. 게임 데이터 저장용 RDS DB 인스턴스 생성하기
    4. 로그 저장용 DynamoDB 테이블 생성하기
    5. S3, DynamoDB 접근용 IAM 역할 생성하기
    6. 게임 서버용 ELB 로드 밸런서 생성하기
    7. Route 53로 도메인 연결하기
    8. Node.js로 게임 서버 작성하기
      1. 게임 서버 내용 둘러보기
    9. 게임 서버 AMI 생성하기
    10. 게임 서버 Auto Scaling 설정하기기
    11. 게임 서버 동작 확인하기
  34. 부록
    1. 요금 계산기
    2. Windows EC2 인스턴스 사용하기
    3. S3을 s3fs로 파일시스템처럼 사용하기
    4. S3을 s3cmd로 관리하기
    5. Auto Scaling 그룹의 EC2 인스턴스에 소스 배포하기
    6. AWS Visual Studio 툴킷
    7. AWS Eclipse 툴킷
    8. 요금 절약하기

예제 소스

저작권 정보

  • 아마존 웹 서비스를 다루는 기술(이하 '책')의 저작권은 이재홍에게 있습니다.
  • 책의 출판권 및 배타적발행권과 전자책의 배타적전송권은 (주)도서출판 길벗에게 있습니다.
  • 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
    • 링크 및 SNS 공유는 허용합니다.
  • 책의 내용을 변경할 수 없습니다.
  • 책의 내용을 상업적으로 사용할 수 없습니다.
  • 책의 내용을 어떠한 형태로든 재배포할 수 없습니다.

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.