SlideShare a Scribd company logo
1 of 31
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
MSA in ECS
컴퓨터공학부
201918373
최인혁
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
목차
1. 배포하고자하는SW
2. 사용서비스
3. ECS란무엇인가?
4. 어려웠던점및해결방법
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
이전에 우리 학교를 배경으로 한 메타버스를 구현
로그인, 채팅 기록 저장 등 DB 관련 작업을
Backend server를 따로 만들어 수행
 AWS를 사용해 서비스
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
필요한 기능
- User 담당 기능: 로그인, 회원가입에 사용
- Chat 담당 기능: 채팅 기록을 DB에 저장
- 위 정보들을 시각적으로 확인할 수 있는 View
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
User Service
회원가입시 사용자가 입력한 정보를 DB에 저장하고
로그인을 할 때 입력한 정보의 valid 확인
 정보를 DB에 User table에 저장
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
Chat Service
사용자의 채팅을 DB에 저장하는 서비스
 예상치 못한 문제에 대비하기 위해 이를 저장
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
View Service
사용자의 정보를 검색하고
채팅 내용을 확인할 수 있는 서비스
 User, Chat table에 입력된 정보를 요청 후 출력
Ex, Inhyuk 아이디 검색
- 플레이어의 아바타 출력
- 아이디, 닉네임, 속해 있는 그룹 출력
- 플레이어가 한 채팅 내용을 출력
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
Monolithic Architecture
모든 기능을 하나의 프로그램으로 구현한 전통적인 구조
User, Chat, View 기능이 통합된 상태로 공용 DB를 사용해 서비스를 제공
User Chat View
DB
Application UI
Port: 8000
Business
Logic
장점
- 단순하기 때문에 빠른 개발 가능
- 서비스의 테스트 용이
단점
- 프로젝트가 커지면 빌드, 배포 시간이 오래 걸림
- 하나의 기능을 수정하면 전체를 다시 배포
- 언어의 제한이 있음
- 하나의 서비스의 버그가 다른 서비스에도 영향
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
MicroService Architecture
하나의 큰 서비스를 수행하기 위해 하나의 기능 단위로 서비스를 분리,
각 서비스는 자신의 목적만 집중해서 수행, 서비스끼리 Restful하게 통신
User, Chat, View 기능이 분리 되어있고, 각자의 DB로 서비스를 제공
User
DB
Application UI
Port: 8000
Business
Logic
- 서비스 각각은 Monolithic Architecture
Chat View
DB
Port: 8001 Port: 8002
장점
- 하나의 서비스에 집중해서 개발 하기 때문에 품질 향상
- 프로젝트의 크기가 작기 때문에 빌드, 배포가 빠름
- 하나의 기능을 수정하면 그 기능만 다시 빌드, 배포
- 각 서비스의 언어를 다르게 사용 가능
단점
- 작은 서비스들이 많기 때문에 관리의 복잡도 증가
- 테스트 부담 증가
Rest API Rest API
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
배포하고자하는SW
Part 1,
정리하자면,
MSA로 설계한 게임 backend server를 배포
서비스
- User Service
- Chat Service
- View Service
User, Chat Service는 각각의 DB를 사용해 정보를 관리
View Service는 User, Chat 정보가 필요하기 때문에 담당 service와 Restful하게 통신
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
사용서비스
Part 2,
데이터 저장 서비스 제공 배포
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 3,
ECS (Elastic Container Service)
Amazon Elastic Container Service (Amazon ECS) is a highly
scalable, fast container management service that makes it
easy to run, stop, and manage containers on a cluster.
출처 – AWS ECS developer guide
ECS는 배포하려는 Application을 Container 단위로 배포, 관리를 지원해주는 Service이다.
기초적인 Container 관리부터 traffic에 따른 Auto Scaling,
무중단 배포를 위한 Blue-Green Deploy 등 다양한 관리 서비스를 제공한다.
 MSA 관리 복잡도 하락
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
출처 - AWS ECS developer guide
Overview
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
구성 요소
- Containers & Images (+ Docker)
- Tasks & Tasks Definition
- Container agent (With Fargate)
- Service
- Clusters
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 2,
Containers & Images (+ Docker)
(Container의 영역이 너무 크기 때문에, 아주 간략하게만 설명)
Container란, Application 실행에 필요한 코드, 시스템 환경 등을 모두 포함하는 실행 단위이다.
Image란, Container 실행을 위한 static file으로, 설정들 등을 포함한다.
하나의 Image로 여러 개의 Container를 생성할 수 있다.
이는 마치 하나의 Chrome App으로 여러 개의 창을 실행할 수 있는것과 같다.
Container 관련 작업을 할 때 Docker를 주로 사용한다.
Docker란, 단순하게 Container 를 위한 생성, 실행, 관리 를 도와주는 tool이다.
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
ECR (Elastic Container Registry)
AWS는 Docker Image를 저장할 수 있는 Private Registry를 제공한다.
사용자는 배포하고자 하는 SW를 docker를 사용해 build 후
ECR에 push 하는 방식으로 Image를 관리할 수 있다.
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
우리의 서비스는
User, Chat, View Service Image를 모두 ECR에 push 후
ECS에서 필요할 때 가져오는 방식
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Tasks & Tasks Definition
ECS는 Container 단위로 실행한다.
Task란, 실행을 위해 생성된
하나 이상의 Container의 집합으로 이해할 수 있다.
(요즘은 보통 하나의 Task에 하나의 Container를 실행)
Task Definition이란, Task 생성을 정의하는 청사진이다.
예를 들어, task에 사용할 Image, vCPU, memory, port 등을
정의할 수 있다.
즉, Task는 Task Definition에 설정 대로 생성된다.
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Container Agent (with Fargate)
Container Agent란, 생성된 Task를 실제로 수행하는 Computing Engine이다.
EC2와 Fargate 중 선택 가능한데, 프로젝트에서는 Fargate를 사용하였다.
Fargate란, EC2처럼 인스턴스를 관리할 필요 없이 Container를 실행시켜주는
Serverless Computing Engine Service이다.
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Fargate를 선택, 필요한 만큼 세밀하게 vCPU, memory 할당이 가능
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Service
Task의 생명 주기를 관리한다.
프로젝트에서 사용한 Service의 기능은 다음과 같다.
- 원하는 Task 개수 설정
- Blue-Green Deploy 설정
- Load Balancing 설정
- VPC, Subnet, Security Group 설정
- Auto Scaling policy 설정
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 2,
Clusters
Task를 실행하는 Container Instance들을 묶은 논리적 단위이다.
즉, ECS 에서는
동일한 Cluster에서 각 Task Definition을 Service로 생성하면,
설정에 맞춰 ECR에서 가져온 Image를 기반으로 Task를 생성하고,
이는 Container Instance가 실행하며 서비스 된다.
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 2,
ECS 배포 영상: https://youtu.be/dTZyB5-kJyw
게임 내 동작 영상: https://youtu.be/rZAIUj-dwR8
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
+ Blue-Green Deploy
기존 서비스 (blue) 에서 신규 서비스 (green) 에서 무중단 배포를 위한 기법
ECS에서는 2개의 TargetGroup을 사용한다. (‘Blue – 기존, Green – 신규’라고 가정)
1. 기존 Instance의 수 만큼 Green에 새로운 버전을 서비스하는 Instance를 생성
2. Instance가 모두 생성된 순간 Load Balancer는 2개의 TG으로 서비스 중
3. 롤백을 위해 일정 시간 (약 1시간) Blue 서비스를 남겨둔 후 제거
+ 배포 방식에는 여러가지 방법을 선택 가능
- 모든 traffic을 Green으로 전환
- 절반을 Green으로 전환, 이후 15분에 10%씩 추가적으로 이동
- 1분 간격으로 10% 씩 이동 등..
Part 3,
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 3,
Blue-Green Deploy: https://youtu.be/_WpIv-xleiI
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 3,
ab -n 50000 -c 25 ALB_URL
최소 작업: 1
최대 작업: 3
Auto Scaling 실험
빠르게 확장/축소 결과를 보기 위해 휴지 기간을 짧게 설정
+ 게임 내에서는 특정 처리가 빨라야 하기 때문에 CPU UTIL을 낮게 설정
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 3,
수행 속도는 약 0.2초로 만족스럽지만,
CPU Util을 너무 낮게 잡아 끝난 후에 Instance가 증가하는 현상 발생
 자원의 낭비
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 3,
ab -n 50000 -c 25 ALB_URL
CPU Util을 70으로 높이고, 최대 작업 개수를 2로 제한
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
ECS란무엇인가?
Part 3,
앞에서 발생한 문제 없이 비슷한 성능을 얻어낼 수 있었음
 적정 Instance 개수 찾아내기 성공
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
어려웠던점및해결방법
Part 4,
가장 어려웠던 부분
ECS를 사용하기 위한 기본 개념들 (task definition, service, container …)
블로그, 문서 등을 많이 찾아봄
하지만, 가장 도움이 됐던 것은 aws 공식 developer guide
어떤 서비스를 사용하기 전에 그 서비스의 동작 방법,
사용하기 위한 용어를 공부 후
주어진 간단한 예시를 수행해 감을 익히는 방식으로 ECS를 공부
교훈: 공식 문서들을 잘 읽고 용어를 확실하게 이해하자!
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
감사합니다

