(게임 플랫폼 빌더) 개발만 해본 개발자라면

사실 게임 ‘플랫폼’을 과장해서 썼지만

첫 번째는 API와 통신하는 백엔드 서버입니다.

먼저 전달된 데이터를 표시하는 간단한 웹 페이지를 개발합니다.


게임이기 때문에 많은 윈도우 서버를 사용하기 때문에 웹서버도 윈도우 서버입니다.

그 당시에는 운영 경험이 많지 않아 Windows 서버에 Tomcat을 설치하고 실행하기 시작했습니다.

파란색 영역은 담당하는 부분으로, 웹 인터페이스는 단순히 게임 정보를 제공하고

결제담당 관리자를 개발했습니다.

더보기

게임 산업에서의 청구는 게임 내에서 지불을 처리하는 프로세스를 의미합니다.

일반적으로 이용자가 게임 내에서 구매한 가상 아이템, 캐릭터 스킨, 게임 화폐 등의 결제 처리, 충전, 현금 인출, 지불 거절, 환불 등의 처리를 포함합니다.

빌링 시스템은 게임 산업에서 중요한 수익 창출 수단 중 하나이므로 보안과 안정성이 매우 중요합니다.

따라서 대부분의 게임사는 자체 과금 시스템을 개발하거나 외부 업체의 과금 서비스를 도입합니다.

또한 과금제도는 게임 서비스의 중요한 부분이기 때문에 게임업계에서도 과금에 대한 법적 규제가 존재합니다.

예를 들어 일부 국가의 규정은 결제 시스템에 대한 보안 요구 사항을 강화하여 미성년자가 부모의 동의 없이 결제하는 것을 제한하는 등의 조치를 취했습니다.

또한 API를 통해 게임 서버에 쿠폰을 발행하는 부분도 개발했습니다.


사용된 프레임워크는 Java 기반 Spring입니다.

이때 회원 가입과 충전을 주로 담당하는 포털 사이트와 게임 콘텐츠를 제공하는 게임 사이트가 개발되었다.

백엔드는 API 서버와 백오피스용 외부 솔루션을 사용합니다.


여기서 백엔드 부분에 해당하는 API 서버와 백오피스는 내재화내가 결정한다 우리는 디자인에서 개발까지 진행합니다.

더보기

IT 개발 기업의 내재화는 소프트웨어 제품이 다른 언어, 문화, 지역 등 다른 국가나 지역에서 개발되어 사용될 준비가 되어 있음을 의미합니다.

내재화는 다국어, 다문화 환경에서 제품을 사용할 수 있도록 하여 사용자가 자연스럽게 제품을 사용할 수 있도록 하는 것을 의미합니다.

여기에는 일반적으로 UI/UX, 매뉴얼, 현지화된 콘텐츠 등이 포함됩니다.

국제화는 국제 시장에서 제품 경쟁력을 높이는 데 매우 중요한 요소입니다.

국제 시장에서 국제화는 제품을 여러 언어로 제공하고 사용자에게 가치를 제공하여 제품 인지도 및 사용을 증가시킵니다.

내재화에는 기술적 관점에서 다양한 언어와 문화를 지원하는 기술, 프로세스 및 도구가 필요합니다.

또한 개발팀, 번역팀 등 역할이 다른 협업과 소통이 필요합니다.

먼저 개발 언어를 찾기 시작했습니다.

소수의 사람들(실제로 당시에는 한 사람)이 기존 기술 세트(예: Java Spring)로 최대한 생산성을 높일 수 있는 프레임워크를 찾기 시작했습니다.

그것이 바로 성배입니다.

지금은 사용하지 않지만 당시에는 최고였던 것 같습니다.

https://cusmaker./213

필요한 기능의 흐름을 파악하고 API를 분기했습니다.


게임이 늘어날 경우를 대비해 문서에 신경을 쓰는 것 같다.


그 과정에 주목(?)

데이터베이스도 설계했습니다.

grails를 사용하면서 Domain Driven Development를 살펴보고 있었습니다.

더보기

DDD(도메인 주도 개발)는 복잡한 비즈니스 도메인에 대한 이해를 바탕으로 소프트웨어 시스템을 설계하고 구축하는 데 중점을 둔 소프트웨어 개발 방법론입니다.

DDD는 비즈니스 도메인을 중심으로 소프트웨어 시스템을 개발합니다.

비즈니스 도메인은 해당 비즈니스에서 사용하는 용어, 규칙, 프로세스 등을 나타냅니다.

DDD는 이러한 비즈니스 도메인에 대한 전문 지식을 소프트웨어 개발에 적용하여 도메인별 모델을 개발하고 이를 기반으로 소프트웨어 시스템을 구축합니다.

DDD에서는 도메인 모델링을 통해 비즈니스 도메인을 분석하고 모델링합니다.

도메인 모델은 도메인의 핵심 개념, 규칙 및 프로세스를 포함하여 비즈니스 도메인을 표현하는 모델입니다.

