SlideShare a Scribd company logo
1 of 47
Download to read offline
AWS + Docker 적용기
조휘철
(derrick.cho@vingle.net)
빙글 소개
“사람들은 자발적으로 좋아하는 것을 위해 모인다”
관심사 기반 커뮤니티 플랫폼
jobs.vingle.net
개발 스택
- Amazon AWS
- Ruby on Rails ( + nginx, unicorn )
- Postgresql
- Memcached, Redis
- S3
- Redshift
- Elasticsearch ( + logstash )
- Sidekiq
- Etc
서버 구조
배포 방식
+
Opsworks를 좋아하는 이유
마법의 버튼
배포 과정 #1
로컬에서 개발
릴리즈 브랜치 push
CI, staging
배포 과정 #2
클릭
배포 과정 #3
클릭
배포할때 일어나는 일들
1. Opsworks built-in recipes
= 약 5분
배포할때 일어나는 일들
2. setup recipes
- 미리 작성해둔 chef-cookbook을 이용
- Instance role에 따라 설치할 recipe를 정함
= 약 5분
배포할때 일어나는 일들
3. Bundle install
= 약 6분
Gem 갯수(약 130개) 설치
4. Precompile
총 시간
Recipe(10분) + Bundle(6분) + Precompile(6
분)
= 약 22분
배포할때 일어나는 일들
= 약 6분Asset 컴파일
해결하기 위한 노력
- Recipes : AMI를 사용하자?
- 10분(5분 + 5분) -> 3분
- Bundle Install : 압축 바이너리 이용?
- 일부 Gem이 제대로 작동하지 않음
- 6분
- Precompile : 미리 컴파일해서 배포하자
- 6분 -> 0분
- 총 9분까지 줄임!
* AMI란? 미리 만든 이미지
추가로 해결하고자 하였던 것들
- 외부 의존성으로 인해 배포가 늦어지는 경우
- Ubuntu Repository server
- Github
- Rubygem server
- Gem이 추가될때마다 빌드 시간이 늦어짐
- 로컬에서 Production 환경을 세팅해서 테스
트
여러 방법을 모색하다, 핫하
다는 Docker를 조사하기
시작했습니다
Docker는 대체 무엇인가?
- 발음기호 ˈdɑː.kɚ
- 컨테이너 기반 가상화 에코시스템
- 오픈소스 (Apache 2.0 License)
- Github 20위 (별 2만개)
- Go 언어로 만들어진 것 중 가장 인기가 높음
Docker는 대체 무엇인가?
- 가상 머신과 비교하면..
가상 머신 구성
도
Docker 구성도
Docker 도입을 통해 기대한 것들
- Chef Recipe 보다 빠른 설치
- 변경사항에 대해서 바이너리로 배포
- 도입해보고자 하는 것들에 대한 빠른 프로토
타입핑
- 로컬에서 프로덕션 환경 구축
만족에 대한 기준선
- 성능이 크게 떨어지면 안됨
출처: http://www.slideshare.net/modestjude/dockerat-deview-2013
만족에 대한 기준선
- 너무 어렵지 않아야함
Dockerfile 작성이 대부분 bash script를 기초
- 배포가 쉬워야함
- 빌드가 쉬워야함
빌드 조사 - dockerhub (장점)
- http://hub.docker.com
- Docker에서 공식적으로 운영
- Github 연동 지원
- 가격이 저렴 ( private repo $7)
- Automated 빌드 지원
빌드 조사 - dockerhub (단점)
- 빌드 속도가 너무 느림
=> 캐싱이 안됨
- 보안에 대한 신뢰성이 떨어짐
- Deploy 관련된 기능들은 제공해주지 않음
(단순한 repository 역할만 수행)
빌드 - 결론
- 기존에 사용하던 Jenkins에 Docker build 역
할 추가
=> 캐싱의 이점을 살릴 수 있음
- 빌드 된 docker컨테이너의 저장소는
dockerhub으로 사용
배포 기준선
- 다루기 쉬우면 좋겠다
- Web UI를 가지면 더 좋을 것 같다
- 모니터링이 가능하면 좋겠다
- 배포 과정에서 컨넥션이 끊기는일이 없다면
좋겠다
배포 조사 - CoreOS
- Docker 전용 경량 리눅스
- fleet
- heroku buildpack 기반의
deis
- OS 변경은 큰 작업.. maybe someday..
배포 조사 - Panamax
배포 조사 - Panamax
- 이쁘고 쉬운 UI
- Beta 개발중
- CoreOS 기반..
배포 조사 - Kubernetes
- 구글에서 만듬
- 사용법이 구글 스타일
- 그래도 Github에 web-ui 등이 많이 있음
배포 조사 - elasticbeanstalk
- AWS 스타일 PaaS
- Docker 지원
- 컨테이너 한개만 지원..
- EC2 Container Service의 등장만 보아도,
컨테이너 전문 서비스는 아닌듯
배포 조사 - 그 외..
- Dockership
- Centurion
- longshoreman
- Docker API를 이용한 직접 코딩..
- 개인적으로 dockerode가 편함..
- Rancher
- 많긴 한데.. 마음에 드는건 없었습니다
선택한 것 - Opsworks
- 계속해서 써오던 것..
- 맞춤은 아니지만 만능(?)
- 당장에 적용하기에 큰 어려움이 없음
- 좋은 대안이 나오기 전까지 쓰기로함
적용후 구조
- 배포 3분 이내 (새 인스턴스 기준)
- Chef Cookbook 작성때보다 팀원들의 참여가
좋아짐
- 쉽게 로컬에서 프로덕션 환경을 돌릴 수 있음
- 만들어둔 스크립트로, 빠른 클러스터 구축이
가능해서 프로토 타이핑 테스트에 용이
결과 - 얻은 것들
- 빌드때 DeviceMapper 관련 오류가 자주 발생
함
=> dockerhub 빌드는 괜찮음
- 이전에는 없던 크래시 이슈들이 생김
- 컨테이너 캐싱으로 인한 디스크 용량이 굉장
히 큼
- Base 이미지의 운영체제가 호스트와 다른 경
우, 에러 유발
결과 - 단점들
Benchmark
NAT방식 vs HOST방식
참고 : http://www.infoq.com/news/2014/08/vm-containers-performance
계속 진행중인 것들
- 배포시에 new 컨테이너가 start 된 이후에
old컨테이너를 내리는 과정이 필요함
- 이때 기존의 User Connection이 끊어지면 안
됨
- 자동으로 이루어 져야함
Rolling Deploy를 위한 노력
Specialone
- 동일 그룹내에서 가장 최근에 start된 컨테이
너만 남기고 모두 stop
- etcd service discovery 지원
https://github.com/elgniv/specialone
Spetha
- speciaone + etcd + HAproxy
- for web
- etcd watch를 통한 HAproxy config 리로드
https://github.com/elgniv/spetha
예상 구조
관심을 가지고 있는 것들
- Docker swarm
- Docker machine
- kubernetes..
배포 이외에도..
- Sandbox 구현
- 정말 빠른 프로토타입핑
- compose를 통한 개발환경 구축
등이 가능합니다!!
QnA
감사합니다

