지난 3년여간 비트라는 제품을 Python으로 개발하면서 얻게된 경험들을 나눕니다. 주로 기술적인 의사결정의 방법들과 실수들, 또 그런 실수들을 어떻게 수습하고 다듬어 왔는지 이야기 하고, 그런 과정들을 통해 비트라는 Python 프로젝트를 어떻게 개발하여 관리하는지를 다룰 예정입니다. 상세한 사례보다는 조금은 메타적인 이야기를 하여 가급적 많은 분들에게 도움이 되고자 하였습니다.
- 비교적 오랜시간 동안 많은 인원이 투입된 프로젝트가 어떻게 개발하고 머지하는지,
- 품질 관리를 왜 해야하고 또 어떻게 하는지,
- 적정한 기술을 선택함에 있어 어떻게 해야하는지
같은 부분을 상세하게 다룰 예정입니다.
지난 3년여간 비트라는 제품을 Python으로 개발하면서 얻게된 경험들을 나눕니다. 주로 기술적인 의사결정의 방법들과 실수들, 또 그런 실수들을 어떻게 수습하고 다듬어 왔는지 이야기 하고, 그런 과정들을 통해 비트라는 Python 프로젝트를 어떻게 개발하여 관리하는지를 다룰 예정입니다. 상세한 사례보다는 조금은 메타적인 이야기를 하여 가급적 많은 분들에게 도움이 되고자 하였습니다.
- 비교적 오랜시간 동안 많은 인원이 투입된 프로젝트가 어떻게 개발하고 머지하는지,
- 품질 관리를 왜 해야하고 또 어떻게 하는지,
- 적정한 기술을 선택함에 있어 어떻게 해야하는지
같은 부분을 상세하게 다룰 예정입니다.
서비스를 만들면서 피할 수 없는 주제 중 한가지가 바로 비동기 처리입니다. 무겁고 오래 걸리는 일에 대한 처리뿐 아니라, 주기적으로 수행해야 하는 일까지 대부분 서비스에 반드시 라고 할 만큼 겪게 되는 문제죠. Python을 쓰는 우리에게는 물론 싱싱하고 훌륭한 해법인 Celery가 있습니다. 요구되는 거의 모든 기능을 제공할 뿐만 아니라, 유연하게 설계되어 있고 관리툴 같은 부가 기능까지, 비동기에 관련된 모든 부분을 책임져주죠.
하지만 Celery에 이런 빛과 같은 아름다움만 존재하는 것은 아닙니다. 싱싱한 채소를 맛있게 먹기 위해서는 몇 가지 공부가 필요한 것처럼, 때로는 Celery의 의아스러운 점을 잘 다루고, 우리의 서비스에 맞게 이용하기 위해서는 몇 가지 알아야 할 점이 있습니다. 지난 1년여간 최대 1만 건/초의 요청을 Celery로 처리하면서 제가 얻은 경험을 나누고자 합니다.
네이버클라우드플랫폼의 인프라를 편히 관리할 수 있는 네이버클라우드플랫폼의 CLI의 구조와 사용법에 대해서 간략히 소개합니다. | A brief introduction to the structure and usage of the CLI of the Naver Cloud Platform, which enables easy management of the infrastructure of the Naver Cloud Platform.
김태현
Sr. SW Engineer. (Blizzard Entertainment)
---
글로벌 게임서비스의 무정지, 무점검 서버 개발과 운영의 사례를 소개
1. 무정지 무점검을 위해 적용된 서버 개발 기술들의 소개
2. 무정지 무점검 운영을 위한 서버의 구성과 DevOps 운용 소개
서비스를 만들면서 피할 수 없는 주제 중 한가지가 바로 비동기 처리입니다. 무겁고 오래 걸리는 일에 대한 처리뿐 아니라, 주기적으로 수행해야 하는 일까지 대부분 서비스에 반드시 라고 할 만큼 겪게 되는 문제죠. Python을 쓰는 우리에게는 물론 싱싱하고 훌륭한 해법인 Celery가 있습니다. 요구되는 거의 모든 기능을 제공할 뿐만 아니라, 유연하게 설계되어 있고 관리툴 같은 부가 기능까지, 비동기에 관련된 모든 부분을 책임져주죠.
하지만 Celery에 이런 빛과 같은 아름다움만 존재하는 것은 아닙니다. 싱싱한 채소를 맛있게 먹기 위해서는 몇 가지 공부가 필요한 것처럼, 때로는 Celery의 의아스러운 점을 잘 다루고, 우리의 서비스에 맞게 이용하기 위해서는 몇 가지 알아야 할 점이 있습니다. 지난 1년여간 최대 1만 건/초의 요청을 Celery로 처리하면서 제가 얻은 경험을 나누고자 합니다.
네이버클라우드플랫폼의 인프라를 편히 관리할 수 있는 네이버클라우드플랫폼의 CLI의 구조와 사용법에 대해서 간략히 소개합니다. | A brief introduction to the structure and usage of the CLI of the Naver Cloud Platform, which enables easy management of the infrastructure of the Naver Cloud Platform.
김태현
Sr. SW Engineer. (Blizzard Entertainment)
---
글로벌 게임서비스의 무정지, 무점검 서버 개발과 운영의 사례를 소개
1. 무정지 무점검을 위해 적용된 서버 개발 기술들의 소개
2. 무정지 무점검 운영을 위한 서버의 구성과 DevOps 운용 소개
GDB와 strace로 Hang 걸린 Python Process 원격 디버깅Youngmin Koo
Python 프로그램을 디버깅하실 때 어떤 툴을 사용하시나요? 아무래도 가장 많이 사용하고 계신 툴은 PyCharm이 아닐까 싶습니다. PyCharm은 JetBrains에서 만든 GUI 환경에서 사용할 수 있는 Python IDE입니다.
PyCharm은:
로컬 컴퓨터에서 디버깅 모드로 (PyDev로) Python 프로세스를 실행할 수 있습니다.
로컬 컴퓨터에서 실행 중인 Python 프로세스에 Attach해 디버깅할 수 있습니다.
원격 서버에서 디버깅 모드로 (PyDev로) Python 프로세스를 실행할 수 있습니다.
하지만 원격에서 동작하고 있는 프로세스에 디버거를 Attach하는 기능은 제공하지 않고 있습니다. 또한 Python 디버깅 모듈인 pdb를 사용하여도 동작하고 있는 프로세스에 Attach하는 것은 지원하고 있지 않습니다.
로컬 환경에서는 문제 없이 돌아갔던 Python 프로그램이 원격 서버에서는 아무런 로그 없이 멈춰 버리는 경우 어디서부터 손을 대야 할지 정말 막막합니다. 이 때 GDB와 strace를 이용하면 어디에서 문제가 발생했는지 진단할 수 있습니다. 이 세션에서는 GDB와 strace를 이용해 디버깅하여 원격 리눅스 서버에서 Python Process가 Hang 되어 버리는 문제를 진단하고 해결했던 경험을 공유하려고 합니다.
멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
8. PG 란?
• Payment Gate: 전자 지급 결제 대행 서비스
• PG사는 주요 신용카드사, 은행, 통신사 등과 미리 계약이 되
어있다.
• 사용자는 PG사와 계약만 하면, 다양한 결제 수단(신용카드,
계좌이체, 에스크로, 모바일결제...)을 사용할 수 있다.
• 민감한 정보(신용카드 번호 등) 관리에 대한 부담이 줄어든
다.
9
11. 요구 사항 1
• DV 환경 전체를 local(laptop/desktop)에 구축
• 비용 절감을 위해 AWS 나 IDC server는 사용하지 않음
• 단, client(iOS app)는 실제 device(iPhone)에서 실행
되어야한다.
12
12. 요구 사항 2
• Provisioning 과정이 단순하고 빨라서 반복하기 쉬워야한
다.
• (re)Provisioning은 개발 과정에서 생기는 DV 환경의
엔트로피를 해결하기 위한 가장 확실한 방법
• 하지만, (re)provisioining이 어렵고 오래걸리면 개발자
들이 하기를 꺼려한다.
13
14. 요구 사항 3
• Python으로 작성된 backend API 서버에 PG사의
module을 연동한다.
• PG사에서 지원하는 PL은 ASP, JSP, PHP 뿐이다.
• PG사의 API spec 문서가 대외비에다가 실제 동작 내용
과 다소 상이하다.
15
15. 요구 사항 4
• PG사에서 지원하는 결제 기능 중에 "정기 과금"만 사용한다.
16
16. 요구 사항 (summary)
• DV 환경 전체를 local(laptop/desktop)에 구축
• Provisioning 과정이 단순하고 빨라서 반복하기 쉬워야한
다.
• Python으로 작성된 backend API 서버에 PG사의
module을 연동한다.
• PG사에서 지원하는 결제 기능 중에 "정기 과금"만 사용한
다.
17
22. Three Combination - 1 (cont.)
• Vagrant VM 사용시, 외부에서 VM 접근의 문제점.
• port forwarding 방법은...
• 1024 이하의 숫자의 경우에 보안적으로 제한되어있음.
• VM간에 port 충돌 고려.
• VM를 접근할 때 host의 IP address를 사용해야함.
• 그래서 OpenVPN + NAT 방법을 선택
23
23. Three Combination - 2
• OpenVPN
• Local (Laptop/Desktop) 외부에 위치한
device(iPhone)에게 사설 IP(예: 10.8.0.0/8)를 할당
24
28. 해결된 요구 사항
• DV 환경 전체를 local(laptop/desktop)에 구축
• Provisioning 과정이 단순하고 빨라서 반복하기 쉬워야한
다.
• Python으로 작성된 backend API 서버에 PG사의
module을 연동한다.
• PG사에서 지원하는 결제 기능 중에 "정기 과금"만 사용한다.
29
35. 해결된 요구 사항
• DV 환경 전체를 local(laptop/desktop)에 구축
• Provisioning 과정이 단순하고 빨라서 반복하기 쉬워야한
다.
• Python으로 작성된 backend API 서버에 PG사의
module을 연동한다.
• PG사에서 지원하는 결제 기능 중에 "정기 과금"만 사용한다.
36
36. 발표 내용 review
• DV 환경이란 무엇인가?
• PG 란 무엇인가?
• DV 환경에서 PG 연동을 위한 요구사항 정리 (4가지)
• 요구사항을 만족하는 환경 구축
• 세번째 요구사항은 아직 진행중...
37