SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
2019 iFunFactory Dev Day
‘아이펀 엔진으로 MO 게임 서버 개발하기’
‘아이펀 엔진으로 MO 게임 서버 개발하기’
2019 iFunFactory Dev Day
2
문대경 CEO
환영합니다!
2019 iFunFactory Dev Day
1. 소켓 프로그래밍 개론
2. 게임 서버 개론
3. 아이펀 엔진 소개
4. 이어지는 세션 소개
3
2019 iFunFactory Dev Day 4
소켓이란?
2019 iFunFactory Dev Day 5
소켓이란?
2019 iFunFactory Dev Day 6
소켓이란?
2019 iFunFactory Dev Day 7
소켓이란?
2019 iFunFactory Dev Day 7
소켓이란?
2019 iFunFactory Dev Day 7
소켓이란?
➢ (기능을 추가 하기 위해서 혹은 제공되는 기능을 쓰기 위해서…)
2019 iFunFactory Dev Day 7
소켓이란?
➢ (기능을 추가 하기 위해서 혹은 제공되는 기능을 쓰기 위해서…)
➢ 그렇다면, 소켓 프로그래밍은 “어떤 기능” 을 쓰기 위해서 빨대를 꽂는 것
2019 iFunFactory Dev Day 7
소켓이란?
➢ (기능을 추가 하기 위해서 혹은 제공되는 기능을 쓰기 위해서…)
➢ 그렇다면, 소켓 프로그래밍은 “어떤 기능” 을 쓰기 위해서 빨대를 꽂는 것
➢ 어떤 기능??
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATAH
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
H
H
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
H
H
H
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
H
H
H
H
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
H
H
H
H
1. “H” 로 된 부분을 헤더(header) 라고 합니다.
즉, 각 프로토콜은 “헤더“+”데이터"형태입니다.
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
H
H
H
H
1. “H” 로 된 부분을 헤더(header) 라고 합니다.
즉, 각 프로토콜은 “헤더“+”데이터"형태입니다.
2. 헤더는 택배 송장처럼 송수신자의 주소가
들어갑니다. (MAC, IP, Port, Msg type)
2019 iFunFactory Dev Day 8
TCP/IP 계층 구조와 전송 데이터 구조
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
DATA
H
H
H
H
1. “H” 로 된 부분을 헤더(header) 라고 합니다.
즉, 각 프로토콜은 “헤더“+”데이터"형태입니다.
2. 헤더는 택배 송장처럼 송수신자의 주소가
들어갑니다. (MAC, IP, Port, Msg type)
3. 택배 송장 스티커에 주소 말고도 바코드, 취급점
등 부가 정보가 들어가듯이
헤더에는 주소 말고도 다른 정보도 들어가겠죠?
2019 iFunFactory Dev Day 9
Pop Quiz
Q) 컴퓨터 네트워킹에서
프로토콜이 할 수 있는 일과 할 수 없는 일을
결정하는 것은 무엇일까요?
2019 iFunFactory Dev Day 9
Pop Quiz
Q) 컴퓨터 네트워킹에서
프로토콜이 할 수 있는 일과 할 수 없는 일을
결정하는 것은 무엇일까요?
A) Header
2019 iFunFactory Dev Day 10
TCP/IP 계층 구조에서 데이터 전송 요건
1. (구조 요건) “헤더“+“데이터” 구조에서
적절하게 헤더를 만들어서 붙일 것
2019 iFunFactory Dev Day 10
TCP/IP 계층 구조에서 데이터 전송 요건
1. (구조 요건) “헤더“+“데이터” 구조에서
적절하게 헤더를 만들어서 붙일 것
2. (동작 요건) 유지해야 되는 상태(state) 가 있을 경우
양 끝단에서는 이를 적절히 관리할 것
2019 iFunFactory Dev Day 10
TCP/IP 계층 구조에서 데이터 전송 요건
1. (구조 요건) “헤더“+“데이터” 구조에서
적절하게 헤더를 만들어서 붙일 것
2. (동작 요건) 유지해야 되는 상태(state) 가 있을 경우
양 끝단에서는 이를 적절히 관리할 것
➢ 소켓이란
이 두 요건을 library/system call 형태로 자동으로 관리해주고,
프로그래머가 이를 사용할 수 있게 제공되는 빨대 구멍
2019 iFunFactory Dev Day 11
쓰려는 기능에 따라 소켓 위치가 달라짐
Network
Interface
IP
TCP/UDP
Application
Network
Interface
IP
TCP/UDP
Application
The
Internet
2019 iFunFactory Dev Day 12
TCP Socket: TCP heder 생성 및 State 유지
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
2019 iFunFactory Dev Day 12
TCP Socket: TCP heder 생성 및 State 유지
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
2019 iFunFactory Dev Day 12
TCP Socket: TCP heder 생성 및 State 유지
Network
Interface
IP
TCP
Application
Network
Interface
IP
TCP
Application
The
Internet
2019 iFunFactory Dev Day 13
UDP Socket: UDP header 생성
Network
Interface
IP
UDP
Application
Network
Interface
IP
UDP
Application
The
Internet
2019 iFunFactory Dev Day 13
UDP Socket: UDP header 생성
Network
Interface
IP
UDP
Application
Network
Interface
IP
UDP
Application
The
Internet
2019 iFunFactory Dev Day 13
UDP Socket: UDP header 생성
Network
Interface
IP
UDP
Application
Network
Interface
IP
UDP
Application
The
Internet
2019 iFunFactory Dev Day 14
Raw IP Socket: IP header 생성
Network
Interface
IP
Application
Network
Interface
IP
Application
The
Internet
2019 iFunFactory Dev Day 14
Raw IP Socket: IP header 생성
Network
Interface
IP
Application
Network
Interface
IP
Application
The
Internet
2019 iFunFactory Dev Day 14
Raw IP Socket: IP header 생성
Network
Interface
IP
Application
Network
Interface
IP
Application
The
Internet
2019 iFunFactory Dev Day 15
TCP vs. UDP
1. UDP
✓ 재전송 없음, 순서 정렬 없음
✓ 별도의 transmission control 없음 (있는 힘껏 발사!)
✓ 별도의 state 관리 없음
2019 iFunFactory Dev Day 15
TCP vs. UDP
1. UDP
✓ 재전송 없음, 순서 정렬 없음
✓ 별도의 transmission control 없음 (있는 힘껏 발사!)
✓ 별도의 state 관리 없음
2. TCP
✓ 재전송 있음, 순서 정렬 있음
✓ 상대방의 여력과 네트워크의 여력 둘 다 신경 쓰는 transmission control
✓ 이를 위해 queue 관리와 state 관리를 수행
2019 iFunFactory Dev Day 15
TCP vs. UDP
1. UDP
✓ 재전송 없음, 순서 정렬 없음
✓ 별도의 transmission control 없음 (있는 힘껏 발사!)
✓ 별도의 state 관리 없음
2. TCP
✓ 재전송 있음, 순서 정렬 있음
✓ 상대방의 여력과 네트워크의 여력 둘 다 신경 쓰는 transmission control
✓ 이를 위해 queue 관리와 state 관리를 수행
=> 지연시간 (latency) 에 민감한 application 에서 선호
2019 iFunFactory Dev Day 15
TCP vs. UDP
1. UDP
✓ 재전송 없음, 순서 정렬 없음
✓ 별도의 transmission control 없음 (있는 힘껏 발사!)
✓ 별도의 state 관리 없음
2. TCP
✓ 재전송 있음, 순서 정렬 있음
✓ 상대방의 여력과 네트워크의 여력 둘 다 신경 쓰는 transmission control
✓ 이를 위해 queue 관리와 state 관리를 수행
=> 지연시간 (latency) 에 민감한 application 에서 선호
=> 전송 안정성 (reliability) 에 민감한 application 에서 선호
2019 iFunFactory Dev Day 16
게임 개발에서 TCP vs. UDP
Q) 게임은 통신 안정성(reliability)이 더 중요한가,
통신 지연 (latency)이 더 중요한가?
A) 한국 프로그래머들 다수 관점: reliability > latency => TCP 선호
미국 프로그래머들 다수 관점: reliability < latency => UDP 선호
2019 iFunFactory Dev Day 17
전송 제어 유무 때문에 생기는 TCP/UDP 경합
1. TCP 는 패킷 유실을 경험하면 네트워크가 과부하라고 판단함
2. 그래서 패킷 쏘는 속도를 줄임
3. 그러나 UDP 는 그런거 모름. TCP가 양보한 것을 냉큼 차지
그래프 출처: http://web.opalsoft.net
2019 iFunFactory Dev Day 17
전송 제어 유무 때문에 생기는 TCP/UDP 경합
1. TCP 는 패킷 유실을 경험하면 네트워크가 과부하라고 판단함
2. 그래서 패킷 쏘는 속도를 줄임
3. 그러나 UDP 는 그런거 모름. TCP가 양보한 것을 냉큼 차지
그래프 출처: http://web.opalsoft.net
2019 iFunFactory Dev Day 18
게임 서버 내부
제어 흐름
2019 iFunFactory Dev Day 19
게임 서버 내
소켓의 영역
2019 iFunFactory Dev Day 19
게임 서버 내
소켓의 영역
2019 iFunFactory Dev Day 19
게임 서버 내
소켓의 영역
2019 iFunFactory Dev Day 19
게임 서버 내
소켓의 영역
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐
A
B C
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
A
B C
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
A
B C
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
A
B C
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
A
B C
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
모니터링
A
B C
2019 iFunFactory Dev Day 20
게임 서버를 바라보는 다른 관점
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
모니터링 운영
A
B C
2019 iFunFactory Dev Day 21
아이펀 엔진의 지원 범위
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
모니터링 운영
A
B C
2019 iFunFactory Dev Day 21
아이펀 엔진의 지원 범위
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
모니터링 운영
2019 iFunFactory Dev Day 21
아이펀 엔진의 지원 범위
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
모니터링 운영
패킷타입 핸들러
LOGIN H1
MOVE H2
… …
2019 iFunFactory Dev Day 21
아이펀 엔진의 지원 범위
소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐
소켓 출력 큐
…
모니터링 운영
패킷타입 핸들러
LOGIN H1
MOVE H2
… …
2019 iFunFactory Dev Day 22
전체 다 만들기 vs. 솔루션 사용하기
1. 전체 다 만들기의 장점
✓ 신나고 재미있음
✓ 조직 내 기술 기반을 쌓는데 도움이 됨
2019 iFunFactory Dev Day 22
전체 다 만들기 vs. 솔루션 사용하기
1. 전체 다 만들기의 장점
✓ 신나고 재미있음
✓ 조직 내 기술 기반을 쌓는데 도움이 됨
2. 전체 다 만들기의 단점
✓ 해야 될 것이 많음 (소켓 프로그래밍이 전부가 아님)
✓ 상당히 많은 프로그래밍 인력이 필요
2019 iFunFactory Dev Day 22
전체 다 만들기 vs. 솔루션 사용하기
1. 전체 다 만들기의 장점
✓ 신나고 재미있음
✓ 조직 내 기술 기반을 쌓는데 도움이 됨
2. 전체 다 만들기의 단점
✓ 해야 될 것이 많음 (소켓 프로그래밍이 전부가 아님)
✓ 상당히 많은 프로그래밍 인력이 필요
3. 조언
✓ 적합한 선택은 상황에 따라 다름
그러나 프로그래머 개인의 지적 호기심 때문에 하는 것은 아니어야 함
✓ 서버는 게임의 실패를 막아줄 수는 있지만, 성공을 보장하지는 않음
게임의 성공은 창의적인 콘텐츠와 빠른 시장 진입에 더 영향을 받음
2019 iFunFactory Dev Day 23
아이펀 엔진 지원 개발 환경
실행 OS 개발 Tool (원격 개발 OS) 개발 언어
Linux1) Clion2), Vim, Mono Develop3) C++, C#
Linux1) VS Code (Win, Mac, Linux) C++, C#
Linux1) VS 2015 (Win) C++
Windows VS 2017 C++
1) Ubuntu (16.04, 18.04), Centos 7
2) C++ 만 지원
3) C# 만 지원
2019 iFunFactory Dev Day 23
아이펀 엔진 지원 개발 환경
실행 OS 개발 Tool (원격 개발 OS) 개발 언어
Linux1) Clion2), Vim, Mono Develop3) C++, C#
Linux1) VS Code (Win, Mac, Linux) C++, C#
Linux1) VS 2015 (Win) C++
Windows VS 2017 C++
1) Ubuntu (16.04, 18.04), Centos 7
2) C++ 만 지원
3) C# 만 지원
2019 iFunFactory Dev Day 23
아이펀 엔진 지원 개발 환경
실행 OS 개발 Tool (원격 개발 OS) 개발 언어
Linux1) Clion2), Vim, Mono Develop3) C++, C#
Linux1) VS Code (Win, Mac, Linux) C++, C#
Linux1) VS 2015 (Win) C++
Windows VS 2017 C++
1) Ubuntu (16.04, 18.04), Centos 7
2) C++ 만 지원
3) C# 만 지원
2019 iFunFactory Dev Day 24
이후 세션에서는…
1. 아이펀 엔진 개발 환경
✓ macOS / VS Code / 원격 Linux 서버 / C++
✓ Windows / VS 2017 / C++
2019 iFunFactory Dev Day 25
이후 세션에서는…
1. MO 게임 콘텐츠 구현
✓ 로그인, 이동, 공격, 인벤토리
✓ 서버간 이동
✓ 채팅
2019 iFunFactory Dev Day 25
이후 세션에서는…
1. MO 게임 콘텐츠 구현
✓ 로그인, 이동, 공격, 인벤토리
✓ 서버간 이동
✓ 채팅
2. 디버깅 / 프로파일링
✓ Dump 분석
✓ 성능 병목 분석
2019 iFunFactory Dev Day 26
이후 세션에서는…
1. 운영툴
✓ 운영을 위한 REST API 추가
✓ 아이펀 디플로이 (운영툴) 에서 운영 기능 활성화 하기
경기도 성남시 분당구 대왕판교로 660, 유스페이스1 B동 606호
info@ifunfactory.com 070-4923-6566www.ifunfactory.com

