도전 과제는 크게 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
'NDC > Server' 카테고리의 다른 글
[NDC 2016] <야생의 땅: 듀랑고> 중앙 서버 없는 게임 로직 (0) | 2023.01.16 |
---|---|
[NDC 2016] 테라 서버의 Modern C++ 활용기 (0) | 2023.01.14 |
[NDC 2016] UDP를 사용해서 게임 서버 만들기 (0) | 2023.01.10 |
[NDC 2015] <쿠키런> 바쁘고 가난한 개발자를 위한 S3 기반 로그 시스템 (0) | 2023.01.05 |
[NDC 2015] 피파온라인3 서버 구조와 85만 동접 포스트 모템 (0) | 2023.01.05 |