More Related Content

What's hot

Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 mWonchang Song
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문Daniel Seo
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User GuideSANG WON PARK
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례NAVER LABS
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCPDaegeun Kim
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기pyrasis
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용NAVER D2
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 

What's hot (20)

Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User Guide
 
DevOps with Docker
DevOps with DockerDevOps with Docker
DevOps with Docker
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 

Viewers also liked

도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container DayAmazon Web Services Korea
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdockerJaehwa Park
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container DayEC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container DayAmazon Web Services Korea
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
4년치 컨닝페이퍼
4년치 컨닝페이퍼4년치 컨닝페이퍼
4년치 컨닝페이퍼totodeung
 
Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운
Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운
Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운다운 정
 
The Future of Everything
The Future of EverythingThe Future of Everything
The Future of EverythingMichael Ducy
 
AWS 클라우드 보안 및 규정 준수 소개 (박철수) - AWS 웨비나 시리즈
AWS 클라우드 보안 및  규정 준수 소개 (박철수) - AWS 웨비나 시리즈AWS 클라우드 보안 및  규정 준수 소개 (박철수) - AWS 웨비나 시리즈
AWS 클라우드 보안 및 규정 준수 소개 (박철수) - AWS 웨비나 시리즈Amazon Web Services Korea
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포Amazon Web Services Korea
 
1KOZ_6.15.2015_Display_Reduced
1KOZ_6.15.2015_Display_Reduced1KOZ_6.15.2015_Display_Reduced
1KOZ_6.15.2015_Display_ReducedSheena Steedman
 
Colombia aprende
Colombia aprendeColombia aprende
Colombia aprende201322176
 
Christmas Greetings (2010)
Christmas Greetings (2010)Christmas Greetings (2010)
Christmas Greetings (2010)Nubia **
 

Viewers also liked (18)

