30
AWS ContainerDay EC2 Container Service + Vingle 20151214조휘철 Software Engineer

EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

Embed Size (px)

Citation preview

Page 1: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

EC2 Container Service + Vingle

2015년 12월 14일 조휘철 Software Engineer

Page 2: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Vingle 소개

“사람들은 자발적으로 좋아하는 것을 위해 모인다”

  3000개가 넘는 관심 기반 커뮤니티 기반 플랫폼 앱스토어, 안드로이드 마켓 소셜 분야 10위권

  MAU 900만

Page 3: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

AWS 스케치

EC2 Container Service

(Background)

Route 53 OpsWorks (Service)

CloudWatch S3 SNS

RDS

ElastiCache DynamoDB

RedShift

Elastic Load Balancing Users

Page 4: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

주로 사용하는 솔루션

Page 5: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Docker를 사용하기 까지..

Page 6: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

당시 AWS 스케치

Opsworks (Background)

Route 53 OpsWorks (Service)

CloudWatch S3 SNS

RDS

ElastiCache DynamoDB

RedShift

Elastic Load Balancing Users

문제의 구간

Page 7: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

당시 겪던 문제점

  느린 배포 속도

피크를 대비한 대응이 필요

  개발/프로덕션 환경 차이

필요 라이브러리 설치 및 코드 배포 (소요시간 20분)

Page 8: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

과거 배포 방식

로컬 개발 테스트 (5분)

스테이징 (20분)

테스트

프로덕션 (20분)

배포

Page 9: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Opsworks 배포 과정

배포

OpsWorks EC2

Provisioning (10분)

소스카피 assets빌드 (10분)

Opsworks에 정의된 Ruby On Rails App

On service (20분)

피크 대응 불가

Page 10: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

시도1. 빌드 후 배포

Page 11: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Opsworks 배포 과정

배포

OpsWorks EC2

Provisioning (10분)

소스카피 assets빌드 (0분)

Opsworks에 정의된 Ruby On Rails App

On service (10분)

부족함

Page 12: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

시도2. AMI를 사용한 Provisioning 스킵

Page 13: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Opsworks 배포 과정

배포

OpsWorks EC2

Provisioning (3분)

소스카피 assets빌드 (0분)

Opsworks에 정의된 Ruby On Rails App

On service (3분)

꾸준한 AMI 관리 필요

Page 14: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

시도3. Docker 도입

Page 15: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

새로운 배포 방식

로컬 개발 Docker빌드 스테이징

테스트

프로덕션

배포

Page 16: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Opsworks 배포 과정

배포

OpsWorks EC2

Booting (1분)

Container Deliver (1분)

Opsworks에 정의된 Ruby On Rails App

On service (2분)

Good

Page 17: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

퍼포먼스 벤치마킹

Page 18: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

퍼포먼스 벤치마킹

서비스에 적용하기로 결정

Page 19: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Opsworks 장단점 파악

장점

인스턴스 Role을 파악하기 쉬움

  Chef를 통한 세밀한 조정이 가능

  한눈에 모니터링 하기 쉽다

단점   Scale-out 할 때 불필요하지만 같이 Scale-out 되는 부분이 생김

인스턴스의 리소스가 효율적이지 않음

Page 20: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Background Docker화 진행

Page 21: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

당시 AWS 스케치

Opsworks (Background)

Route 53 OpsWorks (Service)

CloudWatch S3 SNS

RDS

ElastiCache DynamoDB

RedShift

Elastic Load Balancing Users

실험 대상

Page 22: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Vingle의 백그라운드는..

Page 23: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

  배포/Scale-out 하기 쉬운 UI 인스턴스에 효율적으로 컨테이너 배치   모니터링 용이

새로운 실험의 GOAL

Page 24: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

당시 검토한 것들

CoreOS

  컨테이너 전용 경량 리눅스   안전한 업데이트

AWS에서 쓰기 위해서는 CloudFormation을 이용한 방법이 있었으나, 관리가 불편해 보임

Kubernetes

구글   컨테이너 오케스트레이션

쉬운 설치를 위해 Cookbook을 기다리기로..

Page 25: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

때마침 ECS의 등장

Page 26: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

  서비스 관리를 위한 구성을 제공한다   효율적으로 컨테이너들을 배치/관리 해준다   쉬운 UI   무료로 제공된다   별도의 비용 없이 AWS Support를 받을 수 있다

ECS

Page 27: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

  개발팀 모두가 구조를 이해하는데 어려움이 없었음   Task별로 리소스를 다르게 할당이 가능   한눈에 모니터링이 가능   타 솔루션 검토에 비해 시간을 적게 투자 할 수 있음   Pioneer 정신

ECS 도입 배경

Page 28: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

현재는 완전히 ECS로 변경

m3.large instance 이용

Page 29: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Q & A

Page 30: EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day

AWS ContainerDay

Thank you