SlideShare a Scribd company logo
1 of 19
Download to read offline
AWS와 함께한
쿠키런 서버 Re-architecting 사례
홍성진 Senior Technical Lead
데브시스터즈

1
강연자 소개
홍성진 (sungjinhong@devsisters.com)

• 시니어 테크니컬 리드, 데브시스터즈
• LINE COOKIE RUN, 쿠키런 for Kakao, 오븐브레이크 2 서버 개발
• 시니어 소프트웨어 엔지니어, 위클레이
- 영상통화 앱 클라이언트 및 서버 개발
- 프로토타입 서버 개발 (C, Erlang, MySQL, Hadoop, HBase, Riak, Redis)
- Lucene, Solr와 한글 형태소분석기 관련 작업, 웹 크롤러 및 머신러닝 기법 구현
• 통계기계번역팀, 소프트웨어 엔지니어링 인턴, 구글 코리아
- 형태소분석, 품사태깅, 웹 크롤러 구현, 훈련용 데이터 크롤링
• Django Project Contributor
- i18n 관련 기능 구현, 버그픽스, 한글 번역
2
Agenda

• 오븐브레이크2 서버의 구조
• 기존 서버 관리방식의 문제점
• Maven/CircleCI를 사용한 소스코드 형상관리
• Chef를 사용한 서버 형상관리
• CloudFormation을 사용한 인프라 형상관리
• AutoScale을 사용한 동적 처리용량 확장
• 최근 쿠키런 서버 동향

3
오븐브레이크2
전형적인 서버 구조의 예

4
오븐브레이크2 서버 구조

• 하드웨어 기반 서버를 본따 만든 서버 구성
• 가용성을 위해 로드밸런서 아래 두 대의 API
서버가 분산되어 있음

ELB

• 사용량 증가를 우려해 과도한 스팩을 사용
-

데이터베이스 - m2.2xlarge

-

API 서버 - m1.large

Tomcat

Tomcat

• 마스터-슬래이브 구조의 데이터베이스
• Backup과 파일 공유를 위한 NFS 서버

MySQL Master

• US-East에서 서비스 중
5

Slave Replica

Slave Replica
기존 서버 관리 방식의 한계

• 새로운 서버를 만들어야 할 경우 문제
- 매뉴얼 부족, 있는 자료는 오래된 내용
- 관리자가 교체되면서 회사에 남아있는 서버지식이 점점 사라짐
- Tomcat JVM에 설정되어있던 locale 환경설정, 누가 기억하지?
• 사용자 증가에 따른 관리 피로도 증가
- 급격한 확장에 대응이 불가능하기 때문에 오버스팩 서버 도입
- 오버스팩 서버 도입에 따른 비용 문제 발생

6
쿠키런 서버 Re-architecting
AWS 클라우드에 맞는 서버 재설계를 해보자

7
Maven/CircleCI 소스코드 형상관리

• Maven을 사용하여 Dependency 및 버전 관리
• Github, CircleCI를 사용하여 branch별 continuous integration 및 artifact 관리
• 모든 변경사항은 코드리뷰/테스트 후 master 브렌치로 통합되어 최종 war파일 생성

8
Chef를 사용한 서버 형상관리

• 서버 설정을 JSON과 Ruby를 사용하여 소
스코드처럼 Git으로 관리

-

설정이 소스코드로 문서화 및 형상관리

• 예1: Tomcat을 설치하고 max heap, G1
GC, file.encoding JVM 환경설정

• 예2: 모든 서버에 공통적으로 devsisters

계정을 만들고 htop, dstat, sysstat 설치

• 예3: 서버 운영시 빼먹기 쉬운 여러 설정들
을 공통적으로 적용 (ulimit 제한 등)

• 언제 어디서든 5분 이내 쿠키런 서버를 원하
는만큼 구축할 수 있다

9
CloudFormation을 사용한 인프라 형상관리

