SlideShare a Scribd company logo
AWS와 함께하는
무중단 배포 파이프라인 개선기
황성찬
백엔드 개발자
AUSG
• 발표자 소개
• 발표 주제 소개
• 프로젝트 소개
• 개선 전 아키텍처
• 개선 전 아키텍처의 문제점
• 개선 후 아키텍처
• 개선 결과
• 발표 소감
목차
발표자 소개
황성찬 - dbfpzk142@gmail.com
• 한남대학교 4학년 재학 중
• AUSG 5기 활동 중
• DDD 5기 활동
• 영향력 있는 개발자가 되고 싶습니다.
• 지식 공유와 의사 소통에 관심이 많습니다.
발표 주제 소개
AWS와 함께하는 무중단 배포 파이프라인 개선기
구체적으로 말하자면,
단일 EC2 서비스를 AWS의 서비스들로 이관한 경험
이런 분들께 바칩니다.
• Code Deploy를 사용하며 불편함을 느끼셨던 분들!
• Nginx, LetsEncrypt, Server Application를 단일 EC2에 배포/관리하셨던 분들!
• 항상 EC2, RDS, Code Deploy만 사용하셨던 분들!
프로젝트 소개
사각사각 을
소개합니다!
사각사각 을
소개합니다!
• 일상 속에서 흘러가는 아이디어 메모하기
• 윈도우 메모보다 기능이 많고
• 카카오톡 나에게 보내기 보다 관리하기 쉽고
• 노션과 에버노트보다 가벼운 크롬 익스텐션!
지금 바로 구글에 sagaksagak 을 검색하세요!
프로젝트 아키텍처
사각사각
아키텍처
사각사각
아키텍처
CD
파이프라인
CD
파이프라인
결론
1. Code Deploy 사용 중
2. 단일 EC2에서 SSL, VIEW, API 모두 처리
3. 단일 EC2에서 Docker Container 여러 대 실행 중
기존 아키텍처 문제점
문제 1. Shell Script 작성 필요
Code Deploy란?
• EC2/On-Premise, ECS, Lambda 환경으로 배포 자동화를 돕는 서비스
• EC2/On-Premise 환경에서 사용할 경우 특정 시점에 실행될 hook 정의가 필요
• Linux의 경우 hook 파일을 쉘 스크립트로 정의
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
• Code Deploy
• Shell Script
• Server Application
학습범위
순수 코딩 시간
학습범위
문제 2. 기술 간 의존성
Code Deploy
Docker Nginx
사용기술
Docker
IF: 변경
Code Deploy
사용기술
Nginx
Docker
IF: 변경 DO: 변경
사용기술 Code Deploy
Nginx
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
만약 Docker를 Kubernetes로 대체한다면?
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
Kubernetes로 변경 Nginx 설정파일 수정
Kubernetes로 변경 Nginx 설정파일 수정
휴먼 에러 발생!!
유지보수
에러발생
문제 2-1. 디렉토리 의존성
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
각 파일들의 위치
파일 위치 변경?
docker/
파일 위치 변경 각 파일들에 반영
파일 위치 변경 각 파일들에 반영
휴먼 에러 발생!!
유지보수
에러발생
문제 3. 사전 작업이 필요했다.
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
Nginx 실행 시점에 반드시
SSL 인증서 마운트 필요
EC2에 반드시 SSL 인증서를 위치시켜야 함
즉, EC2 접속 후 직접 SSL 인증서 설정을 한 후에 배포 자동화가 이루어졌다.
완전한 자동이 아니다!!
결론 1. 유지 보수가 어렵다
2. 완전한 자동화 파이프라인이 아니다.
개선 후 아키텍처
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
Before
• 단일 EC2안에서 Nginx, Application 모두 실행
After
• EC2는 Application만 실행
• Nginx는 AWS Elastic Load Balancer로 대체
• VIEW 리턴은 CloudFront로 대체
Before
• 단일 EC2안에서 Nginx, Application 모두 실행
• EC2 안에서 SSL 인증서 직접 관리
After
• EC2는 Application만 실행
• Nginx는 AWS Elastic Load Balancer로 대체
• Amazon Certification Manager로 SSL
인증서 관리
Before
• 단일 EC2안에서 Nginx, Application 모두 실행
• EC2 안에서 SSL 인증서 직접 관리
• Code Deploy로 무중단 배포 자동화 구현
After
• EC2는 Application만 실행
• Nginx는 AWS Elastic Load Balancer로 대체
• Amazon Certification Manager로 SSL
인증서 관리
• Beanstalk로 무중단 배포 자동화 구현
Elastic Beanstalk란?
• Java, .NET, PHP, Go, Ruby, Docker 등 여러 플랫폼의 애플리케이션을 배포할 수 있다.
Elastic Beanstalk란?
• Java, .NET, PHP, Go, Ruby, Docker 등 여러 플랫폼의 애플리케이션을 배포할 수 있다.
• 하나의 Beanstalk에서 ELB, EC2, RDS 를 관리할 수 있다.
Elastic Beanstalk란?
• Java, .NET, PHP, Go, Ruby, Docker 등 여러 플랫폼의 애플리케이션을 배포할 수 있다.
• 하나의 Beanstalk에서 ELB, EC2, RDS 를 관리할 수 있다.
• 버전 관리를 자동으로 해준다.
Elastic Beanstalk란?
• Java, .NET, PHP, Go, Ruby, Docker 등 여러 플랫폼의 애플리케이션을 배포할 수 있다.
• 하나의 Beanstalk에서 ELB, EC2, RDS 를 관리할 수 있다.
• 버전 관리를 자동으로 해준다.
• 손쉽게 무중단 배포를 설정할 수 있다.
Elastic Beanstalk란?
• Java, .NET, PHP, Go, Ruby, Docker 등 여러 플랫폼의 애플리케이션을 배포할 수 있다.
• 하나의 Beanstalk에서 ELB, EC2, RDS 를 관리할 수 있다.
• 버전 관리를 자동으로 해준다.
• 손쉽게 무중단 배포를 설정할 수 있다.
• Cloud Watch를 자동으로 연동해줘서 모니터링을 제공한다.
• 무료다.
개선 1. 관리 포인트 감소
Before After
• Shell-Script
• Nginx.conf
• Docker-Compose
• Dockerrun.aws.json
Before After
• 250 줄 • 15줄
코드 작성에 집중할 수 있다!!!
개선 2. 기술간 의존성 최소화
쉘 스크립트
Docker Nginx 설정파일
사용기술
AWS
사용기술
사용 기술하던 기술이 없으니 의존성도 없다!!
개선 3. 사전 작업이 필요 없음
Amazon Certification Manager 란?
• AWS 내부 리소스에 사용할 SSL 인증서 관리를 대신 해주는 서비스
• 인증서 생성/갱신/관리를 AWS에게 맡길 수 있다.
• 무료다.
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
결론
1. 관리 대상이 적다 유지 보수성 증가, 코드 작성 집중
2. 사전 작업이 필요 없다. Git Push 후 모든 과정 자동화
3. 모니터링이 가능해졌다. 서비스 안정성 증가
소감
소감
• EC2, RDS 만 사용하던 개발자에게 도움이 되었으면 !
• 즐겨 듣던 컨퍼런스의 발표자로 참여하게 되어서 영광 !
• 매년 발표 거리가 생기도록 앞으로도 열심히 개발할 예정 !
• 발표 내용에 대해서 더 토론하고 싶다면 dbfpzk142@gmail !!
감사합니다!

