127
최싞 분산 시스템이 해결하고 있는 오래 된 이슈들 안준석 NHN Corp.

B1 최신분산시스템이해결하고있는오래된이슈들

Embed Size (px)

Citation preview

Page 1: B1 최신분산시스템이해결하고있는오래된이슈들

최싞 분산 시스템이 해결하고 있는 오래 된 이슈들

안준석 NHN Corp.

Page 2: B1 최신분산시스템이해결하고있는오래된이슈들

여러분은 어떤 서비스를 만들고 싶으싞가요?

Page 3: B1 최신분산시스템이해결하고있는오래된이슈들

서버만 추가하면 확장되고

장애가 발생해도 서비스 되며

프로그래밍하기도 좋은 그런..

Page 4: B1 최신분산시스템이해결하고있는오래된이슈들

블루오션

Page 5: B1 최신분산시스템이해결하고있는오래된이슈들

분산 홖경?

분산 시스템?

Page 6: B1 최신분산시스템이해결하고있는오래된이슈들

알아 볼까요?!

Page 7: B1 최신분산시스템이해결하고있는오래된이슈들

개요 분산, 암묵지, 합의

Page 8: B1 최신분산시스템이해결하고있는오래된이슈들

인사이트!

Page 9: B1 최신분산시스템이해결하고있는오래된이슈들

최싞 분산 기술!

Page 10: B1 최신분산시스템이해결하고있는오래된이슈들

사고모델!

Page 11: B1 최신분산시스템이해결하고있는오래된이슈들

인사이트INSIGHT

Game과 DB, 분산과 동기화

Page 12: B1 최신분산시스템이해결하고있는오래된이슈들

게임 클라우드!

Page 13: B1 최신분산시스템이해결하고있는오래된이슈들

게임 클라우드;;;

호랑이가 죽어 가죽을 남기듯!

스마트폰게임 플랫폼으로 변싞

Page 14: B1 최신분산시스템이해결하고있는오래된이슈들

클라우드 서비스?

전산자원을 집약해서 사용자가 필요한 만큼

사용할 수 있도록 제공하는 것

Page 15: B1 최신분산시스템이해결하고있는오래된이슈들

그래서 필요 했던 것은?

전산 자원의 추상화!

그래서 아이두게임이 추상화한 전산자원은?

Page 16: B1 최신분산시스템이해결하고있는오래된이슈들

채널 : 로비

Page 17: B1 최신분산시스템이해결하고있는오래된이슈들

게임방 : 룸

Page 18: B1 최신분산시스템이해결하고있는오래된이슈들

즉, 로비와 룸

으로 추상화

Page 19: B1 최신분산시스템이해결하고있는오래된이슈들

그래서 추상화한 자원을

어떻게 관리하나요?

Page 20: B1 최신분산시스템이해결하고있는오래된이슈들

Room Server Process#1

Room Server Process#2

테트리스 1번 방

고스톱 1번 방

사천성 1번 방

사천성 2번 방 사천성

3번 방

고스톱 2번 방 테트리스

3번 방

고스톱 4번 방

프로세스 : 게임 = 1: N

Page 21: B1 최신분산시스템이해결하고있는오래된이슈들

Room Server

Lobby Server

LB

Lobby Server

LB

Lobby Server

LB

Room Servers

Room Server

Room Servers

Room Server

Channel List

Servers

채널 고르기

Page 22: B1 최신분산시스템이해결하고있는오래된이슈들

왜 이렇게 만들었나?

서버만 추가하면 확장되고

일부 서버 고장으로 전체 서비스가 중지 되지 않게

Page 23: B1 최신분산시스템이해결하고있는오래된이슈들

확장성, 가용성

+@

Page 24: B1 최신분산시스템이해결하고있는오래된이슈들

+@ : 동기화 Room Server

Room Servers

Room Servers

SharedData

고스톱 1번 방

고스톱 7번 방

고스톱 8번 방

『고스톱 최고 점수』

전역 공유데이터 동기화는?

하나의 서비스를 이룸!

Page 25: B1 최신분산시스템이해결하고있는오래된이슈들

즉, 누구에게 물어보든 합의 된 같은 값을

줘야 한다!

Page 26: B1 최신분산시스템이해결하고있는오래된이슈들

+@ : 내고장성 Room Server

Room Servers

Room Servers

SharedData

1 2 3

같은 Lock에 대한 획득 순서 직렬화

글로벌Lock서버

X

Page 27: B1 최신분산시스템이해결하고있는오래된이슈들

즉, 분산 노드 갂

데이터 동기화와 내고장성 필요!

Page 28: B1 최신분산시스템이해결하고있는오래된이슈들

확장성, 가용성

+동기화

+내고장성

Page 29: B1 최신분산시스템이해결하고있는오래된이슈들

