© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
정영준, AWS 솔루션즈 아키텍트 · 송주영, 삼성전자 선임연구원
Amazon ECS를 통한
Docker 기반 컨테이너 서비스 구축하기
의 ECS 를 이용한 Docker 활용기
본 강연에서 다룰 내용
• AWS의 컨테이너 환경
• ECS 를 활용한 컨테이너 환경의 장점
• 운영환경에서 컨테이너 활용을 위한 구조
• 삼성전자 고객 사례
• ECS 고급 활용을 위한 도구
• 맺음말
멀티 호스트 컨테이너 스케줄 전략은?
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
AWS 에서 제공되는 다양한 Docker 환경
• Amazon ECS
• CoreOS Tectonic (Kubernetes)
• Mesosphere DC/OS (Mesos)
• Docker Datacenter
AWS 에서 Docker 환경 구축하기
어떤 Docker 환경을 선택 하실건가요?Start!
You ==
Wizard?
Legacy
Apps?
Big
Data?
Cluster >
10000?
Love
Docker
CLI?
Cluster >
1000?
Cluster >
200?
Huge IT
team?
No
Yes
No
Yes
Inspiration:
http://adrianotto.com/wp-
content/uploads/2016/02/c
hoose-adventure-
1024x574.png
No Yes
Yes
YesNoYesNoYes
Yes
Amazon EC2 Container Service
모든 규모의
컨테이너 관리
유연한 컨테이너
배치 기능
AWS 에서
플랫폼으로 통합
Overview
ECS
관리를 위한 별도의
어플리케이션 이 필요 없음
매니지드 서비스
Overview
ECS
Overview
ECS
부하분산
모니터링접근제어
네트워킹로깅
자동확장
Deep integration
Amazon ECS
Docker
Task
Container Instance
Container
ECS Agent
ELB
Internet User /
Scheduler
Task
Container
Docker
Task
Container Instance
Container
ECS Agent
Task
Container
AZ 1
ELB
Docker
Task
Container Instance
Container
ECS Agent
Task
Container
AZ 2
Amazon
ECS
API
Cluster Management Engine
Key/Value Store
Agent Communication Service
Amazon ECS
ECS의 구성 요소
작업
인스턴스에서 실행되는 실제
컨테이너작업
작업 정의
작업에 대한 컨테이너 및 환경의
정의
클러스터
작업이 실행되는 EC2
인스턴스의 함대
매니저
클러스터 리소스 및 작업
상태 관리
스케줄러
클러스터 상태를 고려한 작업
배치
에이전트
EC2 인스턴스 및 매니저와
통신
클러스터, 스케줄러, 작업
스케줄러
매니저클러스터
작업 정의
작업
에이전트
간단한 ECS 시연영상 – 3min
운영
효율화
신뢰성 향상
최적화된 자원 활용 운영 부담 최소화
성능 효율성 &
비용 최적화
ECS 통한
운영 효율화
작업 배치 구조
클러스터 제약조건
고객 제약조건
배치 전략
필터 적용
CPU, 메모리 및 포트 요구 사항 충족
위치, 인스턴스 유형, AMI 또는 사용자 정의
속성 제약에 대한 필터링
배치 전략을 충족하는 인스턴스 식별
배치 할 최종 컨테이너 인스턴스 선택
배치 조건
이름 예시
AMI ID attribute:ecs.ami-id == ami-eca289fb
가용영역 attribute:ecs.availability-zone == us-east-1a
인스턴스 타입 attribute:ecs.instance-type == t2.small
고유 인스턴스 type=“distinctInstances”
커스텀 attribute:stack == prod
ECS 통한
운영 효율화
지원되는 배치전략
Binpacking Spread Affinity Distinct Instance
ECS 통한
운영 효율화
C4 R3 M4R3 R3
R3 R3 R3
M4 M4
M4 M4 M4
C4 C4
C4 C4 C4
연산집약 서비스 인메모리 서비스 I/O 위주 서비스
C4
ECS 클러스터
R3 M4R3 R3
R3 R3 R3
M4 M4
M4 M4 M4
C4 C4
C4 C4 C4
연산집약 서비스 인메모리 서비스I/O 위주 서비스
C4
ECS 클러스터
R3 R3 R3
R3 R3 R3
M4
M4
M4 M4
M4 M4
C4 C4
C4 C4 C4
연산집약 서비스 I/O 위주 서비스메모리 서비스
Spot Fleet
C4
C4
R3
R3
Using ECS
Companies
삼성전자 ECS 도입 사례
Galaxy S8 | S8+
Samsung KNOX / IOT
SAMSUNG KNOX
ECS for
Development
SAMSUNG KNOX
Background
Service3
Service2
Service1
Service5
HQ
Canada
India
USA
China
Vietnam
Service4
Developer
Techops
Devops
SAMSUNG KNOX
Problems &
Requirements
§ Easy to manage
§ Reduce cost
§ Convenience / Simple
§ Automation
§ Many services
§ Many people (teams)
§ Unpredictable
§ Communication
§ Rules & Convention
Problems Requirements
Samsung KNOX - Container for developers (2015)
Bastion / EC2
#/bin/sh
#1 Mapping Port
#2 Create Container
#3 Create ELB
#4 Create Route53 addr
#5 From Standard docker image
Create resources
Parameter
- service name
- DNS ( SSL )
- Maker
Local Jenkins
EC2
Docker
Container#
Container# Container#
Container#
Samsung KNOX - Container for developers (2015)
Bastion / EC2
Shipping app!
Deployment by ansible-playbook
Ansible Script : standard-deployment.yml
Parameter:
1) 1) Hosts 2) src_app_name
2) 3) dest_app_name 4) file_path 5) etc
Local Jenkins
EC2
Docker
Container#
Container# Container#
Container#
Monitoring Netdata
SAMSUNG KNOX
Benefit!?
Benefit
§ Easy to manage : 30↑ instances -> Just one r3.2xlarge !
§ Cost : $1.5 -> $0.665
§ Automation : 1 trigger , standard
§ Performance : 1~2 bursting core -> 4 core
But!!
• Single failure point
• Unexpected resources
• Unexpected usage
• Expandability & Flexibility
• Managing
KubernetesECS
Samsung KNOX – Orchestration (2016)
Mesos Swarm
Samsung KNOX - Container for developers (2017~)
ECS
OS
Bins/Libs Bins/Libs
App2App1
Create image from Dockerfile
Create ECR
Create listener + TG
Register Task definition
Run task
ECS + ECR + ALB + t2.xlarge!
Local Jenkins
Host-based ALB
Bastion / EC2
ECS
OS
Bins/Libs Bins/Libs
App2App1
ECS
OS
Bins/Libs Bins/Libs
App2App1
ECS
OS
Bins/Libs Bins/Libs
App2App1
SAMSUNG IOT
With
ECS for
Production
Samsung IOT - Container for production (2017~)
Download App
Create image from Dockerfile
Push to ECR
Register Task definition
Jenkins / EC2
Account #2
Account #3
Gitlab / EC2Account #1
Terraform + ECS + ECR + ALB
Local Jenkins
ALB Policy
ECS Slave
On AWS Console
Update service!
Account #nTerraform
Infrastructure as a code
ECS
OS
Bins/Libs Bins/Libs
App2App1
ECS
OS
Bins/Libs Bins/Libs
App2App1
ECS
OS
Bins/Libs Bins/Libs
App2App1
ECS
OS
Bins/Libs Bins/Libs
App2App1
제어
다양한
Introducing
Blox
Introducing
개발자는 다음과 같은 기능이 필요합니다
오픈 소스
Blox
Introducing
공개
Blox
Introducing
Blox
EC2 인스턴스,
AWS의 컨테이너
또는 원하는 곳에서
로컬, 사내 구축 환경
어느곳에서나 실행가능
컨테이너 배포
ECS API 호출
상태 동기화
쿼리
Vision
The
Blox 제어권
Roadmap
The
Blox
http://blox.github.io
Open
Source
12 개 가용 영역의 3 개 영역에 100,000 개 인스턴스
서비스 민첩성을 위해 채택 된 마이크로 서비스
2016 년 컨테이너로 이동 시작
AWS를 사용하여 운영 부담을 최소화하는 회사
ECS 팀과 협력하여 Titus(Netflix container 환경)를 ECS에 통합
ECS를 활용하여 모든 컨테이너 워크로드를 호스팅 하려고 계획 중
모니터링 디버깅
AWS X-Ray
• 완전 관리형 분산 애플리케이션 성능 추적 서비스
• 마이크로서비스 시작과 끝에 대한 디버깅 및 추적
ü 서비스에 대한 시각적 토폴로지 제공
ü 개별 요청에 대한 로그 추적
ü 성능 이슈 및 오류 발생 원인에 대한 확인 및 문제 해결
호출에 대한 전체 과정 파악
사용자 요청이 애플리케이션을
통과하는 전체 과정을 추적
애플리케이션 성능 개선
지연 시간이 늘어나는 위치를
빠르게 확인한 후 성능이
저하되는 특정 서비스 및 경로에
대한 문제 해결 가능
애플리케이션 문제 식별
트레이스 데이터 태깅 및
필터링을 통해 어느 위치에서
무엇이 성능 문제를 유발하는지
정확히 파악
AWS X-Ray - 에이전트 설치 및 추적 기능
1. Amazon EC2
2. Amazon ECS (Docker)
3. AWS Node.JS (SDK)
데모: AWS X-Ray를 통한 성능 모니터링
Amazon ECS 체크 포인트
• 다양한 규모에서 손쉽게 확장 가능한 관리 형 서비스
• 손쉬운 오케스트레이션 및 자동화로 운영 효율 향상
• 기본 AWS 통합
• IAM 역할, ALB, VPC, Cloudwatch 로그, 오토스케일, ECR 활용,
CodeCommit, CodePipeline, CodeDeploy, X-ray, StepFunction, Etc
• Blox 를 통한 ECS 운영 커스터 마이징
• X-Ray, StepFunction 을 통한 모니터링 디버깅 옵션
본 강연이 끝난 후…
• 마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 (윤석찬, 빙글 이상현)
• Amazon ECS 시작하기 - https://aws.amazon.com/ko/ecs/getting-started/
• Amazon ECS 레퍼런스 아키텍처 -
https://aws.amazon.com/ko/blogs/compute/service-discovery-an-amazon-ecs-
reference-architecture/
• Amazon ECS 자세히 들여다 보기 -
http://www.allthingsdistributed.com/2015/07/under-the-hood-of-the-amazon-ec2-
container-service.html
• Amazon ECS 로 마이크로서비스 구축 하기 -
https://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-running-
microservices-on-amazon-ecs-con309
• Netflix and Containers (Titus - https://www.slideshare.net/aspyker/netflix-and-
containers-titus)
• X-Ray 관련 발표 - https://www.youtube.com/watch?v=75MRve4nv8s
함께 해주셔서 감사합니다!
https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에
참여하시면, 행사후 기념품을 드립니다.
#AWSSummitKR 해시태그로 소셜 미디어에
여러분의 행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜
채널로 공유될 예정입니다.
여러분의 피드백을 기다립니다!

Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017

  • 1.
    © 2017, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 정영준, AWS 솔루션즈 아키텍트 · 송주영, 삼성전자 선임연구원 Amazon ECS를 통한 Docker 기반 컨테이너 서비스 구축하기 의 ECS 를 이용한 Docker 활용기
  • 2.
    본 강연에서 다룰내용 • AWS의 컨테이너 환경 • ECS 를 활용한 컨테이너 환경의 장점 • 운영환경에서 컨테이너 활용을 위한 구조 • 삼성전자 고객 사례 • ECS 고급 활용을 위한 도구 • 맺음말
  • 3.
    멀티 호스트 컨테이너스케줄 전략은? Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS
  • 4.
    AWS 에서 제공되는다양한 Docker 환경 • Amazon ECS • CoreOS Tectonic (Kubernetes) • Mesosphere DC/OS (Mesos) • Docker Datacenter
  • 5.
    AWS 에서 Docker환경 구축하기 어떤 Docker 환경을 선택 하실건가요?Start! You == Wizard? Legacy Apps? Big Data? Cluster > 10000? Love Docker CLI? Cluster > 1000? Cluster > 200? Huge IT team? No Yes No Yes Inspiration: http://adrianotto.com/wp- content/uploads/2016/02/c hoose-adventure- 1024x574.png No Yes Yes YesNoYesNoYes Yes
  • 6.
    Amazon EC2 ContainerService 모든 규모의 컨테이너 관리 유연한 컨테이너 배치 기능 AWS 에서 플랫폼으로 통합
  • 7.
  • 8.
  • 9.
  • 10.
    Docker Task Container Instance Container ECS Agent ELB InternetUser / Scheduler Task Container Docker Task Container Instance Container ECS Agent Task Container AZ 1 ELB Docker Task Container Instance Container ECS Agent Task Container AZ 2 Amazon ECS API Cluster Management Engine Key/Value Store Agent Communication Service Amazon ECS
  • 11.
    ECS의 구성 요소 작업 인스턴스에서실행되는 실제 컨테이너작업 작업 정의 작업에 대한 컨테이너 및 환경의 정의 클러스터 작업이 실행되는 EC2 인스턴스의 함대 매니저 클러스터 리소스 및 작업 상태 관리 스케줄러 클러스터 상태를 고려한 작업 배치 에이전트 EC2 인스턴스 및 매니저와 통신
  • 12.
  • 13.
  • 16.
  • 17.
  • 18.
    최적화된 자원 활용운영 부담 최소화 성능 효율성 & 비용 최적화
  • 19.
    ECS 통한 운영 효율화 작업배치 구조 클러스터 제약조건 고객 제약조건 배치 전략 필터 적용 CPU, 메모리 및 포트 요구 사항 충족 위치, 인스턴스 유형, AMI 또는 사용자 정의 속성 제약에 대한 필터링 배치 전략을 충족하는 인스턴스 식별 배치 할 최종 컨테이너 인스턴스 선택
  • 20.
    배치 조건 이름 예시 AMIID attribute:ecs.ami-id == ami-eca289fb 가용영역 attribute:ecs.availability-zone == us-east-1a 인스턴스 타입 attribute:ecs.instance-type == t2.small 고유 인스턴스 type=“distinctInstances” 커스텀 attribute:stack == prod ECS 통한 운영 효율화
  • 21.
    지원되는 배치전략 Binpacking SpreadAffinity Distinct Instance ECS 통한 운영 효율화
  • 22.
    C4 R3 M4R3R3 R3 R3 R3 M4 M4 M4 M4 M4 C4 C4 C4 C4 C4 연산집약 서비스 인메모리 서비스 I/O 위주 서비스
  • 23.
    C4 ECS 클러스터 R3 M4R3R3 R3 R3 R3 M4 M4 M4 M4 M4 C4 C4 C4 C4 C4 연산집약 서비스 인메모리 서비스I/O 위주 서비스
  • 25.
    C4 ECS 클러스터 R3 R3R3 R3 R3 R3 M4 M4 M4 M4 M4 M4 C4 C4 C4 C4 C4 연산집약 서비스 I/O 위주 서비스메모리 서비스 Spot Fleet C4 C4 R3 R3
  • 26.
  • 27.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
    SAMSUNG KNOX Problems & Requirements §Easy to manage § Reduce cost § Convenience / Simple § Automation § Many services § Many people (teams) § Unpredictable § Communication § Rules & Convention Problems Requirements
  • 34.
    Samsung KNOX -Container for developers (2015) Bastion / EC2 #/bin/sh #1 Mapping Port #2 Create Container #3 Create ELB #4 Create Route53 addr #5 From Standard docker image Create resources Parameter - service name - DNS ( SSL ) - Maker Local Jenkins EC2 Docker Container# Container# Container# Container#
  • 35.
    Samsung KNOX -Container for developers (2015) Bastion / EC2 Shipping app! Deployment by ansible-playbook Ansible Script : standard-deployment.yml Parameter: 1) 1) Hosts 2) src_app_name 2) 3) dest_app_name 4) file_path 5) etc Local Jenkins EC2 Docker Container# Container# Container# Container# Monitoring Netdata
  • 36.
    SAMSUNG KNOX Benefit!? Benefit § Easyto manage : 30↑ instances -> Just one r3.2xlarge ! § Cost : $1.5 -> $0.665 § Automation : 1 trigger , standard § Performance : 1~2 bursting core -> 4 core But!! • Single failure point • Unexpected resources • Unexpected usage • Expandability & Flexibility • Managing
  • 37.
    KubernetesECS Samsung KNOX –Orchestration (2016) Mesos Swarm
  • 38.
    Samsung KNOX -Container for developers (2017~) ECS OS Bins/Libs Bins/Libs App2App1 Create image from Dockerfile Create ECR Create listener + TG Register Task definition Run task ECS + ECR + ALB + t2.xlarge! Local Jenkins Host-based ALB Bastion / EC2 ECS OS Bins/Libs Bins/Libs App2App1 ECS OS Bins/Libs Bins/Libs App2App1 ECS OS Bins/Libs Bins/Libs App2App1
  • 39.
  • 40.
    Samsung IOT -Container for production (2017~) Download App Create image from Dockerfile Push to ECR Register Task definition Jenkins / EC2 Account #2 Account #3 Gitlab / EC2Account #1 Terraform + ECS + ECR + ALB Local Jenkins ALB Policy ECS Slave On AWS Console Update service! Account #nTerraform Infrastructure as a code ECS OS Bins/Libs Bins/Libs App2App1 ECS OS Bins/Libs Bins/Libs App2App1 ECS OS Bins/Libs Bins/Libs App2App1 ECS OS Bins/Libs Bins/Libs App2App1
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
    Blox EC2 인스턴스, AWS의 컨테이너 또는원하는 곳에서 로컬, 사내 구축 환경 어느곳에서나 실행가능 컨테이너 배포 ECS API 호출 상태 동기화 쿼리
  • 47.
  • 48.
  • 49.
  • 50.
    12 개 가용영역의 3 개 영역에 100,000 개 인스턴스 서비스 민첩성을 위해 채택 된 마이크로 서비스 2016 년 컨테이너로 이동 시작 AWS를 사용하여 운영 부담을 최소화하는 회사 ECS 팀과 협력하여 Titus(Netflix container 환경)를 ECS에 통합 ECS를 활용하여 모든 컨테이너 워크로드를 호스팅 하려고 계획 중
  • 51.
  • 52.
    AWS X-Ray • 완전관리형 분산 애플리케이션 성능 추적 서비스 • 마이크로서비스 시작과 끝에 대한 디버깅 및 추적 ü 서비스에 대한 시각적 토폴로지 제공 ü 개별 요청에 대한 로그 추적 ü 성능 이슈 및 오류 발생 원인에 대한 확인 및 문제 해결 호출에 대한 전체 과정 파악 사용자 요청이 애플리케이션을 통과하는 전체 과정을 추적 애플리케이션 성능 개선 지연 시간이 늘어나는 위치를 빠르게 확인한 후 성능이 저하되는 특정 서비스 및 경로에 대한 문제 해결 가능 애플리케이션 문제 식별 트레이스 데이터 태깅 및 필터링을 통해 어느 위치에서 무엇이 성능 문제를 유발하는지 정확히 파악
  • 53.
    AWS X-Ray -에이전트 설치 및 추적 기능 1. Amazon EC2 2. Amazon ECS (Docker) 3. AWS Node.JS (SDK)
  • 54.
    데모: AWS X-Ray를통한 성능 모니터링
  • 56.
    Amazon ECS 체크포인트 • 다양한 규모에서 손쉽게 확장 가능한 관리 형 서비스 • 손쉬운 오케스트레이션 및 자동화로 운영 효율 향상 • 기본 AWS 통합 • IAM 역할, ALB, VPC, Cloudwatch 로그, 오토스케일, ECR 활용, CodeCommit, CodePipeline, CodeDeploy, X-ray, StepFunction, Etc • Blox 를 통한 ECS 운영 커스터 마이징 • X-Ray, StepFunction 을 통한 모니터링 디버깅 옵션
  • 57.
    본 강연이 끝난후… • 마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 (윤석찬, 빙글 이상현) • Amazon ECS 시작하기 - https://aws.amazon.com/ko/ecs/getting-started/ • Amazon ECS 레퍼런스 아키텍처 - https://aws.amazon.com/ko/blogs/compute/service-discovery-an-amazon-ecs- reference-architecture/ • Amazon ECS 자세히 들여다 보기 - http://www.allthingsdistributed.com/2015/07/under-the-hood-of-the-amazon-ec2- container-service.html • Amazon ECS 로 마이크로서비스 구축 하기 - https://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-running- microservices-on-amazon-ecs-con309 • Netflix and Containers (Titus - https://www.slideshare.net/aspyker/netflix-and- containers-titus) • X-Ray 관련 발표 - https://www.youtube.com/watch?v=75MRve4nv8s
  • 58.
  • 59.
    https://www.awssummit.kr AWS Summit 모바일앱을 통해 지금 세션 평가에 참여하시면, 행사후 기념품을 드립니다. #AWSSummitKR 해시태그로 소셜 미디어에 여러분의 행사 소감을 올려주세요. 발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜 채널로 공유될 예정입니다. 여러분의 피드백을 기다립니다!