AWS를 이해하고 글로벌 서비스를 위한 인프라 구축에 대해 배울 수 있습니다!

이 책에서는 프로토타이핑부터 시작해 전 세계를 대상으로 하는 서비스를 아마존 웹 서비스(AWS; Amazon Web Service)를 이용해 개발하는 과정을 다룬다. 이 과정을 따라가다 보면 AWS를 이해하고 글로벌 서비스를 위한 인프라 구축에 대한 통찰력을 얻을 수 있을 것이다.

★ 이 책에서 다루는 내용 ★

  • 기본적인 AWS 사용법
  • 효율적인 인프라 구축 방법과 구축을 위한 도구, 효율적인 구축을 위한 DevOps 조직 구축
  • 효율적인 인프라 관리를 위한 인프라 자동화, 모니터링, 업무 처리 시스템 구축
  • 클라우드 환경에서의 소프트웨어와 인프라의 통합

인터넷 서비스의 폭발적인 성장으로 소프트웨어와 인프라의 관계를 다시 설정해야 하는 요구가 생겨났다. 비교적 유연하게 환경 변화에 적응할 수 있는 소프트웨어와 달리, 인프라는 유연하게 대응하기가 쉽지 않다. 인프라는 서비스의 성장이 예상된다고 해서 마음대로 늘리거나 줄일 수 있는 성격의 것이 아니다. 그나마 서비스의 성장 곡선을 예측할 수 있다면 위험 부담 없이 인프라 계획을 세울 수 있겠지만 그렇지 않으면 엄청난 부담을 떠안아야 한다.

이러한 배경 속에서 클라우드 서비스가 전면에 떠올랐다. 클라우드 서비스는 유연하게 인프라를 운영할 수 있게 돕는다. 전기를 얻기 위해 집집마다 자가발전을 할 필요 없이 이미 구축된 공공 전기망에 코드를 꼽는 것으로 전기를 사용할 수 있는 것처럼 이미 구축된 클라우드 서비스에 접속하는 것만으로 인프라를 사용할 수 있다.

이 책에서는 가상의 회사를 하나 만들 것이다. 이 가상의 회사는 프로토타이핑부터 시작해 전 세계를 대상으로 하는 서비스를 AWS를 이용해 개발한다. 이 과정을 따라가면서 AWS를 이해하고 글로벌 서비스를 위한 인프라 구축에 대한 통찰력을 얻을 수 있을 것이다.

이 책의 특징과 이 책에서 다루는 내용은 다음과 같다.

  1. 이 책은 레퍼런스 가이드가 아니다. AWS에 인터넷 서비스를 위한 인프라를 구성하는 아이디어를 제공하는 것이 이 책의 목적이다. AWS의 기능에 대해서는 기본적인 사용법을 다루는 정도이며, 세부적인 사용법을 담고 있지는 않다.
  2. 주로 어떤 식으로 인프라를 구성해야 하고, 이를 위해 어떤 도구를 사용해야 하는지 등 인프라 구성 차원에서 좀 더 넓게 바라본다.
  3. 구성한 인프라를 효율적으로 관리하기 위한 인프라 자동화, 모니터링, 업무 처리 시스템 구축 등을 살펴본다.
  4. 클라우드 환경에서 소프트웨어와 인프라를 통합하는 방법을 찾는다.

윤상배

웹 프로그래밍으로 시작해 시스템/네트워크 소프트웨어 개발, 검색엔진 개발, 인터넷 서비스 품질관리, 가상화와 클라우드, 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 마치며
    •  
  • ▣ 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 마치며
    •  
  • ▣ 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 마치며
    •  
  • ▣ 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 마치며

관련 글