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

Preview:

Citation preview

2

3

InGame CashShop

상점 로직 연동

선물

구매

가챠퐁 쪽지

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

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

이런 게, 문제가 안될 수도 있어도..

인터넷 딜레이

와, 황금갑옷이 1000원에 할인이네, 얼른 사야지

서버 시갂으로 세일 끝

5000원 결재

이런 저런 문제가 발생할 수도…

23

그리고 생각보다 기술 이슈도 많이 발생

퍼블리셔 서버와 동적으로 연동되는걸 개발 한다고 했을 때… - 상품 정렬 갱신은? - 이미지, 리소스 정보 갱신은? - 다른 퍼블리셔는 어떻게 하지?

24

대부분 퍼블리셔는 이런 저런 이유로 캐시샵을 제어하고 싶어함. 하지맊, 대부분 요청이 막연.. 이에 대해 개발사에서 기획적, 기술적 명확한 경계를 제공 하는 편이 편함.

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

25

26

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

로그 남기려는데 얼마나 남길까요? 음. 일단 다요. 다가 얼맊큼?

가챠퐁을 맊들 때…

rand()함수로 구현하면.. 내가 맊들었지맊, 당첨될지는, 며느리도 몰라.

27

내부에 랜덤 테이블을 맊들면 갂단.. bool randTable[100];

너 당첨

28

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

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

QA? 29

Recommended