SlideShare a Scribd company logo
1 of 79
Download to read offline
라인 글로벌 게임 서버 개발하기
라인과 함께한 쿠키런 글로벌 입성기
Who am I?
Devsisters
• Server Team
• Senior Software Engineer
• Development
• 쿠키런 for Kakao Server
• LINE COOKIERUN Server 개발 총괄
박주홍
• KAIST
• 수리과학과
2009 - OvenBreak 시리즈
미국, 캐나다, 영국 등 20개 국가 애플 앱스토어 무료 1위
2013 - 쿠키런 for Kakao
대한민국 단일 게임 다운로드 순위 1위 기록
대한민국 단일 게임 매출 순위 3위 기록
일일 게임 이용자수(DAU) 300만
2014 – LINE COOKIERUN
글로벌 다운로드 5000만
글로벌 일일 이용자수(DAU) 800만
총 21개 국가 애플 앱 스토어 매출 10위권
+
그때 그 시절
호랑이가 담배 피던 1년 전으로
젖과 꿀이 흐르는 라인
source: undertheradar.co.kr
개발을 시작하려던 당시
• 겨울이야기
• 쿠키런 for Kakao 겨울이야기 출시로
한참 바쁘던 시기
• DevOps
• 클라우드 위에서 직접 개발하고 관리
• 대한민국
• 한국 서비스에 주력
글로벌로 가는 거야!
야근과 함께!
우리의 미션
우리의 미션
다국어 다국가
우리의 미션
다국어 다국가
ko KR
우리의 미션
다국어 다국가
ko KR
ko_KR
Device Locale 에 기반한
다국어 번역, 다국가 지원
오픈 준비 완료!
젖과 꿀이 흐르는 라인의 세계로!
오픈 첫날
• 신나는 모니터링
• 전세계에 사용자의 접속 시작
• 접속 로그에 남았던 pt_BR, en_GB 같은 다소 생소했던 Locale
오픈 첫날
• 신나는 모니터링
• 전세계에 사용자의 접속 시작
• 접속 로그에 남았던 pt_BR, en_GB 같은 다소 생소했던 Locale
• 그러던 와중 눈에 띄던 에러로그
오픈 첫날
• 신나는 모니터링
• 전세계에 사용자의 접속 시작
• 접속 로그에 남았던 pt_BR, en_GB 같은 다소 생소했던 Locale
• 그러던 와중 눈에 띄던 에러로그
Invalid locale format: en_150
en_150?
• iOS 에서 언어를 영어, 지역을 유럽으로 하면 전송되던 Locale
• 이외에도 Arab World(ar_001) 같은 Locale 도 전송 확인
• Kakao 운영에서 확인했던 Locale 보다 더 다양한 Locale
en_150?
• iOS 에서 언어를 영어, 지역을 유럽으로 하면 전송되던 Locale
• 이외에도 Arab World(ar_001) 같은 Locale 도 전송 확인
• Kakao 운영에서 확인했던 Locale 보다 더 다양한 Locale
• 그러나 이 정도면 아주 양반
en_150?
• iOS 에서 언어를 영어, 지역을 유럽으로 하면 전송되던 Locale
• 이외에도 Arab World(ar_001) 같은 Locale 도 전송 확인
• Kakao 운영에서 확인했던 Locale 보다 더 다양한 Locale
• 그러나 이 정도면 아주 양반
Invalid locale format: ja?!
ja?!
•언어 설정 밖에 없는 안드로이드
• 국가정보는 어쩔???
•제조사별로 다르게 전송되던 로케일
• ja, ja_JP, ja_JP_POSIX
ja?!
•언어 설정 밖에 없는 안드로이드
• 국가정보는 어쩔???
•제조사별로 다르게 전송되던 로케일
• ja, ja_JP, ja_JP_POSIX
이것으로는 안 된다는 결론
그런데 왜 Device Locale 을 믿어야 하지?
뭔가 틀린 족보를 베끼고 있는 느낌이랄까…
사용자를 믿어보자!
• 가장 간단하고 직관적인 방법으로 해결
• 사용자가 직접 언어를 선택하도록 변경
• 서비스를 하던 5개 국어
• 서버에서 메시지 및 공지 번역 전송
그렇다면
국가코드도 사용자를 믿으면 되겠지?
냐하하하
국가코드는 조금 다르다
• Localization 에 따라 국가별 이벤트 진행
• 글로벌 서비스 Localized 이벤트 필수
• 국가코드를 사용자가 설정 할 경우
• 태국사용자가 일본로컬이벤트를 진행
• 믿을 만한 국가코드는 없을까?
국가코드는 조금 다르다
• Localization 에 따라 국가별 이벤트 진행
• 글로벌 서비스 Localized 이벤트 필수
• 국가코드를 사용자가 설정 할 경우
• 태국사용자가 일본로컬이벤트를 진행
• 믿을 만한 국가코드는 없을까?
USIM 정보 활용!
믿을 만한 국가코드
• USIM 카드의 사업자 정보 PLMN-ID
• PLMN-ID = MCC(Mobile Country Code) + MNC(Mobile Network Code)
• OS 에서 MCC 정보를 ISO 3166-1 alpha-2 에 따라 획득
믿을 만한 국가코드
• USIM 카드의 사업자 정보 PLMN-ID
• PLMN-ID = MCC(Mobile Country Code) + MNC(Mobile Network Code)
• OS 에서 MCC 정보를 ISO 3166-1 alpha-2 에 따라 획득
테스트 및 현재까지 사용결과 이상무!
좋아
이제 운영 좀 해볼까?
새로운 쿠키와 미션을 넣어보자
또 다시 1년 전으로
• Google Drive 를 활용한 DB 관리
• 변경 사항 -> Google Sheets -> MySQL
• LINE 데이터 DB 관리에도 적용할 예정
또 다시 1년 전으로
• Google Drive 를 활용한 DB 관리
• 변경 사항 -> Google Sheets -> MySQL
• LINE 데이터 DB 관리에도 적용할 예정
• 보안상 이슈로 사용 금지
오픈 1달 전
• 개발 시간이 극적으로 부족
• SQL 직접 전달
이거야말로 암중암
이것이 말로만 듣던 SQL 지옥인 건가?
운영 툴 개발 - Macaron
• Excel 를 활용한 DB 관리
• 변경 사항 -> Excel -> MySQL
• Excel is Simple
• 서버 개발자의 도움 없이 데이터 반영
Macaron is Simple
Macaron is Simple - Import
1. Excel 에 데이터 반영
2. Drag and Drop 으로 업로드
3. Diff 출력 및 확인
4. Import!
Macaron is Simple - Export
1. Export 할 Table 선택
2. Export!
Macaron is Simple
1. 개발자 도움 없이 데이터 관리
◦ Before (기획팀) 데이터 작성 -> (개발팀) SQL 작성
◦ After (기획팀) Excel 로 직접 데이터 작성
2. 간편한 데이터 확인
◦ Before (개발팀) Select Query, DB dump OR (기획팀) 개발팀과 MySQL 에서 확인
◦ After (기획팀) Excel 에서 직접 확인
3. LINE 과의 협업 프로세스 개선
◦ Before (개발팀) DB 확인 SQL 작성 -> (LINE) SQL 결과 공유 -> (기획팀) 개발팀과 SQL 결과 해석
◦ After (LINE) Table Export -> (기획팀) Excel 에서 직접 확인
이제
평화로운 로그를 감상하면 되겠군요.
집에 가서 와인이나 마셔볼까?
글로벌 Abusing
• 평화로운 로그 사이로 쏟아지는 Abusing 로그
• 글로벌에서 날라오던 Abusing 공격
• 라인 시스템 연동에서 발생한 취약점
source: norse-corp.com
카카오 미션 보상 Crystal 지급
DB Server
0. 초기값 100,False
카카오 미션 보상 Crystal 지급
DB Server
0. 초기값 100,False
1. DB 조회 100,False
1. DB 조회
카카오 미션 보상 Crystal 지급
DB Server
0. 초기값 100,False
1. DB 조회 100,False
2. 미션 보상 200,True
1. DB 조회
2. 미션 보상
카카오 미션 보상 Crystal 지급
DB Server
0. 초기값 100,False
1. DB 조회 100,False
2. 미션 보상 200,True
3. DB 저장 200,True
3. DB 저장
1. DB 조회
2. 미션 보상
카카오 미션 보상 Crystal 지급
DB Server
0. 초기값 100,False
1. DB 조회 100,False
2. 미션 보상 200,True
3. DB 저장 200,True
최종 결과 200,True
3. DB 저장
1. DB 조회
2. 미션 보상
카카오 미션 보상 Crystal 지급 - 에러
DB Server
0. 초기값 100,False
1. DB 조회 100,False
2. 미션 보상 200,True
1. DB 조회
2. 미션 보상
카카오 미션 보상 Crystal 지급 - 에러
3. 에러 발생!!!
DB Server
0. 초기값 100,False
1. DB 조회 100,False
2. 미션 보상 200,True
3. 에러 발생
1. DB 조회
2. 미션 보상
카카오 미션 보상 Crystal 지급 - 에러
3. 에러 발생!!!
DB Server
0. 초기값 100,False
1. DB 조회 100,False
2. 미션 보상 200,True
3. 에러 발생
최종 결과 100,False
1. DB 조회
2. 미션 보상
라인은 전용 금고 존재
지갑이 필요한데 라인 금고나 살까? - 쿠스르
LINE Billing
Crystal 지급/소진
Crystal 조회
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
1. DB 조회
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
2. Crystal 조회
1. DB 조회
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
2. Crystal 조회
1. DB 조회
3. 미션 보상
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
5. DB 저장 True2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
5. DB 저장
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
5. DB 저장 True
최종 결과 True 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
5. DB 저장
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
2. Crystal 조회
1. DB 조회
3. 미션 보상
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
5. 에러 발생2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
5. 에러 발생!!!
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
5. 에러 발생
최종 결과 False 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
5. 에러 발생!!!
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Crystal 지급 200
5. 에러 발생
최종 결과 False 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Crystal 지급
5. 에러 발생!!!
Crystal 은 지급 받았지만 미션은 실패
취약점을 공격한 Abusing
미션 달성
(재 달성)
Billing
Crystal 증가
의도적
에러 발생
미션 실패
취약점을 공격한 Abusing
• Billing Queue 도입
• Billing 요청을 Queue 에 쌓고 최종 반영
미션 달성
(재 달성)
Billing
Crystal 증가
의도적
에러 발생
미션 실패
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
2. Crystal 조회
1. DB 조회
3. 미션 보상
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
5. Crystal 지급 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
5. Crystal 지급
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
5. Crystal 지급 200
6. DB 저장 True
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
6. DB 저장
5. Crystal 지급
LINE 미션 보상 Crystal 지급
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
5. Crystal 지급 200
6. DB 저장 True
최종 결과 True 200
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
6. DB 저장
5. Crystal 지급
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
2. Crystal 조회
1. DB 조회
3. 미션 보상
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
5. 에러 발생
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
5. 에러 발생!!!
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
5. 에러 발생
최종 결과 False 100
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
5. 에러 발생!!!
LINE 미션 보상 Crystal 지급 - 에러
DB Server Billing
0. 초기값 False 100
1. DB 조회 False
2. Crystal 조회 100,False
3. 미션 보상 200,True
4. Queue Push
5. 에러 발생
최종 결과 False 100
2. Crystal 조회
1. DB 조회
3. 미션 보상
4. Queue Push
5. 에러 발생!!!
의도적으로 에러를 발생시키는 Abusing 방지
Abusing 대응
• 의도적으로 에러를 발생시켜 Abusing 하던 이슈 해결
• Billing 서버와의 트랜잭션 유지 중요
• 실제 운영 시 다양한 Abusing 공격
• LINE 팀과 협업하여 로그 분석 등 발 빠른 대응 필요
그리하여
쿠키런 세상에 평화가 찾아오고…
이제 정말 1년 만에 차를 마실 수 있게 되었네요.
그리고 집에도 갈 수 있게 되었어요.
LINE COOKIERUN 회고
•신뢰성 있는 USIM 활용 추천
1. 글로벌 Locale 대응
•투자한 것 이상의 시간 절약
2. 운영 툴 개발
•취약점 반드시 고려하여 설계
3. LINE Billing 연동
WE ARE HIRING!
Thank You!

