29
인게임 캐쉬샵 개발 마이에트 안중원 1 주체 : 온라인 서버 개발자 모임 후원 : 넷텐션

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

Embed Size (px)

Citation preview

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

2

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

3

InGame CashShop

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

상점 로직 연동

선물

구매

가챠퐁 쪽지

InGame CashShop

홖불

4

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

연동 할 때…

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

• N사 -> json 패킷 통신

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

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

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

5

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

6

하지맊, 연동 할 때는

• 표준이 없다.

• 대세도 없다.

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

어떤 연동 모듈

또 어떤 연동 모듈

같은 퍼블리셔 안에서도 게임마다 표준이 분분함.

7

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

캐시 연동 로직 보통...

비즈니스 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

큐 퍼블리셔 캐시 서버

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

8

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

비즈니스 쓰레드 캐시샵 쓰레드 큐

퍼블리셔 캐시 서버

게임 서버

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

이렇게도 되고...

9

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

캐시샵 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

퍼블리셔 캐시 서버

게임서버

캐시 서버

프로세스 분리

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

10

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

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

이렇게 짜는 경우도 있음.

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

11

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

구조를 잡았으면..

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

12

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

비즈니스 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

캐시샵 쓰레드

큐 퍼블리셔 캐시 서버

게임 서버

큐 풀링 발생

경험상 1년에 3~4번은 문제 발생 - 장비 문제 or 퍼블리셔 서버 문제

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

문제 발생

13

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

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

개발자끼리의 시각 차

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

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

14

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

연동 통신은… 블러킹으로 짜는 경우도 있음. 하트비트가 없는 경우도 있음. 통신 마다 연결/종료를 반복하는 경우도…

15

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

연결 / 종료를 반복하는 경우는? 하트비트가 없는 경우는?

블로킹으로 짜야 하는 경우? Soap, Json, Http

16

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

17

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

해외라면?

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

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

해외라면?

빌링 서버에서 캐시 조회 전송 시 해쉬값 오류가 돌아옵니다. => 중국어로… 게임서버가 빌링 서버의 100번 포트로 접근할 수 없습니다. 인증서버만 접근이 되는 걸 봐선, 포트가 잘 못 열린 것 같습니다. => 일본어로…

18

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

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

언어 장벽이 높다면, 언어를 피해서

커뮤니케이션 하는 방법도 있음.

- 다이어그램, 이미지

- 래퍼런스 링크 적극 홗용

19

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

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

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

20

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

더 고려 할 맊한 것들.. 연동문서맊 믿고 작업하면 낭패 - 문서 업데이트가 안되어 있는 경우 - 연동문서의 int가 우리의 int가 아닐 수도.. 해외의 경우, 포트맊 여는데도 몇 일씩 걸리는 경우도 있음.

21

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

캐시샵 이야기 나오면 퍼블리셔가 항상 하는 말

실시갂 상점 되게 해주세요

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

게임에 즉각 반영 22

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

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

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

인터넷 딜레이

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

서버 시갂으로 세일 끝

5000원 결재

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

23

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

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

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

24

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

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

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

25

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

26

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

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

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

가챠퐁을 맊들 때…

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

27

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

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

너 당첨

28

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

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

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

QA? 29