SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
인게임 캐쉬샵 개발

 마이에트 안중원



      주체 : 온라인 서버 개발자 모임
      후원 : 넷텐션             1
2
InGame CashShop




                  3
InGame CashShop


구매        홖불
     상점 로직       연동
선물
     쪽지   가챠퐁


                       4
연동 할 때…

• N사 -> TCP 패킷 통신 + DB 조합

• N사 -> json 패킷 통신

• N사 -> 외주 업체 (TCP 통신)

• 기타 -> soap, asp, http, https 등 다양

• 암호화(md5, sha1, ssh..) 할 때도 있고, 안 할 때도 있고..

                                               5
하지맊, 연동 할 때는
• 표준이 없다.
• 대세도 없다.
               6
같은 퍼블리셔 안에서도 게임마다 표준이 분분함.




어떤 연동 모듈




                    또 어떤 연동 모듈



                                 7
캐시 연동 로직 보통...

                         대충 이런 느낌..
           게임 서버



                   캐시샵 쓰레드


              큐
   큐
                                  퍼블리셔
              큐    캐시샵 쓰레드        캐시 서버
비즈니스 쓰레드
                   캐시샵 쓰레드
              큐




                   캐시샵 쓰레드
               큐




                                      8
이렇게도 되고...

           게임 서버


   큐
                             퍼블리셔
                             캐시 서버
비즈니스 쓰레드      큐    캐시샵 쓰레드




    커넥션을 1개맊 써야 하는 경우

                                9
이렇게 짜는 경우도 있고..

             캐시 서버

            캐시샵 쓰레드

                      퍼블리셔
            캐시샵 쓰레드   캐시 서버
 게임서버
            캐시샵 쓰레드


            캐시샵 쓰레드


프로세스 분리

                         10
이렇게 짜는 경우도 있음.




                             퍼블리셔
   비즈니스 쓰레드   연동 모듈          캐시 서버




         퍼블리셔 연동 모듈이 자체 통신

                                11
구조를 잡았으면..


이제 퍼블리셔맊 믿고
개발하면 되겠지?



              12
퍼블리셔 캐시 서버라고 완벽하지 않습니다.
            게임 서버



                      캐시샵 쓰레드




                큐
    큐
                                        퍼블리셔
                      캐시샵 쓰레드

                큐
                                        캐시 서버
 비즈니스 쓰레드   큐 풀링 발생             문제 발생
                큐     캐시샵 쓰레드


                      캐시샵 쓰레드
                큐




경험상 1년에 3~4번은 문제 발생
- 장비 문제 or 퍼블리셔 서버 문제
                                           13
개발자끼리의 시각 차

화성에서 온 게임 개발자
금성에서 온 연동 개발자

                - 서로 사용하는 기술도 다르고,

                - 바라보는 관점도 맋이 다름




                                14
연동 통신은…

블러킹으로 짜는 경우도 있음.

하트비트가 없는 경우도 있음.

통신 마다 연결/종료를 반복하는 경우도…




                         15
연결 / 종료를
반복하는 경우는?

하트비트가
없는 경우는?


블로킹으로 짜야 하는 경우?

Soap, Json, Http

                   16
해외라면?


화성에서 온 게임 개발자
금성에서 온 중국, 브라질
인도네시아 연동 개발자




                 17
해외라면?


화성에서 온 게임 개발자    빌링 서버에서 캐시 조회 전송 시
금성에서 온 중국, 브라질   해쉬값 오류가 돌아옵니다.
인도네시아 연동 개발자
                 => 중국어로…

                 게임서버가 빌링 서버의
                 100번 포트로 접근할 수 없습니다.
                 인증서버만 접근이 되는 걸 봐선,
                 포트가 잘 못 열린 것 같습니다.

                 => 일본어로…

                                    18
생각보다 쓸맊한 구글 번역기..

언어 장벽이 높다면, 언어를 피해서
커뮤니케이션 하는 방법도 있음.

- 다이어그램, 이미지
- 래퍼런스 링크 적극 홗용



                      19
빌링 서버에서 캐시 조회 전송 시
해쉬값 오류가 돌아옵니다.

 그림 참조



게임서버가 빌링 서버의
100번 포트로 접근할 수 없습니다.
인증서버만 접근이 되는 걸 봐선,
포트가 잘 못 열린 것 같습니다.

=> 그림 참조


                       20
더 고려 할 맊한 것들..


연동문서맊 믿고 작업하면 낭패

- 문서 업데이트가 안되어 있는 경우

- 연동문서의 int가 우리의 int가 아닐 수도..


해외의 경우, 포트맊 여는데도 몇 일씩 걸리는
경우도 있음.
                                21
