[NDC] 서버 개발 생산성 향상을 위한 ORM 구현 경험 공유
NDC 넥슨 · YouTube
AI 핵심 요약
게임 서버에서 SQL 작성과 객체 매핑을 줄이면서 여러 서버에서도 같은 방식으로 동작하는 ORM을 만들기 위해, 모델 정의를 바탕으로 빌드 시 인터페이스 코드를 생성하는 시스템을 구현했다. 이벤트 시스템을 이용해 비동기 I/O와 트랜잭션을 처리하고, 캐시와 애플리케이션 수준 잠금으로 DB 접근 및 동시 수정 문제를 다뤘다. 분산 환경에서는 ZooKeeper로 오브젝트 소유 서버를 관리하고 RPC로 잠금과 객체 데이터를 전달했으며, 이벤트 우선순위 기반 선점 잠금으로 데드락을 회피했다. 서버별 접근 빈도 차이로 원격 RPC가 늘어나는 문제는 오브젝트별 접근량을 추적해 캐시를 조정하는 방식으로 대응했다.
- 모델 정의를 입력으로 빌드 시 인터페이스 코드를 생성하면 SQL 작성과 객체 매핑을 줄일 수 있다.
- 이벤트 함수의 변경 사항을 임시 저장소에 두고 완료 시 반영하면, I/O 대기 중 중단된 작업을 롤백하기 쉽다.
- 캐시는 DB 접근과 이벤트 중단을 줄이지만, 분산 환경에서는 오브젝트 소유권과 잠금 전달 방식을 함께 설계해야 한다.
- 타이머로 잠금을 재시도하는 방식은 장시간 경합에서 데드락을 해소하지 못할 수 있어, 이벤트 우선순위 기반 선점 잠금을 적용했다.
- 오브젝트별 접근 빈도를 추적해 다른 서버의 캐시에서 내리면, 원격 RPC가 과도하게 발생하는 캐시 편중을 완화할 수 있다.
소개
NDC 2018 [서버 개발 생산성 향상을 위한 ORM 구현 경험 공유] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 남승현 2. 발표자 소개 : 현재 아이펀팩토리에서 아이펀엔진을 개발하고 있으며, 주로 네트워크, ORM, 분산처리 기능을 담당하고 있습니다. 이전에는 넥슨 신기술개발실에서 게임서버엔진을 개발에 참여했었으며, 조이맥스 플랫폼본부에서 미들웨어 서버 및 P2P 관련 개발을 수행했었습니다. NDC 발표를 통해 게임서버 개발 생산성 향상을 위한 ORM 개발 경험을 공유하고자 합니다. 3. 세션 소개 : 게임서버 개발시 ORM 이 어떻게 쓰일 수 있는지에 대해 소개하고 상용 게임서버 엔진의 ORM 을 개발하며 얻은 경험을 발표하려 합니다. 구현에 대해 코드 수준으로 자세히 설명하지는 않지만 최대한 전체 구현에 대해 이해하실 수 있도록 설명드리려 합니다. ORM 을 이용하여 단순히 DB 읽고 쓰기 코드를 줄이...
비슷한 학습 자료
컨퍼런스 NDC
[NDC] 실버바인 대기열 서버 설계 리뷰
컨퍼런스 NDC
NDC 2019 [실버바인 대기열 서버 설계 리뷰] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 강성훈 2. 발표자 소개 : 대학원에서 프로그래밍 언어 전공으로 석사 졸업 후 여러 벤처기업에서 백엔드-프론트엔드와 아키텍처를 가리지 않고 개발을 해 왔습니다. 넥슨에서는 〈마비노기 듀얼〉의 서버 프로그래밍을 담당한 뒤, 오랫만에 전공을 살려 카일루아라는 언어를 개발하였고, 현재는 실버바인 서버 엔진 2의 개발에 참여하고 있습니다. 리듬게임, 난해한 프로그래밍 언어, Rust 등의 키워드로 검색해 보면 흑역사가 튀어 나오기도 합니다. 카일루아 관련 발표: NDC2016 "〈마비노기 듀얼〉 서버, 동적 타입 언어에서 반 정적 타입 언어로의 변신", NDC2017 "내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기" 실버바인 서버 엔진 2 관련 발표: NDC2018 "실버바인 서버 엔진...
백엔드
컨퍼런스 NDC
[NDC] 게임 서버의 목차 - 시작부터 출시까지
컨퍼런스 NDC
NDC 2019 [게임 서버의 목차 - 시작부터 출시까지] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 홍성우 2. 발표자 소개 : 데브캣 기반개발팀 소속으로 〈실버바인 서버엔진 2〉 개발에 참여하고 있습니다. 〈마비노기 듀얼〉 서버 개발에 참여하고, 〈마블 배틀라인〉 서버 개발을 리드했습니다. NDC 2018 에서 〈게임 프로그래머는 어떻게 가르치나요?〉, NDC 2017 에서 〈내가 만든 언어로 게임 만들기〉 세션을 발표했습니다. 3. 세션 소개 : 수 년간 현업에서 근무해온 서버 개발자라면 누구나 한번쯤 자문해본 적이 있을겁니다. "내가 개발 업무를 하면서 서버 개발에 관한 여러가지 지식을 쌓았는데, 이걸로 게임 서버 전체를 만들 수 있을까?" 서버 개발자를 지망하고 준비하는 학생이라면 궁금할 겁니다. "게임 서버 개발에 도움이 되는 여러가지 공부를 해왔는데, 빠지거나 치우친 것은 없을까?" 게임 출시를 앞...
백엔드 게임 프로그래밍
컨퍼런스 NDC
[NDC] 〈달빛조각사〉 엘릭서를 이용한 MMORPG 서버 개발
컨퍼런스 NDC
NDC 2019 [〈달빛조각사〉 엘릭서를 이용한 MMORPG 서버 개발] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 김민욱 2. 발표자 소개 : 현재 엑스엘게임즈 달빛조각사 프로젝트에서 서버개발을 담당하고 있으며, 주로 구조 개선, 리팩토링, 최적화에 관련된 업무를 수행하고 있습니다. 이소프넷에서 건담 G-Generation for PC와 디지몬 카드 배틀과 같은 PC 패키지 로컬라이제이션과 묵향 온라인 개발, 웹젠에서 썬온라인, 넥슨에서 M2, 리로디드 스튜디오에서 더데이온라인, 엑스엘게임즈에서 문명 온라인을 차례로 개발해왔습니다. 이번 발표에서는 엑스엘게임즈에서 `엘릭서`라는 언어를 이용해서 달빛조각사라는 MMORPG 서버를 만들고 있으며 그 경험에 대해 이야기하고자 합니다. 3. 세션 소개 : 아직까지 많은 게임 서버는 C++/C# 과 같은 객체지향언어로 개발되고 있습니다. 저도 마찬가지로 C++를...
백엔드 프로그래밍 언어
컨퍼런스 NDC
NDC 2018 ['모바일 MMO RPG 로열 블러드' 사례로 본 "복잡한 이벤트 시스템 구현 Behavior tree 패턴으로 한방에 해결하기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 김준형 2. 발표자 소개 : 현재 게임빌에서 모바일 MMO RPG 로열 블러드 프로젝트의 서버 프로그래머로써 월드 컨텐츠 파트장을 담당하고 있습니다. 로열 블러드의 다이나믹 이벤트,각종 주기성 컨텐츠 및 NPC 스폰과 같은 필드 컨텐츠 개발에 관련된 전반적인 업무를 수행하고 있습니다. 이전에는 블루홀 W 프로젝트에서 NPC AI 개발 담당과 웹젠 뮤 스튜디오에서 뮤 온라인 글로벌 서버 담당 역활에 해 왔습니다. 그 밖에 서버 사이드 관련된 다양한 세미나 활동을 해 오면서 최근에 실용적 예제 및 사례,그리고 게임 프로그래밍 패턴 활용에 많은 관심을 가지게 되었습니다. 그래서 금번 프로젝트에서 상대적으로 AI외에 활용 사...
게임 프로그래밍
컨퍼런스 NDC
NDC 2018 [개발자와 DBA가 힘을 모아 SQL Server 운영 능력 향상시키기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 하만철 2. 발표자 소개 : 현재 넥슨 IT본부의 게임DB팀 팀장을 맡고 있으며 넥슨에서 출시하는 대부분의 PC게임 DB들을 운영하고 있습니다. SQL Server를 가장 좋아하지만 넥슨에서 워낙 다양한 DBMS를 사용하다 보니 지금은 SQL Server가 아닌 DBMS와 클라우드 환경에 대해 열심히 공부하는 중입니다. 대학교 졸업하고 넥슨에 들어온 것을 시작으로 네이버에서는 카페, 블로그, 게임 서비스를, 한국마이크로소프트에서는 SQL Server 기술지원 엔지니어를 거쳐 다시 넥슨으로 돌아왔습니다. 3. 세션 소개 : 게임DB로써 SQL Server를 운영하다보면 “개발자와 이런 부분에 대해 변경할 수 있다면 서비스 런칭 후 좀 더 안정적인 서비스를 할 수 있을텐데”라는 생각을...
데이터베이스
컨퍼런스 NDC
NDC 2018 [Packer, Terraform, Vault를 이용해 만드는 재현가능한 게임 서버 인프라] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 김민규 2. 발표자 소개 : 쿠키런 for Kakao, Solitaire: Decked Out의 서버 개발을 맡았으며, 현재 데브시스터즈 서버팀에서 주로 게임 서버 인프라 설계, 구축을 맡고 있습니다. AWS 서버 관리용 툴인 Eclair를 개발했고, AWS User Group에서 이에 대해 발표한 적이 있습니다. 3. 세션 소개 : 데브시스터즈는 지금까지 쿠키런, 쿠키런 오븐브레이크, Solitaire: Decked Out,Tape It Up! 등 여러 게임들을 출시해 왔습니다. 앞으로도 많은 게임들을 출시할 예정이고, 각 게임들의 서버 환경은 공통점이 있으면서도 조금씩 다릅니다. 여러 프로젝트를 동시에 진행하는 상황에서 어떻게 하면 서버 개발자들이 반복되는 ...
데브옵스 · 인프라 클라우드