Contenu connexe

Tendances

Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok Lee
 
make hybrid app.
make hybrid app.make hybrid app.
make hybrid app.jiseob kim
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법MinGeun Park
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt덕규 임
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App DevelopmentChi Hwan Choi
 
PyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQtPyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQt덕규 임
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
swift를 이용한 카카오링크 만들기
swift를 이용한 카카오링크 만들기swift를 이용한 카카오링크 만들기
swift를 이용한 카카오링크 만들기KimDaeho
 
Codeveloper 개발기
Codeveloper 개발기Codeveloper 개발기
Codeveloper 개발기Jay Lee
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현NAVER Engineering
 

Tendances (12)

Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
make hybrid app.
make hybrid app.make hybrid app.
make hybrid app.
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
 
PyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQtPyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQt
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
swift를 이용한 카카오링크 만들기
swift를 이용한 카카오링크 만들기swift를 이용한 카카오링크 만들기
swift를 이용한 카카오링크 만들기
 
Codeveloper 개발기
Codeveloper 개발기Codeveloper 개발기
Codeveloper 개발기
 
Goorm소개
Goorm소개Goorm소개
Goorm소개
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 

Similaire à 2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표

if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01Klaytn
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기iFunFactory Inc.
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...MaRoKim4
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guideJUNHEEKIM27
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control PlaneSeungYong Baek
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능Dexter Jung
 
Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Youngtaek Oh
 
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기Tai Hoon KIM
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Leonardo YongUk Kim
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1stPark Jonggun
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기iFunFactory Inc.
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정봉조 김
 