• EC2, ELB, AutoScale 등을 모두 JSON
파일 형태로 템플릿화 하여 관리하는 기능

• 인프라를 소스코드처럼 관리할 수 있음
-

자동적인 인프라의 문서화 및 형상관리

• 템플릿을 수정하여 AWS에 업로드 하면 기
존에 떠있던 클러스터가 수정된다

• 언제 어디서든 30분 이내 쿠키런 서버 인프
라를 구축할 수 있다

10
AutoScale을 사용한 동적 처리용량 확장

• Maven으로 만든 war artifact를 S3 Bucket에 업로드
• Chef와 CloudFormation기반으로 만들어진 AutoScaling Group이 Rolling Update 진행
• 5% 정도 진행하고 개발자가 주의깊게 모니터링한 후 100% 패치 작업 진행 (문제 있으면 롤백)

Developer

Terminated

CircleCI

Github

Old Version

New Version

Auto scaling Group
Remove

Add

ELB

11

Cookierun
S3 Bucket

Created
AutoScale 회고

• 장애가 일어난 불량 노드를 알아서 대체
• Scale out 임계치를 잘 설정하는것이 중요
-

규모가 배가 되었다면 AutoScale 전
략도 규모에 맞게 수정하자

-

인스턴스 크기를 키우는것도 방법

-

m1.medium  m1.large  c1.xlarge

• 크리스마스 연휴 때 c1.xlarge 120대
-

Quota limit에 걸려 문제가 될 뻔

-

Business Support로 빠르게 대처
# instances vs. CPU utilization
12
AutoScale 전략

• 인스턴스 c1.xlarge
- 8 vCPU, 20 ECU, 7GB Memory
- c3.2xlarge로 이전 검토 중 - 비슷한 가격에 더 높은 성능과 메모리
• 1분동안 avg CPU  60% 라면 인스턴스 4대 증가
• 2분동안 max CPU  80% 라면 인스턴스 4대 증가
- 급격한 사용자 증가가 있을 경우 빠른 대응을 위한 설정
• 2분동안 avg CPU  25% 라면 인스턴스 2대 감소
• 최소 4대 및 최대 400대로 설정
- 의도하지 않은 과도한 과금 방지를 위해서는 최대 수치를 적절하게 조절해야함
• Reserved Instance로 비용감소 검토 중
- 예) 4대 Heavy Utilization, 10대 Light Utilization
13
클라우드에 맞는 서버 설계 수정

• 클라우드의 서버는 수명이 짧다. 속칭 하루살이 (ephemeral)
- Cron Job을 수행하기 위해 한 서버가 마스터로 설정되어야하는 필요성 제거
Shared-nothing 구조로 변경

-

Game Log를 손쉽게 Log Server로 Shipping할 수 있도록 Logging 구조 개선
slf4j/Logback기반으로 변경, Logstash agent등의 도입

• 완벽한 Consistency를 보장하는 RDB에서 적당한 Consistency를 추구하는 NoSQL로
- 약간의 Consistency 희생으로 수평적확장성, 재해복구, 관리의 용이성 확보
- 적당한 Consistency 에서도 서버 로직이 작동하도록 구현 개선

14
Re-architecting 결과

CloudFront
Edge

	

Internet

Log archives

Patches  Game Data
CloudFront Download
Distribution

S3 Buckets

Mobile Game user

Availability Zone-2

Availability Zone-1
Apple / Google
Push Service

Log Search (realtime)

ELB

Front-end game service

	


Auto-scaling
group

EC2

Chef  Git Conf.
Management

EC2

EC2

Game  Server
Monitoring

EC2

Database group
RDS

EC2

Couchbase Cluster

CloudFormation

EC2

CloudWatch

EC2 redis instance

M

S

15
최근 쿠키런 서버 동향 (1/2)

