SlideShare une entreprise Scribd logo
1  sur  155
Télécharger pour lire hors ligne
만들고 붓고 부수고
김찬웅
〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
넥슨 컴퍼니 왓 스튜디오
저작물 인용
저작권법 제35조의 3 ‘공정이용’ 조항에 따라 교육과 연구 목적으로 이용
하고 있습니다. 혹시 문제가 있을 경우, cwkim@nexon.co.kr 로 연락
주시면 적절한 조치를 취하겠습니다.
김찬웅
넥슨, 왓 스튜디오, 백엔드 엔지니어
자동화가 취미인 프로그래머
• NDC15 <그룹웨어에 새 에너지를>
• NDC16 <Find My AndPhone>
• NDC16 <Effective Git>
• NDC17 <왓 스튜디오 서비스파트>kexplo
https://chanwoong.kim
cwkim@nexon.co.kr
kexplo
만들고 붓고 부수고
〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
발표에서 다룰 내용
• 서버 인프라 관리
• 인프라 관리 변천사
• 변천 과정에서 도입한 도구 소개
발표에서 다루지 않는 내용
• 게임 서버 아키텍처
• 게임 플레이 프로그래밍
초기 〈야생의 땅: 듀랑고〉의 서버 인프라 관리
초기에 AWS를 사용할 때
초기에 AWS를 사용할 때
일단 웹 콘솔에 들어가서
초기에 AWS를 사용할 때
일단 웹 콘솔에 들어가서
EC2 인스턴스를 하나 만들고
초기에 AWS를 사용할 때
일단 웹 콘솔에 들어가서
EC2 인스턴스를 하나 만들고
IP 주소를 확인하고 SSH로 들어가서
초기에 AWS를 사용할 때
일단 웹 콘솔에 들어가서
EC2 인스턴스를 하나 만들고
IP 주소를 확인하고 SSH로 들어가서
필요한 걸 설치하고
초기에 AWS를 사용할 때
일단 웹 콘솔에 들어가서
EC2 인스턴스를 하나 만들고
IP 주소를 확인하고 SSH로 들어가서
필요한 걸 설치하고
원하는 작업을 수행
삭제도 수동으로
왜 안 되지?
뭘 빼먹었지?
이런 방식이면 언젠간..
전부 수동으로 관리하다 보면,
실수할 여지가 많고,
숙련되지 않으면 빠르게 수행하기도 어렵다.
자동화..
흠..
자동화..
흠..
내가 안 하면 자동이지
남을 시킬까?
자동화 하면 빠질 수 없는게 바로..
Application Programming Interface
Boto 3
https://boto3.readthedocs.io/en/latest/guide/quickstart.html
EC2를 원하는 스펙으로 생성하는
CLI 프로그램을 제작
>_
Command line interface
http://click.pocoo.org/5/
시스템 설정, 배포는 Fabric으로
http://www.fabfile.org/
Fabric
Fabric은 agent 없이 동작하는 (agentless) 배포 도구
Fabric
Fabric은 agent 없이 동작하는 (agentless) 배포 도구
Fabric은 fabtools와 함께 사용하면 매우
효율적으로 사용할 수 있습니다
fabtools
fabtools
fabtools는 많은 low-level 행동들을 인터페이스로 제공합니다
fabtools
fabtools는 많은 low-level 행동들을 인터페이스로 제공합니다
덕분에 선언적인 배포 코드를 짤 수 있습니다
https://docs.gitlab.com/ee/ci/multi_project_pipeline_graphs.html
저장소에 코드 푸시
Fabric
= 호스트
Fabric
저장소에 코드 푸시
CI 테스트 통과
= 호스트
Fabric
CI 테스트 통과
저장소에 코드 푸시
= 호스트
Fabric
배포저장소에 코드 푸시
CI 테스트 통과
= 호스트
Fabric
배포저장소에 코드 푸시
CI 테스트 통과
= 호스트
인스턴스 식별
인스턴스 식별
인스턴스에는 식별할 수 있는 Tag 들을 달았습니다
인스턴스 식별
인스턴스에는 식별할 수 있는 Tag 들을 달았습니다
Fabric을 이용할 때, 이 Tag를 가지고 배포 대상을 추려낼 수 있었습니다
Limited Beta Test를 겪으며
= 호스트
자동화된 생성, 제거, 배포
자동화의 영역 수동의 영역
Name Type Count
server1 m4.large 4
server2 m4.2xlarge 2
server3 m4.large 1
>_
수동으로 관리되던 인프라 구성 관리
자동화의 영역 수동의 영역
Name Type Count
server1 m4.large 3
server2 m4.2xlarge 2 1
server3 m4.large 1
server4 m4.large 1
>_
자동화된 생성, 제거, 배포
수동으로 관리되던 인프라 구성 관리
인프라 구성이 바뀌면, 인프라 정보 동기화 필요!!
Fabric
배포저장소에 코드 푸시
GitLab CI
앱 배포 시, Git 저장소에서 필요한 코드를 복제
Fabric
배포저장소에 코드 푸시
셀프 DDoS Attack!
앱 배포 시, Git 저장소에서 필요한 코드를 복제
DDoS attack: Distributed Denial of Service attack
GitLab CI
Fabric
배포저장소에 코드 푸시
큰 규모의 인프라가, 저장소 서버에 과부하를 야기!!
셀프 DDoS Attack!
DDoS attack: Distributed Denial of Service attack
GitLab CI
앱 배포 시, Git 저장소에서 필요한 코드를 복제
마일스톤 막바지가 되면..
※ 설치형 GitLab EE를 사용하고 있습니다.
GitLab 코드 푸시
GitLab 장애
코드 푸시를 못 함. (쌓임)
GitLab이 살아남 배포 (DDoS를 야기)
앞의 문제들을 해결해야 했습니다
• 인프라 관리 자동화
• 배포 정상화
인프라 관리 대안
Infrastructure as code
Infrastructure as code
Infrastructure as code
t2.micro
• 인프라(코드)의 버전 관리 가능
• AWS 제품별 API(boto)를 직접 만지지 않아도 됨
• 인프라의 모듈화 가능
• 인프라의 생성/복제/제거가 자유로워 짐
• 그 외 코드가 갖는 모든 장점
• Code review
• Merge request
인프라 복제
develop
인프라 복제
develop
nightly
인프라 복제
develop
nightly
canary
인프라 삭제
develop
nightly
canary
$ terraform destroy
배포 저장소 과부화 대안
Debian Packaging
〈야생의 땅: 듀랑고〉의 게임 서버는
Python을 사용합니다
Python 프로그램을 배포하는 4가지 방법
• Git+pip
• Docker
• PEX
• dh-virtualenv
pip은 Python 패키지를 설치하는 도구
Python Package Index(https://pypi.org/)로부터 패키지를
내려받아 설치하거나, Git 저장소에서 내려받아 설치할 수 있다.
Git+pip
Docker는 컨테이너 가상화 도구
VM과 달리 컨테이너 단위로 환경을 격리해 준다
프로그램과 필요한 의존성을 모아 컨테이너화해서 사용할 수 있다
Docker
PEX (Python EXecutable)는 Python 의존성을 같이 패키징
한 .pex 라는 단일 실행 파일을 만들어주는 도구
PEX
https://github.com/pantsbuild/pex
PEX (Python EXecutable)는 Python 의존성을 같이 패키징
한 .pex 라는 단일 실행 파일을 만들어주는 도구
PEX
https://github.com/pantsbuild/pex
dh-virtualenv는 Python 의존성을 포함한 Debian 패키지 파일
을 생성하는 도구
Debian 패키지를 빌드하는 debhelper의 빌드 과정에
dh_virtualenv 빌드 시퀀스를 추가하여 동작하는 방식
dh-virtualenv
https://github.com/spotify/dh-virtualenv
부끄럽지만..
pip으로 내부 Git 저장소를 통해 설치하는 방식으로 배포를 하고 있었고,
이게 GitLab에 부하를 일으켰던 원인
듀랑고의 서버를 이루는 노드는 모두 연결을 맺고 있는데
Docker를 사용하게 되면, 이 때 사용하는
ephemeral ports를 모두 “EXPOSE” 할 수 없었다
PEX로는 당시에 Cython등 의존하고 있는 몇 가지 요소를
미리 설치해 놓을 수 없었고
최종적으로 dh-virtualenv를 사용하기로 결정
Fabric
배포저장소에 코드 푸시
GitLab CI
패키지 빌드
S3 업로드 배포 과정에서 S3에 있는 패키지 설치
Fabric
배포저장소에 코드 푸시
GitLab CI
패키지 빌드
S3 업로드 배포 과정에서 S3에 있는 패키지 설치
Fabric
배포저장소에 코드 푸시
GitLab CI
패키지 빌드
S3 업로드 배포 과정에서 S3에 있는 패키지 설치
Fabric
배포저장소에 코드 푸시
GitLab CI
패키지 빌드
S3 업로드 배포 과정에서 S3에 있는 패키지 설치
S3는 높은 가용성을 가지고 있기 때문에 버틸 수 있다
추가적인 배포 최적화
OS 설정
의존성
AWS는 EC2 이미지인 AMI를 지원한다.
AMI에는 각종 의존성과 OS 설정을 넣어 만들어 놓곤 했는데..
Amazon Machine Image
OS 설정
의존성
만들기가 번거롭다 보니, 쉽게 낡아 버리곤 했다
AWS는 EC2 이미지인 AMI를 지원한다.
AMI에는 각종 의존성과 OS 설정을 넣어 만들어 놓곤 했는데..
Amazon Machine Image
Fabric
배포
GitLab
Fabric
배포
GitLab
그러다 보니 배포 과정에 추가 의존성 설치를 하고 있었다.
추가 의존성 설치
Fabric
배포
GitLab
그러다 보니 배포 과정에 추가 의존성 설치를 하고 있었다
배포 속도를 늦추고, 모든 의존성을 한눈에 볼 수 없었다
추가 의존성 설치
다양한 타입의 머신 이미지를 만들 수 있는 도구
Packer를 이용해
의존성을 한 곳에서 버전 관리 할 수 있었고,
AMI를 만들어 사용하기도 편해졌다.
서비스 오픈을 앞두고
서비스용 인프라 구축
개발용 VPC
서비스용 인프라 구축
개발용 VPC
기존에는 개발용 VPC에 모든 인프라를 섞어서 쓰고 있었는데…
서비스용 인프라 구축
• 기존에는 개발 VPC에 모든 인프라가 뒤섞여 있었음
• 서비스에서는 서버가 개별 VPC에 분리되어야 함
• 개별 VPC는 운영에 필요한 요소도 전부 갖춰야 함
서비스용 인프라 구축
개발용 VPC
서비스용 인프라 구축
개발용 VPC
module
module
module
서비스용 인프라 구축
개발용 VPC
module
module
module
사실 모두 Terraform 모듈화 되어있었고
서비스용 인프라 구축
개발용 VPC
module
module
module
EC2가 아닌 인프라도 관리할 수 있게 되었다
사실 모두 Terraform 모듈화 되어있었고
서비스용 인프라 구축
개발용 VPC
module
module
module
라이브용 VPC
module
module
module
서비스용 인프라 구축
개발용 VPC
module
module
module
라이브용 VPC
module
module
module
덕분에 라이브용 VPC를 구축할 때, 원하는 요소를 원하는 규모로 복제할 수 있었다
참 쉽죠?
= 호스트
더 더 많아진 수량
배포를..
배포를..하는데
배포를..하는데..시간이
배포를..하는데..시간이..너무 걸린다!
게다가
병렬 옵션(-P)을 켜면
호스트별 출력이 모두 섞여버려서
실패한 호스트가 있을 경우 찾기가 힘듦
총 머신 수가 많아지면서 간혹 배포에 실패하는 경우의 수도 많아졌다
사실 fabtools는 Ubuntu 16.04를 지원하지 않을 정도로 낡아 있었고
관리가 안 되는 것처럼 보여, 내부에서 수정된 버전을 쓰고 있었습니다
Fabric도 Fabric 2.x의 개발에 집중하려는 모양새였습니다
이 상황에서
당장은 실패한 호스트 목록 표시를 패치 했지만
장기적으로는 다른 대안이 필요하다고 결정
해결 해야 할 배포 문제들
• 느린 배포
• 지속가능한 배포 도구
배포 전용 호스트 도입
느린 배포를 해결할
지속 가능한 배포 도구
• 동작 방식이 기존과 유사 (agentless)
• Python으로 되어있어 유사시 직접 고쳐 쓰기 편함
• 커뮤니티 활성
다음과 같은 특징으로 선택하게 됨
1000여 개의 모듈을 제공
기존의 Fabric 배포를 마이그레이션 하는데
전혀 어려움이 없었다
오히려 코딩량이 더 줄어버릴 정도
멱등성
멱등성(冪等性, 영어: idempotence)은 수학이나 전산학에서
연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더
라도 결과가 달라지지 않는 성질을 의미한다.
멱등성
멱등성
멱등성
첫 번째 실행
멱등성
첫 번째 실행
멱등성
두 번째 실행
멱등성
두 번째 실행
Ansible이 수행을 마치면 출력하는 Play Recap에서 실패한 호스트를 따로 볼 수 있다
실패 호스트는?
Ansible은 실패 호스트를 <playbook filename>.retry
파일을 자동으로 만들어 기록한다.
바로 전 실행 명령어 뒤에 --limit @<playbook filename>.retry
옵션을 붙이면, 실패한 호스트만 재시도할 수 있다
멱등성 덕분에, 혹시나 중복 실행이 가져오는 부작용을 걱정하지 않아도 된다.
실패 호스트는?
서비스 오픈 이후
terraform applying… terraform applying…
인프라를 실수 없이 복제하는 일은 Terraform에 맡기고
중요한 초반 이슈를 해결하는데 집중할 수 있었다
대표적으로…
대표적으로…
서버 노드가 어떠한 원인으로 죽게 되면, 다른 노드에 전파되어 동반자살 하게 되는 버그였습니다
오픈 이후 해결되어, 자유로운 종료와 감축이 가능!
이를 바탕으로 무중단 배포를 실현!
자세한 내용은 아래 발표에서
Rolling Update
구버전
신버전
무중단 배포?
구버전
신버전
무중단 배포?
구버전
신버전
무중단 배포?
아직 Fabric을 사용했다면…
직접 Rolling update 정책을 짰어야 했을 것
Ansible의 잠재력을 통해, 변화되는 배포 상황에 유연하게
대처할 수 있었다
그 다음?
ChatOps, ClickOps
현재 각 절차는 모두 자동화되어 있어, 다음과 같은 시나리오가 가능
• Jenkins, Rundeck 같은 CI에 연동해 클릭으로 모든 것을 관리
• SlackBot 등을 이용해 채팅으로 관리
정리
손으로 관리 Fabric 배포 도구 도입
API 자동화
Terraform으로
인프라 관리
Ansible 배포 도구 도입
작은 인프라 큰 인프라 더 큰 인프라
>_
손으로 관리 Fabric 배포 도구 도입
API 자동화
Terraform으로
인프라 관리
Ansible 배포 도구 도입
작은 인프라 큰 인프라 더 큰 인프라
>_
인프라 투명성, 기록 가능
손으로 관리 Fabric 배포 도구 도입
API 자동화
Terraform으로
인프라 관리
Ansible 배포 도구 도입
작은 인프라 큰 인프라 더 큰 인프라
>_
규모 대응, 지속가능성
Cloud를 쓰신다면 Terraform과 Packer는 꼭 고려해볼 것을 추천
배포 도구는 본인의 인프라 규모, 방법에 따라 결정
AWS외의 다양한 Cloud 환경을 지원
감사합니다
WE'RE HIRING!http://what.studio/

Contenu connexe

Tendances

Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...Amazon Web Services Korea
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 

Tendances (20)

Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 

Similaire à [NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기

Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetesssuseraada82
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱Jong Wook Kim
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Juwon Kim
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영Nalee Jang
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 

Similaire à [NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기 (20)

Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 

[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기