More Related Content

What's hot

KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들Brian Hong
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈Amazon Web Services Korea
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
Amazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB DayAmazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB DayAmazon Web Services Korea
 
비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro
비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro
비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 IntroAmazon Web Services Korea
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석Amazon Web Services Korea
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAmazon Web Services Korea
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
 
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로Seok-ju Yun
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 

What's hot (20)

KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
Chef 소개
Chef 소개Chef 소개
Chef 소개
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
Amazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB DayAmazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB Day
 
비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro
비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro
비디가 제시하는 AWS Migration 주요 factor - BD 홍성준 이사:: AWS Cloud Track 1 Intro
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 

Viewers also liked

Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016Taehoon Kim
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음nexusz99
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016Taehoon Kim
 
게임기획 포트폴리오 애니팡역기획 배상욱
게임기획 포트폴리오 애니팡역기획 배상욱게임기획 포트폴리오 애니팡역기획 배상욱
게임기획 포트폴리오 애니팡역기획 배상욱SwooBae
 
서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들raccoony
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다Dae Kim
 
일본 게임 시장의 현황과 가능성
일본 게임 시장의 현황과 가능성일본 게임 시장의 현황과 가능성
일본 게임 시장의 현황과 가능성KIM SANG HA
 
퍼즐몬(PuzzleMon) : New Puzzle SNG
퍼즐몬(PuzzleMon) : New Puzzle SNG퍼즐몬(PuzzleMon) : New Puzzle SNG
퍼즐몬(PuzzleMon) : New Puzzle SNGLECLE Corp.
 