More Related Content

PDF
Build beautiful native apps in record time with flutter
PPTX
Automation testing on ios platform using appium
PPT
PPTX
Flutter talkshow
PDF
Pune Flutter Presents - Flutter 101
PPTX
What is Flutter
PDF
OpenShift Overview
PPTX
Flutter session 01
Build beautiful native apps in record time with flutter
Automation testing on ios platform using appium
Flutter talkshow
Pune Flutter Presents - Flutter 101
What is Flutter
OpenShift Overview
Flutter session 01

What's hot (20)

PPTX
Flutter introduction
PDF
Kubernetes Architecture - beyond a black box - Part 2
PDF
Git Branching for Agile Teams
PDF
Introduction to container based virtualization with docker
PDF
Gitops: a new paradigm for software defined operations
PPTX
.NET MAUI with .NET 6 (December 2021, Preview 10)
PPTX
PDF
CNCF Meetup - OpenShift Overview
PPTX
Appium ppt
PPTX
A flight with Flutter
PPTX
Automation With Appium
PDF
Introduction to Red Hat OpenShift 4
PDF
What is flutter and why should i care?
PPTX
PDF
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
PPTX
Docker introduction
PPTX
Git and GitFlow branching model
PPTX
Git branching strategies
PPTX
Server Driven UI in iOS
PDF
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Flutter introduction
Kubernetes Architecture - beyond a black box - Part 2
Git Branching for Agile Teams
Introduction to container based virtualization with docker
Gitops: a new paradigm for software defined operations
.NET MAUI with .NET 6 (December 2021, Preview 10)
CNCF Meetup - OpenShift Overview
Appium ppt
A flight with Flutter
Automation With Appium
Introduction to Red Hat OpenShift 4
What is flutter and why should i care?
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
Docker introduction
Git and GitFlow branching model
Git branching strategies
Server Driven UI in iOS
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Ad

Similar to [AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기 (20)

PPTX
Vingle tech talk #1
PDF
NRISE 개발스택
PPTX
Docker & Kubernetes 기초 - 최용호
PPTX
DevOps (AWS, Docker, Ansible, Jenkins)
PDF
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
PPTX
bamboo 로 PHP 프로젝트 지속적인 배포
PPTX
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
PDF
Bon voyage Docker_Kubernetes
PDF
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
PPTX
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
PPTX
[오픈소스컨설팅]인프라 자동화 도구 Chef
PDF
Ansible과 CloudFormation을 이용한 배포 자동화
PDF
DevOps best friend AWS
PDF
KGC 2013 DevSisters
PDF
Aws로 ci하기 안기욱
PDF
삶이편해지는_백엔드_개발자_지식.pdf
PDF
Ansible introduction & demo
PDF
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
PDF
AWS + Docker in Vingle
 
PDF
[NDC17] 왓 스튜디오 서비스파트
Vingle tech talk #1
NRISE 개발스택
Docker & Kubernetes 기초 - 최용호
DevOps (AWS, Docker, Ansible, Jenkins)
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
bamboo 로 PHP 프로젝트 지속적인 배포
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
Bon voyage Docker_Kubernetes
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[오픈소스컨설팅]인프라 자동화 도구 Chef
Ansible과 CloudFormation을 이용한 배포 자동화
DevOps best friend AWS
KGC 2013 DevSisters
Aws로 ci하기 안기욱
삶이편해지는_백엔드_개발자_지식.pdf
Ansible introduction & demo
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
AWS + Docker in Vingle
 
[NDC17] 왓 스튜디오 서비스파트
Ad

[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기