SlideShare a Scribd company logo
1 of 37
HACKER 세미나
- 주제1 : 게임개발?
- 주제2 : 빅데이터 시스템 구조
- 주제가 섞여 있어 제목은 망했어요.
1
박경재
• 95학번(20년 전!), 99년 졸업
• HACKER 9기 (97년 회장)
• 검색엔진, 빅데이터
• 병특 포함 3번 이직 후 NCSOFT에서 9년
2/37
먼저, 저한테 궁금한 거
3/37
먼저, 저한테 궁금한 거
• 질문 없으면 제가 질문합니다.
4/37
주의!
• 대기업(이죠?) 직원으로서 관점임
• 스타트 업을 생각하는 분에게는 별 도움 안됨
• 개인적인 의견이 많음
• 이해를 돕기 위해 현실을 왜곡한 부분도 있음(…)
5/37
게임회사 다닌다니까 들어오는 질문
“게임 개발 어떻게 해요?”
“템 좀 줘”
6/37
게임회사 다닌다니까 들어오는 질문
• 몰라요.
• 전 게임개발 안해요.
• 엔씨에도 게임개발 안하는 개발자 많아요.
• 그래도, 아는 수준은
7/37
8/37
게임 개발
• 게임 개발? 프로그래밍?
• 게임 개발
• 기획 + 사운드 + 그래픽 + 시네마 + 프로그래밍 등
• 프로그래밍 = 여러분이 생각하는 그것
9/37
게임 개발
• 그래도 프로그래머가 게임 개발을 많이 한다.
• 촬영기기만 다룰 줄 알면 어떻게든 영화는 나온다.
• 그러나, 어벤져스는 못 만든다.
10/37
게임 프로그래밍
• 게임 서버
• Windows  리눅스 + Windows
• Visual C++  오픈소스(Java 등) + Visual C++
• SQL Server, Oracle  NoSQL + 오픈소스DB
• 게임 클라이언트
• Windows
• 게임엔진: Unity, Unreal, CryENGINE, …
• 모바일 게임
• Native 로 개발  Unity, Unreal
• Stateless 접속  Stateful 접속
11/37
게임 프로그래밍
• 만드는 것
• World 서버, Lobby 서버, 클라이언트, 게임 빌더 등
• 알아야 될 것
• 수학, 물리, 자료구조, 알고리즘, 네트워크,
• 인공지능, 사운드, 그래픽 등등등
• C/C++, Java, C#, JavaScript, Bash Script
• DB, NoSQL, 오픈소스
12/37
게임 프로그래밍
• 맡은 분야만 잘 알고, 나머지는 대충 알아도 됩니다.
• 근데, 이건 모든 분야가 그래요.
13/37
게임 외 프로그래밍
• 백오피스 : 로그 수집/분석, 빅데이터, 리포트
• 플랫폼 : 계정, 인증, 결재
• 웹 : CMS, Shop , 커뮤니티
• 시스템 관제 : 모니터링, 클라우드
• 보안과 모바일은 기본
• 글로벌과 클라우드는 기본 옵션
• 유료 프로그램에서 오픈소스로 바뀌는 추세
14/37
그럼 이제 본론인 빅데이터
15/37
빅데이터란?
빅 데이터란 기존 데이터베이스 관리도구로 데이
터를 수집, 저장, 관리, 분석할 수 있는 역량을 넘어
서는 대량의 정형 또는 비정형 데이터 집합 및 이
러한 데이터로부터 가치를 추출하고 결과를 분석
하는 기술을 의미한다. (wikipedia)
… 뭐래?
16/37
개발자 입장에서 빅데이터
• Hadoop와 Spark. 그리고 각각의 Echo System
• Echo System (생태계) : 메인 프로그램를 풍족하게 해
주는 확장 프로그램 (이라지만 사실은 빌붙)
• 대부분 Java, Scalar로 구현
• 프로그래밍과 통계 사이  R
• 통계 프로그래밍을 위한 프리 소프트웨어
• Hadoop에서 정제된 데이터 기반으로 분석/모델링
• 빅데이터로 보기에는 …
17/37
어떻게 대용량을 처리하나
• Divide-and-Conquer
• Merge Sort, Quick Sort 같은 방식
• 큰 일(Job)을 작은 일(Task) 여러 개로 나누어서 처리
• 문제의 단순화
• Google 논문
• Google File System(GFS) : 분산 파일 시스템
• Google MapReduce(GMR) : 분산 처리 시스템
• 논문 필독!
• Hadoop : GFS, GMR 클론
18/37
분산 파일 시스템(DFS)
• 하나의 성능 좋은 큰 통합 HDD가 필요했음
• 여러 대의 컴퓨터에 나누어 저장하니 됨
• 장애 문제가 있어 복제 지원
• HDFS(Hadoop Distributed File System)가 있음
• GFS는 비공개
19/37
분산 처리 시스템(MR)
• 분산 저장하고 보니, 분산 처리가 가능해 보임
• 각 컴퓨터가 자신에게 저장된 파일을 처리 (Map)
• 결과를 Merge(Sort) 하면 됨 (Reduce)
• HMR(Hadoop MapReduce)이 있음
• GMR은 비공개
아까 그 놈들
20/37
Hadoop 구성
• 분산 파일 시스템
• NameNode – 파일 목록/블록 관리. Write/Read 스케줄링
• DataNode – 데이터 블록 저장
• 분산 처리 시스템
• JobTracker - Job 목록. Task로 분할. Task 스케줄링
• TaskTracker - Task 실행
• HDD 속도보다 네트워크 속도가 문제
• 기억 안해도 되고, 기억도 안될테니 넘어갑니다.
21/37
무엇을 하는가?
“대용량 비정형 데이터에서 유의미한 데이터 도출”(헉!)
• 데이터 분석/정제
• 직접 할 수도 있으나 효율성이 떨어짐
• 정제하여 R이나 Excel에서 사용
• DB 처럼 사용 : SQL을 MR로 자동 변환
• Transaction 안됨
• 보고서 생성
• 데이터 백업
• 단기~중기 데이터 보관
• 초단기(Real-time)는 메모리DB
• 장기 보관은 DAT(Tape)
22/37
그럼 개발자는 무엇을?
• Hadoop 기반의 시스템 설계/개발/구축
• HMR 프로그래밍
• Hadoop 일부 구조 개선 (회사 상황에 맞게)
• Hadoop 응용 프로그램
• 그리고, 아름다운 디버깅 …
• 분산 처리 환경
• 오픈소스
23/37
예제
• Word Count
• 1단어가 10TB이고, 읽는데 1분 걸린다고 합시다.
word count
jacobs 5
by 3
marc 6
for 2
in 1
collaboration 1
with 1
19분
24/37
예제
word count
jacobs 2
by 1
marc 1
for 1
word count
marc 2
by 1
jacobs 1
in 1
collaboration 1
with 1
word count
marc 3
jacobs 2
for 1
by 1
word count
jacobs 5
by 3
marc 6
for 2
in 1
collaboration 1
with 1
5분
7분
7분
+@
25/37
NC는 이걸로 뭘 하지?
• 게임(리니지,아이온,B&S 등) 데이터 저장 및 분석
• 약 3PB = 3,072 TB = 3,145,728 GB
• Write : 수십~수백억 레코드, TB 단위
• 위험 탐지 : 버그 탐지, 오토 잡기, 작업장 감지
• 고객 응대 : “템이 사라졌어요. 복구해주세요.”
• 보고서 : 직책 높은 분들은 보고서만 봄
26/37
현업 예제 #1
• 버그 탐지
• 평상시와 “많이” 다른 패턴
• 돈/템 복사
• 레어몹 무한 사냥
27/37
현업 예제 #2, 3
28/37
현업 예제 #2
• BOT(자동 사냥 캐릭터) 탐지
• 눈으로 보면 판별이 쉬움  컴퓨터로 어려움
• 그러나, 제제는 확실하고 근거가 있어야만 가능
• 자기 자신이 자신과 매우 유사함(?!)
29/37
현업 예제 #3
• 작업장 탐지
• 작업장 : 오토 + 배후 캐릭터
• 끼리 끼리 놀고 있음
• 관계 네트워크 (그래프) 분석 및 시각화
이은조, R을 이용한 게임 데이터 분석, NCSOFT, 2012
30/37
이은조, R을 이용한 게임 데이터 분석, NCSOFT, 2012
31/37
이은조, R을 이용한 게임 데이터 분석, 2012
32/37
어떻게 하는가?
• Java로 MapReduce 프로그램 작성
• 최근에는 스크립트 언어(hive, pig 등)로 작성
• MR로 정제된 데이터를 R로 분석/모델링
• 회귀분석, 자기 상관 분석, 네트워크 분석, 그래프 클러스
터링, …
• 도메인(게임)과 데이터에 대한 깊은 이해 필요
MRBigData
정제된
데이터
R or Excel
자주
가끔
33/37
아까 잠시 언급한 Spark은?
• Hadoop은 Disk 기반의 분산 처리
• Spark은 Memory 기반의 분산 처리
• RAM을 ROM 처럼 사용!
• 최근 대세 타고 있음
34/37
Q&A
35/37
하고 싶은 말
• C++, Java 둘 중에 하나는 잘하세요.
• 자료구조, 알고리즘 열심히 하세요.
• Windows, Linux 편식하지 마세요.
• 다양하게 해보세요.
36/37
끝
37/37