도메인 모델은 개발자와 도메인 전문가 간의 협업으로 도메인 전문가의 지식을 코드에 통합하고 도메인 모델을 개선하여 소프트웨어 시스템을 발전시킵니다.

DDD는 소프트웨어 시스템의 복잡성을 관리하기 위한 여러 패턴과 구조를 제공합니다.

예를 들어 Aggregate, Entity, Value Object, Repository, Service 등의 개념을 사용하여 도메인 모델을 구축하고 Bounded Context, Ubiquitous Language, Context Mapping 등의 개념을 사용하여 도메인을 분리하고 통합합니다.

DDD는 복잡한 비즈니스 도메인에 대한 이해와 모델링을 기반으로 소프트웨어 시스템을 구축하는 접근 방식입니다.


깊은 DDD

API 및 백그라운드 개발이 완료되고 이전이 성공적으로 완료된 후

자체 API 서버 및 백엔드로 구성된 초기 버전입니다.

마지막으로 스킴에 의존하는 컴포넌트 개발이 완료된다.


하얗게 태운…

물론 처음에는 많은 버그와 실수가 있었습니다.

기능 개선은 운영 팀의 피드백과 지속적인 발전을 통해 이루어집니다.

그러나 아키텍처에 많은 문제가 있습니다.

디도스 공격공격을 방지하기 위한 장치

더보기

DDoS(Distributed Denial of Service) 공격은 인터넷을 통해 대량의 요청을 보내 서버나 네트워크에 과부하를 일으키고 정상적인 서비스를 방해하는 공격입니다.

DDoS 공격은 일반적으로 여러 컴퓨터 또는 네트워크 장치를 사용하여 수행됩니다.

대상 서버나 네트워크에 대량의 트래픽을 보내면 서버가 트래픽을 처리하지 못하고 서비스가 마비될 수 있습니다.

DDoS 공격은 다양한 형태를 취할 수 있습니다.

가장 일반적인 형태의 대형 봇넷은 대상 서버나 네트워크에 요청을 플러딩하는 데 사용됩니다.

이 시점에서 봇넷은 해커 또는 사이버 범죄 그룹에 의해 감염된 여러 대의 컴퓨터 또는 IoT 장치로 구성됩니다.

DDoS 공격은 서비스 거부 외에도 정보 공개, 서비스 갈취, 손상 및 갈취와 같은 추가 공격 벡터를 사용할 수 있습니다.

DDoS 공격을 방지하는 방법에는 여러 가지가 있습니다.

대표적인 예로 서비스 제공업체나 보안업체의 DDoS 방어 서비스를 이용하는 경우를 들 수 있습니다.

다른 방법으로는 네트워크 또는 서버 보안 조치 준비, 고가용성 서버 구성, 트래픽 분산 및 캐싱 서버 사용이 있습니다.

단일 실패 지점어떤 장비도 대처할 수 없다

더보기

SPOF(Single Point of Failure)는 시스템의 특정 부분에 장애가 발생하거나 장애가 발생하면 전체 시스템이 마비되거나 작동이 중지될 위험에 직면하게 됨을 의미합니다.

예를 들어, 서버를 사용하는 웹 서비스에서는 서버가 하나만 있고 서버가 실패하면 전체 웹 사이트가 다운되는 것이 SPOF의 전형적인 예입니다.

또는 SPOF는 네트워크 인프라의 라우터가 실패하고 해당 라우터를 통과하는 모든 트래픽이 중지되는 경우입니다.

SPOF를 제거하는 방법에는 여러 가지가 있습니다.

가장 쉬운 방법은 여러 서버 또는 네트워크 구성 요소를 동시에 사용하는 것입니다.

이 구성을 사용하면 한 구성 요소에 오류가 발생하더라도 다른 구성 요소가 대신하여 전체 시스템이 정상적으로 작동할 수 있습니다.

이렇게 하면 시스템 가용성과 안정성이 향상됩니다.

또 다른 접근 방식은 시스템 구성 요소를 클라우드 서비스와 같은 외부인에게 위임하는 것입니다.

이 경우 클라우드 서비스 제공자는 다중화된 서버와 네트워크 인프라를 제공하여 SPOF 문제를 해결할 수 있습니다.

그러나 SPOF를 완전히 제거하는 것은 불가능합니다.

SPOF의 위험은 시스템의 복잡성과 크기에 따라 증가합니다.

따라서 SPOF를 최소화하고 탐지 및 복구 기능을 향상시키는 것이 중요합니다.

가장 중요한 것은 당시의 작은 크기만을 고려할 때 확장성이 떨어지는 구조였습니다.

이러한 개선점을 가지고 아키텍처에 손을 대고 구조를 변경하기로 결정했습니다.

이때부터 경영에 관심을 갖게 된 것 같다.

다음 기사에서는 이러한 점을 개선하려는 시도에 대해 쓸 것입니다.