NDC/Server

[NDC 2016] <야생의 땅: 듀랑고> 지형 관리 완전 자동화 - AWS와 DOCKER 체험기

MAKGA 2023. 1. 15. 23:02
320x100

도전 과제는 크게 2가지로

- 지형 배포: 지형 배포 자동화

- 자연물 관리: 자연 상태 파악, 생태계 시뮬레이션 자동화

 

 

지형 제작 & 배포 개요

- 전용 도구로 지형 파일들을 제작

- 후처리를 거친 뒤 지형 파일을 git에 commit

- 서버 코드에서 해당 커밋을 참조하도록 변경

 

지형 제작 & 배포 도구

- WorldGen: 지형 파일 제작(C#)

- ManageTool: 지형 배포 및 관리에 필요한 기능 제공(Python)

 

지형 배포 절차

- 청크별 빠른 색인을 위해 여러가지 지형 정보들을 청크별로 나눔

- 청크: 16 x 16 타일 -> pub-sub 토픽, 분산의 최소 단위

- 타일: 가로 세로 2m의 정사각형 -> 자연물, 건축물 등의 최소 단위

- cm: 동물의 위치등 섬세한 위치 조정에 사용

 

1) 지형 색인 파일 업데이트

2) 지형 파일들을 지형 파일 저장소(git)에 커밋 & 푸시

 

지형 관리 도구와 필요한 것들을 각 머신으로 배포해야 하는데, 이 과정이 쉬워야한다

- 일회용 컴퓨팅 인스턴스, 탄력적 스케일링

- 여러대의 머신에 배포

- 쉽고 신뢰성 있는 배포 방식이 필요

=> Docker

 

 

 

EC2 Container Service (ECS)

- Docker 컨테이너들을 실행할 수 있는 환경과 도구를 제공

- 컨테이너를 실행하기 위해서는 EC2 인스턴스가 필요

- Docker 이미지를 저장할 수 있는 레지스트리 서비스인 ECR을 제공

 

Container Instance

- Docker가 실행된느 가상 머신

- Docker 실행 환경 + ECS 데몬

 

Cluster

- EC2 컨테이너 인스턴스를 묶는 논맂거 그룹

- 한 개 이상의 EC2 인스턴스로 구성

- 각 지역마다 고유함

 

Task Definition

- Docker 컨테이너의 속성을 정의하는 JSON 문서

- CPU, 메모리 요구 사항, 포트 매핑, 저장소 마운트, 환경 변수 정의, 컨테이너 이름 지정, 다른 컨테이너와 연결 등

 

 

 

지형 파일을 Git에 커밋 & 푸시하는 기능 개선

- Git은 바이너리 파일을 다루기에 적합하지 않음

1세대
- 지형 파일을 git 저장소에 저장
- 서버 코드 저장소에서 서브 모듈로 지형 저장소를 참조
- 서버 노드마다 모든 지형 파일을 다 가지고 있음
2세대
- 지형 파일을 AWS S3에 저장
- 서버 설정 파일에 저장된 지형 ID를 참조
- 실제로 사용하는 지형만 그때그때 받아옴

 

 

S3: 오브젝트 스토리지, 주로 파일 저장하는데 사용

Lambda:  AWS 기반 시설에서 코드를 수행할 수 있는 서비스 (Java, Node, Python...), AWS의 다른 서비스에서 어떤 이벤트가 발생했을 때 트리거(S3에 파일이 올라오거나, DynamoDB의 레코드가 업데이트 되거나..) 처리 가능

Simple Queue Service: 분산 메시지 큐 서비스, 신뢰성 있는 메세지 전달, 높은 확장성과 가용성

CloudWatch: AWS의 여러가지 자원을 모니터링 할 수 있는 서비스.


출처: http://ndcreplay.nexon.com/NDC2016/sessions/NDC2016_0062.html

320x100