More Related Content

Viewers also liked

3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)SeongWan Kim
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정abapier
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2진상 문
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash권 태혁
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출hongsungbock
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체Mark Choi
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉MinGeun Park
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비SeungMin Yang
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and renderingJaeHong Park
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예zupet
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2진상 문
 
게임개발사원이되자
게임개발사원이되자게임개발사원이되자
게임개발사원이되자Yggdrasil610
 
Chapter 2, 선형 변환과 행렬 2/2
Chapter 2, 선형 변환과 행렬 2/2Chapter 2, 선형 변환과 행렬 2/2
Chapter 2, 선형 변환과 행렬 2/2Thisisone Lee
 
02.선형변환과 행렬
02.선형변환과 행렬02.선형변환과 행렬
02.선형변환과 행렬JaeHong Park
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발SeongWan Kim
 

Viewers also liked (20)

3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2
 
투영 공식
투영 공식투영 공식
투영 공식
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and rendering
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
 
게임개발사원이되자
게임개발사원이되자게임개발사원이되자
게임개발사원이되자
 
Chapter 2, 선형 변환과 행렬 2/2
Chapter 2, 선형 변환과 행렬 2/2Chapter 2, 선형 변환과 행렬 2/2
Chapter 2, 선형 변환과 행렬 2/2
 
