Python으로 쿠키런 운영하기_ver최종.key

Similar documents
[로플랫]표준상품소개서_(1.042)

Web Scraper in 30 Minutes 강철

2

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - chap01-C언어개요.pptx

2

SBR-100S User Manual

<35B9DAC1F6BCF62CC0CCBFECC8C62CB7F9B5BFBCAE2E687770>


슬라이드 1

데이터 시각화

1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

내지(교사용) 4-6부

희망브리지

마켓온_제품소개서_ key

슬라이드 1


i4uNETWORKS_CompanyBrief_ key

holiday webinar 2013 _ Korean webinar order.pptx

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SIGIL 완벽입문

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

<C3D6C0E7C3B528BAB8B5B5C0DAB7E1292D322E687770>

BuzzAd Optimizer Proposal for partner 1

응답하라, 메가스터디 재수를 말한다. Ⅰ. 재수 大 해부 예전에 재수생이라고 하면 성적이 좋지 않아 대학입시에 실패한 학생 이라는 인식이 지배 적이었다. 하지만 최근에는 재수를 목표를 향한 재도전 이라고 긍정적으로 평가하는 경 향이 뚜렷해졌다. 때문에 대학

*2008년1월호진짜

Microsoft Word - src.doc

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

170918_hjk_datayanolja_v1.0.1.

LATEX과 Mendeley를 활용한 문헌 관리 2017년 2월 6일 제1절 서지 관리 프로그램 연구 주제를 찾거나 선행 연구를 조사하는 가장 대표적인 방법이 문헌들을 찾아보는 것이다. 수없이 많은 논문들을 찾게 되고, 이런 논문들을 다운로드한 후 체계적으로 관리할 필

PDF_Compass_32호-v3.pdf

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

슬라이드 1

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

View Licenses and Services (customer)

REP - networkx - 019, JULY 어 있고 Windows 계열도 지원하지만, Winodws OS의 경우 많은 버그를 가지고 있기 때문에 현재 Windows 운영 체제와 정상적으로 호환되는 패키지는 NetworkX 이다. 각 패키지의 종류와 각



슬라이드 1

내지(교사용) 1-3부

<B9CEC1D6C1A4C3A5BFACB1B8BFF82DBBE7B6F7B0FAC1A4C3A5BABDC8A328C6EDC1FD292E687770>

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

_ƯÁý-½ºÆù

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

<B1DDC0B6B1E2B0FCB0FAC0CEC5CDB3DDB0B3C0CEC1A4BAB82E687770>

0.筌≪럩??袁ⓓ?紐껋젾 筌

K-IFRS,. 2013, , 2, 3,.,.. 2

Cloud Friendly System Architecture

로거 자료실

슬라이드 1

H3250_Wi-Fi_E.book

TIMELINE 독창적인 아이템의 완성은, 아프리카TV BJ 활동에서 STATE 6월 팀 빌딩 2013년 10월 카이트창업가재단 투자 0.5억 원 엔젤투자매칭펀드 0.5억 원 노바토 설립 직원 5명 2013년 9명 2014년 1일 평균 메시지 발생 건수 2014년 10

MF Driver Installation Guide

유니티 변수-함수.key

PowerPoint 프레젠테이션

RVC Robot Vaccum Cleaner

웹사이트 운영, 이보다 쉬울 수 없다! Microsoft Azure를 이용한 웹사이트 구축

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

2007년 6월 고2 모의고사 국어,언어 문제.hwp


5...hwp

MySQL-.. 1

À̽ºÆ®¼ÒÇÁÆ®IR_9

고객 카드

ÀÌ·¯´×_³»Áö1-1ÃÖÁ¾

178È£pdf

160322_ADOP 상품 소개서_1.0

<C0E5B7C1BBF328BEEEB8B0C0CCB5E9C0C729202D20C3D6C1BE2E687770>

PowerPoint 프레젠테이션

750 1,500 35

< B5BFBEC6BDC3BEC6BBE E687770>

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

hwp

Week13

wtu05_ÃÖÁ¾

2015년9월도서관웹용

Ä¡¿ì_44p °¡À» 89È£

Index 1. Intro Install Connect Scratch 1.4 (Offline Editor) Scratch 2.0 (Online Editor) Connect f

슬라이드 1

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

iOS5_1±³

ThinkVantage Fingerprint Software

스마트주택용분전반_160331

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

[Brochure] KOR_TunA

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Lab-Buildamatrix Copyright 2018 document created by Introduction PDF 파일다운로드 Machin Learning의두번째랩은 Pandas와 Numpy를활용하여 Rating M

PowerPoint 프레젠테이션

Spring Boot/JDBC JdbcTemplate/CRUD 예제

목 차 Ⅰ. 2013년 성과 및 평가 1 Ⅱ. 2014년 정책 환경과 비전 3 Ⅲ. 2014년 주요업무 추진계획 6 1. 국민 문화체감 확대 6 2. 인문 전통의 재발견 문화기반 핵심 서비스산업 육성 문화가치의 확산 33 Ⅳ. 세부 추진 일정 및

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