도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdocker
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container DayEC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
4년치 컨닝페이퍼
4년치 컨닝페이퍼4년치 컨닝페이퍼
4년치 컨닝페이퍼
 
Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운
Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운
Docker 간단 개념 / Docker 를 이용한 MSA 기반의 Spring Boot 프로젝트 - DSmentoring 정다운
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
The Future of Everything
The Future of EverythingThe Future of Everything
The Future of Everything
 
AWS 클라우드 보안 및 규정 준수 소개 (박철수) - AWS 웨비나 시리즈
AWS 클라우드 보안 및  규정 준수 소개 (박철수) - AWS 웨비나 시리즈AWS 클라우드 보안 및  규정 준수 소개 (박철수) - AWS 웨비나 시리즈
AWS 클라우드 보안 및 규정 준수 소개 (박철수) - AWS 웨비나 시리즈
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
 
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
 
1KOZ_6.15.2015_Display_Reduced
1KOZ_6.15.2015_Display_Reduced1KOZ_6.15.2015_Display_Reduced
1KOZ_6.15.2015_Display_Reduced
 
Colombia aprende
Colombia aprendeColombia aprende
Colombia aprende
 
Crônica
CrônicaCrônica
Crônica
 
Christmas Greetings (2010)
Christmas Greetings (2010)Christmas Greetings (2010)
Christmas Greetings (2010)
 

Similar to AWS + Docker in Vingle

[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Kyuhyun Byun
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정양재동 코드랩
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetesssuseraada82
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting승빈이네 공작소
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)완철 김
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교ssuserd4f9ff
 

Similar to AWS + Docker in Vingle (20)