More Related Content

Similar to 2021 분산컴퓨팅 최종 프로젝트

[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?주식회사 내일비
 
AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏
AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏
AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏Amazon Web Services Korea
 
파워서포트 가이드
파워서포트 가이드파워서포트 가이드
파워서포트 가이드StartupAlliance
 
2015 Open Cloud Engine Handbook
2015 Open Cloud Engine Handbook2015 Open Cloud Engine Handbook
2015 Open Cloud Engine HandbookuEngine Solutions
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017
롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017
롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
산학 제출 PPT
산학 제출 PPT산학 제출 PPT
산학 제출 PPT21HG020
 
[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)
[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)
[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)Amazon Web Services Korea
 
아마존 Aws 서비스_연구
아마존 Aws 서비스_연구아마존 Aws 서비스_연구
아마존 Aws 서비스_연구knight1128
 
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017Amazon Web Services Korea
 
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWSAmazon Web Services Korea
 
Npac(엔팩) 가이드
Npac(엔팩) 가이드Npac(엔팩) 가이드
Npac(엔팩) 가이드VentureSquare
 
000001560595_1425351208416_0.5687465614331808
000001560595_1425351208416_0.5687465614331808000001560595_1425351208416_0.5687465614331808
000001560595_1425351208416_0.5687465614331808GeniNetworks
 
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원BESPIN GLOBAL
 
시스코 클라우드로 방송을 혁신하다
시스코 클라우드로 방송을 혁신하다시스코 클라우드로 방송을 혁신하다
시스코 클라우드로 방송을 혁신하다CiscoKorea
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144Darion Kim
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)Sang Don Kim
 