• 새로운 인스턴스 유형 검토 중
- c1.xlarge 대신 c3.2xlarge 인스턴스 사용
- hi1.4xlarge 대신 cr1.8xlarge 인스턴스 사용
- 모두 성능과 가격면에서 합격점, 인기가 많아 사용할 수 있는지가 관건
• NoSQL Couchbase 시범적 도입 성공
- 메인 사용자 데이터를 Couchbase 기반으로 마이그레이션 진행함
- 성능과 수평 확장성, 그리고 관리 편의성에서 모두 높은 점수
- cr1.8xlarge 4대, 총 976GB Memory, 960GB SSD Storage 클러스터 운영 중
- Reserved Instance를 사용하여 비용절감 중
16
최근 쿠키런 서버 동향 (2/2)

• 최근 눈에 띄는 Seoul - Tokyo Region Latency 감소
• 밤, 낮, 주말과 관계 없이 40ms의 고정된 Latency를 지속적으로 유지
• 한국 커뮤니티 내에서도 이러한 현상을 확인
• AWS측에서 국내 ISP와 협력을 진행한게 아닌지 추측

17
QA

18
감사합니다
홍성진 sungjinhong@devsisters.com

19

More Related Content

What's hot

PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...Amazon Web Services Korea
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...Amazon Web Services Korea
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbieDaeMyung Kang
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...Amazon Web Services Korea
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon Web Services Korea
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리confluent
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送Google Cloud Platform - Japan
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea
 
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWSKRUG - AWS한국사용자모임
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 

What's hot (20)

PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 

Similar to AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)

넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdfOpen Source Consulting
 
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020Amazon Web Services Korea
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관제관 이
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약kidoki
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016Amazon Web Services Korea
 