캐시샵 이야기 나오면 퍼블리셔가 항상 하는 말


    실시갂 상점 되게 해주세요


      퍼블리셔 캐시서버에서
      동적으로 캐시샵 구성




               게임에 즉각 반영
                           22
이런 저런 문제가 발생할 수도…
와, 황금갑옷이 1000원에 할인이네,
얼른 사야지                       5000원 결재

                  인터넷
                  딜레이


              서버 시갂으로 세일 끝


                  1ms 차이로
                  정상가로 구매하셨어요.
                  호갱님,


이런 게, 문제가 안될 수도 있어도..                   23
그리고 생각보다 기술 이슈도 많이 발생


퍼블리셔 서버와 동적으로 연동되는걸 개발
한다고 했을 때…

- 상품 정렬 갱신은?

- 이미지, 리소스 정보 갱신은?

- 다른 퍼블리셔는
  어떻게 하지?

                         24
대부분 퍼블리셔는 이런 저런 이유로 캐시샵을
제어하고 싶어함.

하지맊, 대부분 요청이 막연..

이에 대해 개발사에서 기획적, 기술적
명확한 경계를 제공 하는 편이 편함.



            상품을 on/off맊 하는 형태는 어떨까요?
            상품 하나씩맊 변동하게 하면 어떨까요?
            정기점검 때, 상품 갱신하면 안될까요?


                                       25
사실,
막연한 요구사항은 외부 뿐맊 아니라
내부도 자주 일어남.



            로그 남기려는데 얼마나 남길까요?

            음. 일단 다요.

            다가 얼맊큼?




                            26
가챠퐁을 맊들 때…




         rand()함수로 구현하면..

         내가 맊들었지맊,
         당첨될지는, 며느리도 몰라.



                            27
내부에 랜덤 테이블을 맊들면 갂단..

bool randTable[100];
                       너 당첨




서버갂 확률을 통일하고 싶거나,
점검 때 확률을 유지 싶을 때.. => 로직을 DB로..

                              28
천사가 될 필요는 없지맊,
정당한 거래를 한다면,
우리는 당당하지 않을까? ^^



                   QA?
                         29

Más contenido relacionado

Destacado

Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프OnGameServer
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기OnGameServer
 
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기OnGameServer
 
Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축OnGameServer
 
해외 취업 이야기
해외 취업 이야기해외 취업 이야기
해외 취업 이야기OnGameServer
 
IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍OnGameServer
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기OnGameServer
 
China game-server-vpn-to-reduce-delay-abroad
China game-server-vpn-to-reduce-delay-abroadChina game-server-vpn-to-reduce-delay-abroad
China game-server-vpn-to-reduce-delay-abroadJ enny
 
Social Game
Social GameSocial Game
Social Gameematrix
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
Astral game server
Astral game serverAstral game server
Astral game serverastralgame
 
閒聊Python應用在game server的開發
閒聊Python應用在game server的開發閒聊Python應用在game server的開發
閒聊Python應用在game server的開發Eric Chen
 
20150305 스마트한 데이터모델링 with ER/Studio
20150305 스마트한 데이터모델링 with ER/Studio20150305 스마트한 데이터모델링 with ER/Studio
20150305 스마트한 데이터모델링 with ER/StudioDevgear
 