Transcription:

2

강연자 소개 이상곤 2009.02~현재 2013.07~2013.08 2013.09~현재 KAIST 전산학과 학사과정 네이버 비즈니스 플랫폼 인턴 데브시스터즈 서버개발팀 3

쿠키런 소개 5,500만 최대 누적 다운로드 1,000만 DAU 한국, 일본, 태국 등 10여개국 다운로드 1위 Top10 다운로드 국가 수 38개국 4

5

01 산타맛 쿠키 보유 유저를 찾아라 산타맛 쿠키? 2013년 황금종 크리스마스 이벤트 보상으로 지급된 쿠키 을 300개 모아야 얻을 수 있는 쿠키 7

01 산타맛 쿠키 보유 유저를 찾아라 이미 산타맛 쿠키를 가진 유저가? 업데이트 준비가 거의 완료된 상황 뒤늦게 생각난 어뷰저의 존재 어뷰징으로 이미 산타맛 쿠키를 가진 유저가 있다 이전에 로그 분석을 통해 산타맛 쿠키를 가진 어뷰저가 있다는 사실을 알았음 어뷰저들을 영구 정지 or 산타맛 쿠키만 삭제? 어뷰저들이 가진 산타맛 쿠키를 삭제하는 방법을 선택 8

01 산타맛 쿠키 보유 유저를 찾아라 전략 1 2 일단 산타맛 쿠키 보유 유저의 목록을 뽑아내자 Couchbase View를 사용하여 산타맛 쿠키 보유 유저의 목록을 추출 약 300명이 산타맛 쿠키를 보유함을 확인 Couchbase 웹 콘솔로 한 명씩 처리하긴 너무 많고.. 9

01 산타맛 쿠키 보유 유저를 찾아라 전략 3 4 5 Python에 Couchbase 라이브러리가 있음 Couchbase View의 쿼리 결과를 Python에서 iterator로 가져올 수 있음 쿼리 결과를 코드로 직접 가져오니 실수할 위험도 적음 쿼리된 회원번호로 사용자의 인벤토리를 가져오자 사용자 정보는 Couchbase에 JSON 형태로 저장되어 있음 Python에서 dict type으로 가져오므로 사용자 정보를 바로 수정 가능 인벤토리를 검색하여 직접 산타맛 쿠키를 제거 if 사용자정보[인벤토리][아이템 번호] == 산타맛 쿠키: 산타맛 쿠키 제거 10

01 산타맛 쿠키 보유 유저를 찾아라 속전속결 1시간 안에 모든 산타맛 쿠키 제거 성공 약 300명의 어뷰저로부터 산타맛 쿠키 제거 간단한 일이지만 1개씩 지우자니 애매하고.. 300개의 산타맛 쿠키 1개씩 지우기 vs 30줄의 스크립트 작성하기 자동화시킬 수 있는 스크립트를 만들자. 그런데 어떤 언어로? 다른 언어를 사용했더라면 이렇게 쉽고 빠르게 해결할 수 있었을까? $ pip install couchbase 11

02 Celery를 이용하여 10분만에 전체 사용자 푸시보내기 쿠키런 전체 사용자에게 푸시를 보내자 유효한 푸시 토큰의 갯수 약 1,500만 개 (쿠키런 for KAKAO 기준) 짧은 시간 안에 푸시가 모든 사용자들에게 전송되어야 함 13

14

02 Celery를 이용하여 10분만에 전체 사용자 푸시보내기 계획 1 Celery를 사용 여러 개의 worker로 동시에 작업을 처리하도록 2 웹으로 만들어서 접근이 편리하도록 Django로 구현된 기존의 운영툴에서 사용할 수 있도록 3 정해진 시간에 푸시 전송을 예약할 수 있도록 Celery task가 실행될 시간을 게임 운영자가 설정할 수 있도록 15

16

02 Celery를 이용하여 10분만에 전체 사용자 푸시보내기 그리고 만들었다 웹에서 메세지 내용과 전송시간을 입력하면 task가 예약됨 AWS EC2 인스턴스를 2배로 늘려주는 task 1개 푸시를 보내는 task를 생성해주는 task 1개 Redis Task: Double EC2 instances Task: 푸시를 보내는 task들을 생성 17

02 Celery를 이용하여 10분만에 전체 사용자 푸시보내기 AWS EC2 Instance 수를 2배로 사용자 급증에 대비하기 위해 게임 서버의 수를 늘림 지금 접속하시면 크리스탈 100개를 드려요 라는 푸시가 전송된다면? 푸시 전송이 시작되기 전에 미리 늘려두어야 함 푸시가 전송되기 10분 전에 task를 실행 boto를 사용 현재 구동되고 있는 서버의 수를 파악하여, 동수를 더 실행시킴 18

