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

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

  • 1.
    HACKER 세미나 - 주제1: 게임개발? - 주제2 : 빅데이터 시스템 구조 - 주제가 섞여 있어 제목은 망했어요. 1
  • 2.
    박경재 • 95학번(20년 전!),99년 졸업 • HACKER 9기 (97년 회장) • 검색엔진, 빅데이터 • 병특 포함 3번 이직 후 NCSOFT에서 9년 2/37
  • 3.
  • 4.
    먼저, 저한테 궁금한거 • 질문 없으면 제가 질문합니다. 4/37
  • 5.
    주의! • 대기업(이죠?) 직원으로서관점임 • 스타트 업을 생각하는 분에게는 별 도움 안됨 • 개인적인 의견이 많음 • 이해를 돕기 위해 현실을 왜곡한 부분도 있음(…) 5/37
  • 6.
    게임회사 다닌다니까 들어오는질문 “게임 개발 어떻게 해요?” “템 좀 줘” 6/37
  • 7.
    게임회사 다닌다니까 들어오는질문 • 몰라요. • 전 게임개발 안해요. • 엔씨에도 게임개발 안하는 개발자 많아요. • 그래도, 아는 수준은 7/37
  • 8.
  • 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 by1 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.
  • 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
  • 35.
  • 36.
    하고 싶은 말 •C++, Java 둘 중에 하나는 잘하세요. • 자료구조, 알고리즘 열심히 하세요. • Windows, Linux 편식하지 마세요. • 다양하게 해보세요. 36/37
  • 37.