분산에 대한 체감 온도 높이기!

Page 30: B1 최신분산시스템이해결하고있는오래된이슈들

분산DISTRIBUTION

너에게 내 일을 주마!

Page 31: B1 최신분산시스템이해결하고있는오래된이슈들

분산 전략 엿보기

Page 32: B1 최신분산시스템이해결하고있는오래된이슈들
Page 33: B1 최신분산시스템이해결하고있는오래된이슈들
Page 34: B1 최신분산시스템이해결하고있는오래된이슈들
Page 35: B1 최신분산시스템이해결하고있는오래된이슈들
Page 36: B1 최신분산시스템이해결하고있는오래된이슈들

4 vs 4 800유닛 vs 800유닛

Page 37: B1 최신분산시스템이해결하고있는오래된이슈들

저 많은 유닛들의 움직임이 어떻게 동기화 되는 걸까요?

분산 된 Peer 들 간에 P2P 통신하는 상황에서!

Page 38: B1 최신분산시스템이해결하고있는오래된이슈들

(100, 100) (90, 80)

Page 39: B1 최신분산시스템이해결하고있는오래된이슈들

서버 당 최대 동접

7000명

Page 40: B1 최신분산시스템이해결하고있는오래된이슈들

수 많은 아바타들의 이벤트는 어떻게 동기화 될까요?

Server-Client 구조에서 실시간 동기화 전략은?

Page 41: B1 최신분산시스템이해결하고있는오래된이슈들

레어템 득!

장비 장탈착!

Page 42: B1 최신분산시스템이해결하고있는오래된이슈들

다른 생각 다른 전략

Page 43: B1 최신분산시스템이해결하고있는오래된이슈들

이런 온라인 게임에서 확장성, 가용성 + @

가능 할까요?

Page 44: B1 최신분산시스템이해결하고있는오래된이슈들

NoSQL로 알아보는 최싞 분산과 동기화

이슈들!

Page 45: B1 최신분산시스템이해결하고있는오래된이슈들
Page 46: B1 최신분산시스템이해결하고있는오래된이슈들

NoSQL 왜 쓰는 걸까요?

Page 47: B1 최신분산시스템이해결하고있는오래된이슈들

Schemaless Horizontal Scalability

High Availability

Page 48: B1 최신분산시스템이해결하고있는오래된이슈들

Schemaless? Key-Value 데이터를 저장한다.

Page 49: B1 최신분산시스템이해결하고있는오래된이슈들

GameLevel { levelNo : 1 gameNo : 2 version : 1.5 timeCreated : 2010-08-25 timeLastModified : 2010-08-24 12:00 authorID : 5 authorNick : 7 userData { ……………………. } filter { …………………… } }

VS

Page 50: B1 최신분산시스템이해결하고있는오래된이슈들

GameLevel { levelNo : 1 gameNo : 2 version : 1.5 timeCreated : 2010-08-25 timeLastModified : 2010-08-24 12:00 authorID : 5 authorNick : 7 userData { ……………………. } filter { …………………… } }

Key { Key : Value Key : Value …. Key { ……………………. } Key { …………………… } }

Page 51: B1 최신분산시스템이해결하고있는오래된이슈들

Map< Key, Value >

Map< Key, Map< Key, Value >>

Map< Key, Map< Key, Map< Key, Value >>> …………………….

Page 52: B1 최신분산시스템이해결하고있는오래된이슈들

처음엔 스키마에 구속 받지 않는다고 해서

‘혹’했었으나… 핵심은 다른 곳에!!

Page 53: B1 최신분산시스템이해결하고있는오래된이슈들

Scalabilty?

Availability? Consistency?

Page 54: B1 최신분산시스템이해결하고있는오래된이슈들

Horizontal Scalability ‚실행시갂에 서버를 늘리거나 줄인다‛

Page 55: B1 최신분산시스템이해결하고있는오래된이슈들

Scalability 어떻게??

A

C

B 1 2

3

4

D

NoSQL 클러스터 서비스中

Page 56: B1 최신분산시스템이해결하고있는오래된이슈들

Solution :

Consistent Hashing Hash(Key)

맵핑 시켜준다!

Page 57: B1 최신분산시스템이해결하고있는오래된이슈들

A

B

C

1

2 3

4

1 2

3

4

D

Page 58: B1 최신분산시스템이해결하고있는오래된이슈들

A

B

C

1

2 3

4

2

3

4

D Hash( ) 1

1

Page 59: B1 최신분산시스템이해결하고있는오래된이슈들

High Availability ‚하나의 저장소 처럼 보이나

같은 데이터가 여러곳에 복제되어 있다‛

Page 60: B1 최신분산시스템이해결하고있는오래된이슈들

A

B

C

1

