[gaming on aws] 넥슨 - aws를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

60
넥슨 신사업본부 윤석주 AWS(Amazon Web Services)활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로

Upload: amazon-web-services-korea

Post on 24-Jan-2015

6.423 views

Category:

Technology


12 download

DESCRIPTION

AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례 - 넥슨 (윤석주 신사업본부 선임)

TRANSCRIPT

Page 1: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

넥슨 신사업본부

윤석주

AWS(Amazon Web Services)를 활용한 모바일 게임 서버 개발

퍼즐 주주의 사례를 중심으로

Page 2: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

윤석주 ( @noricube )

- 2012:서울

- Zoo Invasion

-퍼즐 주주

발표자 소개

Page 3: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

퍼즐 주주는 어떤 게임?

소셜 요소 쉬운 조작

넥슨 최초 카카오 게임 IOS 신규 무료 1위 Android 신규 무료 1위 최고 매출 20위

Page 4: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

1. 퍼즐 주주 서버의 설계 목표

2. AWS 3가지 장점

3. AWS 장점 살리기

4. AWS 활용

5. 설계 목표 완수

6. AWS 의 부가적인 장점

목차

5

Page 5: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

퍼즐 주주 서버 설계 목표

Page 6: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

확장성, 저비용, 안정성 을 모두 고려

퍼즐 주주 서버는

7

Page 7: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

퍼즐주주를 만들던 2012년 8월…

우리도 많은 유저가 올 수 있다

확장성

8

Page 8: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

짧은 수명

불 확실한 미래

저비용

9

Page 9: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

장애에 민감한 모바일 시장

- 이미지 저하

- 매출 하락

안정성

10

Page 10: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

그래서 AWS 선택

11

Page 11: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

AWS 3가지 장점

Page 12: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

14

Page 13: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

1. 빠른 확장성

15

Page 14: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

scale-out

16

최소 2~3일 5분

Page 15: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

클릭 한번에 끝!

scale-up

17

Page 16: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

2. 적은 초기 비용

18

Page 17: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

초기 투자 없이 사용한 시간만 내면 됨!

비용 절감

19

Page 18: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

개발 오픈 3주 1달 2달 3달 4달 5달

물리 서버 AWS 유저

누적 예상 비용

21

Page 19: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

3. 안정성

22

Page 20: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

여러 개의 Zone 동시 사용 가능

- Zone은 다른 IDC (내가 쓰는 Zone이 핵폭탄을 맞는다면!?)

- Zone간의 전용망 제공

EBS(Elastic Block Storage)

- 스토리지가 따로 분리

- Replication

안정성

23

Page 21: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

안정성

24

Elastic Load

Balancer

유저

Page 22: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

빠른 확장성

적은 초기 비용

안정성

AWS 장점

26

Page 23: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

AWS 장점 살리기

Page 24: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

빠른 확장성

적은 초기 비용

안정성

AWS 장점

29

Page 25: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Frontend / DB 만 존재

30

Page 26: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

단순한 서버 구조

31

Elastic Load

Balancer

유저 Frontend DB

Page 27: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Frontend

32

Page 28: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

모든 게임 로직 포함

- 서버 확장을 쉽게 하기 위해

요청을 최대한 단순화

- 분산해서 처리하기 쉽도록

Stateless

- 유저 정보를 DB로만 동기화하여 동기화 이슈 제거

Frontend

33

Page 29: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Frontend 원자성 보존

34

클라이언트에서 요청

DB에서 데이터 로드

요청 처리

데이터 충돌이 있었는가?

DB에 쓰고 종료

아니요

Page 30: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Frontend 는 수평확장이 가능

그럼 DB 도 수평확장이 가능해야 하지 않을까?

35

Page 31: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

NoSQL 도입

- 서비스 중 수평 확장 가능

- 쓰기가 많을 때 유리

DB

36

Page 32: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

추가로..

37

Page 33: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

통계, 로그 등 추가로 필요한 서비스

Redis의 Pub/Sub으로 메시지 전달

서비스에 의존적이지 않도록 함

기타 서비스

38

Page 34: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

AWS 활용

Page 35: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

수요 확장 대응

40

Elastic Load

Balancer

유저 Frontend DB

Frontend DB

Page 36: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

수요 감소 대응

41

Elastic Load

Balancer

유저 Frontend DB

Frontend DB

Page 37: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

ㅇㅇㅇ

장애 대응

42

Elastic Load

Balancer

유저 Frontend DB

Frontend DB

Frontend DB

실시간 복제

Page 38: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Frontend에 부하가 몰리면 Frontend 추가

DB에 부하가 몰리면 DB 추가

수요 대응

거꾸로 수요가 줄어들면 Frontend / DB제거하여

비용 절감

다시 한번 정리하자면

43

Page 39: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

설계 목표 완수

Page 40: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

확장성, 저비용, 안정성

45

Page 41: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

장애 없는 서비스

- 7개월 운영 가동률 99.9%

안정성

46

Page 42: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

다양한 수요에 대응

-오픈 초기 빠르게 증가하는 수요를 모두 소화함

비용 절감

- 유지 비용 지속적으로 감소

확장성 / 저비용

47

Page 43: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

AWS 의 부가적인 장점

Page 44: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

서버를 미리 셋팅 해두고

원할 때 빠르게 확장 가능

API로도 확장 가능

서버 템플릿

49

Page 45: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

디스크 자체를 API로 백업

백업

50

Page 46: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

점검 없는 업데이트

51

ELB Frontend

Frontend

Frontend

Page 47: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

국내보다 해외망이 좋음

- 한국

- 일본

- 미국

모두 한 서버에서 서비스

글로벌 서비스

52

Page 48: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

장애 발생시 템플릿으로 Instance를 추가

장애 Instance를 제거

즉시 해결 가능

Instance != Server

53

Page 49: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

정리

Page 50: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

모바일 게임에 좋다

- 다양한 수요에 대응 가능

- 초기 투자 비용 최소화

- 서비스 안정성

- 글로벌 서비스

자동화 가능

- 거의 모든 기능에 대한 API 지원

Amazon Web Service

55

Page 51: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

인프라에 유리한 설계가 중요

- 확장 가능한 DB 사용

- Stateless

- 서비스간 의존성 최소화

- 요청 단순화

Software on AWS

56

Page 52: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

보너스

Page 53: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Couchbase?

Page 54: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Key-value storage

59

Page 55: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

60

서비스 도중 scale-in/out 가능

Page 56: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

웹 UI로 된 관리 툴

- Rebalance

- Bucket 설정

- 통계

61

Page 57: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Replication 지원 62

Page 58: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Failover 지원 63

Page 59: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

DB 구조

64

Page 60: [Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례

Q&A