Similar to 2021 분산컴퓨팅 최종 프로젝트 (20)

[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏
AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏
AWS Builders Industry edition : 개발자커리어 점프 플랫폼, 점핏
 
파워서포트 가이드
파워서포트 가이드파워서포트 가이드
파워서포트 가이드
 
2015 Open Cloud Engine Handbook
2015 Open Cloud Engine Handbook2015 Open Cloud Engine Handbook
2015 Open Cloud Engine Handbook
 
병렬처리
병렬처리병렬처리
병렬처리
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017
롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017
롯데닷컴의 AWS 클라우드 활용 사례 - AWS Summit Seoul 2017
 
산학 제출 PPT
산학 제출 PPT산학 제출 PPT
산학 제출 PPT
 
[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)
[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)
[2017 Gaming on AWS] 도커 컨테이너 배포 자동화 실습 (롤링 및 Blue/Green 배포)
 
아마존 Aws 서비스_연구
아마존 Aws 서비스_연구아마존 Aws 서비스_연구
아마존 Aws 서비스_연구
 
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
 
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
 
Npac(엔팩) 가이드
Npac(엔팩) 가이드Npac(엔팩) 가이드
Npac(엔팩) 가이드
 
000001560595_1425351208416_0.5687465614331808
000001560595_1425351208416_0.5687465614331808000001560595_1425351208416_0.5687465614331808
000001560595_1425351208416_0.5687465614331808
 
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
 
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers 개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
 
시스코 클라우드로 방송을 혁신하다
시스코 클라우드로 방송을 혁신하다시스코 클라우드로 방송을 혁신하다
시스코 클라우드로 방송을 혁신하다
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
 
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 

2021 분산컴퓨팅 최종 프로젝트

  • 1. ⓒSaebyeol Yu. Saebyeol’s PowerPoint MSA in ECS 컴퓨터공학부 201918373 최인혁
  • 2. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 목차 1. 배포하고자하는SW 2. 사용서비스 3. ECS란무엇인가? 4. 어려웠던점및해결방법
  • 3. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, 이전에 우리 학교를 배경으로 한 메타버스를 구현 로그인, 채팅 기록 저장 등 DB 관련 작업을 Backend server를 따로 만들어 수행  AWS를 사용해 서비스
  • 4. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, 필요한 기능 - User 담당 기능: 로그인, 회원가입에 사용 - Chat 담당 기능: 채팅 기록을 DB에 저장 - 위 정보들을 시각적으로 확인할 수 있는 View
  • 5. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, User Service 회원가입시 사용자가 입력한 정보를 DB에 저장하고 로그인을 할 때 입력한 정보의 valid 확인  정보를 DB에 User table에 저장
  • 6. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, Chat Service 사용자의 채팅을 DB에 저장하는 서비스  예상치 못한 문제에 대비하기 위해 이를 저장
  • 7. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, View Service 사용자의 정보를 검색하고 채팅 내용을 확인할 수 있는 서비스  User, Chat table에 입력된 정보를 요청 후 출력 Ex, Inhyuk 아이디 검색 - 플레이어의 아바타 출력 - 아이디, 닉네임, 속해 있는 그룹 출력 - 플레이어가 한 채팅 내용을 출력
  • 8. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, Monolithic Architecture 모든 기능을 하나의 프로그램으로 구현한 전통적인 구조 User, Chat, View 기능이 통합된 상태로 공용 DB를 사용해 서비스를 제공 User Chat View DB Application UI Port: 8000 Business Logic 장점 - 단순하기 때문에 빠른 개발 가능 - 서비스의 테스트 용이 단점 - 프로젝트가 커지면 빌드, 배포 시간이 오래 걸림 - 하나의 기능을 수정하면 전체를 다시 배포 - 언어의 제한이 있음 - 하나의 서비스의 버그가 다른 서비스에도 영향
  • 9. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, MicroService Architecture 하나의 큰 서비스를 수행하기 위해 하나의 기능 단위로 서비스를 분리, 각 서비스는 자신의 목적만 집중해서 수행, 서비스끼리 Restful하게 통신 User, Chat, View 기능이 분리 되어있고, 각자의 DB로 서비스를 제공 User DB Application UI Port: 8000 Business Logic - 서비스 각각은 Monolithic Architecture Chat View DB Port: 8001 Port: 8002 장점 - 하나의 서비스에 집중해서 개발 하기 때문에 품질 향상 - 프로젝트의 크기가 작기 때문에 빌드, 배포가 빠름 - 하나의 기능을 수정하면 그 기능만 다시 빌드, 배포 - 각 서비스의 언어를 다르게 사용 가능 단점 - 작은 서비스들이 많기 때문에 관리의 복잡도 증가 - 테스트 부담 증가 Rest API Rest API
  • 10. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 배포하고자하는SW Part 1, 정리하자면, MSA로 설계한 게임 backend server를 배포 서비스 - User Service - Chat Service - View Service User, Chat Service는 각각의 DB를 사용해 정보를 관리 View Service는 User, Chat 정보가 필요하기 때문에 담당 service와 Restful하게 통신
  • 11. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 사용서비스 Part 2, 데이터 저장 서비스 제공 배포
  • 12. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 3, ECS (Elastic Container Service) Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast container management service that makes it easy to run, stop, and manage containers on a cluster. 출처 – AWS ECS developer guide ECS는 배포하려는 Application을 Container 단위로 배포, 관리를 지원해주는 Service이다. 기초적인 Container 관리부터 traffic에 따른 Auto Scaling, 무중단 배포를 위한 Blue-Green Deploy 등 다양한 관리 서비스를 제공한다.  MSA 관리 복잡도 하락
  • 13. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? 출처 - AWS ECS developer guide Overview Part 3,
  • 14. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? 구성 요소 - Containers & Images (+ Docker) - Tasks & Tasks Definition - Container agent (With Fargate) - Service - Clusters Part 3,
  • 15. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 2, Containers & Images (+ Docker) (Container의 영역이 너무 크기 때문에, 아주 간략하게만 설명) Container란, Application 실행에 필요한 코드, 시스템 환경 등을 모두 포함하는 실행 단위이다. Image란, Container 실행을 위한 static file으로, 설정들 등을 포함한다. 하나의 Image로 여러 개의 Container를 생성할 수 있다. 이는 마치 하나의 Chrome App으로 여러 개의 창을 실행할 수 있는것과 같다. Container 관련 작업을 할 때 Docker를 주로 사용한다. Docker란, 단순하게 Container 를 위한 생성, 실행, 관리 를 도와주는 tool이다.
  • 16. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? ECR (Elastic Container Registry) AWS는 Docker Image를 저장할 수 있는 Private Registry를 제공한다. 사용자는 배포하고자 하는 SW를 docker를 사용해 build 후 ECR에 push 하는 방식으로 Image를 관리할 수 있다. Part 3,
  • 17. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? 우리의 서비스는 User, Chat, View Service Image를 모두 ECR에 push 후 ECS에서 필요할 때 가져오는 방식 Part 3,
  • 18. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Tasks & Tasks Definition ECS는 Container 단위로 실행한다. Task란, 실행을 위해 생성된 하나 이상의 Container의 집합으로 이해할 수 있다. (요즘은 보통 하나의 Task에 하나의 Container를 실행) Task Definition이란, Task 생성을 정의하는 청사진이다. 예를 들어, task에 사용할 Image, vCPU, memory, port 등을 정의할 수 있다. 즉, Task는 Task Definition에 설정 대로 생성된다. Part 3,
  • 19. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Container Agent (with Fargate) Container Agent란, 생성된 Task를 실제로 수행하는 Computing Engine이다. EC2와 Fargate 중 선택 가능한데, 프로젝트에서는 Fargate를 사용하였다. Fargate란, EC2처럼 인스턴스를 관리할 필요 없이 Container를 실행시켜주는 Serverless Computing Engine Service이다. Part 3,
  • 20. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Fargate를 선택, 필요한 만큼 세밀하게 vCPU, memory 할당이 가능 Part 3,
  • 21. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Service Task의 생명 주기를 관리한다. 프로젝트에서 사용한 Service의 기능은 다음과 같다. - 원하는 Task 개수 설정 - Blue-Green Deploy 설정 - Load Balancing 설정 - VPC, Subnet, Security Group 설정 - Auto Scaling policy 설정 Part 3,
  • 22. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 2, Clusters Task를 실행하는 Container Instance들을 묶은 논리적 단위이다. 즉, ECS 에서는 동일한 Cluster에서 각 Task Definition을 Service로 생성하면, 설정에 맞춰 ECR에서 가져온 Image를 기반으로 Task를 생성하고, 이는 Container Instance가 실행하며 서비스 된다.
  • 23. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 2, ECS 배포 영상: https://youtu.be/dTZyB5-kJyw 게임 내 동작 영상: https://youtu.be/rZAIUj-dwR8
  • 24. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? + Blue-Green Deploy 기존 서비스 (blue) 에서 신규 서비스 (green) 에서 무중단 배포를 위한 기법 ECS에서는 2개의 TargetGroup을 사용한다. (‘Blue – 기존, Green – 신규’라고 가정) 1. 기존 Instance의 수 만큼 Green에 새로운 버전을 서비스하는 Instance를 생성 2. Instance가 모두 생성된 순간 Load Balancer는 2개의 TG으로 서비스 중 3. 롤백을 위해 일정 시간 (약 1시간) Blue 서비스를 남겨둔 후 제거 + 배포 방식에는 여러가지 방법을 선택 가능 - 모든 traffic을 Green으로 전환 - 절반을 Green으로 전환, 이후 15분에 10%씩 추가적으로 이동 - 1분 간격으로 10% 씩 이동 등.. Part 3,
  • 25. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 3, Blue-Green Deploy: https://youtu.be/_WpIv-xleiI
  • 26. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 3, ab -n 50000 -c 25 ALB_URL 최소 작업: 1 최대 작업: 3 Auto Scaling 실험 빠르게 확장/축소 결과를 보기 위해 휴지 기간을 짧게 설정 + 게임 내에서는 특정 처리가 빨라야 하기 때문에 CPU UTIL을 낮게 설정
  • 27. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 3, 수행 속도는 약 0.2초로 만족스럽지만, CPU Util을 너무 낮게 잡아 끝난 후에 Instance가 증가하는 현상 발생  자원의 낭비
  • 28. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 3, ab -n 50000 -c 25 ALB_URL CPU Util을 70으로 높이고, 최대 작업 개수를 2로 제한
  • 29. ⓒSaebyeol Yu. Saebyeol’s PowerPoint ECS란무엇인가? Part 3, 앞에서 발생한 문제 없이 비슷한 성능을 얻어낼 수 있었음  적정 Instance 개수 찾아내기 성공
  • 30. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 어려웠던점및해결방법 Part 4, 가장 어려웠던 부분 ECS를 사용하기 위한 기본 개념들 (task definition, service, container …) 블로그, 문서 등을 많이 찾아봄 하지만, 가장 도움이 됐던 것은 aws 공식 developer guide 어떤 서비스를 사용하기 전에 그 서비스의 동작 방법, 사용하기 위한 용어를 공부 후 주어진 간단한 예시를 수행해 감을 익히는 방식으로 ECS를 공부 교훈: 공식 문서들을 잘 읽고 용어를 확실하게 이해하자!
  • 31. ⓒSaebyeol Yu. Saebyeol’s PowerPoint 감사합니다