O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트

2017NDC 아이펀팩토리 발표자료
1. 강연 주제 : 아이펀 엔진 개발 노트
2. 발표자 : 문대경 CEO
<목차>
(1) 문대경 CEO 소개
(2) 아이펀 엔진 프로젝트 소개
(3) 아이펀 엔진 프로젝트 개발 노트
(4) 소프트웨어 솔루션 개발 중 얻은 교훈

  • Seja o primeiro a comentar

[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트

  1. 1. iFunFactory Technical Writer 문대경 (dkmoon@ifunfactory.com) 범용 게임 서버 엔진 개발 포스트모템 아이펀 엔진 개발 노트
  2. 2. 아주 조심스럽습니다 . 저의 소중한 간지를 위해 , 물건 파는 시간이 되지 않게 하겠습니 다 .
  3. 3. 목차 1. 저의 간지에 대해 2. 프로젝트 소개 3. 프로젝트 개발 노트 4. 소프트웨어 솔루션 개발 중 얻은 교훈
  4. 4. 게임 서버 프레임워크 개발 프로젝트 -네트워크 엔진이 아니라 서버 프레임워크 개발에 초점 -모바일 지원 요소를 포함해 모바일 게임 서버 엔진으로 시장에 소개됨 -초기 목표대로 모바일을 포함하는 범용 서버 엔진으로 전환 iFun Engine: 프로젝트 소개
  5. 5. - Boost - cURL - Google Flag, Logging, Breakpad, Protobuf - HiRedis - MariaDB connector - MongoDB connector - Zookeeper connector - Mono - GameLift SDK - OpenSSL iFun Engine: 프로젝트에 사용된 기술
  6. 6. 2011 년 11 월 9 일 첫 삽 현재 1,996 일째 숫자로 보는 프로젝트
  7. 7. 숫자로 보는 프로젝트 3,834 commits 2,071 builds 19 authors
  8. 8. 숫자로 보는 프로젝트 1,257 files 294,250 lines  120,051 (h/cc/cs)  18,650 (scripts)  56,425 (documents)
  9. 9. D+2 데비안 패키징 패키지 수준 의존성 정의를 통해 엔진 개발자와 엔진 사용자간 동일한 환경 유지 보장
  10. 10. D+4 Continuous Integration 연동 작업자와 상관없이 빌드 결과물의 객관성 확보 보장
  11. 11. D+8 / D+807: DHT 기반 P2P 구현 / 삭제 모바일 네트워크 상에서 P2P 에 회의적 . 구현 제거함 .
  12. 12. D+30 Event 기반 프로그래밍 형태로 변경 개발자가 솔루션 전체를 이해하는 것이 아니라 , 사용할 이벤트만 선별적으로 사용할 수 있게 변경
  13. 13. D+41 문서화 작업 시작 솔루션에 있어서 UI 인터페이스 함수 문서
  14. 14. D+43 Lib 방식에서 Framework 방식으로 Event 기반 프로그래밍과 유사한 목적으로 , 학습 곡선을 줄이기 위함 .
  15. 15. D+45 분산 서버 구축을 위한 RPC 작업 서버의 확장성은 서버 설계 때부터 고려해야 함 . 이 후 XMLRPC 를 성능 이유로 custom RPC 로 변경 .
  16. 16. D+98 행동 Log 시스템 구현 프로그램 로그 외에 유저의 행동 수집을 위한 로그 구현 . 행동 로그는 추후 고객 지원 등에 절대적으로 필요함 .
  17. 17. D+147 TCP 네트워크 세션 구현 IP 변경되는 모바일 환경을 고려하여 TCP 위 세션 계층 구현 . 이후 세션 계층은 사용 편의성 때문에 두 번의 큰 변화를 겪음 .
  18. 18. D+228 UDP 네트워크 세션 구현 세션 계층에 UDP 와 websocket 추가 . 이 후 websocket 은 사용빈도 문제로 삭제됨 .
  19. 19. D+252 ORM 초기 버전 구현 MongoDB 를 backend 로 하는 ORM 구현 . 이 후 MongoDB 를 MySQL 로 변경 .
  20. 20. D+409 모바일 플랫폼 인증 기능 구현 Facebook 과 Nexon Play 지원 .
  21. 21. D+510 Unity3D 대응 시작 클라이언트 플러그인 없이는 클라이언트 개발이 지나치게 어렵다는 것을 인정 .
  22. 22. D+710 모바일 플랫폼 결제 검증 기능 구현 Google Play 와 Apple AppStore 지원 .
  23. 23. D+1099 REST API Endpoint 지원 게임 서버에서 관리목적 REST API 로 상태값을 노출 .
  24. 24. D+1427 서버 엔진 프로파일러 구현 Black box 인 게임 엔진의 visibility 향상 .
  25. 25. D+1808 C# 지원 사용 편의성 확대 목적 .
  26. 26. D+1827 Dedicated Server 관리 구현 사용 편의성 확대 목적 .
  27. 27. D+1861 모니터링 대시보드 구현 Black box 인 서버 엔진의 visibility 향상 .
  28. 28. 개발 노트 정리 D+2 패키징 방식 도입 D+262 ORM 구현 시작 D+4 Continuous Integration 도입 D+409 인증 플랫폼 연동 D+8 P2P 도입 ( 이후 제거 ) D+510 클라이언트 엔진 플러그인 지원 D+30 이벤트 기반 프로그래밍 모델로 전환 D+710 결제 플랫폼 연동 D+41 문서화 D+1099 관리용 REST API 추가 D+43 프레임워크 방식으로 전환 D+1427 엔진 프로파일러 추가 D+45 분산 시스템 구현 시작 D+1808 C# 지원 D+98 행동 로그 수집 시스템 구현 D+1827 데디케이트 서버 지원 D+147 TCP 지원 및 세션 계층 구현 D+1861 모니터링 대시보드 지원 D+228 UDP 지원
  29. 29. 개발 노트 정리 D+2 패키징 방식 도입 D+262 ORM 구현 시작 D+4 Continuous Integration 도입 D+409 인증 플랫폼 연동 D+8 P2P 도입 ( 이후 제거 ) D+510 클라이언트 엔진 플러그인 지원 D+30 이벤트 기반 프로그래밍 모델로 전환 D+710 결제 플랫폼 연동 D+41 문서화 D+1099 관리용 REST API 추가 D+43 프레임워크 방식으로 전환 D+1427 엔진 프로파일러 추가 D+45 분산 시스템 구현 시작 D+1808 C# 지원 D+98 행동 로그 수집 시스템 구현 D+1827 데디케이트 서버 지원 D+147 TCP 지원 및 세션 계층 구현 D+1861 모니터링 대시보드 지원 D+228 UDP 지원 배포 관련배포 관련
  30. 30. 개발 노트 정리 D+2 패키징 방식 도입 D+262 ORM 구현 시작 D+4 Continuous Integration 도입 D+409 인증 플랫폼 연동 D+8 P2P 도입 ( 이후 제거 ) D+510 클라이언트 엔진 플러그인 지원 D+30 이벤트 기반 프로그래밍 모델로 전환 D+710 결제 플랫폼 연동 D+41 문서화 D+1099 관리용 REST API 추가 D+43 프레임워크 방식으로 전환 D+1427 엔진 프로파일러 추가 D+45 분산 시스템 구현 시작 D+1808 C# 지원 D+98 행동 로그 수집 시스템 구현 D+1827 데디케이트 서버 지원 D+147 TCP 지원 및 세션 계층 구현 D+1861 모니터링 대시보드 지원 D+228 UDP 지원 배포 관련배포 관련 프로그래밍 모델 관련프로그래밍 모델 관련
  31. 31. 개발 노트 정리 D+2 패키징 방식 도입 D+262 ORM 구현 시작 D+4 Continuous Integration 도입 D+409 인증 플랫폼 연동 D+8 P2P 도입 ( 이후 제거 ) D+510 클라이언트 엔진 플러그인 지원 D+30 이벤트 기반 프로그래밍 모델로 전환 D+710 결제 플랫폼 연동 D+41 문서화 D+1099 관리용 REST API 추가 D+43 프레임워크 방식으로 전환 D+1427 엔진 프로파일러 추가 D+45 분산 시스템 구현 시작 D+1808 C# 지원 D+98 행동 로그 수집 시스템 구현 D+1827 데디케이트 서버 지원 D+147 TCP 지원 및 세션 계층 구현 D+1861 모니터링 대시보드 지원 D+228 UDP 지원 배포 관련배포 관련 프로그래밍 모델 관련프로그래밍 모델 관련 운영 및 관리 관련운영 및 관리 관련
  32. 32. 인 하우스 개발과 아주 많이 다르더이다 .
  33. 33. 敎訓 1: 솔루션 배포 방식을 고민하라 처음부터 패키지 업그레이드 방법을 고려해야 함 . 설치 과정이 단순해야 함 . (out-of-box 방식 )
  34. 34. 敎訓 2: 버그는 치명적이다 . 패치를 내보내도 한 번 나간 버그는 사라지지 않을 수 있다 . ( 갤럭시 노트 7 의 경험 ) 한 번 등을 돌린 사용자는 돌아오지 않는다 .
  35. 35. 따름 敎訓 1: Peer Code Review 의 생활화 버그 가능성을 개별 작업자의 능력이 아니라 시스템으로 풀어야 한다 .
  36. 36. 따름 敎訓 2: 빌드는 자동화 하라 빌드 자동화는 제품의 일관된 품질을 보장하는데 도움이 된다 . 작업자에 따른 결과물의 차이라는 위험을 제거할 수 있다 .
  37. 37. 敎訓 3: 문서화는 무엇보다 중요하다 “ 구슬이 서 말이라도 꿰어야 보배다 .” “ 문서는 SW 솔루션에 있어 UI 다 .”
  38. 38. 敎訓 4: Black box 라는 것을 명심하라 블랙박스 사용자는 언제나 답답함을 느낄 수 있다 . 그러니 인터페이스는 최소화하고 , 동작은 직관적이게 한다 .
  39. 39. 敎訓 5: 서비스 운영 / 모니터링에 신경 쓰라 Black box 를 진단할 수 있는 방식을 반드시 제공해야 된다 .
  40. 40. 기타 잔소리 : Co-work 에 대해 .. 프로젝트는 내가 잘 났다는 것을 과시하기 위한 것이 아니다 . -읽기 쉬운 코드 선호 -상세한 commit log -관리가 용이한 개발툴로 변경 (automake -> cmake) -“ 내 코드를 쓰면서 동료가 실수한다면 동료가 바보가 아니라 내가 나 혼자만을 위한 코드를 짠 것이다”
  41. 41. 기타 잔소리 : 서버 엔진 vs. 네트워크 엔진 서버 엔진을 네트워크 엔진으로 착각하면 안됨 . 서버 엔진은 전반적인 생산성과 확장성에 대한 많은 고려가 필요 .
  42. 42. 후회 되는 점 : 사용자 편의성 고려 늦음 인증 / 빌링 및 프로그래밍 언어에 대한 배려가 늦었음 .
  43. 43. 덤 : GitStats 로 알아보는 프로젝트 생산성 출근 직후와 점심 식사 직후의 생산성은 높지 않다 . 우리 직원들은 퇴근 직전까지도 열심히 일한다 . ( 흐믓 )
  44. 44. 요일 별 생산성에 큰 차이는 없지만 금요일이 약간 낮다 . 덤 : GitStats 로 알아보는 프로젝트 생산성
  45. 45. 건물의 냉난방이 이루어지지 않는 환절기에 생산성이 낮다 . 덤 : GitStats 로 알아보는 프로젝트 생산성
  46. 46. 감사합니다 .

    Seja o primeiro a comentar

    Entre para ver os comentários

  • iFunFactory

    Apr. 28, 2017
  • choeungjin

    May. 6, 2017
  • wind0725

    Apr. 12, 2018
  • IanYoon

    Apr. 20, 2018
  • Jojiyoung

    May. 6, 2019

2017NDC 아이펀팩토리 발표자료 1. 강연 주제 : 아이펀 엔진 개발 노트 2. 발표자 : 문대경 CEO &lt;목차> (1) 문대경 CEO 소개 (2) 아이펀 엔진 프로젝트 소개 (3) 아이펀 엔진 프로젝트 개발 노트 (4) 소프트웨어 솔루션 개발 중 얻은 교훈

Vistos

Vistos totais

1.402

No Slideshare

0

De incorporações

0

Número de incorporações

423

Ações

Baixados

11

Compartilhados

0

Comentários

0

Curtir

5

×