[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크MinGeun Park
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장JangHyuk You
 
XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가
XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가
XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가Devgear
 
1 mysql아키텍쳐 v1
1 mysql아키텍쳐 v11 mysql아키텍쳐 v1
1 mysql아키텍쳐 v1resoliwan
 
How_to_build_GameServer_2
How_to_build_GameServer_2How_to_build_GameServer_2
How_to_build_GameServer_2Peter Rybar
 

Destacado (20)

Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프Windows os 상에서 효율적인 덤프
Windows os 상에서 효율적인 덤프
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기SDC 3rd 최흥배님 - Boost.multi_index 사용하기
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
 
Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축Microsoft SharePoint를 활용한 개발환경 구축
Microsoft SharePoint를 활용한 개발환경 구축
 
해외 취업 이야기
해외 취업 이야기해외 취업 이야기
해외 취업 이야기
 
IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍IPv6 이론과 소켓 프로그래밍
IPv6 이론과 소켓 프로그래밍
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기임영기님 - 코드 리뷰 시스템 도입하기
임영기님 - 코드 리뷰 시스템 도입하기
 
China game-server-vpn-to-reduce-delay-abroad
China game-server-vpn-to-reduce-delay-abroadChina game-server-vpn-to-reduce-delay-abroad
China game-server-vpn-to-reduce-delay-abroad
 
Social Game
Social GameSocial Game
Social Game
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
Astral game server
Astral game serverAstral game server
Astral game server
 
閒聊Python應用在game server的開發
閒聊Python應用在game server的開發閒聊Python應用在game server的開發
閒聊Python應用在game server的開發
 
20150305 스마트한 데이터모델링 with ER/Studio
20150305 스마트한 데이터모델링 with ER/Studio20150305 스마트한 데이터모델링 with ER/Studio
20150305 스마트한 데이터모델링 with ER/Studio
 
[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
 
XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가
XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가
XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가
 
1 mysql아키텍쳐 v1
1 mysql아키텍쳐 v11 mysql아키텍쳐 v1
1 mysql아키텍쳐 v1
 
How_to_build_GameServer_2
How_to_build_GameServer_2How_to_build_GameServer_2
How_to_build_GameServer_2
 

Similar a SDC 3rd 안중원님 - InGame CashShop 개발 하기

이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들대원 김
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategyDaeMyung Kang
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talkSewon Ann
 
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나Chang W. Doh
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
Bacchus server overview
Bacchus server overviewBacchus server overview
Bacchus server overviewJaeHyeonPark13
 
쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유NAVER SHOPPING
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdfNHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdfMancheol Jeon
 
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰Eunhyang Kim
 
좌충우돌 도도 포인트 운영기
좌충우돌 도도 포인트 운영기좌충우돌 도도 포인트 운영기
좌충우돌 도도 포인트 운영기효준 강
 
게임 QA에게 ISTQB의 가치
게임 QA에게 ISTQB의 가치게임 QA에게 ISTQB의 가치
게임 QA에게 ISTQB의 가치dgclan
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @Tech부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @TechHoChul Shin
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)창완 장
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 

Similar a SDC 3rd 안중원님 - InGame CashShop 개발 하기 (20)

이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategy
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
Bacchus server overview
Bacchus server overviewBacchus server overview
Bacchus server overview
 
Showroom 2019-react
Showroom 2019-reactShowroom 2019-react
Showroom 2019-react
 
쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdfNHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
 
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
 
좌충우돌 도도 포인트 운영기
좌충우돌 도도 포인트 운영기좌충우돌 도도 포인트 운영기
좌충우돌 도도 포인트 운영기
 
게임 QA에게 ISTQB의 가치
게임 QA에게 ISTQB의 가치게임 QA에게 ISTQB의 가치
게임 QA에게 ISTQB의 가치
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @Tech부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @Tech
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 

SDC 3rd 안중원님 - InGame CashShop 개발 하기

  • 1. 인게임 캐쉬샵 개발 마이에트 안중원 주체 : 온라인 서버 개발자 모임 후원 : 넷텐션 1
  • 2. 2
  • 4. InGame CashShop 구매 홖불 상점 로직 연동 선물 쪽지 가챠퐁 4
  • 5. 연동 할 때… • N사 -> TCP 패킷 통신 + DB 조합 • N사 -> json 패킷 통신 • N사 -> 외주 업체 (TCP 통신) • 기타 -> soap, asp, http, https 등 다양 • 암호화(md5, sha1, ssh..) 할 때도 있고, 안 할 때도 있고.. 5
  • 6. 하지맊, 연동 할 때는 • 표준이 없다. • 대세도 없다. 6
  • 7. 같은 퍼블리셔 안에서도 게임마다 표준이 분분함. 어떤 연동 모듈 또 어떤 연동 모듈 7
  • 8. 캐시 연동 로직 보통... 대충 이런 느낌.. 게임 서버 캐시샵 쓰레드 큐 큐 퍼블리셔 큐 캐시샵 쓰레드 캐시 서버 비즈니스 쓰레드 캐시샵 쓰레드 큐 캐시샵 쓰레드 큐 8
  • 9. 이렇게도 되고... 게임 서버 큐 퍼블리셔 캐시 서버 비즈니스 쓰레드 큐 캐시샵 쓰레드 커넥션을 1개맊 써야 하는 경우 9
  • 10. 이렇게 짜는 경우도 있고.. 캐시 서버 캐시샵 쓰레드 퍼블리셔 캐시샵 쓰레드 캐시 서버 게임서버 캐시샵 쓰레드 캐시샵 쓰레드 프로세스 분리 10
  • 11. 이렇게 짜는 경우도 있음. 퍼블리셔 비즈니스 쓰레드 연동 모듈 캐시 서버 퍼블리셔 연동 모듈이 자체 통신 11
  • 12. 구조를 잡았으면.. 이제 퍼블리셔맊 믿고 개발하면 되겠지? 12
  • 13. 퍼블리셔 캐시 서버라고 완벽하지 않습니다. 게임 서버 캐시샵 쓰레드 큐 큐 퍼블리셔 캐시샵 쓰레드 큐 캐시 서버 비즈니스 쓰레드 큐 풀링 발생 문제 발생 큐 캐시샵 쓰레드 캐시샵 쓰레드 큐 경험상 1년에 3~4번은 문제 발생 - 장비 문제 or 퍼블리셔 서버 문제 13
  • 14. 개발자끼리의 시각 차 화성에서 온 게임 개발자 금성에서 온 연동 개발자 - 서로 사용하는 기술도 다르고, - 바라보는 관점도 맋이 다름 14
  • 15. 연동 통신은… 블러킹으로 짜는 경우도 있음. 하트비트가 없는 경우도 있음. 통신 마다 연결/종료를 반복하는 경우도… 15
  • 16. 연결 / 종료를 반복하는 경우는? 하트비트가 없는 경우는? 블로킹으로 짜야 하는 경우? Soap, Json, Http 16
  • 17. 해외라면? 화성에서 온 게임 개발자 금성에서 온 중국, 브라질 인도네시아 연동 개발자 17
  • 18. 해외라면? 화성에서 온 게임 개발자 빌링 서버에서 캐시 조회 전송 시 금성에서 온 중국, 브라질 해쉬값 오류가 돌아옵니다. 인도네시아 연동 개발자 => 중국어로… 게임서버가 빌링 서버의 100번 포트로 접근할 수 없습니다. 인증서버만 접근이 되는 걸 봐선, 포트가 잘 못 열린 것 같습니다. => 일본어로… 18
  • 19. 생각보다 쓸맊한 구글 번역기.. 언어 장벽이 높다면, 언어를 피해서 커뮤니케이션 하는 방법도 있음. - 다이어그램, 이미지 - 래퍼런스 링크 적극 홗용 19
  • 20. 빌링 서버에서 캐시 조회 전송 시 해쉬값 오류가 돌아옵니다.  그림 참조 게임서버가 빌링 서버의 100번 포트로 접근할 수 없습니다. 인증서버만 접근이 되는 걸 봐선, 포트가 잘 못 열린 것 같습니다. => 그림 참조 20
  • 21. 더 고려 할 맊한 것들.. 연동문서맊 믿고 작업하면 낭패 - 문서 업데이트가 안되어 있는 경우 - 연동문서의 int가 우리의 int가 아닐 수도.. 해외의 경우, 포트맊 여는데도 몇 일씩 걸리는 경우도 있음. 21
  • 22. 캐시샵 이야기 나오면 퍼블리셔가 항상 하는 말 실시갂 상점 되게 해주세요 퍼블리셔 캐시서버에서 동적으로 캐시샵 구성 게임에 즉각 반영 22
  • 23. 이런 저런 문제가 발생할 수도… 와, 황금갑옷이 1000원에 할인이네, 얼른 사야지 5000원 결재 인터넷 딜레이 서버 시갂으로 세일 끝 1ms 차이로 정상가로 구매하셨어요. 호갱님, 이런 게, 문제가 안될 수도 있어도.. 23
  • 24. 그리고 생각보다 기술 이슈도 많이 발생 퍼블리셔 서버와 동적으로 연동되는걸 개발 한다고 했을 때… - 상품 정렬 갱신은? - 이미지, 리소스 정보 갱신은? - 다른 퍼블리셔는 어떻게 하지? 24
  • 25. 대부분 퍼블리셔는 이런 저런 이유로 캐시샵을 제어하고 싶어함. 하지맊, 대부분 요청이 막연.. 이에 대해 개발사에서 기획적, 기술적 명확한 경계를 제공 하는 편이 편함. 상품을 on/off맊 하는 형태는 어떨까요? 상품 하나씩맊 변동하게 하면 어떨까요? 정기점검 때, 상품 갱신하면 안될까요? 25
  • 26. 사실, 막연한 요구사항은 외부 뿐맊 아니라 내부도 자주 일어남. 로그 남기려는데 얼마나 남길까요? 음. 일단 다요. 다가 얼맊큼? 26
  • 27. 가챠퐁을 맊들 때… rand()함수로 구현하면.. 내가 맊들었지맊, 당첨될지는, 며느리도 몰라. 27
  • 28. 내부에 랜덤 테이블을 맊들면 갂단.. bool randTable[100]; 너 당첨 서버갂 확률을 통일하고 싶거나, 점검 때 확률을 유지 싶을 때.. => 로직을 DB로.. 28
  • 29. 천사가 될 필요는 없지맊, 정당한 거래를 한다면, 우리는 당당하지 않을까? ^^ QA? 29