02.선형변환과 행렬
02.선형변환과 행렬02.선형변환과 행렬
02.선형변환과 행렬
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발
 

Similar to 2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)

NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
Spark machine learning & deep learning
Spark machine learning & deep learningSpark machine learning & deep learning
Spark machine learning & deep learninghoondong kim
 
100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning Systemhoondong kim
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기ChangKyu Song
 
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & SparkDeep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Sparkhoondong kim
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처hoondong kim
 
Big Data Overview
Big Data OverviewBig Data Overview
Big Data OverviewKeeyong Han
 
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기산동네 게임 DBA 이야기
산동네 게임 DBA 이야기병기 홍
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
Things Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindThings Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindDataya Nolja
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
iris solution_overview_for_bigdata
iris solution_overview_for_bigdatairis solution_overview_for_bigdata
iris solution_overview_for_bigdatamobigen
 
E-commerce BigData Scale AI Journey
E-commerce BigData Scale AI JourneyE-commerce BigData Scale AI Journey
E-commerce BigData Scale AI Journeyhoondong kim
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Jeong-gyu Kim
 
Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)SuHyun Jeon
 
2020년 3월 7일 개발 이야기 정리
2020년 3월 7일 개발 이야기 정리2020년 3월 7일 개발 이야기 정리
2020년 3월 7일 개발 이야기 정리Jay Park
 
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106SangHoon Lee
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기수보 김
 

Similar to 2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재) (20)

NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
Spark machine learning & deep learning
Spark machine learning & deep learningSpark machine learning & deep learning
Spark machine learning & deep learning
 
100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & SparkDeep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
Deep learning text NLP and Spark Collaboration . 한글 딥러닝 Text NLP & Spark
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
Hadoop발표자료
Hadoop발표자료Hadoop발표자료
Hadoop발표자료
 
Big Data Overview
Big Data OverviewBig Data Overview
Big Data Overview
 
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기산동네 게임 DBA 이야기
산동네 게임 DBA 이야기
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
Things Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindThings Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in Mind
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
iris solution_overview_for_bigdata
iris solution_overview_for_bigdatairis solution_overview_for_bigdata
iris solution_overview_for_bigdata
 
E-commerce BigData Scale AI Journey
E-commerce BigData Scale AI JourneyE-commerce BigData Scale AI Journey
E-commerce BigData Scale AI Journey
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
 
Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)
 
2020년 3월 7일 개발 이야기 정리
2020년 3월 7일 개발 이야기 정리2020년 3월 7일 개발 이야기 정리
2020년 3월 7일 개발 이야기 정리
 
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
 