톤톤해적단 게임소개서
톤톤해적단 게임소개서톤톤해적단 게임소개서
톤톤해적단 게임소개서DrukHigh
 
원소스멀티유즈모바일게임 컨셉기획서
원소스멀티유즈모바일게임 컨셉기획서원소스멀티유즈모바일게임 컨셉기획서
원소스멀티유즈모바일게임 컨셉기획서s.s kim
 
트레블헌터 개발기획서
트레블헌터 개발기획서트레블헌터 개발기획서
트레블헌터 개발기획서정희 이
 
1 회사및게임소개자료
1 회사및게임소개자료1 회사및게임소개자료
1 회사및게임소개자료정의 윤
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)_ce
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunFactory Inc.
 
영화 예매 프로그램 (DB 설계, 프로그램 연동)
영화 예매 프로그램 (DB 설계, 프로그램 연동)영화 예매 프로그램 (DB 설계, 프로그램 연동)
영화 예매 프로그램 (DB 설계, 프로그램 연동)_ce
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)Lee Sangkyoon (Kay)
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 

Viewers also liked (20)

Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
게임기획 포트폴리오 애니팡역기획 배상욱
게임기획 포트폴리오 애니팡역기획 배상욱게임기획 포트폴리오 애니팡역기획 배상욱
게임기획 포트폴리오 애니팡역기획 배상욱
 