Similaire à 2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표 (20)

if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guide
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control Plane
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능
 
Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템
 
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
Internship backend
Internship backendInternship backend
Internship backend
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정
 

Plus de iFunFactory Inc.

[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTOiFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석iFunFactory Inc.
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP iFunFactory Inc.
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hostingiFunFactory Inc.
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성iFunFactory Inc.
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버iFunFactory Inc.
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교iFunFactory Inc.
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여iFunFactory Inc.
 
Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉iFunFactory Inc.
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기iFunFactory Inc.
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFunFactory Inc.
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기iFunFactory Inc.
 

Plus de iFunFactory Inc. (20)

[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여
 
Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray)
 
iFun Deploy 소개
iFun Deploy 소개iFun Deploy 소개
iFun Deploy 소개
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기
 

2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표

  • 1. 2019 iFunFactory Dev Day ‘아이펀 엔진으로 MO 게임 서버 개발하기’
  • 2. ‘아이펀 엔진으로 MO 게임 서버 개발하기’ 2019 iFunFactory Dev Day 2 문대경 CEO 환영합니다!
  • 3. 2019 iFunFactory Dev Day 1. 소켓 프로그래밍 개론 2. 게임 서버 개론 3. 아이펀 엔진 소개 4. 이어지는 세션 소개 3
  • 4. 2019 iFunFactory Dev Day 4 소켓이란?
  • 5. 2019 iFunFactory Dev Day 5 소켓이란?
  • 6. 2019 iFunFactory Dev Day 6 소켓이란?
  • 7. 2019 iFunFactory Dev Day 7 소켓이란?
  • 8. 2019 iFunFactory Dev Day 7 소켓이란?
  • 9. 2019 iFunFactory Dev Day 7 소켓이란? ➢ (기능을 추가 하기 위해서 혹은 제공되는 기능을 쓰기 위해서…)
  • 10. 2019 iFunFactory Dev Day 7 소켓이란? ➢ (기능을 추가 하기 위해서 혹은 제공되는 기능을 쓰기 위해서…) ➢ 그렇다면, 소켓 프로그래밍은 “어떤 기능” 을 쓰기 위해서 빨대를 꽂는 것
  • 11. 2019 iFunFactory Dev Day 7 소켓이란? ➢ (기능을 추가 하기 위해서 혹은 제공되는 기능을 쓰기 위해서…) ➢ 그렇다면, 소켓 프로그래밍은 “어떤 기능” 을 쓰기 위해서 빨대를 꽂는 것 ➢ 어떤 기능??
  • 12. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet
  • 13. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA
  • 14. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATAH
  • 15. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA H H
  • 16. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA H H H
  • 17. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA H H H H
  • 18. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA H H H H 1. “H” 로 된 부분을 헤더(header) 라고 합니다. 즉, 각 프로토콜은 “헤더“+”데이터"형태입니다.
  • 19. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA H H H H 1. “H” 로 된 부분을 헤더(header) 라고 합니다. 즉, 각 프로토콜은 “헤더“+”데이터"형태입니다. 2. 헤더는 택배 송장처럼 송수신자의 주소가 들어갑니다. (MAC, IP, Port, Msg type)
  • 20. 2019 iFunFactory Dev Day 8 TCP/IP 계층 구조와 전송 데이터 구조 Network Interface IP TCP Application Network Interface IP TCP Application The Internet DATA H H H H 1. “H” 로 된 부분을 헤더(header) 라고 합니다. 즉, 각 프로토콜은 “헤더“+”데이터"형태입니다. 2. 헤더는 택배 송장처럼 송수신자의 주소가 들어갑니다. (MAC, IP, Port, Msg type) 3. 택배 송장 스티커에 주소 말고도 바코드, 취급점 등 부가 정보가 들어가듯이 헤더에는 주소 말고도 다른 정보도 들어가겠죠?
  • 21. 2019 iFunFactory Dev Day 9 Pop Quiz Q) 컴퓨터 네트워킹에서 프로토콜이 할 수 있는 일과 할 수 없는 일을 결정하는 것은 무엇일까요?
  • 22. 2019 iFunFactory Dev Day 9 Pop Quiz Q) 컴퓨터 네트워킹에서 프로토콜이 할 수 있는 일과 할 수 없는 일을 결정하는 것은 무엇일까요? A) Header
  • 23. 2019 iFunFactory Dev Day 10 TCP/IP 계층 구조에서 데이터 전송 요건 1. (구조 요건) “헤더“+“데이터” 구조에서 적절하게 헤더를 만들어서 붙일 것
  • 24. 2019 iFunFactory Dev Day 10 TCP/IP 계층 구조에서 데이터 전송 요건 1. (구조 요건) “헤더“+“데이터” 구조에서 적절하게 헤더를 만들어서 붙일 것 2. (동작 요건) 유지해야 되는 상태(state) 가 있을 경우 양 끝단에서는 이를 적절히 관리할 것
  • 25. 2019 iFunFactory Dev Day 10 TCP/IP 계층 구조에서 데이터 전송 요건 1. (구조 요건) “헤더“+“데이터” 구조에서 적절하게 헤더를 만들어서 붙일 것 2. (동작 요건) 유지해야 되는 상태(state) 가 있을 경우 양 끝단에서는 이를 적절히 관리할 것 ➢ 소켓이란 이 두 요건을 library/system call 형태로 자동으로 관리해주고, 프로그래머가 이를 사용할 수 있게 제공되는 빨대 구멍
  • 26. 2019 iFunFactory Dev Day 11 쓰려는 기능에 따라 소켓 위치가 달라짐 Network Interface IP TCP/UDP Application Network Interface IP TCP/UDP Application The Internet
  • 27. 2019 iFunFactory Dev Day 12 TCP Socket: TCP heder 생성 및 State 유지 Network Interface IP TCP Application Network Interface IP TCP Application The Internet
  • 28. 2019 iFunFactory Dev Day 12 TCP Socket: TCP heder 생성 및 State 유지 Network Interface IP TCP Application Network Interface IP TCP Application The Internet
  • 29. 2019 iFunFactory Dev Day 12 TCP Socket: TCP heder 생성 및 State 유지 Network Interface IP TCP Application Network Interface IP TCP Application The Internet
  • 30. 2019 iFunFactory Dev Day 13 UDP Socket: UDP header 생성 Network Interface IP UDP Application Network Interface IP UDP Application The Internet
  • 31. 2019 iFunFactory Dev Day 13 UDP Socket: UDP header 생성 Network Interface IP UDP Application Network Interface IP UDP Application The Internet
  • 32. 2019 iFunFactory Dev Day 13 UDP Socket: UDP header 생성 Network Interface IP UDP Application Network Interface IP UDP Application The Internet
  • 33. 2019 iFunFactory Dev Day 14 Raw IP Socket: IP header 생성 Network Interface IP Application Network Interface IP Application The Internet
  • 34. 2019 iFunFactory Dev Day 14 Raw IP Socket: IP header 생성 Network Interface IP Application Network Interface IP Application The Internet
  • 35. 2019 iFunFactory Dev Day 14 Raw IP Socket: IP header 생성 Network Interface IP Application Network Interface IP Application The Internet
  • 36. 2019 iFunFactory Dev Day 15 TCP vs. UDP 1. UDP ✓ 재전송 없음, 순서 정렬 없음 ✓ 별도의 transmission control 없음 (있는 힘껏 발사!) ✓ 별도의 state 관리 없음
  • 37. 2019 iFunFactory Dev Day 15 TCP vs. UDP 1. UDP ✓ 재전송 없음, 순서 정렬 없음 ✓ 별도의 transmission control 없음 (있는 힘껏 발사!) ✓ 별도의 state 관리 없음 2. TCP ✓ 재전송 있음, 순서 정렬 있음 ✓ 상대방의 여력과 네트워크의 여력 둘 다 신경 쓰는 transmission control ✓ 이를 위해 queue 관리와 state 관리를 수행
  • 38. 2019 iFunFactory Dev Day 15 TCP vs. UDP 1. UDP ✓ 재전송 없음, 순서 정렬 없음 ✓ 별도의 transmission control 없음 (있는 힘껏 발사!) ✓ 별도의 state 관리 없음 2. TCP ✓ 재전송 있음, 순서 정렬 있음 ✓ 상대방의 여력과 네트워크의 여력 둘 다 신경 쓰는 transmission control ✓ 이를 위해 queue 관리와 state 관리를 수행 => 지연시간 (latency) 에 민감한 application 에서 선호
  • 39. 2019 iFunFactory Dev Day 15 TCP vs. UDP 1. UDP ✓ 재전송 없음, 순서 정렬 없음 ✓ 별도의 transmission control 없음 (있는 힘껏 발사!) ✓ 별도의 state 관리 없음 2. TCP ✓ 재전송 있음, 순서 정렬 있음 ✓ 상대방의 여력과 네트워크의 여력 둘 다 신경 쓰는 transmission control ✓ 이를 위해 queue 관리와 state 관리를 수행 => 지연시간 (latency) 에 민감한 application 에서 선호 => 전송 안정성 (reliability) 에 민감한 application 에서 선호
  • 40. 2019 iFunFactory Dev Day 16 게임 개발에서 TCP vs. UDP Q) 게임은 통신 안정성(reliability)이 더 중요한가, 통신 지연 (latency)이 더 중요한가? A) 한국 프로그래머들 다수 관점: reliability > latency => TCP 선호 미국 프로그래머들 다수 관점: reliability < latency => UDP 선호
  • 41. 2019 iFunFactory Dev Day 17 전송 제어 유무 때문에 생기는 TCP/UDP 경합 1. TCP 는 패킷 유실을 경험하면 네트워크가 과부하라고 판단함 2. 그래서 패킷 쏘는 속도를 줄임 3. 그러나 UDP 는 그런거 모름. TCP가 양보한 것을 냉큼 차지 그래프 출처: http://web.opalsoft.net
  • 42. 2019 iFunFactory Dev Day 17 전송 제어 유무 때문에 생기는 TCP/UDP 경합 1. TCP 는 패킷 유실을 경험하면 네트워크가 과부하라고 판단함 2. 그래서 패킷 쏘는 속도를 줄임 3. 그러나 UDP 는 그런거 모름. TCP가 양보한 것을 냉큼 차지 그래프 출처: http://web.opalsoft.net
  • 43. 2019 iFunFactory Dev Day 18 게임 서버 내부 제어 흐름
  • 44. 2019 iFunFactory Dev Day 19 게임 서버 내 소켓의 영역
  • 45. 2019 iFunFactory Dev Day 19 게임 서버 내 소켓의 영역
  • 46. 2019 iFunFactory Dev Day 19 게임 서버 내 소켓의 영역
  • 47. 2019 iFunFactory Dev Day 19 게임 서버 내 소켓의 영역
  • 48. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐
  • 49. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐
  • 50. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 A B C
  • 51. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 A B C
  • 52. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 A B C
  • 53. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … A B C
  • 54. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … A B C
  • 55. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … 모니터링 A B C
  • 56. 2019 iFunFactory Dev Day 20 게임 서버를 바라보는 다른 관점 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … 모니터링 운영 A B C
  • 57. 2019 iFunFactory Dev Day 21 아이펀 엔진의 지원 범위 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … 모니터링 운영 A B C
  • 58. 2019 iFunFactory Dev Day 21 아이펀 엔진의 지원 범위 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … 모니터링 운영
  • 59. 2019 iFunFactory Dev Day 21 아이펀 엔진의 지원 범위 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … 모니터링 운영 패킷타입 핸들러 LOGIN H1 MOVE H2 … …
  • 60. 2019 iFunFactory Dev Day 21 아이펀 엔진의 지원 범위 소켓 입력 큐 게임 로직 처리 큐 DB 처리 큐 소켓 출력 큐 … 모니터링 운영 패킷타입 핸들러 LOGIN H1 MOVE H2 … …
  • 61. 2019 iFunFactory Dev Day 22 전체 다 만들기 vs. 솔루션 사용하기 1. 전체 다 만들기의 장점 ✓ 신나고 재미있음 ✓ 조직 내 기술 기반을 쌓는데 도움이 됨
  • 62. 2019 iFunFactory Dev Day 22 전체 다 만들기 vs. 솔루션 사용하기 1. 전체 다 만들기의 장점 ✓ 신나고 재미있음 ✓ 조직 내 기술 기반을 쌓는데 도움이 됨 2. 전체 다 만들기의 단점 ✓ 해야 될 것이 많음 (소켓 프로그래밍이 전부가 아님) ✓ 상당히 많은 프로그래밍 인력이 필요
  • 63. 2019 iFunFactory Dev Day 22 전체 다 만들기 vs. 솔루션 사용하기 1. 전체 다 만들기의 장점 ✓ 신나고 재미있음 ✓ 조직 내 기술 기반을 쌓는데 도움이 됨 2. 전체 다 만들기의 단점 ✓ 해야 될 것이 많음 (소켓 프로그래밍이 전부가 아님) ✓ 상당히 많은 프로그래밍 인력이 필요 3. 조언 ✓ 적합한 선택은 상황에 따라 다름 그러나 프로그래머 개인의 지적 호기심 때문에 하는 것은 아니어야 함 ✓ 서버는 게임의 실패를 막아줄 수는 있지만, 성공을 보장하지는 않음 게임의 성공은 창의적인 콘텐츠와 빠른 시장 진입에 더 영향을 받음
  • 64. 2019 iFunFactory Dev Day 23 아이펀 엔진 지원 개발 환경 실행 OS 개발 Tool (원격 개발 OS) 개발 언어 Linux1) Clion2), Vim, Mono Develop3) C++, C# Linux1) VS Code (Win, Mac, Linux) C++, C# Linux1) VS 2015 (Win) C++ Windows VS 2017 C++ 1) Ubuntu (16.04, 18.04), Centos 7 2) C++ 만 지원 3) C# 만 지원
  • 65. 2019 iFunFactory Dev Day 23 아이펀 엔진 지원 개발 환경 실행 OS 개발 Tool (원격 개발 OS) 개발 언어 Linux1) Clion2), Vim, Mono Develop3) C++, C# Linux1) VS Code (Win, Mac, Linux) C++, C# Linux1) VS 2015 (Win) C++ Windows VS 2017 C++ 1) Ubuntu (16.04, 18.04), Centos 7 2) C++ 만 지원 3) C# 만 지원
  • 66. 2019 iFunFactory Dev Day 23 아이펀 엔진 지원 개발 환경 실행 OS 개발 Tool (원격 개발 OS) 개발 언어 Linux1) Clion2), Vim, Mono Develop3) C++, C# Linux1) VS Code (Win, Mac, Linux) C++, C# Linux1) VS 2015 (Win) C++ Windows VS 2017 C++ 1) Ubuntu (16.04, 18.04), Centos 7 2) C++ 만 지원 3) C# 만 지원
  • 67. 2019 iFunFactory Dev Day 24 이후 세션에서는… 1. 아이펀 엔진 개발 환경 ✓ macOS / VS Code / 원격 Linux 서버 / C++ ✓ Windows / VS 2017 / C++
  • 68. 2019 iFunFactory Dev Day 25 이후 세션에서는… 1. MO 게임 콘텐츠 구현 ✓ 로그인, 이동, 공격, 인벤토리 ✓ 서버간 이동 ✓ 채팅
  • 69. 2019 iFunFactory Dev Day 25 이후 세션에서는… 1. MO 게임 콘텐츠 구현 ✓ 로그인, 이동, 공격, 인벤토리 ✓ 서버간 이동 ✓ 채팅 2. 디버깅 / 프로파일링 ✓ Dump 분석 ✓ 성능 병목 분석
  • 70. 2019 iFunFactory Dev Day 26 이후 세션에서는… 1. 운영툴 ✓ 운영을 위한 REST API 추가 ✓ 아이펀 디플로이 (운영툴) 에서 운영 기능 활성화 하기
  • 71. 경기도 성남시 분당구 대왕판교로 660, 유스페이스1 B동 606호 info@ifunfactory.com 070-4923-6566www.ifunfactory.com