아마존 웹 서비스를 다루는 기술: 실무에서 필요한 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 공유는 허용합니다.
  • 책의 내용을 변경할 수 없습니다.
  • 책의 내용을 상업적으로 사용할 수 없습니다.
  • 책의 내용을 어떠한 형태로든 재배포할 수 없습니다.

저자 서문

기술의 발전과 규모의 경제는 언제나 저를 놀라게 합니다. 가상화 기술이 발전하면서 물리적인 서버를 잘게 나눠 여러 사람이 쓸 수 있게 되었고, 한 곳에서 수많은 서버를 구입하고 운영하면서 구입 단가와 운영비는 낮아졌습니다. 이 두 가지 요소가 합쳐지면서 엄청난 시너지 효과가 나타났습니다. 이제 클릭 몇 번만 하면 저렴한 가격으로 원하는 만큼 서버를 가질 수 있게 되었습니다. 또한, 원하는 용량만큼 파일을 저장하고, 전 세계에 어디든지 빠른 속도로 파일을 배포하고, 급격히 몰려드는 트래픽도 걱정 없이 처리할 수 있습니다. 대용량 분산 데이터베이스와 검색 서버, 도메인 네임 시스템까지 제공합니다. 이런 시스템은 개인은 물론이고 대기업도 구축하기 힘든 시스템입니다.

제가 처음 회사에 다니면서 했던 일이 기억납니다. 구매팀이 사다 준 2U짜리 서버를 차에 싣고 IDC에 가서 무거운 서버를 낑낑대며 설치했습니다. 서버의 운영체제에 문제가 생기면 전화를 걸어 “재부팅해주세요”라고 이야기했습니다. 이제 이런 인간적인 면은 클라우드 시대가 되면서 추억 속의 일이 될지도 모르겠습니다.

아마존 웹 서비스는 클라우드 플랫폼의 대명사로 자리 잡았습니다. 그만큼 제공하는 기능도 많고, 활용 사례도 다양합니다. 여러 기업이 아마존 웹 서비스로 비용을 절감했다고 이야기합니다. 하지만, 가격에 의문을 품는 사람도 많습니다. 아마존 웹 서비스를 사용하면 무조건 비용을 줄일 수 있다고 주장하고, 한편에서는 비싸다고 논박합니다. 아마존 웹 서비스를 자신의 서비스 환경에 맞게 최적화한다면 어떤 서비스보다도 저렴할 것입니다. 하지만, 용도에 맞지 않는 곳에 사용하거나 요금을 아끼려는 시도를 하지 않는다면 매우 비싼 서비스가 되고 맙니다.

서비스를 어떻게 구축해야 하는지에 대한 정답은 없습니다. 아마존 웹 서비스의 기능들을 하나씩 배우고 활용하다 보면 어떤 곳에서 비용을 절감할 수 있을지 길이 보일 것입니다. 실무에 도입하고 나서도 지속적인 최적화와 모니터링을 통해 요금을 절감하기 위한 노력을 기울여야 합니다.

이 책에서는 웹 서비스, 게임, 모바일 애플리케이션 개발에 필요한 아마존 웹 서비스의 주요 기능들을 정리했습니다. 그리고 마지막 부분에서는 아마존 웹 서비스를 활용해 실전과 유사한 서비스를 구축해보는 실습을 준비했습니다. 이 책을 읽고 이를 바탕으로, 회사에서는 비용을 절감해 수익성을 높였으면 합니다. 그리고 스타트업과 벤처기업의 대성공을 기원합니다.

뛰어난 기획, 편집 실력으로 책의 완성도를 높여준 한동훈 님과 책이 나오기까지 고생해주신 길벗출판사 가족 여러분께 감사의 말씀을 드립니다. 마지막으로 언제나 저를 걱정해주시는 어머님께 정말 감사드립니다.

2014년 9월 이재홍


저작권 안내

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