cloud taekwon 2015 - amazon ec2 container service 자세히 보기
TRANSCRIPT
스타트업과 개발자들을 위한 AWS 클라우드 태권
Amazon EC2 Container Service 자세히 보기 (고객사 Vingle과 함께)
김상필 솔루션즈 아키텍트, 한국아마존웹서비스 조휘철 소프트웨어 엔지니어, VINGLE.NET
스타트업과 개발자들을 위한 AWS 클라우드 태권
• 운영체제 가상화
• 프로세스 격리
• 자동화
• 이미지 기반 Server
Guest OS
Bins/Libs Bins/Libs
App2 App1
컨테이너란?
스타트업과 개발자들을 위한 AWS 클라우드 태권
스타트업과 개발자들을 위한 AWS 클라우드 태권
Portable
• 이식성 장점 • 이미지 기반, 버전 관리 • 어느 곳에서 운영하던 동일한 환경
• 개발/테스트/운영 환경 동일
Server
Guest OS
Bins/Libs Bins/Libs
App2 App1
컨테이너 기술의 장점
스타트업과 개발자들을 위한 AWS 클라우드 태권
Flexible • 유연성 • 이미지 기반으로 배포되는 컨테
이너는 클린하고, 재사용 가능한 모듈화 환경
• 마이크로서비스를 통해 어플리케이션을 작은 단위로 분할하고, 복잡성 줄이고, 신속하게 개발하는 것을 가능하게 함
Server
Guest OS
Bins/Libs Bins/Libs
App2 App1
컨테이너 기술의 장점
스타트업과 개발자들을 위한 AWS 클라우드 태권
Fast • 도커 이미지는 가볍다. • 개발, 빌드, 배포하는 과정이 빠르게 이루어진다.
Server
Guest OS
Bins/Libs Bins/Libs
App2 App1
컨테이너 기술의 장점
스타트업과 개발자들을 위한 AWS 클라우드 태권
Efficient • 필요한 리소스만을 배포 • OS kernel & libs 를 공유하여 사용하기 때문에 어플리케이션이 배포하는 것만을 배포 Server
Guest OS
Bins/Libs Bins/Libs
App2 App1
컨테이너 기술의 장점
스타트업과 개발자들을 위한 AWS 클라우드 태권
+
• 손쉬운 배포
• 환경의 신뢰성
• 대규모 환경 관리의 용이성
• 자동화
• 분산 애플리케이션
Docker를 AWS에서 구동하는 이유
스타트업과 개발자들을 위한 AWS 클라우드 태권
손쉬운 애플리케이션 배포
애플리케이션 라이프 사이클
지속적 통합 (Continuous Integration)
지속적 배포 (Continuous Delivery)
플랫폼 서비스 (PaaS)
분산 애플리케이션 구성
분산 애플리케이션 확장
컨테이너 사용 사례
스타트업과 개발자들을 위한 AWS 클라우드 태권
서비스 스케줄러 로드 밸런싱 관리 콘솔 사설 저장소 (Private Repositories) 지원 데이터 볼륨 AWS CloudTrail 통합 비용 - $0, EC2 인스턴스 비용만 발생
Amazon EC2 Container Service
스타트업과 개발자들을 위한 AWS 클라우드 태권
Container Instance
Cluster
Task Definitions
Tasks
Service Container Instance
Container Instance
…
Container Instance
Cluster
Task definition
Task
Service
주요 구성 요소
스타트업과 개발자들을 위한 AWS 클라우드 태권
별도 실행 없음
전체 상태 관리
컨트롤 및 모니터링
대규모 확장
모든 규모의 클러스터를 손쉽게 관리
스타트업과 개발자들을 위한 AWS 클라우드 태권
어플리케이션
배치 작업
복수 스케줄러
유연한 컨테이너 배치
스타트업과 개발자들을 위한 AWS 클라우드 태권
Elastic Load Balancing
Elastic Block Store
Virtual Private Cloud
IAM
CloudTrail
AWS 서비스와 함께 사용되도록 설계
스타트업과 개발자들을 위한 AWS 클라우드 태권
전체 API 제공
오픈소스 에이전트
커스텀 스케줄러
확장 가능
스타트업과 개발자들을 위한 AWS 클라우드 태권
ECS + Vingle
스타트업과 개발자들을 위한 AWS 클라우드 태권
Vingle 소개
“사람들은 자발적으로 좋아하는 것을 위해 모인다”
3000개가 넘는 관심 기반 커뮤니티 기반 플랫폼 앱스토어, 안드로이드 마켓 소셜 분야 10위권
MAU 900만
스타트업과 개발자들을 위한 AWS 클라우드 태권
AWS 스케치
EC2 Container Service
(Background)
Route 53 OpsWorks (Service)
CloudWatch S3 SNS
RDS
ElastiCache DynamoDB
RedShift
Elastic Load Balancing Users
스타트업과 개발자들을 위한 AWS 클라우드 태권
주로 사용하는 솔루션
스타트업과 개발자들을 위한 AWS 클라우드 태권
Docker를 사용하기 까지..
스타트업과 개발자들을 위한 AWS 클라우드 태권
당시 AWS 스케치
Opsworks (Background)
Route 53 OpsWorks (Service)
CloudWatch S3 SNS
RDS
ElastiCache DynamoDB
RedShift
Elastic Load Balancing Users
문제의 구간
스타트업과 개발자들을 위한 AWS 클라우드 태권
당시 겪던 문제점
느린 배포 속도
피크를 대비한 대응이 필요
개발/프로덕션 환경 차이
필요 라이브러리 설치 및 코드 배포 (소요시간 20분)
스타트업과 개발자들을 위한 AWS 클라우드 태권
과거 배포 방식
로컬 개발 테스트 (5분)
스테이징 (20분)
테스트
프로덕션 (20분)
배포
스타트업과 개발자들을 위한 AWS 클라우드 태권
Opsworks 배포 과정
배포
OpsWorks EC2
Provisioning (10분)
소스카피 assets빌드 (10분)
Opsworks에 정의된 Ruby On Rails App
On service (20분)
피크 대응 불가
스타트업과 개발자들을 위한 AWS 클라우드 태권
시도1. 빌드 후 배포
스타트업과 개발자들을 위한 AWS 클라우드 태권
Opsworks 배포 과정
배포
OpsWorks EC2
Provisioning (10분)
소스카피 assets빌드 (0분)
Opsworks에 정의된 Ruby On Rails App
On service (10분)
부족함
스타트업과 개발자들을 위한 AWS 클라우드 태권
시도2. AMI를 사용한 Provisioning 스킵
스타트업과 개발자들을 위한 AWS 클라우드 태권
Opsworks 배포 과정
배포
OpsWorks EC2
Provisioning (3분)
소스카피 assets빌드 (0분)
Opsworks에 정의된 Ruby On Rails App
On service (3분)
꾸준한 AMI 관리 필요
스타트업과 개발자들을 위한 AWS 클라우드 태권
시도3. Docker 도입
스타트업과 개발자들을 위한 AWS 클라우드 태권
새로운 배포 방식
로컬 개발 Docker빌드 스테이징
테스트
프로덕션
배포
스타트업과 개발자들을 위한 AWS 클라우드 태권
Opsworks 배포 과정
배포
OpsWorks EC2
Booting (1분)
Container Deliver (1분)
Opsworks에 정의된 Ruby On Rails App
On service (2분)
Good
스타트업과 개발자들을 위한 AWS 클라우드 태권
퍼포먼스 벤치마킹
스타트업과 개발자들을 위한 AWS 클라우드 태권
퍼포먼스 벤치마킹
서비스에 적용하기로 결정
스타트업과 개발자들을 위한 AWS 클라우드 태권
Opsworks 장단점 파악
장점
인스턴스 Role을 파악하기 쉬움
Chef를 통한 세밀한 조정이 가능
한눈에 모니터링 하기 쉽다
단점 Scale-out 할 때 불필요하지만 같이 Scale-out 되는 부분이 생김
인스턴스의 리소스가 효율적이지 않음
스타트업과 개발자들을 위한 AWS 클라우드 태권
Background Docker화 진행
스타트업과 개발자들을 위한 AWS 클라우드 태권
당시 AWS 스케치
Opsworks (Background)
Route 53 OpsWorks (Service)
CloudWatch S3 SNS
RDS
ElastiCache DynamoDB
RedShift
Elastic Load Balancing Users
실험 대상
스타트업과 개발자들을 위한 AWS 클라우드 태권
Vingle의 백그라운드는..
스타트업과 개발자들을 위한 AWS 클라우드 태권
배포/Scale-out 하기 쉬운 UI 인스턴스에 효율적으로 컨테이너 배치 모니터링 용이
새로운 실험의 GOAL
스타트업과 개발자들을 위한 AWS 클라우드 태권
당시 검토한 것들
CoreOS
컨테이너 전용 경량 리눅스 안전한 업데이트
AWS에서 쓰기 위해서는 CloudFormation을 이용한 방법이 있었으나, 관리가 불편해 보임
Kubernetes
구글 컨테이너 오케스트레이션
쉬운 설치를 위해 Cookbook을 기다리기로..
스타트업과 개발자들을 위한 AWS 클라우드 태권
때마침 ECS의 등장
스타트업과 개발자들을 위한 AWS 클라우드 태권
서비스 관리를 위한 구성을 제공한다 효율적으로 컨테이너들을 배치/관리 해준다 쉬운 UI 무료로 제공된다 별도의 비용 없이 AWS Support를 받을 수 있다
ECS
스타트업과 개발자들을 위한 AWS 클라우드 태권
개발팀 모두가 구조를 이해하는데 어려움이 없었음 Task별로 리소스를 다르게 할당이 가능 한눈에 모니터링이 가능 타 솔루션 검토에 비해 시간을 적게 투자 할 수 있음 Pioneer 정신
ECS 도입 배경
스타트업과 개발자들을 위한 AWS 클라우드 태권
현재는 완전히 ECS로 변경
m3.large instance 이용
스타트업과 개발자들을 위한 AWS 클라우드 태권
Demo
스타트업과 개발자들을 위한 AWS 클라우드 태권
사전 공개 : EC2 Container Registry (ECR)
S3와 연계된 관리형 서비스
Docker CLI, ECS, IAM 과 연계
Shippable, CloudBees, CodeShip, Wercker 파트너 솔루션들과 연동
EC2 Container Registry
스타트업과 개발자들을 위한 AWS 클라우드 태권
CLI를 통해 Docker Compose 지원 새로운 Docker Container 구성 옵션 지원
working directory, privileged execution, read-only root filesystem, DNS servers,
ulimits, log configuration
가용존 (AZ) 인지 스케쥴링
EC2 Container 업데이트
스타트업과 개발자들을 위한 AWS 클라우드 태권
Next Steps
제품 웹사이트 - http://aws.amazon.com/ecs/
문서 - http://docs.aws.amazon.com/AmazonECS/latest/developerguide/
시작하기 - http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_GetStarted.html
스타트업과 개발자들을 위한 AWS 클라우드 태권
THANK YOU
Amazon EC2 Container Service 자세히 보기 (고객사 Vingle과 함께)