SlideShare a Scribd company logo
Global Server Update – How to?
Quick & Concurrent
Nexon America
김태현
About presenter
Machine Vision
Infosec
VoIP
Online Video Service
Game Dev. Studio
DevOps
SecureWiz
1998
2016
Table of Contents
I. Global Server Update
II. Born to Laszlo
III. What we learned & future plan
I. Global Server Update
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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.
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.
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.
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?
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
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!
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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
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
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.
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.
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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…
Demo
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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
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)
Test result on a real game update #1
Before
After
Reduced from 8m50sec to 31sec.
about 17 times speed improvement at server
update!
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.
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.
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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.
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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…”
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?
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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
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.
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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
I I. Born to Laszlo
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Five core components of Laszlo
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
# 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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
# 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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
# 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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
# 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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
# 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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
GhostInTheShell
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Atlantica
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Riders of Icarus
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
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.
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
References
Sources
2p. Machine
vision
www.dynamicmachinedesign.com
7p. https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=0ahUKEwiDsoe0rpPMAhVQymMKHQk0C5EQjRwIBw&url=http%3A%2F%2Fww
w.engadget.com%2F2015%2F08%2F20%2Fgoogle-reveals-server-info%2F&bvm=bv.119745492,d.cGc&psig=AFQjCNG3pdB7qhzBlawbIOXFfr1noeWhmA&ust=14
60903117145843
8p. Network
map
http://kt-egov.co.kr/service/infra.do
70p http://engineering.riotgames.com/news/voyager-original-korean
JUST DO IT.
Thank You.

More Related Content

Similar to NDC 2016 - Global Server Update - How to?

[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
hoondong kim
 
개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기
David Kim
 
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
Amazon Web Services Korea
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
Open Source Consulting
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
NAVER Engineering
 
Ics craken 20151103
Ics craken 20151103Ics craken 20151103
Ics craken 20151103
Jin Bleu
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
Sumin Byeon
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes Cluster
Jinwoong Kim
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
OpenStack Korea Community
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
Joongi Kim
 
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
양재동 코드랩
 
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
Jongwon Han
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
NAVER D2
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
NAVER D2
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
NAVER D2
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe95
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
INSIGHT FORENSIC
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
DaeMyung Kang
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
[NDC 2017] 이카루스 북미 : 베타서비스 활용법
[NDC 2017] 이카루스 북미 : 베타서비스 활용법[NDC 2017] 이카루스 북미 : 베타서비스 활용법
[NDC 2017] 이카루스 북미 : 베타서비스 활용법
David Kim
 

Similar to NDC 2016 - Global Server Update - How to? (20)

[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기
 
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
 
Ics craken 20151103
Ics craken 20151103Ics craken 20151103
Ics craken 20151103
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes Cluster
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
 
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
[NDC 2017] 이카루스 북미 : 베타서비스 활용법
[NDC 2017] 이카루스 북미 : 베타서비스 활용법[NDC 2017] 이카루스 북미 : 베타서비스 활용법
[NDC 2017] 이카루스 북미 : 베타서비스 활용법
 

NDC 2016 - Global Server Update - How to?

  • 1. Global Server Update – How to? Quick & Concurrent Nexon America 김태현
  • 2. About presenter Machine Vision Infosec VoIP Online Video Service Game Dev. Studio DevOps SecureWiz 1998 2016
  • 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