본문으로 이동
[NDC] golang으로 네트워크 프로그래밍 하기
컨퍼런스

[NDC] golang으로 네트워크 프로그래밍 하기

NDC 넥슨 · YouTube

원문 보기

AI 핵심 요약

C++과 C#으로 실시간 게임 서버를 개발해 온 경험을 바탕으로, Go로 네트워크 서버를 만들 때의 언어 특성과 설계 방식을 소개합니다. Go의 고루틴과 채널을 이용해 클라이언트 연결을 처리하는 흐름을 설명하고, 연결별 핸들러와 데이터 처리에서 고려할 점을 짚습니다. 또한 Go의 네트워크 기능과 크로스 플랫폼 지원을 살펴보며, 기존 IOCP 중심 구조를 그대로 적용하기보다 Go의 동시성 모델에 맞춰 구현해야 한다는 점을 강조합니다.

  • 고루틴은 가벼운 동시성 단위지만, 접속마다 무작정 만들기보다 작업과 자원 사용을 고려해 설계하세요.
  • 고루틴 사이에서 데이터를 주고받을 때는 채널을 활용하고, 공유 상태를 다룰 때는 동기화가 필요한지 판단하세요.
  • 네트워크 서버에서는 연결별 핸들러의 생성과 종료, 오류 처리를 명확히 관리해야 합니다.
  • Go의 표준 네트워크 패키지와 BSD 소켓 기반 추상화를 살펴보고, 필요한 플랫폼 지원을 확인하세요.
  • C++ 서버의 IOCP 구조를 그대로 옮기기보다 Go의 동시성 모델에 맞춰 서버 구조를 설계하는 편이 좋습니다.

소개