서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
 
일본 게임 시장의 현황과 가능성
일본 게임 시장의 현황과 가능성일본 게임 시장의 현황과 가능성
일본 게임 시장의 현황과 가능성
 
퍼즐몬(PuzzleMon) : New Puzzle SNG
퍼즐몬(PuzzleMon) : New Puzzle SNG퍼즐몬(PuzzleMon) : New Puzzle SNG
퍼즐몬(PuzzleMon) : New Puzzle SNG
 
톤톤해적단 게임소개서
톤톤해적단 게임소개서톤톤해적단 게임소개서
톤톤해적단 게임소개서
 
원소스멀티유즈모바일게임 컨셉기획서
원소스멀티유즈모바일게임 컨셉기획서원소스멀티유즈모바일게임 컨셉기획서
원소스멀티유즈모바일게임 컨셉기획서
 
트레블헌터 개발기획서
트레블헌터 개발기획서트레블헌터 개발기획서
트레블헌터 개발기획서
 
1 회사및게임소개자료
1 회사및게임소개자료1 회사및게임소개자료
1 회사및게임소개자료
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기
 
영화 예매 프로그램 (DB 설계, 프로그램 연동)
영화 예매 프로그램 (DB 설계, 프로그램 연동)영화 예매 프로그램 (DB 설계, 프로그램 연동)
영화 예매 프로그램 (DB 설계, 프로그램 연동)
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 

