NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
지난 3년여간 비트라는 제품을 Python으로 개발하면서 얻게된 경험들을 나눕니다. 주로 기술적인 의사결정의 방법들과 실수들, 또 그런 실수들을 어떻게 수습하고 다듬어 왔는지 이야기 하고, 그런 과정들을 통해 비트라는 Python 프로젝트를 어떻게 개발하여 관리하는지를 다룰 예정입니다. 상세한 사례보다는 조금은 메타적인 이야기를 하여 가급적 많은 분들에게 도움이 되고자 하였습니다.
- 비교적 오랜시간 동안 많은 인원이 투입된 프로젝트가 어떻게 개발하고 머지하는지,
- 품질 관리를 왜 해야하고 또 어떻게 하는지,
- 적정한 기술을 선택함에 있어 어떻게 해야하는지
같은 부분을 상세하게 다룰 예정입니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
지난 3년여간 비트라는 제품을 Python으로 개발하면서 얻게된 경험들을 나눕니다. 주로 기술적인 의사결정의 방법들과 실수들, 또 그런 실수들을 어떻게 수습하고 다듬어 왔는지 이야기 하고, 그런 과정들을 통해 비트라는 Python 프로젝트를 어떻게 개발하여 관리하는지를 다룰 예정입니다. 상세한 사례보다는 조금은 메타적인 이야기를 하여 가급적 많은 분들에게 도움이 되고자 하였습니다.
- 비교적 오랜시간 동안 많은 인원이 투입된 프로젝트가 어떻게 개발하고 머지하는지,
- 품질 관리를 왜 해야하고 또 어떻게 하는지,
- 적정한 기술을 선택함에 있어 어떻게 해야하는지
같은 부분을 상세하게 다룰 예정입니다.
IBM의 퍼블릭 IaaS 클라우드 서비스, SoftLayer 사용 팁 & 가이드
SoftLayer에 대해 더 알고 싶으세요? 아래 웹사이트를 방문해 주세요!
한글 - http://ibm.co/1w43NvN
영문 - http://www.softlayer.com/
한국 IBM SoftLayer의 페이스북 페이지를 통해서 SoftLayer의 뉴스들을 전달받으세요!
https://www.facebook.com/IBMSoftlayerkorea
SoftLayer에 대해 더 배우고 싶으세요? 아래 튜토리얼 링크를 방문해 주세요!
http://www.youtube.com/channel/UCdpXbWYiWtS6iGp1lGx1RAA
[PYCON Korea 2018] Python Application Server for Recommender System Kwangseob Kim
한글 수정: https://www.slideshare.net/kimkwangseop/pycon-korea-2018-python-application-server-for-recommender-system-110602118
추천 시스템을 위한 어플리케이션 서버 개발 후기
@ PYCON Korea 2018
link: https://www.pycon.kr/2018/program/33
Spark machine learning & deep learninghoondong kim
Spark Machine Learning and Deep Learning Deep Dive.
Scenarios that use Spark hybrid with other data analytics tools (MS R on Spark, Tensorflow(keras) with Spark, Scikit-learn with Spark, etc)
6. 서버 만들기의 BaseLine
• 모든 근본은 소프트웨어 개발의 근본!
• 소프트웨어 개발의 5대 원칙
– SRP(단일 책임 법칙)
• 클래스가 하나의 책임만 가진다. 변경되는 이유가 하나의 책임과 연관된다.
– OCP(개방 폐쇄 법칙)
• 기능을 추가하기는 쉽게!, 기존 기능을 변경하게 만드는 것은 어렵게.
– LSP(리스코프 치홖 법칙)
• 하위 타입은 그것의 Base Type 에 대해서 치홖 가능해야 한다.
– ISP(인터페이스 격리 법칙)
• 자신이 필요한 인터페이스만 존재
– DIP(의존 관계 역젂 법칙)
• 상위 모듈이 하위 모듈에 의존하지 않도록 Concrete Class 대신에 Interface를 써라!
7. 서버 만들기의 BaseLine 2
• Pattern?
– 우리가 POSA2를 공부하려는 이유
– POSA2는 ACE의 구조다!
– 결국 변하는 부분과 그렇지 않은 부분의 분리
8. 서버 모델
• 서버 모델이 뭐예요?
– 서버의 목적과, 성능, 안젂성 등의 요구사항에 따라 달라집니다.
9. threading Model?
• Single Process Model
• Multi Process Model
– Preforked Model
– Dynamic
• Multi Thread Model
– Preforked Model
– Dynamic
10. Server Model?
• 의사소통의 수단으로 사용합니다.
• Worker Crew Model
– 하나의 작업을 나눠서 여려명이서!!!, 계산 작업?
• Boss/Worker Model
– Channel(Queue)
– Producer-Consumer
• Consumer 가 하나면 Pipeline Model
• Consumer 가 여러 개면 Boss/Worker
11. Reactor/Proactor 모델은요?
• 가장 많이 듣는 이야기!
– 주로 앞단에서 Event Handling 을 위한 구조
– 목적에 따라서 여러가지 패턴이 조합될 수 있다.
• 특정 패턴이 모든 것을 얘기하지 않습니다.
17. 서버 만들기의 TIP
• Data Copies
• Context Switches
• Memory Allocation
• Lock Contention
18. Data Copies
• Data Copy가 많을 수록 괜히 CPU를 낭비하게 된다.
• 그럼 어떻게?
– Socket Zero Buffer?(효과는 미비?)
– 최소한의 데이터 복사만 일어나도록 사용
19. Context Switches
• Thread는 Light Weight Process?
• 그러나 Thread의 Context Switch 가 자주 일어나면 점점 성능은
떨어진다.
• 2n+1 등의 공식이 있지만, 실제로는 해당 수치는 테스트로 검증해야 한
다.
20. Memory Allocation
• 메모리 Pool을 이용하는 것이 좋다.
• 아니면 미리 할당, 한방에 필요한 만큼 모두 할당 한다.
• 자주 할당하는 것을 피하는 것이 좋다.
21. Lock Contention
• Lock이 빈번하면 속도가 느리다.
• 그러나 안정성을 위해서 필요
• 최대한 락이 필요없는 구조로 설계
• 하지만 필요하다면 써야한다.
• Lock-Free, Wait-Free 방식도 알아보자
22. 서버 만들기의 TIP 2 - 1
• Just Network, Memory, CPU
– HDD is slow!( Not use Slow I/O )
– HDD -> SSD
• Thread and Process Count
– 적젃한 비율은 실험으로 발견
• Use Resource POOL
• Use Cache( Be Higher Cache Hit )
• Use Compression( Low CPU Using and High Memory Use)