02 Celery를 이용하여 10분만에 전체 사용자 푸시보내기 푸시를 보내는 task를 등록 푸시 토큰을 1000개씩 잘라서, 실제로 푸시를 보내는 task를 등록하는 역할 OS별로 푸시 토큰을 구분하여 GCM, APNs 따로 보내도록 함 푸시를 Redis Worker 보내는 task는 worker들이 바로 가져가서 처리하는 방식 Task: GCM Task: GCM Task: 푸시를 보내는 task들을 생성 Task: GCM Task: GCM Task: GCM Task: APNs Task: GCM Task: APNs Task: APNs Task: APNs 19

02 Celery를 이용하여 10분만에 전체 사용자 푸시보내기 성과 10분만에 약 1,500만 개의 푸시 전송 가능 Celery worker 수를 늘리고, 좋은 EC2 인스턴스를 사용하면 성능 향상 가능 서버 장애를 일으키지 않는 안전한 푸시 전송 지금 접속하시면 크리스탈 100개를 드려요 라는 푸시가 10분만에 전체 사용자에게 전송된다면? 무엇보다 게임 서버의 안정성이 우선 서버 개발자 없이도 푸시 전송 가능 메세지와 전송 시간만 입력하면 누구든 전송 가능 20

03 게임 데이터 관리, 단번에 해결하기 당시 상황 엑셀 게임 1. 2. 3. 4. 파일로 관리되는 게임 데이터 데이터의 수정이 필요할 경우 엑셀 파일에서 값 수정 DB 접속툴로 MySQL에 접속 해당하는 테이블에 엑셀 시트를 반영 이 과정을 모든 엑셀 시트에 대해 반복 22

03 게임 데이터 관리, 단번에 해결하기 이거 계속 해야 하나요..? 데이터시트 반영은 단순 반복 작업 반영해야할 시트가 늘어날수록 작업량 증가 데이터를 잘못 넣었네.. 수동으로 넣다보니 실수할 가능성 증가 그렇다면 자동화할 수 있는 툴을 만들자 시간도 절약하고 실수도 줄이고 23

03 게임 데이터 관리, 단번에 해결하기 사전 조사 요구 사항을 파악 엑셀 파일의 값을 MySQL에 적용시킬 수 있어야 함 MySQL에 저장된 값을 엑셀 파일로 뽑아낼 수 있어야 함 최대한 사용하기 쉽게 만들자 서버 개발자의 도움없이 자유롭게 데이터를 관리할 수 있도록 많은 시트를 한꺼번에 넣을 수 있도록 엑셀 파일을 다루는 Python 라이브러리가 있을까? OpenPyXL 24

03 게임 데이터 관리, 단번에 해결하기 그리고 만들었다 Django로 구현된 기존 운영툴에 붙임 웹으로 운영되므로 누구나 쉽게 이용 가능 25

03 게임 데이터 관리, 단번에 해결하기 Import 엑셀 시트의 내용을 MySQL에 반영 Diff를 출력 엑셀 파일을 브라우저에 끌어다 놓으면 DB와 시트의 차이점을 보여준다. Git의 diff 명령에서 착안 26

03 게임 데이터 관리, 단번에 해결하기 운영툴이 시트 이름을 구분할 수 있다? 대부분의 시트 이름은 Django model명과 동일 일부 시트의 경우 model별로 시트 이름에 대한 정의가 필요 하나의 model에 엑셀 시트가 여러 개 들어가는 경우 부득이하게 시트명을 바꿀 수 없는 경우 27

28

29

30

03 게임 데이터 관리, 단번에 해결하기 DB 스키마가 변경되었어요 어떡하죠? DB 스키마 변경에도 유연한 대처가 가능 column이 추가되었을 때 model에 해당 column을 정의만 해주면 끝 table이 추가되었을 때 새로운 model을 정의만 해주면 끝 inspectdb를 사용하면 DB로부터 Django model을 쉽게 만들 수 있음 $ python manage.py inspectdb 31

03 게임 데이터 관리, 단번에 해결하기 성과 데이터시트를 한땀 한땀 올리는 업무 프로세스, 더 이상은.. 몇번의 클릭만으로 가능해진 데이터시트 반영 한눈에 들어오는 diff 자유의 몸이 된 서버개발자 데이터 관리자가 직접 DB에 데이터를 반영할 수 있게 됨 불필요한 커뮤니케이션의 감소로 업무 효율 증가 내친김에 DB와 DB도 비교해서 올릴 수 있게 하자 테스트 환경에서 확인이 끝난 데이터를 production 환경에 바로 올릴 수 있도록 Diff 구하는 알고리즘을 똑같이 적용, DB와 DB 비교에 활용 32

Python이 아니었다면? 1년차 개발자도 Production 환경에서 개발할 수 있다 간단한 일부터 까다로운 일까지 급한 불을 끌 수 있는 일회성 스크립트 전체 사용자를 주무르는 배치 서비스 업무 프로세스를 180도 바꾸는 운영툴 이 모든 일을 Python으로 빠르게 많은 일들을 가능하게 해준 Python 33

WE ARE HIRING career@devsisters.com 최고의 인재들 34

WE ARE HIRING career@devsisters.com 흔한 게임 회사의 세끼 식사 35