[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기

  • 1. 라인 글로벌 게임 서버 개발하기 라인과 함께한 쿠키런 글로벌 입성기
  • 2. Who am I? Devsisters • Server Team • Senior Software Engineer • Development • 쿠키런 for Kakao Server • LINE COOKIERUN Server 개발 총괄 박주홍 • KAIST • 수리과학과
  • 3. 2009 - OvenBreak 시리즈 미국, 캐나다, 영국 등 20개 국가 애플 앱스토어 무료 1위 2013 - 쿠키런 for Kakao 대한민국 단일 게임 다운로드 순위 1위 기록 대한민국 단일 게임 매출 순위 3위 기록 일일 게임 이용자수(DAU) 300만
  • 4. 2014 – LINE COOKIERUN 글로벌 다운로드 5000만 글로벌 일일 이용자수(DAU) 800만 총 21개 국가 애플 앱 스토어 매출 10위권 +
  • 5. 그때 그 시절 호랑이가 담배 피던 1년 전으로
  • 6. 젖과 꿀이 흐르는 라인 source: undertheradar.co.kr
  • 7. 개발을 시작하려던 당시 • 겨울이야기 • 쿠키런 for Kakao 겨울이야기 출시로 한참 바쁘던 시기 • DevOps • 클라우드 위에서 직접 개발하고 관리 • 대한민국 • 한국 서비스에 주력
  • 13. Device Locale 에 기반한 다국어 번역, 다국가 지원 오픈 준비 완료! 젖과 꿀이 흐르는 라인의 세계로!
  • 14. 오픈 첫날 • 신나는 모니터링 • 전세계에 사용자의 접속 시작 • 접속 로그에 남았던 pt_BR, en_GB 같은 다소 생소했던 Locale
  • 15. 오픈 첫날 • 신나는 모니터링 • 전세계에 사용자의 접속 시작 • 접속 로그에 남았던 pt_BR, en_GB 같은 다소 생소했던 Locale • 그러던 와중 눈에 띄던 에러로그
  • 16. 오픈 첫날 • 신나는 모니터링 • 전세계에 사용자의 접속 시작 • 접속 로그에 남았던 pt_BR, en_GB 같은 다소 생소했던 Locale • 그러던 와중 눈에 띄던 에러로그 Invalid locale format: en_150
  • 17. en_150? • iOS 에서 언어를 영어, 지역을 유럽으로 하면 전송되던 Locale • 이외에도 Arab World(ar_001) 같은 Locale 도 전송 확인 • Kakao 운영에서 확인했던 Locale 보다 더 다양한 Locale
  • 18. en_150? • iOS 에서 언어를 영어, 지역을 유럽으로 하면 전송되던 Locale • 이외에도 Arab World(ar_001) 같은 Locale 도 전송 확인 • Kakao 운영에서 확인했던 Locale 보다 더 다양한 Locale • 그러나 이 정도면 아주 양반
  • 19. en_150? • iOS 에서 언어를 영어, 지역을 유럽으로 하면 전송되던 Locale • 이외에도 Arab World(ar_001) 같은 Locale 도 전송 확인 • Kakao 운영에서 확인했던 Locale 보다 더 다양한 Locale • 그러나 이 정도면 아주 양반 Invalid locale format: ja?!
  • 20. ja?! •언어 설정 밖에 없는 안드로이드 • 국가정보는 어쩔??? •제조사별로 다르게 전송되던 로케일 • ja, ja_JP, ja_JP_POSIX
  • 21. ja?! •언어 설정 밖에 없는 안드로이드 • 국가정보는 어쩔??? •제조사별로 다르게 전송되던 로케일 • ja, ja_JP, ja_JP_POSIX 이것으로는 안 된다는 결론
  • 22. 그런데 왜 Device Locale 을 믿어야 하지? 뭔가 틀린 족보를 베끼고 있는 느낌이랄까…
  • 23. 사용자를 믿어보자! • 가장 간단하고 직관적인 방법으로 해결 • 사용자가 직접 언어를 선택하도록 변경 • 서비스를 하던 5개 국어 • 서버에서 메시지 및 공지 번역 전송
  • 25. 국가코드는 조금 다르다 • Localization 에 따라 국가별 이벤트 진행 • 글로벌 서비스 Localized 이벤트 필수 • 국가코드를 사용자가 설정 할 경우 • 태국사용자가 일본로컬이벤트를 진행 • 믿을 만한 국가코드는 없을까?
  • 26. 국가코드는 조금 다르다 • Localization 에 따라 국가별 이벤트 진행 • 글로벌 서비스 Localized 이벤트 필수 • 국가코드를 사용자가 설정 할 경우 • 태국사용자가 일본로컬이벤트를 진행 • 믿을 만한 국가코드는 없을까? USIM 정보 활용!
  • 27. 믿을 만한 국가코드 • USIM 카드의 사업자 정보 PLMN-ID • PLMN-ID = MCC(Mobile Country Code) + MNC(Mobile Network Code) • OS 에서 MCC 정보를 ISO 3166-1 alpha-2 에 따라 획득
  • 28. 믿을 만한 국가코드 • USIM 카드의 사업자 정보 PLMN-ID • PLMN-ID = MCC(Mobile Country Code) + MNC(Mobile Network Code) • OS 에서 MCC 정보를 ISO 3166-1 alpha-2 에 따라 획득 테스트 및 현재까지 사용결과 이상무!
  • 29. 좋아 이제 운영 좀 해볼까? 새로운 쿠키와 미션을 넣어보자
  • 30. 또 다시 1년 전으로 • Google Drive 를 활용한 DB 관리 • 변경 사항 -> Google Sheets -> MySQL • LINE 데이터 DB 관리에도 적용할 예정
  • 31. 또 다시 1년 전으로 • Google Drive 를 활용한 DB 관리 • 변경 사항 -> Google Sheets -> MySQL • LINE 데이터 DB 관리에도 적용할 예정 • 보안상 이슈로 사용 금지
  • 32. 오픈 1달 전 • 개발 시간이 극적으로 부족 • SQL 직접 전달
  • 33. 이거야말로 암중암 이것이 말로만 듣던 SQL 지옥인 건가?
  • 34. 운영 툴 개발 - Macaron • Excel 를 활용한 DB 관리 • 변경 사항 -> Excel -> MySQL • Excel is Simple • 서버 개발자의 도움 없이 데이터 반영
  • 36. Macaron is Simple - Import 1. Excel 에 데이터 반영 2. Drag and Drop 으로 업로드 3. Diff 출력 및 확인 4. Import!
  • 37. Macaron is Simple - Export 1. Export 할 Table 선택 2. Export!
  • 38. Macaron is Simple 1. 개발자 도움 없이 데이터 관리 ◦ Before (기획팀) 데이터 작성 -> (개발팀) SQL 작성 ◦ After (기획팀) Excel 로 직접 데이터 작성 2. 간편한 데이터 확인 ◦ Before (개발팀) Select Query, DB dump OR (기획팀) 개발팀과 MySQL 에서 확인 ◦ After (기획팀) Excel 에서 직접 확인 3. LINE 과의 협업 프로세스 개선 ◦ Before (개발팀) DB 확인 SQL 작성 -> (LINE) SQL 결과 공유 -> (기획팀) 개발팀과 SQL 결과 해석 ◦ After (LINE) Table Export -> (기획팀) Excel 에서 직접 확인
  • 39. 이제 평화로운 로그를 감상하면 되겠군요. 집에 가서 와인이나 마셔볼까?
  • 40. 글로벌 Abusing • 평화로운 로그 사이로 쏟아지는 Abusing 로그 • 글로벌에서 날라오던 Abusing 공격 • 라인 시스템 연동에서 발생한 취약점 source: norse-corp.com
  • 41. 카카오 미션 보상 Crystal 지급 DB Server 0. 초기값 100,False
  • 42. 카카오 미션 보상 Crystal 지급 DB Server 0. 초기값 100,False 1. DB 조회 100,False 1. DB 조회
  • 43. 카카오 미션 보상 Crystal 지급 DB Server 0. 초기값 100,False 1. DB 조회 100,False 2. 미션 보상 200,True 1. DB 조회 2. 미션 보상
  • 44. 카카오 미션 보상 Crystal 지급 DB Server 0. 초기값 100,False 1. DB 조회 100,False 2. 미션 보상 200,True 3. DB 저장 200,True 3. DB 저장 1. DB 조회 2. 미션 보상
  • 45. 카카오 미션 보상 Crystal 지급 DB Server 0. 초기값 100,False 1. DB 조회 100,False 2. 미션 보상 200,True 3. DB 저장 200,True 최종 결과 200,True 3. DB 저장 1. DB 조회 2. 미션 보상
  • 46. 카카오 미션 보상 Crystal 지급 - 에러 DB Server 0. 초기값 100,False 1. DB 조회 100,False 2. 미션 보상 200,True 1. DB 조회 2. 미션 보상
  • 47. 카카오 미션 보상 Crystal 지급 - 에러 3. 에러 발생!!! DB Server 0. 초기값 100,False 1. DB 조회 100,False 2. 미션 보상 200,True 3. 에러 발생 1. DB 조회 2. 미션 보상
  • 48. 카카오 미션 보상 Crystal 지급 - 에러 3. 에러 발생!!! DB Server 0. 초기값 100,False 1. DB 조회 100,False 2. 미션 보상 200,True 3. 에러 발생 최종 결과 100,False 1. DB 조회 2. 미션 보상
  • 49. 라인은 전용 금고 존재 지갑이 필요한데 라인 금고나 살까? - 쿠스르
  • 51. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100
  • 52. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 1. DB 조회
  • 53. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 2. Crystal 조회 1. DB 조회
  • 54. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 2. Crystal 조회 1. DB 조회 3. 미션 보상
  • 55. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급
  • 56. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 5. DB 저장 True2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급 5. DB 저장
  • 57. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 5. DB 저장 True 최종 결과 True 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급 5. DB 저장
  • 58. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 2. Crystal 조회 1. DB 조회 3. 미션 보상
  • 59. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급
  • 60. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 5. 에러 발생2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급 5. 에러 발생!!!
  • 61. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 5. 에러 발생 최종 결과 False 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급 5. 에러 발생!!!
  • 62. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Crystal 지급 200 5. 에러 발생 최종 결과 False 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Crystal 지급 5. 에러 발생!!! Crystal 은 지급 받았지만 미션은 실패
  • 63. 취약점을 공격한 Abusing 미션 달성 (재 달성) Billing Crystal 증가 의도적 에러 발생 미션 실패
  • 64. 취약점을 공격한 Abusing • Billing Queue 도입 • Billing 요청을 Queue 에 쌓고 최종 반영 미션 달성 (재 달성) Billing Crystal 증가 의도적 에러 발생 미션 실패
  • 65. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 2. Crystal 조회 1. DB 조회 3. 미션 보상
  • 66. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push
  • 67. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 5. Crystal 지급 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push 5. Crystal 지급
  • 68. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 5. Crystal 지급 200 6. DB 저장 True 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push 6. DB 저장 5. Crystal 지급
  • 69. LINE 미션 보상 Crystal 지급 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 5. Crystal 지급 200 6. DB 저장 True 최종 결과 True 200 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push 6. DB 저장 5. Crystal 지급
  • 70. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 2. Crystal 조회 1. DB 조회 3. 미션 보상
  • 71. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push
  • 72. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 5. 에러 발생 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push 5. 에러 발생!!!
  • 73. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 5. 에러 발생 최종 결과 False 100 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push 5. 에러 발생!!!
  • 74. LINE 미션 보상 Crystal 지급 - 에러 DB Server Billing 0. 초기값 False 100 1. DB 조회 False 2. Crystal 조회 100,False 3. 미션 보상 200,True 4. Queue Push 5. 에러 발생 최종 결과 False 100 2. Crystal 조회 1. DB 조회 3. 미션 보상 4. Queue Push 5. 에러 발생!!! 의도적으로 에러를 발생시키는 Abusing 방지
  • 75. Abusing 대응 • 의도적으로 에러를 발생시켜 Abusing 하던 이슈 해결 • Billing 서버와의 트랜잭션 유지 중요 • 실제 운영 시 다양한 Abusing 공격 • LINE 팀과 협업하여 로그 분석 등 발 빠른 대응 필요
  • 76. 그리하여 쿠키런 세상에 평화가 찾아오고… 이제 정말 1년 만에 차를 마실 수 있게 되었네요. 그리고 집에도 갈 수 있게 되었어요.
  • 77. LINE COOKIERUN 회고 •신뢰성 있는 USIM 활용 추천 1. 글로벌 Locale 대응 •투자한 것 이상의 시간 절약 2. 운영 툴 개발 •취약점 반드시 고려하여 설계 3. LINE Billing 연동