[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...
[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...
[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...Amazon Web Services Korea
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
 
한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527성호 윤
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
[AWS Migration Workshop] SQL Server Performance on AWS
[AWS Migration Workshop]  SQL Server Performance on AWS[AWS Migration Workshop]  SQL Server Performance on AWS
[AWS Migration Workshop] SQL Server Performance on AWSAmazon Web Services Korea
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례SONG INSEOB
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...Amazon Web Services Korea
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 

Similar to AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS) (20)

넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
KGC 2013 DevSisters
KGC 2013 DevSistersKGC 2013 DevSisters
KGC 2013 DevSisters
 
2015 oce garuda
2015 oce garuda2015 oce garuda
2015 oce garuda
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
 
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
 
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
 
[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...
[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...
[AWS Media Symposium 2019] 고객사례 | SBS Web Service Cloud Migration Process - 김...
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527한국사이버테크 Ha dr 구축전략 160527
한국사이버테크 Ha dr 구축전략 160527
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
 
[AWS Migration Workshop] SQL Server Performance on AWS
[AWS Migration Workshop]  SQL Server Performance on AWS[AWS Migration Workshop]  SQL Server Performance on AWS
[AWS Migration Workshop] SQL Server Performance on AWS
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
AWS Partner ConneXions Online – New Year Edition - AWS re:Invent 2020 Tech Re...
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 

AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)

  • 1. AWS와 함께한 쿠키런 서버 Re-architecting 사례 홍성진 Senior Technical Lead 데브시스터즈 1
  • 2. 강연자 소개 홍성진 (sungjinhong@devsisters.com) • 시니어 테크니컬 리드, 데브시스터즈 • LINE COOKIE RUN, 쿠키런 for Kakao, 오븐브레이크 2 서버 개발 • 시니어 소프트웨어 엔지니어, 위클레이 - 영상통화 앱 클라이언트 및 서버 개발 - 프로토타입 서버 개발 (C, Erlang, MySQL, Hadoop, HBase, Riak, Redis) - Lucene, Solr와 한글 형태소분석기 관련 작업, 웹 크롤러 및 머신러닝 기법 구현 • 통계기계번역팀, 소프트웨어 엔지니어링 인턴, 구글 코리아 - 형태소분석, 품사태깅, 웹 크롤러 구현, 훈련용 데이터 크롤링 • Django Project Contributor - i18n 관련 기능 구현, 버그픽스, 한글 번역 2
  • 3. Agenda • 오븐브레이크2 서버의 구조 • 기존 서버 관리방식의 문제점 • Maven/CircleCI를 사용한 소스코드 형상관리 • Chef를 사용한 서버 형상관리 • CloudFormation을 사용한 인프라 형상관리 • AutoScale을 사용한 동적 처리용량 확장 • 최근 쿠키런 서버 동향 3
  • 5. 오븐브레이크2 서버 구조 • 하드웨어 기반 서버를 본따 만든 서버 구성 • 가용성을 위해 로드밸런서 아래 두 대의 API 서버가 분산되어 있음 ELB • 사용량 증가를 우려해 과도한 스팩을 사용 - 데이터베이스 - m2.2xlarge - API 서버 - m1.large Tomcat Tomcat • 마스터-슬래이브 구조의 데이터베이스 • Backup과 파일 공유를 위한 NFS 서버 MySQL Master • US-East에서 서비스 중 5 Slave Replica Slave Replica
  • 6. 기존 서버 관리 방식의 한계 • 새로운 서버를 만들어야 할 경우 문제 - 매뉴얼 부족, 있는 자료는 오래된 내용 - 관리자가 교체되면서 회사에 남아있는 서버지식이 점점 사라짐 - Tomcat JVM에 설정되어있던 locale 환경설정, 누가 기억하지? • 사용자 증가에 따른 관리 피로도 증가 - 급격한 확장에 대응이 불가능하기 때문에 오버스팩 서버 도입 - 오버스팩 서버 도입에 따른 비용 문제 발생 6
  • 7. 쿠키런 서버 Re-architecting AWS 클라우드에 맞는 서버 재설계를 해보자 7
  • 8. Maven/CircleCI 소스코드 형상관리 • Maven을 사용하여 Dependency 및 버전 관리 • Github, CircleCI를 사용하여 branch별 continuous integration 및 artifact 관리 • 모든 변경사항은 코드리뷰/테스트 후 master 브렌치로 통합되어 최종 war파일 생성 8
  • 9. Chef를 사용한 서버 형상관리 • 서버 설정을 JSON과 Ruby를 사용하여 소 스코드처럼 Git으로 관리 - 설정이 소스코드로 문서화 및 형상관리 • 예1: Tomcat을 설치하고 max heap, G1 GC, file.encoding JVM 환경설정 • 예2: 모든 서버에 공통적으로 devsisters 계정을 만들고 htop, dstat, sysstat 설치 • 예3: 서버 운영시 빼먹기 쉬운 여러 설정들 을 공통적으로 적용 (ulimit 제한 등) • 언제 어디서든 5분 이내 쿠키런 서버를 원하 는만큼 구축할 수 있다 9
  • 10. CloudFormation을 사용한 인프라 형상관리 • EC2, ELB, AutoScale 등을 모두 JSON 파일 형태로 템플릿화 하여 관리하는 기능 • 인프라를 소스코드처럼 관리할 수 있음 - 자동적인 인프라의 문서화 및 형상관리 • 템플릿을 수정하여 AWS에 업로드 하면 기 존에 떠있던 클러스터가 수정된다 • 언제 어디서든 30분 이내 쿠키런 서버 인프 라를 구축할 수 있다 10
  • 11. AutoScale을 사용한 동적 처리용량 확장 • Maven으로 만든 war artifact를 S3 Bucket에 업로드 • Chef와 CloudFormation기반으로 만들어진 AutoScaling Group이 Rolling Update 진행 • 5% 정도 진행하고 개발자가 주의깊게 모니터링한 후 100% 패치 작업 진행 (문제 있으면 롤백) Developer Terminated CircleCI Github Old Version New Version Auto scaling Group Remove Add ELB 11 Cookierun S3 Bucket Created
  • 12. AutoScale 회고 • 장애가 일어난 불량 노드를 알아서 대체 • Scale out 임계치를 잘 설정하는것이 중요 - 규모가 배가 되었다면 AutoScale 전 략도 규모에 맞게 수정하자 - 인스턴스 크기를 키우는것도 방법 - m1.medium m1.large c1.xlarge • 크리스마스 연휴 때 c1.xlarge 120대 - Quota limit에 걸려 문제가 될 뻔 - Business Support로 빠르게 대처 # instances vs. CPU utilization 12
  • 13. AutoScale 전략 • 인스턴스 c1.xlarge - 8 vCPU, 20 ECU, 7GB Memory - c3.2xlarge로 이전 검토 중 - 비슷한 가격에 더 높은 성능과 메모리 • 1분동안 avg CPU 60% 라면 인스턴스 4대 증가 • 2분동안 max CPU 80% 라면 인스턴스 4대 증가 - 급격한 사용자 증가가 있을 경우 빠른 대응을 위한 설정 • 2분동안 avg CPU 25% 라면 인스턴스 2대 감소 • 최소 4대 및 최대 400대로 설정 - 의도하지 않은 과도한 과금 방지를 위해서는 최대 수치를 적절하게 조절해야함 • Reserved Instance로 비용감소 검토 중 - 예) 4대 Heavy Utilization, 10대 Light Utilization 13
  • 14. 클라우드에 맞는 서버 설계 수정 • 클라우드의 서버는 수명이 짧다. 속칭 하루살이 (ephemeral) - Cron Job을 수행하기 위해 한 서버가 마스터로 설정되어야하는 필요성 제거 Shared-nothing 구조로 변경 - Game Log를 손쉽게 Log Server로 Shipping할 수 있도록 Logging 구조 개선 slf4j/Logback기반으로 변경, Logstash agent등의 도입 • 완벽한 Consistency를 보장하는 RDB에서 적당한 Consistency를 추구하는 NoSQL로 - 약간의 Consistency 희생으로 수평적확장성, 재해복구, 관리의 용이성 확보 - 적당한 Consistency 에서도 서버 로직이 작동하도록 구현 개선 14
  • 15. Re-architecting 결과 CloudFront Edge Internet Log archives Patches Game Data CloudFront Download Distribution S3 Buckets Mobile Game user Availability Zone-2 Availability Zone-1 Apple / Google Push Service Log Search (realtime) ELB Front-end game service Auto-scaling group EC2 Chef Git Conf. Management EC2 EC2 Game Server Monitoring EC2 Database group RDS EC2 Couchbase Cluster CloudFormation EC2 CloudWatch EC2 redis instance M S 15
  • 16. 최근 쿠키런 서버 동향 (1/2) • 새로운 인스턴스 유형 검토 중 - c1.xlarge 대신 c3.2xlarge 인스턴스 사용 - hi1.4xlarge 대신 cr1.8xlarge 인스턴스 사용 - 모두 성능과 가격면에서 합격점, 인기가 많아 사용할 수 있는지가 관건 • NoSQL Couchbase 시범적 도입 성공 - 메인 사용자 데이터를 Couchbase 기반으로 마이그레이션 진행함 - 성능과 수평 확장성, 그리고 관리 편의성에서 모두 높은 점수 - cr1.8xlarge 4대, 총 976GB Memory, 960GB SSD Storage 클러스터 운영 중 - Reserved Instance를 사용하여 비용절감 중 16
  • 17. 최근 쿠키런 서버 동향 (2/2) • 최근 눈에 띄는 Seoul - Tokyo Region Latency 감소 • 밤, 낮, 주말과 관계 없이 40ms의 고정된 Latency를 지속적으로 유지 • 한국 커뮤니티 내에서도 이러한 현상을 확인 • AWS측에서 국내 ISP와 협력을 진행한게 아닌지 추측 17
  • 18. QA 18