패치해야할 서버가 전 세계에 나뉘어져 있다면, 어떻게 해야 동시에, 빠르면서, 또 신뢰성있게 서버를 패치할 수 있을까?이를 구현하기 위해 개발된 1)작은 크기의 패치데이터를 빠르게 생성하는 알고리즘과 2) 글로벌 데이터 복제를 위한 기술, 3) 동시 패치와 롤백이 가능하도록 구성한 시스템의 설계와 구조에 대해서 알아본다. 또, 핵심기능에 대한 시연과 함께넥슨아메리카에서 실제로 이를 어떻게 활용하고 있는지, 현장에서 얼마만큼의 개선이 이루어졌는지를 실증적 데이터에 기반하여 공유하고자 한다.
Unite'17 Seoul 아이펀팩토리 발표자료
1. 강연주제: 클라이언트 개발자, 서버 개발 시작하기
2. 강연자: 박근환 TD
3. 강연소개: 이 세션은 주로 게임 클라이언트 개발자로 경력을 쌓아오던 개발자가 게임 서버 솔루션 회사에서 일하면서 알게된 사실들을 바탕으로, 클라이언트 개발자가 서버 개발을 시작하려면 필요한 것들이 무엇인지, 어떻게 시작해야 하는지에 대하여 이야기합니다.
패치해야할 서버가 전 세계에 나뉘어져 있다면, 어떻게 해야 동시에, 빠르면서, 또 신뢰성있게 서버를 패치할 수 있을까?이를 구현하기 위해 개발된 1)작은 크기의 패치데이터를 빠르게 생성하는 알고리즘과 2) 글로벌 데이터 복제를 위한 기술, 3) 동시 패치와 롤백이 가능하도록 구성한 시스템의 설계와 구조에 대해서 알아본다. 또, 핵심기능에 대한 시연과 함께넥슨아메리카에서 실제로 이를 어떻게 활용하고 있는지, 현장에서 얼마만큼의 개선이 이루어졌는지를 실증적 데이터에 기반하여 공유하고자 한다.
Unite'17 Seoul 아이펀팩토리 발표자료
1. 강연주제: 클라이언트 개발자, 서버 개발 시작하기
2. 강연자: 박근환 TD
3. 강연소개: 이 세션은 주로 게임 클라이언트 개발자로 경력을 쌓아오던 개발자가 게임 서버 솔루션 회사에서 일하면서 알게된 사실들을 바탕으로, 클라이언트 개발자가 서버 개발을 시작하려면 필요한 것들이 무엇인지, 어떻게 시작해야 하는지에 대하여 이야기합니다.
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...Amazon Web Services Korea
Amazon Aurora Database는 오픈소스의 개방성과 상용 데이터베이스의 성능과 안정성을 모두 제공하는 관리형 데이터베이스 서비스입니다. Amazon Aurora Database는 처음 소개된 이후로 계속 기능을 추가하며 진화해 왔습니다. Amazon Aurora의 성능과 새롭게 업데이트된 기능들을 게임사에 적용할 수 있는 사용 사례와 함께 소개합니다.
ARM과 AMD64의 차이에 대해 설명하고
오픈스택에 ARM을 도입하기 위한 커뮤니티 활동을 소개합니다.
1. ARM vs AMD64
2. CISC/RISC 차이
3. 커뮤니티에서 ARM위에 오픈스택을 올리기 위한 노력
- SIG (Special Interest Groups)
- PTG(Project Team Gathering)
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
2018년 11월 26일 COEX에서 진행된 HTML5 Conference 발표 자료입니다. 실제 현장에서 발표한 자료와는 다소 차이가 있을 수 있습니다.
본 발표는 AWS S3, SPA, VueJS 등을 통해 구축한 Serverless 환경을 소개합니다. 발표는 한종원님이 진행해주셨습니다.
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...Amazon Web Services Korea
Amazon Aurora Database는 오픈소스의 개방성과 상용 데이터베이스의 성능과 안정성을 모두 제공하는 관리형 데이터베이스 서비스입니다. Amazon Aurora Database는 처음 소개된 이후로 계속 기능을 추가하며 진화해 왔습니다. Amazon Aurora의 성능과 새롭게 업데이트된 기능들을 게임사에 적용할 수 있는 사용 사례와 함께 소개합니다.
ARM과 AMD64의 차이에 대해 설명하고
오픈스택에 ARM을 도입하기 위한 커뮤니티 활동을 소개합니다.
1. ARM vs AMD64
2. CISC/RISC 차이
3. 커뮤니티에서 ARM위에 오픈스택을 올리기 위한 노력
- SIG (Special Interest Groups)
- PTG(Project Team Gathering)
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
2018년 11월 26일 COEX에서 진행된 HTML5 Conference 발표 자료입니다. 실제 현장에서 발표한 자료와는 다소 차이가 있을 수 있습니다.
본 발표는 AWS S3, SPA, VueJS 등을 통해 구축한 Serverless 환경을 소개합니다. 발표는 한종원님이 진행해주셨습니다.
3. Table of Contents
I. Global Server Update
II. Born to Laszlo
III. What we learned & future plan
4. I. Global Server Update
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
5. What game server really is
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
It is a program
running.
6. What server patch really is
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
It is a replacement of
data.
7. Nature of server maintenance is
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
It is copying files.
8. Korea = High Speed
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
It is very fast to copy data via internet wherever in Korea.
9. Global
Concurrent
Quick
How?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
What if servers are around in the world?
Needs to work for the servers at the same time?
Also needs to update them quickly?
10. Problems
1. Massive file size
2. To replicate data globally
3. To manage versions and rollback ability
4. To keep consensus among servers around
5. Fault Tolerance
6. DevOps particular situations
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
What we faced when
we try to sort out how
to
11. Prob. #1 Massive File Size
a. Time consuming to transfer files
b. Storage consuming
c. Burdon to scale
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Simply
Big!
12. Idea
• Found duplicated files among versions.
• What if it could reduce the duplicated files?
• Duplicated data even between old and new file inside?
• If yes, would it be possible to transfer only differences?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
13. Algorithms
• Rabin Karp algorithm
• Adler-32 Rolling Hash algorithm
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Algorithms that we
choose to find
differences between
old and new
14. Rabin Karp Algorithm
a c d i c o n z d h
a c d i
a c i c
a i c o
i c o n
Hash(
Hash(
Hash(
Hash(
) = 111
) = 222
) = 333
) = 999
Hash( ) = 999“ i c o n “
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Same
hash
means
same
pattern
15. Rolling hash Algorithm
h[i+1..i+m] = h[i..i+m-1] – h[i] + h[i+m]
Rabin Fingerprint
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Hash cost needs to be very cheap.
Rolling Hash is a hash function where the input is hashed
in a window that moves through the input.
16. Alder-32 Rolling Checksum Algorithm
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Used by zlib, rsync
High speed, good for big message.
Binary size is normally big enough.
17. Combination of Rabin Karp & Adler-32
111 222 333 444
111 333
Old File
New File
Find same parts then differences are remains.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
18. A test result for a big file
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Only 30MB differences was
found from 1.6GB size files.
About 98% is identical !
Picked a big
file from a real
game binary
See how much different between
consecutive two files in version history…
19. Demo
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
20. A test result in Lab – Remarkable!
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Two times faster in overall performance than
rdiff which is one of the best tool out there.
21. Concurrency with Golang
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Additionally, we applied concurrency with
Golang and…
Two times
additional
speed gain
with 4ch
concurrency
22. Another Lab test result with a set of complete/real
game binary
It took about 43 second to find differences for
3.6GiB size files.
It took about 8 second to update old files with the
differences (core i7 8GB)
23. Test result on a real game update #1
Before
After
Reduced from 8m50sec to 31sec.
about 17 times speed improvement at server
update!
24. Prob. #2 To replicate data globally
So deploy the
differences in advance
and let servers be
ready for update.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Now, we can transfer
only differences.
25. Idea
• Distributed storage solutions
• MooseFS, GlusterFS
• Only Glusterfs supports Cross Data-center
• Woot, it uses Rsync internally !!!
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Using Rsync than using
GlusterFS would be lighter then.
26. Small size to replicate helps
• Frequently
• check new data of differences
• And replicate data quickly
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
27. Crontab/Rsync/ssh
• Crontab : easy, handy, stable
• Rsync : reliable, affordable performance, cross
check with cpatch
• ssh : for security
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
The idea to use these instead of creating a new
component/tool can give an advantage of familiar
tools for engineers which enables rapid response
of failure.
28. Message Queue - SQS
• A new build event
• Data sync ready event
• Data sync done event
• Update done event
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Amazon SQS is used for message queue to sync jobs with event.
29. Replication of a new version
1. Once a new version
comes…
2. Issue to SQS and…
3. All node starts
replication
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
30. Prob #3. To manage versions and rollback ability
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
“It is too late…”
31. Git?
- 2GB size limit
- Git-annex : not reliable?
- Mercurial : poor performance
- Rollback version is the only significant
requirement so complex product is not
necessary, Git would be too much.
- Let’s create it!
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
What if to use Git for
version control of large
files?
32. Nature of game versions
• Current version/Future version(test version)
• Patch of current version / patch of future version
• Number of future version >= 1
• Grow forward only
• No merge exists
• Full version / Patch version
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
33. Version system for game version
Current
version
Future
version
Should be able to jump to any version
v1 v2 v3 v4 v10 v11 v12 v13 v14 v15
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
34. Schema of versions
product version#1
version#2
version#3
version#10
version#11
branch A
branch B
unique
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Versions have to
belong to a
product and they
must be unique
in the product.
Versions must
belong to a
branch but they
can move.
35. Prob #4. To keep consensus among
servers around
Not only patch files but also version
info needs to be replicated.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
36. Replication for version info
Cross-IDC ability is necessary
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
37. Why Couchbase
• Ability of Cross-IDC replication; XDCR
• Persistent DB
• Speed does not really matter
• Web UI
• Easy to install and maintain.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
38. Prob #5. Fault Tolerance
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
A failure in a region does not
propagate to other region.
39. Weakness of a monolithic system
over internet
• Nature of internet, hard to ensure stablability
• Long distance connections is especially weak.
• Can cause a system failure whenever internet goes
unstable.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Avoid a monolithic system
over internet
40. Node Architecture
No failure propagation – each local node is a
complete one that can act individually.
• A failure in a node does not propagate to others
• Less dependency of internet
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
41. Lane Architecture
each subsystem is independent
Version
System
Replicatio
n System
Applicati
on
System
Lane
#1
Lane
#2
Lane
#3
• Each lane is separated.
• No affect among lanes.
• A failure in a lane can be fixed only in
the lane.
• Helps quick find a cause
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Lanes divided by their
role
42. Prob #6. DevOps particular situations
Rapid development & Extendable system are required
• Not easy to make a balance between
operation and development
• Hard to improve without development
• Development based on operation
experiences is critical
• Various type of engineers
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
DevOps is exposed to a
urgent request all the
time
Operation group
has it’s own
characteristic at
work.
43. Script rather than binary
Why?
-Good to troubleshoot is the biggest value.
-Script can be read on the spot immediately
-Can be fixed without compiling code.
-Relatively easier to learn
-Easy to ready, easy to fix
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
44. Python
-Good to troubleshoot is the biggest value.
-Script can be read on the spot immediately
-Can be fixed without compiling code.
-Relatively easier to learn
-Easy to ready, easy to fix
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
45. Python covers application layer
patch Version control
build update sync
Core
Components
Applications
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Layered Architecture
46. I I. Born to Laszlo
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
47. Laszlo
Laszlo is a software system that enables server patch across
data-centers, quickly, reliably and automatically.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
This guy
is Laszlo
Project
Name
48. Summary of Casablanca project
Project period : Feb ~ Oct 2015
Development period : Feb ~ Aug 2015
Resource : 1 + many helps from team
POC : ~ Apr 2015
Prototyping : ~ May 2015
Production Development : ~ Aug 2015
Live : ~ December 2015
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
49. Laszlo Status
• Laszlo has been successfully being used for
GhostInTheShell, Riders of Icarus, Maple Story,
Mabinogi, Atlantica, Vindictus since 2015
• No major issues found so far
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
50. Technology stack
golang
python
Rundeck
AWS (SQS,SNS)
Rabin karp / Adler-32
Couchbase
Puppet
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
51. Five core components of Laszlo
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
52. # 1 - cpatch
• Reduced time for update to 1/17 (variable)
• Enables a quick data replication
• Support both Windows/Linux
• Developed with Golang
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
53. # 2 - tree
• A core component for version control
• Product - Branch - Version
• Golang & Couchbase
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
54. # 3 - sync
• Application to replicate patch data
across nodes around the world
• Python & rsync
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
55. # 4 - Rundeck
• Command aggregator
• Can be placed in any node
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
56. # 5 - puppet
• Configurations for build & update
• Puppet distributes configuration changes to
all the server around at once
• Configuration management is centralized
with puppet.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
57. GhostInTheShell
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
58. GhostInTheShell Records
• 1~5 min for creating patch
• Regions : NYC, SLC, LV, LON, FRA, AUS
• < 1 min for updating servers
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
59. Learned from GhostInTheShell
• ****.db caused a patch failure.
• Turned out that the file keeps changing after launch.
• But developer keeps deliver the file.
• Developed /TN option so the file can be pointed as
always new.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
60. Atlantica
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
61. Atlantica Records
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
• < 1 min for creating patch
• < 1~25 sec for updating servers
• No more consecutive applying multiple patches,
instead only one time update with the tail
version.
62. Learned form Atlantica
• Atlantica sometimes needs to skip a version.
• This will be a new feature of Laszlo
(developing)
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
63. Riders of Icarus
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
64. Learned from Icarus
• Icarus has incremental patch all the time.
• But sometimes a part of folder is
complete.
• So it needs to completely overwrite some
folder even though it is a incremental
update.
• Developed Mirror option to make it
available.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
65. I I I. What we learned & future
plan
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
66. What we learned overall
- Utilize open sources further
- Also contribute to open source projects out there
- Good algorithm is really effective.
- Golang is a great at concurrency programming.
- Rundeck can be a API host.
- …
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
67. What if developer builds patch
with Laszlo?
• Because developer is who create a new
version.
• Developer also defines version name.
• Steam, for example, developer builds a
new version of patch.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
68. Along with Client binary as well
• Both Server & Client belong to a single version.
• Dealing with them as a separate can cause faults.
• Also handling both is duplicated job.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
69. Pipeline Project
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Devoper
Publisher
& Users
A pipeline from game build to deployment in
an automated process.
70. Rundeck as an API host
• Via HTTP/S api call is already implemented.
• Easy to manage APIs through UI
• Enable to track call history
• Advantage of documentation for API
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Restful
API
API Registration
API management