2 3

4

1 2

3

4

Page 61: B1 최신분산시스템이해결하고있는오래된이슈들

A

B

C

1

2 3

4

1 2

3

4

1 2

1 2

Hash( ) 1

Hash( +1) 1

Hash( +2) 1

Page 62: B1 최신분산시스템이해결하고있는오래된이슈들

Scalabilty?

Availability? Consistency?

Page 63: B1 최신분산시스템이해결하고있는오래된이슈들

분산 & 동기화

Page 64: B1 최신분산시스템이해결하고있는오래된이슈들

분산 홖경? 분산 시스템?

Page 65: B1 최신분산시스템이해결하고있는오래된이슈들

아하!!

Page 66: B1 최신분산시스템이해결하고있는오래된이슈들

모델MODEL

Two General’s

Page 67: B1 최신분산시스템이해결하고있는오래된이슈들
Page 68: B1 최신분산시스템이해결하고있는오래된이슈들

‚Common Knowledge‛ 공유 지식

Page 69: B1 최신분산시스템이해결하고있는오래된이슈들

“자기가 알고 있다는 것을 다른 사람이 알고 있고

또 그렇다는 사실을 서로가 알고 있다.”

Page 70: B1 최신분산시스템이해결하고있는오래된이슈들
Page 71: B1 최신분산시스템이해결하고있는오래된이슈들

최소한 1명은 빨갂색 모자를 쓰고 있다!

Page 72: B1 최신분산시스템이해결하고있는오래된이슈들

둘다 흰 모자! 내가 빨강 모자!

….. …..

둘다 흰 모자! 내가 빨강 모자!

앞 사람이 빨강이니 난 흰 모자!

앞 사람이 빨강이니 난 흰 모자!

Page 73: B1 최신분산시스템이해결하고있는오래된이슈들

….. 둘다 흰 모자! 내가 빨강 모자!

…..

….. 둘다 흰 모자! 내가 빨강 모자!

앞 사람이 빨강이니 난 흰 모자!

Page 74: B1 최신분산시스템이해결하고있는오래된이슈들

….. ….. …..

….. ….. 난 빨강 모자!

Page 75: B1 최신분산시스템이해결하고있는오래된이슈들

그 앞에 사람은 그렇게 말했고 앞에 사람이 이렇게 말했으니

나는 이럴 것이다!

Page 76: B1 최신분산시스템이해결하고있는오래된이슈들

“자기가 알고 있다는 것을 다른 사람이 알고 있고

또 그렇다는 사실을 서로가 알고 있다.”

Page 77: B1 최신분산시스템이해결하고있는오래된이슈들

‚Two General’s Problem‛

두 장굮의 문제

Page 78: B1 최신분산시스템이해결하고있는오래된이슈들
Page 79: B1 최신분산시스템이해결하고있는오래된이슈들

여기를 통과하는 방법 밖에 없음

Page 80: B1 최신분산시스템이해결하고있는오래된이슈들

스파이

Page 81: B1 최신분산시스템이해결하고있는오래된이슈들

내일 정오에 공격합시다!

잡혔다! 배신:

오늘공격! OK!

내일 정오에 공격합시다!

Page 82: B1 최신분산시스템이해결하고있는오래된이슈들

두 장굮은 공격에 성공했을까요?!

Page 83: B1 최신분산시스템이해결하고있는오래된이슈들

내일 정오에 공격합시다!

잡혔다! 배신:

오늘공격! OK!

내일 정오에 공격합시다!

내가 응답을 못받았다고 생각해서 공격 안하면 어떻

하지?

내가 응답을 못받았다고 생각해서 공격 안하면 어떻

하지?

Page 84: B1 최신분산시스템이해결하고있는오래된이슈들

내일 정오에 공격합시다!

잡혔다! 배신:

오늘공격! OK!

내일 정오에 공격합시다!

내가 응답을 못받았다고 생각해서 공격 안하면 어떻

하지?

내가 응답을 못받았다고 생각해서 공격 안하면 어떻

하지?

Page 85: B1 최신분산시스템이해결하고있는오래된이슈들

네트웍기반 분산 시스템을 만들며 고민하게 되는 문제!

Page 86: B1 최신분산시스템이해결하고있는오래된이슈들

어떻게 하면 될까요!!?

Page 87: B1 최신분산시스템이해결하고있는오래된이슈들

Consensus 합의

어떤 한(Single) 값(Value)을 선택하는 것! 합의 된 값은 모든 서버들이 알 수 있어야 한다.

Page 88: B1 최신분산시스템이해결하고있는오래된이슈들

즉, 누구에게 물어보든 합의 된 같은 값을

줘야 한다!

Page 89: B1 최신분산시스템이해결하고있는오래된이슈들

합의CONSENSUS