[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 
Aws로 ci하기 안기욱
Aws로 ci하기 안기욱Aws로 ci하기 안기욱
Aws로 ci하기 안기욱
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
Internship backend
Internship backendInternship backend
Internship backend
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
 

AWS + Docker in Vingle

  • 1. AWS + Docker 적용기 조휘철 (derrick.cho@vingle.net)
  • 2. 빙글 소개 “사람들은 자발적으로 좋아하는 것을 위해 모인다” 관심사 기반 커뮤니티 플랫폼 jobs.vingle.net
  • 3. 개발 스택 - Amazon AWS - Ruby on Rails ( + nginx, unicorn ) - Postgresql - Memcached, Redis - S3 - Redshift - Elasticsearch ( + logstash ) - Sidekiq - Etc
  • 7. 배포 과정 #1 로컬에서 개발 릴리즈 브랜치 push CI, staging
  • 10. 배포할때 일어나는 일들 1. Opsworks built-in recipes = 약 5분
  • 11. 배포할때 일어나는 일들 2. setup recipes - 미리 작성해둔 chef-cookbook을 이용 - Instance role에 따라 설치할 recipe를 정함 = 약 5분
  • 12. 배포할때 일어나는 일들 3. Bundle install = 약 6분 Gem 갯수(약 130개) 설치
  • 13. 4. Precompile 총 시간 Recipe(10분) + Bundle(6분) + Precompile(6 분) = 약 22분 배포할때 일어나는 일들 = 약 6분Asset 컴파일
  • 14. 해결하기 위한 노력 - Recipes : AMI를 사용하자? - 10분(5분 + 5분) -> 3분 - Bundle Install : 압축 바이너리 이용? - 일부 Gem이 제대로 작동하지 않음 - 6분 - Precompile : 미리 컴파일해서 배포하자 - 6분 -> 0분 - 총 9분까지 줄임! * AMI란? 미리 만든 이미지
  • 15. 추가로 해결하고자 하였던 것들 - 외부 의존성으로 인해 배포가 늦어지는 경우 - Ubuntu Repository server - Github - Rubygem server - Gem이 추가될때마다 빌드 시간이 늦어짐 - 로컬에서 Production 환경을 세팅해서 테스 트
  • 16. 여러 방법을 모색하다, 핫하 다는 Docker를 조사하기 시작했습니다
  • 17.
  • 18. Docker는 대체 무엇인가? - 발음기호 ˈdɑː.kɚ - 컨테이너 기반 가상화 에코시스템 - 오픈소스 (Apache 2.0 License) - Github 20위 (별 2만개) - Go 언어로 만들어진 것 중 가장 인기가 높음
  • 19. Docker는 대체 무엇인가? - 가상 머신과 비교하면.. 가상 머신 구성 도 Docker 구성도
  • 20. Docker 도입을 통해 기대한 것들 - Chef Recipe 보다 빠른 설치 - 변경사항에 대해서 바이너리로 배포 - 도입해보고자 하는 것들에 대한 빠른 프로토 타입핑 - 로컬에서 프로덕션 환경 구축
  • 21. 만족에 대한 기준선 - 성능이 크게 떨어지면 안됨 출처: http://www.slideshare.net/modestjude/dockerat-deview-2013
  • 22. 만족에 대한 기준선 - 너무 어렵지 않아야함 Dockerfile 작성이 대부분 bash script를 기초 - 배포가 쉬워야함 - 빌드가 쉬워야함
  • 23. 빌드 조사 - dockerhub (장점) - http://hub.docker.com - Docker에서 공식적으로 운영 - Github 연동 지원 - 가격이 저렴 ( private repo $7) - Automated 빌드 지원
  • 24. 빌드 조사 - dockerhub (단점) - 빌드 속도가 너무 느림 => 캐싱이 안됨 - 보안에 대한 신뢰성이 떨어짐 - Deploy 관련된 기능들은 제공해주지 않음 (단순한 repository 역할만 수행)
  • 25. 빌드 - 결론 - 기존에 사용하던 Jenkins에 Docker build 역 할 추가 => 캐싱의 이점을 살릴 수 있음 - 빌드 된 docker컨테이너의 저장소는 dockerhub으로 사용
  • 26. 배포 기준선 - 다루기 쉬우면 좋겠다 - Web UI를 가지면 더 좋을 것 같다 - 모니터링이 가능하면 좋겠다 - 배포 과정에서 컨넥션이 끊기는일이 없다면 좋겠다
  • 27. 배포 조사 - CoreOS - Docker 전용 경량 리눅스 - fleet - heroku buildpack 기반의 deis - OS 변경은 큰 작업.. maybe someday..
  • 28. 배포 조사 - Panamax
  • 29. 배포 조사 - Panamax - 이쁘고 쉬운 UI - Beta 개발중 - CoreOS 기반..
  • 30. 배포 조사 - Kubernetes - 구글에서 만듬 - 사용법이 구글 스타일 - 그래도 Github에 web-ui 등이 많이 있음
  • 31. 배포 조사 - elasticbeanstalk - AWS 스타일 PaaS - Docker 지원 - 컨테이너 한개만 지원.. - EC2 Container Service의 등장만 보아도, 컨테이너 전문 서비스는 아닌듯
  • 32. 배포 조사 - 그 외.. - Dockership - Centurion - longshoreman - Docker API를 이용한 직접 코딩.. - 개인적으로 dockerode가 편함.. - Rancher - 많긴 한데.. 마음에 드는건 없었습니다
  • 33. 선택한 것 - Opsworks - 계속해서 써오던 것.. - 맞춤은 아니지만 만능(?) - 당장에 적용하기에 큰 어려움이 없음 - 좋은 대안이 나오기 전까지 쓰기로함
  • 35. - 배포 3분 이내 (새 인스턴스 기준) - Chef Cookbook 작성때보다 팀원들의 참여가 좋아짐 - 쉽게 로컬에서 프로덕션 환경을 돌릴 수 있음 - 만들어둔 스크립트로, 빠른 클러스터 구축이 가능해서 프로토 타이핑 테스트에 용이 결과 - 얻은 것들
  • 36. - 빌드때 DeviceMapper 관련 오류가 자주 발생 함 => dockerhub 빌드는 괜찮음 - 이전에는 없던 크래시 이슈들이 생김 - 컨테이너 캐싱으로 인한 디스크 용량이 굉장 히 큼 - Base 이미지의 운영체제가 호스트와 다른 경 우, 에러 유발 결과 - 단점들
  • 38. NAT방식 vs HOST방식 참고 : http://www.infoq.com/news/2014/08/vm-containers-performance
  • 40. - 배포시에 new 컨테이너가 start 된 이후에 old컨테이너를 내리는 과정이 필요함 - 이때 기존의 User Connection이 끊어지면 안 됨 - 자동으로 이루어 져야함 Rolling Deploy를 위한 노력
  • 41. Specialone - 동일 그룹내에서 가장 최근에 start된 컨테이 너만 남기고 모두 stop - etcd service discovery 지원 https://github.com/elgniv/specialone
  • 42. Spetha - speciaone + etcd + HAproxy - for web - etcd watch를 통한 HAproxy config 리로드 https://github.com/elgniv/spetha
  • 44. 관심을 가지고 있는 것들 - Docker swarm - Docker machine - kubernetes..
  • 45. 배포 이외에도.. - Sandbox 구현 - 정말 빠른 프로토타입핑 - compose를 통한 개발환경 구축 등이 가능합니다!!
  • 46. QnA