2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)

  • 1. HACKER 세미나 - 주제1 : 게임개발? - 주제2 : 빅데이터 시스템 구조 - 주제가 섞여 있어 제목은 망했어요. 1
  • 2. 박경재 • 95학번(20년 전!), 99년 졸업 • HACKER 9기 (97년 회장) • 검색엔진, 빅데이터 • 병특 포함 3번 이직 후 NCSOFT에서 9년 2/37
  • 4. 먼저, 저한테 궁금한 거 • 질문 없으면 제가 질문합니다. 4/37
  • 5. 주의! • 대기업(이죠?) 직원으로서 관점임 • 스타트 업을 생각하는 분에게는 별 도움 안됨 • 개인적인 의견이 많음 • 이해를 돕기 위해 현실을 왜곡한 부분도 있음(…) 5/37
  • 6. 게임회사 다닌다니까 들어오는 질문 “게임 개발 어떻게 해요?” “템 좀 줘” 6/37
  • 7. 게임회사 다닌다니까 들어오는 질문 • 몰라요. • 전 게임개발 안해요. • 엔씨에도 게임개발 안하는 개발자 많아요. • 그래도, 아는 수준은 7/37
  • 9. 게임 개발 • 게임 개발? 프로그래밍? • 게임 개발 • 기획 + 사운드 + 그래픽 + 시네마 + 프로그래밍 등 • 프로그래밍 = 여러분이 생각하는 그것 9/37
  • 10. 게임 개발 • 그래도 프로그래머가 게임 개발을 많이 한다. • 촬영기기만 다룰 줄 알면 어떻게든 영화는 나온다. • 그러나, 어벤져스는 못 만든다. 10/37
  • 11. 게임 프로그래밍 • 게임 서버 • Windows  리눅스 + Windows • Visual C++  오픈소스(Java 등) + Visual C++ • SQL Server, Oracle  NoSQL + 오픈소스DB • 게임 클라이언트 • Windows • 게임엔진: Unity, Unreal, CryENGINE, … • 모바일 게임 • Native 로 개발  Unity, Unreal • Stateless 접속  Stateful 접속 11/37
  • 12. 게임 프로그래밍 • 만드는 것 • World 서버, Lobby 서버, 클라이언트, 게임 빌더 등 • 알아야 될 것 • 수학, 물리, 자료구조, 알고리즘, 네트워크, • 인공지능, 사운드, 그래픽 등등등 • C/C++, Java, C#, JavaScript, Bash Script • DB, NoSQL, 오픈소스 12/37
  • 13. 게임 프로그래밍 • 맡은 분야만 잘 알고, 나머지는 대충 알아도 됩니다. • 근데, 이건 모든 분야가 그래요. 13/37
  • 14. 게임 외 프로그래밍 • 백오피스 : 로그 수집/분석, 빅데이터, 리포트 • 플랫폼 : 계정, 인증, 결재 • 웹 : CMS, Shop , 커뮤니티 • 시스템 관제 : 모니터링, 클라우드 • 보안과 모바일은 기본 • 글로벌과 클라우드는 기본 옵션 • 유료 프로그램에서 오픈소스로 바뀌는 추세 14/37
  • 15. 그럼 이제 본론인 빅데이터 15/37
  • 16. 빅데이터란? 빅 데이터란 기존 데이터베이스 관리도구로 데이 터를 수집, 저장, 관리, 분석할 수 있는 역량을 넘어 서는 대량의 정형 또는 비정형 데이터 집합 및 이 러한 데이터로부터 가치를 추출하고 결과를 분석 하는 기술을 의미한다. (wikipedia) … 뭐래? 16/37
  • 17. 개발자 입장에서 빅데이터 • Hadoop와 Spark. 그리고 각각의 Echo System • Echo System (생태계) : 메인 프로그램를 풍족하게 해 주는 확장 프로그램 (이라지만 사실은 빌붙) • 대부분 Java, Scalar로 구현 • 프로그래밍과 통계 사이  R • 통계 프로그래밍을 위한 프리 소프트웨어 • Hadoop에서 정제된 데이터 기반으로 분석/모델링 • 빅데이터로 보기에는 … 17/37
  • 18. 어떻게 대용량을 처리하나 • Divide-and-Conquer • Merge Sort, Quick Sort 같은 방식 • 큰 일(Job)을 작은 일(Task) 여러 개로 나누어서 처리 • 문제의 단순화 • Google 논문 • Google File System(GFS) : 분산 파일 시스템 • Google MapReduce(GMR) : 분산 처리 시스템 • 논문 필독! • Hadoop : GFS, GMR 클론 18/37
  • 19. 분산 파일 시스템(DFS) • 하나의 성능 좋은 큰 통합 HDD가 필요했음 • 여러 대의 컴퓨터에 나누어 저장하니 됨 • 장애 문제가 있어 복제 지원 • HDFS(Hadoop Distributed File System)가 있음 • GFS는 비공개 19/37
  • 20. 분산 처리 시스템(MR) • 분산 저장하고 보니, 분산 처리가 가능해 보임 • 각 컴퓨터가 자신에게 저장된 파일을 처리 (Map) • 결과를 Merge(Sort) 하면 됨 (Reduce) • HMR(Hadoop MapReduce)이 있음 • GMR은 비공개 아까 그 놈들 20/37
  • 21. Hadoop 구성 • 분산 파일 시스템 • NameNode – 파일 목록/블록 관리. Write/Read 스케줄링 • DataNode – 데이터 블록 저장 • 분산 처리 시스템 • JobTracker - Job 목록. Task로 분할. Task 스케줄링 • TaskTracker - Task 실행 • HDD 속도보다 네트워크 속도가 문제 • 기억 안해도 되고, 기억도 안될테니 넘어갑니다. 21/37
  • 22. 무엇을 하는가? “대용량 비정형 데이터에서 유의미한 데이터 도출”(헉!) • 데이터 분석/정제 • 직접 할 수도 있으나 효율성이 떨어짐 • 정제하여 R이나 Excel에서 사용 • DB 처럼 사용 : SQL을 MR로 자동 변환 • Transaction 안됨 • 보고서 생성 • 데이터 백업 • 단기~중기 데이터 보관 • 초단기(Real-time)는 메모리DB • 장기 보관은 DAT(Tape) 22/37
  • 23. 그럼 개발자는 무엇을? • Hadoop 기반의 시스템 설계/개발/구축 • HMR 프로그래밍 • Hadoop 일부 구조 개선 (회사 상황에 맞게) • Hadoop 응용 프로그램 • 그리고, 아름다운 디버깅 … • 분산 처리 환경 • 오픈소스 23/37
  • 24. 예제 • Word Count • 1단어가 10TB이고, 읽는데 1분 걸린다고 합시다. word count jacobs 5 by 3 marc 6 for 2 in 1 collaboration 1 with 1 19분 24/37
  • 25. 예제 word count jacobs 2 by 1 marc 1 for 1 word count marc 2 by 1 jacobs 1 in 1 collaboration 1 with 1 word count marc 3 jacobs 2 for 1 by 1 word count jacobs 5 by 3 marc 6 for 2 in 1 collaboration 1 with 1 5분 7분 7분 +@ 25/37
  • 26. NC는 이걸로 뭘 하지? • 게임(리니지,아이온,B&S 등) 데이터 저장 및 분석 • 약 3PB = 3,072 TB = 3,145,728 GB • Write : 수십~수백억 레코드, TB 단위 • 위험 탐지 : 버그 탐지, 오토 잡기, 작업장 감지 • 고객 응대 : “템이 사라졌어요. 복구해주세요.” • 보고서 : 직책 높은 분들은 보고서만 봄 26/37
  • 27. 현업 예제 #1 • 버그 탐지 • 평상시와 “많이” 다른 패턴 • 돈/템 복사 • 레어몹 무한 사냥 27/37
  • 28. 현업 예제 #2, 3 28/37
  • 29. 현업 예제 #2 • BOT(자동 사냥 캐릭터) 탐지 • 눈으로 보면 판별이 쉬움  컴퓨터로 어려움 • 그러나, 제제는 확실하고 근거가 있어야만 가능 • 자기 자신이 자신과 매우 유사함(?!) 29/37
  • 30. 현업 예제 #3 • 작업장 탐지 • 작업장 : 오토 + 배후 캐릭터 • 끼리 끼리 놀고 있음 • 관계 네트워크 (그래프) 분석 및 시각화 이은조, R을 이용한 게임 데이터 분석, NCSOFT, 2012 30/37
  • 31. 이은조, R을 이용한 게임 데이터 분석, NCSOFT, 2012 31/37
  • 32. 이은조, R을 이용한 게임 데이터 분석, 2012 32/37
  • 33. 어떻게 하는가? • Java로 MapReduce 프로그램 작성 • 최근에는 스크립트 언어(hive, pig 등)로 작성 • MR로 정제된 데이터를 R로 분석/모델링 • 회귀분석, 자기 상관 분석, 네트워크 분석, 그래프 클러스 터링, … • 도메인(게임)과 데이터에 대한 깊은 이해 필요 MRBigData 정제된 데이터 R or Excel 자주 가끔 33/37
  • 34. 아까 잠시 언급한 Spark은? • Hadoop은 Disk 기반의 분산 처리 • Spark은 Memory 기반의 분산 처리 • RAM을 ROM 처럼 사용! • 최근 대세 타고 있음 34/37
  • 36. 하고 싶은 말 • C++, Java 둘 중에 하나는 잘하세요. • 자료구조, 알고리즘 열심히 하세요. • Windows, Linux 편식하지 마세요. • 다양하게 해보세요. 36/37