X-Phase Commit & Paxos

Page 90: B1 최신분산시스템이해결하고있는오래된이슈들

Consensus 2-Phase Commit

Page 91: B1 최신분산시스템이해결하고있는오래된이슈들

Propose

Commit

Prepared

Committed / Aborted

모두의 동의를 얻는다.

Page 92: B1 최신분산시스템이해결하고있는오래된이슈들

Phase #1 [Prepare]

Page 93: B1 최신분산시스템이해결하고있는오래된이슈들

Phase #2 [Commit]

Page 94: B1 최신분산시스템이해결하고있는오래된이슈들

문제상황

X

X

Page 95: B1 최신분산시스템이해결하고있는오래된이슈들

문제상황

X

X

Page 96: B1 최신분산시스템이해결하고있는오래된이슈들

진짜 문제상황 X

Page 97: B1 최신분산시스템이해결하고있는오래된이슈들

-0-;;; Coordinator!

Died…

Page 98: B1 최신분산시스템이해결하고있는오래된이슈들

어떤 해결책이 있을까요!!?

Page 99: B1 최신분산시스템이해결하고있는오래된이슈들

‚The Part-Time Parliament‛

파트타임 국회

Page 100: B1 최신분산시스템이해결하고있는오래된이슈들
Page 101: B1 최신분산시스템이해결하고있는오래된이슈들
Page 102: B1 최신분산시스템이해결하고있는오래된이슈들

Consensus PAXOS

Page 103: B1 최신분산시스템이해결하고있는오래된이슈들
Page 104: B1 최신분산시스템이해결하고있는오래된이슈들
Page 105: B1 최신분산시스템이해결하고있는오래된이슈들
Page 106: B1 최신분산시스템이해결하고있는오래된이슈들

문제상황

X

X

Page 107: B1 최신분산시스템이해결하고있는오래된이슈들

Consensus PAXOS

Page 108: B1 최신분산시스템이해결하고있는오래된이슈들

과반수만 살아있으면 된다! 2F+1 의 Node에서

F 만큼의 Fault 는 감당!

Page 109: B1 최신분산시스템이해결하고있는오래된이슈들

음?

Page 110: B1 최신분산시스템이해결하고있는오래된이슈들

즉, 서버들의 절반 + 1 개만

살아 있으면 합의에 문제가 없다

Page 111: B1 최신분산시스템이해결하고있는오래된이슈들

과반수+1 동의를 얻을 수 있으면

옳은 값을 얻을 수 있다?

Page 112: B1 최신분산시스템이해결하고있는오래된이슈들

과반수는 모든 것을 안다! 과반수가 알고 있는 것을 모아서 판단한다.

1 1 1 2 2 2

Page 113: B1 최신분산시스템이해결하고있는오래된이슈들

Propose

Commit

Prepared(Agree)

Committed / Aborted

2-Phase Commit + Ordering + Quorum

Page 114: B1 최신분산시스템이해결하고있는오래된이슈들

Propose

Commit

Agree

Accept

과반수가 알고 있는 것을 모아서 판단한다.

과반수는 자신이 최근에 Agree 했던 값을 보내준다. 이걸 판단하는 것.

Page 115: B1 최신분산시스템이해결하고있는오래된이슈들

문제상황

X

X

1

1

1 2

2

1 2

1 2

Page 116: B1 최신분산시스템이해결하고있는오래된이슈들

문제상황

1

1

1 2

2

1 2

1 2

2

Page 117: B1 최신분산시스템이해결하고있는오래된이슈들

진짜 문제상황 X

Page 118: B1 최신분산시스템이해결하고있는오래된이슈들

과반수만 살아있으면 된다! 2F+1 의 Node에서

F 만큼의 Fault 는 감당!

Page 119: B1 최신분산시스템이해결하고있는오래된이슈들

Consensus 합의

어떤 한(Single) 값(Value)을 선택하는 것! 합의 된 값은 모든 서버들이 알 수 있어야 한다.

Page 120: B1 최신분산시스템이해결하고있는오래된이슈들

어디에 사용할까?

Page 121: B1 최신분산시스템이해결하고있는오래된이슈들

마무리 분산, 암묵지, 마무리

Page 122: B1 최신분산시스템이해결하고있는오래된이슈들

인사이트!

Page 123: B1 최신분산시스템이해결하고있는오래된이슈들

최싞 분산 기술!

Page 124: B1 최신분산시스템이해결하고있는오래된이슈들

사고모델!

Page 125: B1 최신분산시스템이해결하고있는오래된이슈들
Page 126: B1 최신분산시스템이해결하고있는오래된이슈들

Q&A 분산, 합의, 암묵지

Page 127: B1 최신분산시스템이해결하고있는오래된이슈들

감사합니다.