NDC 2018 [golang으로 네트워크 프로그래밍 하기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 최흥배 2. 발표자 소개 : 현재 컴투스에서 서버 개발 관련 R&D를 하고 있습니다. 2003년부터 PC 온라인 게임을 시작으로 모바일 온라인 게임까지 다양한 장르의 서버를 개발 하였습니다. 2016~2017년 2년 동안은 NHN Next에서 겸임 교수로 학생들에게 'C++ Advance', '게임 서버'를 가르쳤습니다. 지금까지 7번의 KGC 발표와 한국 MS에서 개최한 다양한 세미나에서 강의를 하였고, C++, 네트워크 프로그래밍과 관련된 다수의 책(e-book)을 집필 하였습니다. 3. 세션 소개 : 이전까지 실시간 통신을 하는 게임 서버 개발에서 C++과 C#을 사용 하였습니다. 이번 프로젝트에서 go 언어로 서버를 만들고 있습니다. go 언어는 구글이 만든 프로그래밍 언어로 나온지 10년이 ...

비슷한 학습 자료

컨퍼런스 NDC

NDC 2019 [실버바인 대기열 서버 설계 리뷰] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 강성훈 2. 발표자 소개 : 대학원에서 프로그래밍 언어 전공으로 석사 졸업 후 여러 벤처기업에서 백엔드-프론트엔드와 아키텍처를 가리지 않고 개발을 해 왔습니다. 넥슨에서는 〈마비노기 듀얼〉의 서버 프로그래밍을 담당한 뒤, 오랫만에 전공을 살려 카일루아라는 언어를 개발하였고, 현재는 실버바인 서버 엔진 2의 개발에 참여하고 있습니다. 리듬게임, 난해한 프로그래밍 언어, Rust 등의 키워드로 검색해 보면 흑역사가 튀어 나오기도 합니다. 카일루아 관련 발표: NDC2016 "〈마비노기 듀얼〉 서버, 동적 타입 언어에서 반 정적 타입 언어로의 변신", NDC2017 "내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기" 실버바인 서버 엔진 2 관련 발표: NDC2018 "실버바인 서버 엔진...

백엔드

컨퍼런스 NDC

NDC 2019 [블리자드 모든 팀을 위한 플랫폼 중립적인 공용 라이브러리 만들기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 전이삭 2. 발표자 소개 : 현재 블리자드 엔터테인먼트 베틀넷 부문 데이터 팀에서 빅데이터 시스템을 개발하고 있습니다. 2001년 부터 개발 일을 시작해서 주로 C++를 이용한 패키지 소프트웨어 개발, 온라인 게임, 게임 플랫폼 개발 업무를 해왔습니다. 주요 프로젝트로는 나모 웹 에디터, 나모 핸드스토리, 한게임 바둑, 월드 오브 워크래프트 게임 런처, 베틀넷 데스크탑 앱, 오버워치 게임 클라이언트 등이 있습니다. NDC 2017에서 '더 좋은 코드를 위한 함수형 프로그래밍', NDC 2018에서 '게임 서비스 플랫폼을 지탱하는 알고리즘' 세션을 발표했습니다. 3. 세션 소개 : 최근 3년간 블리자드 모든 게임 팀에 적용해온 윈도우즈, 맥오에스, 리눅스, 콘솔, 모바일 등 모든 게임 플랫...

프로그래밍 언어

컨퍼런스 NDC

NDC 2019 [게임 서버의 목차 - 시작부터 출시까지] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 홍성우 2. 발표자 소개 : 데브캣 기반개발팀 소속으로 〈실버바인 서버엔진 2〉 개발에 참여하고 있습니다. 〈마비노기 듀얼〉 서버 개발에 참여하고, 〈마블 배틀라인〉 서버 개발을 리드했습니다. NDC 2018 에서 〈게임 프로그래머는 어떻게 가르치나요?〉, NDC 2017 에서 〈내가 만든 언어로 게임 만들기〉 세션을 발표했습니다. 3. 세션 소개 : 수 년간 현업에서 근무해온 서버 개발자라면 누구나 한번쯤 자문해본 적이 있을겁니다. "내가 개발 업무를 하면서 서버 개발에 관한 여러가지 지식을 쌓았는데, 이걸로 게임 서버 전체를 만들 수 있을까?" 서버 개발자를 지망하고 준비하는 학생이라면 궁금할 겁니다. "게임 서버 개발에 도움이 되는 여러가지 공부를 해왔는데, 빠지거나 치우친 것은 없을까?" 게임 출시를 앞...

백엔드 게임 프로그래밍

컨퍼런스 NDC

NDC 2018 [CAP 이론을 통한 네트워크 동기화 기법] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 구승모 2. 발표자 소개 : 넥슨 오렌지카운티 스튜디오에서 기술 책임자 역할을 맡고 있습니다. 이전에는 Amazon Games의 수석 엔지니어로서 게임서비스에 관련된 일을 하였으며, NHN NEXT의 게임전공 교수로 재직하며 다수의 게임 소프트웨어 엔지니어들을 키워낸 경험도 있습니다. 참여했던 게임 프로젝트는 다수의 소규모 게임을 포함한 NCSOFT L3, Bluehole TERA 등이 있습니다. 3. 세션 소개 : 이번 세션에서는 멀티플레이어 게임 동기화에 대한 깊이 있는 내용을 다룹니다. 멀티 플레이어 게임은 사실상 하나의 분산 시스템입니다. 분산 시스템을 디자인 하기 위해서는 CAP theorem을 그 출발점으로 삼는 경우가 대부분입니다. 그래서, 이 CAP 개념이 게임 동기화 메커니즘 구현시에 어떻게 적...

게임 프로그래밍 네트워크

컨퍼런스 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! 등 여러 게임들을 출시해 왔습니다. 앞으로도 많은 게임들을 출시할 예정이고, 각 게임들의 서버 환경은 공통점이 있으면서도 조금씩 다릅니다. 여러 프로젝트를 동시에 진행하는 상황에서 어떻게 하면 서버 개발자들이 반복되는 ...

데브옵스 · 인프라 클라우드

컨퍼런스 NDC

NDC 2018 [서버 개발 생산성 향상을 위한 ORM 구현 경험 공유] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 남승현 2. 발표자 소개 : 현재 아이펀팩토리에서 아이펀엔진을 개발하고 있으며, 주로 네트워크, ORM, 분산처리 기능을 담당하고 있습니다. 이전에는 넥슨 신기술개발실에서 게임서버엔진을 개발에 참여했었으며, 조이맥스 플랫폼본부에서 미들웨어 서버 및 P2P 관련 개발을 수행했었습니다. NDC 발표를 통해 게임서버 개발 생산성 향상을 위한 ORM 개발 경험을 공유하고자 합니다. 3. 세션 소개 : 게임서버 개발시 ORM 이 어떻게 쓰일 수 있는지에 대해 소개하고 상용 게임서버 엔진의 ORM 을 개발하며 얻은 경험을 발표하려 합니다. 구현에 대해 코드 수준으로 자세히 설명하지는 않지만 최대한 전체 구현에 대해 이해하실 수 있도록 설명드리려 합니다. ORM 을 이용하여 단순히 DB 읽고 쓰기 코드를 줄이...

백엔드 데이터베이스