<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>마이크로서비스 소개 on Game Server Services | Docs</title>
		<link>/ko/microservices/</link>
		<description>Recent content in 마이크로서비스 소개 on Game Server Services | Docs</description>
		<generator>Hugo</generator>
		<language>ko</language>
		
		
		
		
			<atom:link href="/ko/microservices/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>GS2-Account</title>
				<link>/ko/microservices/account/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/account/</guid>
				<description>&lt;p&gt;Game Server Services가 제공하는 계정 시스템은 &amp;ldquo;익명 계정&amp;quot;이라는 종류의 계정 시스템입니다.&#xA;일본에서는 널리 사용되는 방식이지만, 많은 지역에서는 낯설게 느껴지는 계정 시스템일 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;그러나 이 계정 시스템은 게임에 있어서 매우 이치에 맞는 계정 시스템입니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;익명-계정이란-무엇인가요&#34;&gt;익명 계정이란 무엇인가요?&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9d%b5%eb%aa%85-%ea%b3%84%ec%a0%95%ec%9d%b4%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80%ec%9a%94&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;일반적으로 떠올리는 계정 관리는 로그인ID가 있고 비밀번호가 있는 방식일 것입니다.&#xA;익명 계정도 그 점은 다르지 않습니다.&lt;/p&gt;&#xA;&lt;p&gt;그러나 로그인ID와 비밀번호가 모두 시스템에 의해 무작위로 결정된다는 것이 가장 큰 특징입니다.&lt;/p&gt;&#xA;&lt;p&gt;시스템에서 발급한 로그인ID·비밀번호를 디바이스의 로컬 스토리지에 저장해 두고, 두 번째 이후에는 그 정보를 이용해 로그인함으로써 게임을 재개할 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-AdReward</title>
				<link>/ko/microservices/ad_reward/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/ad_reward/</guid>
				<description>&lt;p&gt;모바일 게임의 수익화 방법으로 플레이어에게 광고를 시청하게 하고 광고 플랫폼으로부터 보상을 받는 방식도 일반화되었습니다.&#xA;광고가 정상적으로 시청되었을 때 광고 플랫폼으로부터 서버 간 연동으로 통지를 받아 GS2에 보상을 지급함으로써 부정행위를 방지할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;클라이언트 측 콜백만으로 보상을 지급하는 설계에서는 변조된 SDK를 사용한 부정행위가 발생할 위험이 있습니다.&#xA;GS2-AdReward는 광고 플랫폼에서 GS2로의 직접적인 Server-to-Server(S2S) 통지를 통해 신뢰할 수 있는 시청 완료 이벤트를 계기로 보상을 발행하는 구조를 제공합니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;시청-포인트&#34;&gt;시청 포인트&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8b%9c%ec%b2%ad-%ed%8f%ac%ec%9d%b8%ed%8a%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;일반적으로 GS2에서는 대가와 보상을 설정하여 리소스 교환을 수행하지만, 서버 간 통신의 사양이 광고 플랫폼마다 다르고 데이터의 세분화 정도도 다르기 때문에&#xA;GS2-AdReward에서는 광고 시청이 확인되었을 때 《시청 포인트》를 1포인트 가산하도록 되어 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Buff</title>
				<link>/ko/microservices/buff/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/buff/</guid>
				<description>&lt;p&gt;GS2-Buff는 GS2가 제공하는 마이크로서비스의 대가와 보상, 사용자 데이터 최대값의 보정을 일원화하여 관리하는 기능을 제공합니다.&#xA;기간 한정으로 보상을 증가시키는 기능이나, 구독 계약 상태라면 사용자 데이터의 최대값이 증가하는 기능을 구현할 때 활용할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Buff는 다른 마이크로서비스를 직접 수정하는 것이 아니라, API 호출 시 전달되는 &amp;ldquo;컨텍스트 스택&amp;quot;이라는 메타 정보를 통해 각 마이크로서비스에 보정값을 전파합니다.&#xA;따라서 버프의 내용이나 기간을 변경하더라도 각 마이크로서비스의 마스터 데이터나 플레이어 데이터를 전혀 수정하지 않고도 적용·해제가 가능하다는 점이 큰 특징입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Chat</title>
				<link>/ko/microservices/chat/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/chat/</guid>
				<description>&lt;p&gt;GS2-Chat 을 이용하면 게임 내에 텍스트 채팅을 손쉽게 구현할 수 있습니다.&#xA;텍스트 채팅은 새로운 메시지를 감지하기 위해 상시 접속 세션이 필요하며, 서버에 요구되는 요건도 복잡해집니다.&lt;/p&gt;&#xA;&lt;p&gt;Game Server Services 를 이용하면 그러한 번거로운 상시 접속 세션 관리로부터 해방될 수 있습니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;룸&#34;&gt;룸&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%a3%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Chat 을 이용하려면 먼저 룸을 생성해야 합니다.&#xA;룸은 플레이어가 자유롭게 생성할 수 있도록 할 수도 있고, 개발 측에서 준비한 룸을 플레이어가 사용하게 할 수도 있습니다.&#xA;또한 게시할 수 있는 사용자ID의 화이트리스트를 설정하여 특정 멤버 전용 룸을 구성하는 것도 가능합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Datastore</title>
				<link>/ko/microservices/datastore/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/datastore/</guid>
				<description>&lt;p&gt;GS2-Datastore를 이용하면 임의의 바이너리 데이터를 서버에 저장할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;업로드한 데이터에는 접근 권한을 설정할 수 있으며, &lt;code&gt;public&lt;/code&gt;(전체 공개), &lt;code&gt;protected&lt;/code&gt;(지정한 사용자ID에게만 공개: 최대 100건), &lt;code&gt;private&lt;/code&gt;(본인에게만 공개) 중에서 선택합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Datastore는 UGC나 레이싱 게임의 고스트 데이터와 같은 데이터를 업로드하는 것을 주된 목적으로 하며, 플레이어의 사용자 데이터를 저장하는 데에는 반드시 적합하다고 할 수 없습니다.&lt;/p&gt;&#xA;&lt;p&gt;왜냐하면 소지품의 소지 수량을 바이너리 데이터로 저장할 경우, 세이브 데이터나 앱 본체의 변조로 아이템을 복제하거나 입수량을 부정하게 늘린 개조 앱으로 플레이하는 것을 허용하게 되기 때문입니다.&#xA;소지품의 소지 수량이라면 GS2-Inventory와 같은 전용 마이크로서비스를 이용함으로써 이러한 부정 행위를 막을 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Deploy</title>
				<link>/ko/microservices/deploy/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/deploy/</guid>
				<description>&lt;p&gt;GS2-Deploy는 GS2의 각 마이크로서비스의 네임스페이스나 마스터 데이터를 코드로 관리하고, 선언적으로 프로비저닝하기 위한 기능을 제공합니다.&lt;br&gt;&#xA;AWS의 CloudFormation과 유사한 사상으로 설계되어 있으며, 템플릿 파일에 기술한 리소스 정의를 바탕으로 여러 마이크로서비스에 걸친 환경 구축·갱신·삭제를 하나의 단위(스택)로 다룰 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;게임 개발에서는 마스터 데이터 조정이나 네임스페이스 구성 변경이 빈번하게 발생합니다.&lt;br&gt;&#xA;GS2-Deploy를 활용함으로써 이러한 변경 사항을 Git으로 관리하고, GitHub 등의 저장소와 연동한 CI/CD 파이프라인에서 자동으로 배포하는 운영이 가능해집니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;스택-stack&#34;&gt;스택 (Stack)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8a%a4%ed%83%9d-stack&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;스택은 GS2의 리소스를 묶어서 관리하는 단위입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Dictionary</title>
				<link>/ko/microservices/dictionary/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/dictionary/</guid>
				<description>&lt;p&gt;GS2-Dictionary 에서는 게임 내에서 입수한 아이템이나 캐릭터의 도감 기능을 구현합니다.&lt;/p&gt;&#xA;&lt;p&gt;기본적으로 GS2-Inventory 의 단순화된 구현 버전이라고 생각하시면 되며, 입수 완료/미입수라는 2값의 소지 상태를 관리할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;도감 이외의 용도로도 사용할 수 있습니다. 예를 들어 아바타 파츠의 소지 상태가 좋은 예입니다.&#xA;아바타 파츠를 가지고 있는지 여부는 파츠별로 2값으로 상태를 관리할 수 있으면 충분하므로 GS2-Dictionary 에 적합합니다.&#xA;그 외에도 완료된 튜토리얼 단계 관리, 해금된 컷신 관리, 해금된 BGM 목록 등 2값 상태로 표현할 수 있는 요소 전반에 활용할 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Distributor</title>
				<link>/ko/microservices/distributor/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/distributor/</guid>
				<description>&lt;p&gt;GS2-Distributor 는 GS2 의 각 마이크로서비스를 넘나드는 트랜잭션 처리를 실현하기 위한 핵심 서비스입니다.&#xA;플레이어의 &amp;ldquo;아이템을 소비하여 보상을 얻는다&amp;rdquo;, &amp;ldquo;스태미나를 소비하여 퀘스트를 시작한다&amp;rdquo; 와 같은, 여러 마이크로서비스를 넘나드는 일련의 처리를 안전하게 실행하기 위한 기반을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2 에서는 플레이어에게 불이익이 되는 조작을 《소비 액션》, 이익이 되는 조작을 《입수 액션》이라고 부릅니다.&lt;br&gt;&#xA;GS2-Distributor 는 이러한 액션들을 모은 《트랜잭션》을 받아, 적절한 마이크로서비스로 전달·실행함으로써 게임 사이클을 구성하는 모든 처리를 일관된 형태로 다룰 수 있게 합니다.&lt;/p&gt;&#xA;&lt;p&gt;트랜잭션의 구조에 대한 자세한 내용은 &lt;a href=&#34;/ko/articles/tech/stamp_sheet/&#34;&gt;트랜잭션&lt;/a&gt; 을 참조하세요.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Enchant</title>
				<link>/ko/microservices/enchant/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/enchant/</guid>
				<description>&lt;p&gt;장비나 캐릭터에 고유한 랜덤 파라미터를 부여하는 기능을 구현합니다.&#xA;RPG에서의 무기 추가 스탯, 가챠로 입수한 카드에 부여되는 개체값, 핵앤슬래시 계열에서의 장비 추가 효과 등, &amp;ldquo;같은 아이템이라도 개체마다 성능이 다르다&amp;quot;는 표현을 구현할 때 활용할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;랜덤 파라미터에는 2가지 종류를 준비하고 있습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;밸런스 파라미터&lt;/li&gt;&#xA;&lt;li&gt;레어리티 파라미터&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Item[&amp;#34;장비·캐릭터 등&amp;lt;br/&amp;gt;(propertyId 로 식별)&amp;#34;] --&amp;gt; Choose{파라미터 종류}&#xA;  Choose -- 총량을 분배 --&amp;gt; Balance[&amp;#34;밸런스 파라미터&amp;lt;br/&amp;gt;예: 공격력60/방어력40&amp;#34;]&#xA;  Choose -- 확률로 복수 부여 --&amp;gt; Rarity[&amp;#34;레어리티 파라미터&amp;lt;br/&amp;gt;예: 크리티컬율&amp;#43;5%, HP&amp;#43;100&amp;#34;]&#xA;  Balance --&amp;gt; ReDraw1[&amp;#34;재추첨 / 값 직접 설정&amp;#34;]&#xA;  Rarity --&amp;gt; ReDraw2[&amp;#34;재추첨 / 추가 / 값 직접 설정&amp;#34;]&lt;/pre&gt;&#xA;&lt;p&gt;랜덤 파라미터는 &amp;ldquo;대상 아이템의 식별자&amp;quot;가 되는 &lt;code&gt;propertyId&lt;/code&gt;를 키로 하여 관리됩니다.&#xA;&lt;code&gt;propertyId&lt;/code&gt;에는 GS2-Inventory의 아이템 인스턴스ID나 GS2-Formation의 폼 식별자 등을 지정함으로써, 장비 개체마다 파라미터를 연결할 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Enhance</title>
				<link>/ko/microservices/enhance/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/enhance/</guid>
				<description>&lt;p&gt;이 기능은 개발자에 따라서는 전혀 이해가 안 될 수도 있는 기능일 것입니다.&lt;/p&gt;&#xA;&lt;p&gt;하지만 일본을 비롯한 모바일 게임의 사실상 표준 게임 시스템에는 반드시 존재하는 기능입니다.&#xA;이 게임 메커니즘 자체는 Game as a Service를 실현하는 데 유용한 지식이 될 것이므로, 이해가 어려운 개발자를 위해 게임 메커니즘에 대한 해설을 추가합니다.&lt;/p&gt;&#xA;&lt;p&gt;강화 기능의 게임 메커니즘에 대해 충분한 지식이 있는 경우에는 이어지는 해설 섹션은 건너뛰어도 무방합니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;강화-기능의-게임-메커니즘&#34;&gt;강화 기능의 게임 메커니즘&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ea%b0%95%ed%99%94-%ea%b8%b0%eb%8a%a5%ec%9d%98-%ea%b2%8c%ec%9e%84-%eb%a9%94%ec%bb%a4%eb%8b%88%ec%a6%98&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;강화 기능 자체는 매우 단순한 게임 시스템으로, 소재 아이템을 소비함으로써 대상의 경험치를 가산할 수 있는 구조입니다.&#xA;배틀에 참가해 경험치를 얻는 방법뿐만 아니라, 다양한 방법으로 캐릭터나 장비를 육성할 수 있게 되어 있습니다.&#xA;(장비에도 레벨이 있습니다)&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Exchange</title>
				<link>/ko/microservices/exchange/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/exchange/</guid>
				<description>&lt;p&gt;GS2 가 제공하는 마이크로서비스 중에서도 특히 널리 사용되고 있는 기능입니다.&#xA;모든 마이크로서비스의 리소스를 전혀 다른 마이크로서비스의 리소스로 변환하는 역할을 담당합니다.&lt;/p&gt;&#xA;&lt;p&gt;게임 사양에는 리소스 교환에 관한 것이 다수 존재하며, 그때마다 GS2-Exchange 가 활약하게 됩니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;리소스-교환의-예&#34;&gt;리소스 교환의 예&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%a6%ac%ec%86%8c%ec%8a%a4-%ea%b5%90%ed%99%98%ec%9d%98-%ec%98%88&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;강화-소재-변환&#34;&gt;강화 소재 변환&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ea%b0%95%ed%99%94-%ec%86%8c%ec%9e%ac-%eb%b3%80%ed%99%98&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;GS2-Inventory 로 관리하는 ★1 강화 소재 10개를, 마찬가지로 GS2-Inventory 로 관리하는 ★2 강화 소재 1개와 교환&lt;/p&gt;&#xA;&lt;h3 id=&#34;6시간에-1회-아이템을-입수할-수-있다&#34;&gt;6시간에 1회 아이템을 입수할 수 있다&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#6%ec%8b%9c%ea%b0%84%ec%97%90-1%ed%9a%8c-%ec%95%84%ec%9d%b4%ed%85%9c%ec%9d%84-%ec%9e%85%ec%88%98%ed%95%a0-%ec%88%98-%ec%9e%88%eb%8b%a4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;GS2-Stamina 로 관리하는 6시간마다 1 회복하는 스태미나 1을, GS2-Inventory 로 관리하는 아이템과 교환&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Experience</title>
				<link>/ko/microservices/experience/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/experience/</guid>
				<description>&lt;p&gt;Game as a Service 에서 성장 요소는 필수 불가결합니다.&#xA;캐릭터를 성장시키고, 성장한 캐릭터로 더욱 높은 난이도의 콘텐츠에 도전하는 게임 사이클을 구현하기 위한 경험치·랭크 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Experience 는 단일 캐릭터의 레벨뿐만 아니라, 여러 프로퍼티(캐릭터, 무기, 파티, 길드 등)의 성장을 하나의 마이크로서비스로 일원 관리할 수 있는 유연한 설계로 되어 있습니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;유스케이스&#34;&gt;유스케이스&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9c%a0%ec%8a%a4%ec%bc%80%ec%9d%b4%ec%8a%a4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Experience 가 상정하는 대표적인 유스케이스는 다음과 같습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;플레이어 캐릭터의 레벨 관리&lt;/li&gt;&#xA;&lt;li&gt;육성 가능한 장비품의 레벨 관리&lt;/li&gt;&#xA;&lt;li&gt;길드나 팀의 랭크 관리&lt;/li&gt;&#xA;&lt;li&gt;칭호·배틀 패스의 레벨 관리&lt;/li&gt;&#xA;&lt;li&gt;스킬 트리의 각 스킬 숙련도 관리&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Player[플레이어] --&amp;gt;|경험치 가산| Exp[GS2-Experience]&#xA;  Exp --&amp;gt;|랭크 계산| Status[Status]&#xA;  Status --&amp;gt;|임계값 초과| RankUp[랭크업]&#xA;  RankUp --&amp;gt;|보상 지급| Inventory[GS2-Inventory]&#xA;  RankUp --&amp;gt;|스태미나 최대값 갱신| Stamina[GS2-Stamina]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;랭크&#34;&gt;랭크&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%9e%ad%ed%81%ac&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Experience 는 경험치 값으로부터 자동으로 랭크 값을 계산합니다.&#xA;이를 위해서는 마스터 데이터를 이용해 랭크업 임계값이 되는 경험치 테이블을 정의해야 합니다.&#xA;Experience Model 에서 랭크업 임계값을 관리하며, 그 아래에 임의의 값을 가지는 프로퍼티ID 를 종속시킬 수 있습니다.&#xA;프로퍼티ID 별로 경험치 값이 관리되고, 경험치 값에 따라 랭크가 결정됩니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Formation</title>
				<link>/ko/microservices/formation/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/formation/</guid>
				<description>&lt;p&gt;소유하고 있는 리소스를 조합하여 하나의 무언가를 편성한다는 사양은 일반적입니다.&#xA;여러 캐릭터를 편성하여 파티를 만들거나, 무기·방어구 같은 아이템을 편성하여 장착하는 것 등이 그 예입니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Formation은 &amp;ldquo;어떤 슬롯이 존재하는지&amp;rdquo;, &amp;ldquo;각 슬롯에 무엇을 장착할 수 있는지&amp;rdquo;, &amp;ldquo;같은 종류의 편성을 몇 개까지 보유할 수 있는지&amp;quot;를 마스터 데이터로 정의하고, 플레이어별 편성 내용을 관리하는 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;용어&#34;&gt;용어&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9a%a9%ec%96%b4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  MoldModel --&amp;gt; FormModel&#xA;  FormModel --&amp;gt; SlotModel&#xA;  PropertyFormModel --&amp;gt; SlotModel2[SlotModel]&#xA;&#xA;  Mold --&amp;gt; Form&#xA;  Form --&amp;gt; Slot&#xA;  PropertyForm --&amp;gt; Slot2[Slot]&lt;/pre&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;용어&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;설명&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;MoldModel&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;같은 종류의 편성(파티·장비 세트 등)을 여러 개 보유하기 위한 타입. 용량(저장 슬롯)의 개념을 가짐&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FormModel&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Mold에 연결된 Form의 구성 정의. 어떤 슬롯을 가지는지를 정의&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;PropertyFormModel&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;프로퍼티ID로 참조하는 단독 편성 정의. Mold를 거치지 않고 캐릭터 1개당 편성 1개와 같은 형태로 사용&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;SlotModel&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;슬롯의 정의. 슬롯에 장착 가능한 프로퍼티를 정규 표현식으로 제한할 수 있음&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;Mold&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;플레이어별 Mold 실체. &lt;code&gt;capacity&lt;/code&gt;를 가지며 최대 용량까지 Form을 생성할 수 있음&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;Form&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Mold 내의 편성 인스턴스. &lt;code&gt;index&lt;/code&gt;로 식별됨&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;PropertyForm&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;프로퍼티ID 단위의 편성 인스턴스&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;Slot&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;플레이어가 실제로 장착하고 있는 리소스를 보유&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;폼&#34;&gt;폼&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ed%8f%bc&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;캐릭터의 장비 기능을 구현할 때 무기·투구·건틀릿·상의·하의·신발 같은 여러 슬롯을 준비하고,&#xA;각 슬롯에 적합한 아이템만 장착할 수 있도록 설정할 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Freeze</title>
				<link>/ko/microservices/freeze/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/freeze/</guid>
				<description>&lt;p&gt;GS2-Freeze 는 게임에서 이용하는 GS2 마이크로서비스의 버전을 임의의 시점에 고정(freeze)하고, 운영 측이 관리하는 시점에 버전을 업데이트할 수 있도록 하기 위한 기능입니다.&lt;/p&gt;&#xA;&lt;p&gt;일반적으로 GS2 의 마이크로서비스는 지속적으로 버전 업이 이루어지며, 게임은 항상 최신 버전의 API 를 이용하게 됩니다.&#xA;대부분의 타이틀에서는 이러한 운용에 문제가 없지만, 출시 직후의 대규모 타이틀이나 장기간에 걸쳐 안정성을 최우선으로 하고 싶은 상황에서는 서비스 측의 업데이트 시점을 게임 운영 측에서 컨트롤하고 싶다는 요구가 존재합니다.&#xA;GS2-Freeze 는 이러한 요구에 응답하기 위한 엔터프라이즈 대상 기능입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Friend</title>
				<link>/ko/microservices/friend/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/friend/</guid>
				<description>&lt;p&gt;게임 전용 소셜 그래프를 형성하기 위한 기능을 제공합니다.&#xA;소셜 그래프는 플랫폼 측에서도 제공되는 경우가 있지만, 게임 내에서 독자적으로 형성하는 것에도 가치가 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;플랫폼 전체에서 사용되는 친구 관계는 등록을 신중하게 하는 경향이 있습니다.&#xA;왜냐하면 &amp;ldquo;지금 함께 플레이하고 있는 이 게임에서는 함께 하고 싶지만, 다른 게임까지 함께 플레이하고 싶지는 않다&amp;quot;는 케이스가 존재하기 때문입니다.&#xA;플랫포머가 제공하는 소셜 그래프는 현실에 가까운 관계성을 반영한 것이고, 게임 고유의 소셜 그래프는 그 게임 내에서의 관계성을 반영한 것으로 취급하면, 플레이어는 더 부담 없이 친구 기능을 이용하게 됩니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Gateway</title>
				<link>/ko/microservices/gateway/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/gateway/</guid>
				<description>&lt;p&gt;GS2-Gateway는 게임 클라이언트와 서버 사이에서 WebSocket을 통한 상시 접속을 유지하고, 서버가 임의의 시점에 알림을 보낼 수 있도록 하는 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;일반적인 게임 서버와의 통신은 클라이언트의 요청에 서버가 응답하는 형태이지만, GS2-Gateway를 사용하면 서버가 시작하는 알림(메시지 수신, 친구 신청, 길드로부터의 소집 등)을 실시간으로 클라이언트에 전달할 수 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram&#xA;  participant Client&#xA;  participant Gateway as GS2-Gateway&#xA;  participant Service as 각 마이크로서비스&#xA;&#xA;  Client-&amp;gt;&amp;gt;Gateway: WebSocket 접속&#xA;  Client-&amp;gt;&amp;gt;Gateway: SetUserId(인증)&#xA;  Service-&amp;gt;&amp;gt;Gateway: SendNotification&#xA;  Gateway-&amp;gt;&amp;gt;Client: 알림 페이로드 전달&lt;/pre&gt;&#xA;&lt;h2 id=&#34;주요-기능&#34;&gt;주요 기능&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%a3%bc%ec%9a%94-%ea%b8%b0%eb%8a%a5&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;websocket-상시-접속&#34;&gt;WebSocket 상시 접속&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#websocket-%ec%83%81%ec%8b%9c-%ec%a0%91%ec%86%8d&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;GS2-Gateway는 WebSocket 프로토콜로 클라이언트로부터의 접속을 받아들이고, 사용자별로 접속 정보를 보유합니다.&#xA;다른 마이크로서비스로부터 &amp;ldquo;이 사용자에게 알림을 보내고 싶다&amp;quot;는 요청이 오면, 접속 중인 클라이언트에 페이로드를 전달합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Grade</title>
				<link>/ko/microservices/grade/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/grade/</guid>
				<description>&lt;p&gt;캐릭터나 장비의 육성에는 단기 성장 목표인 레벨업과는 별도로 그레이드업을 마련하는 것이 일반적인 사양입니다.&#xA;그레이드업을 하면 레벨 캡을 끌어올릴 수 있어 캐릭터나 장비를 더욱 강력하게 육성할 수 있게 됩니다.&lt;/p&gt;&#xA;&lt;p&gt;그레이드업 방법에는 여러 가지가 있을 수 있으며, 육성 소재를 소비함으로써 그레이드업할 수 있는 것이나, 같은 종류의 캐릭터나 장비를 합성함으로써 그레이드업할 수 있는 것도 있습니다.&#xA;GS2-Grade는 방법을 따지지 않고, 그레이드별로 레벨 캡을 설정함으로써 GS2-Experience의 레벨 캡 운용을 더 간단하게 구현할 수 있도록 하는 것을 목적으로 합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Guard</title>
				<link>/ko/microservices/guard/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/guard/</guid>
				<description>&lt;p&gt;GS2-Guard는 GS2의 API 엔드포인트에 대한 접근을 보호하기 위한 기능을 제공합니다.&#xA;특정 국가나 지역, IP 주소, 익명화된 IP, 호스팅 사업자의 IP, 평판이 나쁜 IP 등 다양한 조건으로 발신지를 판정하여, API 요청을 허용·거부하는 구조를 구축할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;부정 이용이나 치트 행위, 공격적인 트래픽으로부터 게임 서버를 지키기 위한, 이른바 게임 전용 경량 WAF(Web Application Firewall)로 기능합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Guard는 게임 클라이언트에서 직접 이용하는 기능이 아니라, 운영 측에서 차단 정책을 정의하고 다른 GS2 마이크로서비스의 API에 적용하기 위한 구조입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Guild</title>
				<link>/ko/microservices/guild/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/guild/</guid>
				<description>&lt;p&gt;여러 플레이어가 팀을 만들어 함께 어떤 목표를 향해 활동할 수 있도록 하는 기능이 길드 기능입니다.&#xA;GS2-Guild는 길드 멤버의 관리와, 길드 멤버가 실행할 수 있는 권한 관리를 수행하기 위한 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Guild에서 &amp;lsquo;길드&amp;rsquo;는 한 명의 플레이어로 취급되며, 길드 사용자라고 부릅니다.&#xA;길드 멤버는 길드 사용자로서 정보를 조회·갱신할 수 있는 페더레이션을 수행함으로써, 길드 멤버가 공통 프로퍼티를 조작할 수 있는 상태를 실현합니다.&lt;/p&gt;&#xA;&lt;p&gt;예를 들어 &lt;code&gt;플레이어A&lt;/code&gt;와 &lt;code&gt;플레이어B&lt;/code&gt;가 소속되어 있는 &lt;code&gt;길드A&lt;/code&gt;가 있다고 가정해 봅시다.&#xA;&lt;code&gt;플레이어 레벨&lt;/code&gt;이나 &lt;code&gt;스태미나&lt;/code&gt;와 같은 일반적인 정보가 &lt;code&gt;플레이어A&lt;/code&gt;와 &lt;code&gt;플레이어B&lt;/code&gt;에 연결되어 관리된다는 것은 쉽게 상상할 수 있을 것입니다.&#xA;이와 마찬가지로 &lt;code&gt;길드A&lt;/code&gt;에 연결하여 &lt;code&gt;길드 레벨&lt;/code&gt;과 같은 프로퍼티를 연결해서 관리하는 것도 쉽게 상상할 수 있을 것입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Identifier</title>
				<link>/ko/microservices/identifier/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/identifier/</guid>
				<description>&lt;p&gt;GS2-Identifier는 GS2 관리 콘솔 및 GS2 API에 접근하기 위한 크리덴셜을 관리하는 서비스입니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2 오너 계정에 연결된 사용자, 각 사용자에게 부여되는 권한(보안 정책), 그리고 실제 API 호출에 사용하는 클라이언트ID/클라이언트시크릿을 발급·관리합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Identifier는 게임 클라이언트에서 직접 호출하는 것을 상정하지 않은 서비스이며, 운영 측의 셋업이나 배포 자동화, CI/CD 파이프라인 등에서 이용됩니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;iam-적인-설계&#34;&gt;IAM 적인 설계&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#iam-%ec%a0%81%ec%9d%b8-%ec%84%a4%ea%b3%84&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Identifier는 클라우드 서비스의 IAM(Identity and Access Management)에 상당하는 개념을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;주요 요소는 다음과 같습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;사용자: GS2 오너 계정 산하에 생성하는 개별 이용 주체&lt;/li&gt;&#xA;&lt;li&gt;보안 정책: 조작 가능한 리소스와 액션을 기술한 정책 문서&lt;/li&gt;&#xA;&lt;li&gt;보안 정책의 어태치: 사용자에게 보안 정책을 연결하여 권한을 부여&lt;/li&gt;&#xA;&lt;li&gt;클라이언트ID/클라이언트시크릿: 사용자별로 발급되는 API 인증 정보&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Owner[&amp;#34;GS2 오너&amp;#34;] --&amp;gt; User[&amp;#34;사용자&amp;#34;]&#xA;  User --&amp;gt;|어태치| Policy[&amp;#34;보안 정책&amp;#34;]&#xA;  User --&amp;gt;|발급| Credential[&amp;#34;클라이언트ID&amp;lt;br/&amp;gt;클라이언트시크릿&amp;#34;]&#xA;  Credential --&amp;gt;|인증| API[&amp;#34;GS2 API&amp;#34;]&#xA;  Policy --&amp;gt;|권한 제어| API&lt;/pre&gt;&#xA;&lt;h3 id=&#34;보안-정책&#34;&gt;보안 정책&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%b3%b4%ec%95%88-%ec%a0%95%ec%b1%85&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;보안 정책은 JSON 형식으로 기술된 권한 정의입니다. 허용할 리소스 GRN과 허용할 액션(&lt;code&gt;Gs2Account:CreateAccount&lt;/code&gt;와 같은 조작 식별자)을 기술함으로써, 해당 정책이 어태치된 사용자에게 어떤 조작을 허용할지를 표현합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Idle</title>
				<link>/ko/microservices/idle/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/idle/</guid>
				<description>&lt;p&gt;게임을 플레이하지 않은 기간에 따라 보상을 지급하는 구조를 구현합니다.&#xA;스마트폰 대상 게임에서는 &amp;ldquo;오랜만에 앱을 실행했더니 대량의 보상을 획득할 수 있었다&amp;quot;는 디자인이 플레이어의 재방문 촉진에 크게 기여합니다.&#xA;GS2-Idle은 이러한 방치 보상을 간단하게 도입하기 위한 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Start[&amp;#34;대기 시작&amp;#34;] --&amp;gt; Idle[&amp;#34;방치 시간 경과&amp;#34;]&#xA;  Idle --&amp;gt; Prediction[&amp;#34;획득 예정 보상 조회&amp;#34;]&#xA;  Prediction --&amp;gt; Receive[&amp;#34;보상 수령&amp;#34;]&#xA;  Receive --&amp;gt; Start&lt;/pre&gt;&#xA;&lt;h2 id=&#34;카테고리&#34;&gt;카테고리&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%b9%b4%ed%85%8c%ea%b3%a0%eb%a6%ac&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;방치 보상은 여러 개를 준비할 수 있습니다.&#xA;플레이어는 카테고리별로 1개의 대기 시간을 가질 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Inbox</title>
				<link>/ko/microservices/inbox/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/inbox/</guid>
				<description>&lt;p&gt;시스템이나 운영진이 플레이어에게 메시지나 선물을 전달하는 구조를 구현합니다.&lt;/p&gt;&#xA;&lt;p&gt;게임에서는 &amp;ldquo;보상 배포(사과)&amp;rdquo;, &amp;ldquo;로그인 보너스&amp;rdquo;, &amp;ldquo;과금 특전&amp;rdquo;, &amp;ldquo;이벤트 보상&amp;rdquo; 등 플레이어에게 비동기적으로 보상을 전달해야 하는 상황이 자주 발생합니다.&#xA;GS2-Inbox는 메시지의 큐잉, 읽음/안읽음 관리, 보상 첨부, 유효기간에 따른 자동 삭제 기능을 제공하며, 게임의 라이프사이클 전반에 걸쳐 프레젠트 박스 기능을 담당합니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram&#xA;  participant Ops as 운영 / 서버&#xA;  participant Inbox as GS2-Inbox&#xA;  participant Player as 플레이어&#xA;  Ops-&amp;gt;&amp;gt;Inbox: 메시지 송신 (보상 첨부)&#xA;  Inbox--&amp;gt;&amp;gt;Player: receiveNotification 알림&#xA;  Player-&amp;gt;&amp;gt;Inbox: 메시지 목록 조회&#xA;  Player-&amp;gt;&amp;gt;Inbox: 메시지 개봉 (Read)&#xA;  Inbox-&amp;gt;&amp;gt;Player: 첨부 보상 지급 (트랜잭션)&#xA;  Player-&amp;gt;&amp;gt;Inbox: 읽은 메시지 삭제&lt;/pre&gt;&#xA;&lt;h2 id=&#34;메시지&#34;&gt;메시지&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%a9%94%ec%8b%9c%ec%a7%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;읽음-관리&#34;&gt;읽음 관리&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9d%bd%ec%9d%8c-%ea%b4%80%eb%a6%ac&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;메시지는 읽음 상태를 가집니다.&#xA;읽음 상태의 메시지를 목록에 남길지, 목록에서 삭제할지 설정할 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Inventory</title>
				<link>/ko/microservices/inventory/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/inventory/</guid>
				<description>&lt;p&gt;플레이어가 소지한 아이템 정보를 관리합니다.&lt;/p&gt;&#xA;&lt;p&gt;아이템 관리에는 3가지 방식이 있습니다.&#xA;첫 번째는 스탠다드 인벤토리, 두 번째는 심플 인벤토리, 세 번째는 거대 인벤토리입니다.&lt;/p&gt;&#xA;&lt;p&gt;스탠다드 인벤토리는 다음과 같은 기능을 제공합니다&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;인벤토리 용량 제한&lt;/li&gt;&#xA;&lt;li&gt;동일한 아이템을 일정 수량마다 여러 스택으로 분할&lt;/li&gt;&#xA;&lt;li&gt;아이템에 유효기간 설정&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;심플 인벤토리는 스탠다드 인벤토리가 가진 기능을 갖고 있지 않습니다.&#xA;그 대신 여러 아이템의 증감 처리를 한 번에 수행할 수 있습니다.&#xA;심플 인벤토리를 잘 활용하면 API 호출 횟수를 줄일 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-JobQueue</title>
				<link>/ko/microservices/job_queue/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/job_queue/</guid>
				<description>&lt;p&gt;GS2-JobQueue는 게임 서버에서 실행하는 처리를 비동기적으로 쌓아두기 위한 잡 큐 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;게임 처리 중에는 즉시 결과를 반환할 필요가 없는 것이나, 서버 측에서 시간을 들여 단계적으로 진행하고 싶은 것이 있습니다.&#xA;이러한 처리를 &amp;ldquo;잡&amp;quot;으로 큐에 등록해 두고, 이후 플레이어가 접속한 시점이나 명시적인 API 호출을 통해 실행할 수 있습니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;주요-용도&#34;&gt;주요 용도&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%a3%bc%ec%9a%94-%ec%9a%a9%eb%8f%84&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;GS2-Script를 비동기로 실행하기 위한 실행 기반&lt;/li&gt;&#xA;&lt;li&gt;장시간 처리를 세부 단계로 분할하여, 각 단계를 잡으로 등록해 순차적으로 처리&lt;/li&gt;&#xA;&lt;li&gt;로그인 중에 발생한 리워드 배포 등을 모아서 서버 측에서 트랜잭션 발행·실행&lt;/li&gt;&#xA;&lt;li&gt;다른 마이크로서비스의 완료 알림 핸들러로서, 후속 처리를 비동기로 수행&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Producer[&amp;#34;잡 등록원&amp;lt;br/&amp;gt;(다른 마이크로서비스 / GS2-Script)&amp;#34;] --&amp;gt; Queue[&amp;#34;GS2-JobQueue&amp;#34;]&#xA;  Queue --&amp;gt; Run[&amp;#34;플레이어가 Run을 실행&amp;lt;br/&amp;gt;또는 자동 실행&amp;#34;]&#xA;  Run --&amp;gt; Script[&amp;#34;GS2-Script&amp;#34;]&#xA;  Script -- 성공 --&amp;gt; Result[&amp;#34;JobResult로 기록&amp;#34;]&#xA;  Script -- 실패 --&amp;gt; Retry{&amp;#34;최대 시도 횟수&amp;lt;br/&amp;gt;도달?&amp;#34;}&#xA;  Retry -- No --&amp;gt; Queue&#xA;  Retry -- Yes --&amp;gt; DeadLetter[&amp;#34;DeadLetterJob으로 보관&amp;#34;]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;자동-실행-모드&#34;&gt;자동 실행 모드&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9e%90%eb%8f%99-%ec%8b%a4%ed%96%89-%eb%aa%a8%eb%93%9c&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;네임스페이스 설정에서 &lt;code&gt;enableAutoRun&lt;/code&gt;을 활성화하면, 각 마이크로서비스의 API 처리 마지막에 사용자의 큐에 쌓여 있는 잡을 자동으로 실행합니다.&#xA;플레이어가 앱을 조작하는 것만으로 서버 측에 쌓인 잡이 순차적으로 소화됩니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Key</title>
				<link>/ko/microservices/key/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/key/</guid>
				<description>&lt;p&gt;GS2-Key는 GS2 내에서 사용되는 암호화 키(대칭키)를 관리하고, AES를 이용한 암호화·복호화 API를 제공하는 서비스입니다.&lt;/p&gt;&#xA;&lt;p&gt;기밀성이 높은 데이터를 서버 측에서 암호화·복호화하는 용도 외에도, GS2 자체가 내부적으로 사용하는 각종 서명·암호화 처리를 위한 키 관리 기반으로도 활용됩니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;암호화-키-관리&#34;&gt;암호화 키 관리&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%95%94%ed%98%b8%ed%99%94-%ed%82%a4-%ea%b4%80%eb%a6%ac&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Key에서는 암호화 키를 네임스페이스 하위에 생성하여 관리합니다.&lt;/p&gt;&#xA;&lt;p&gt;키에는 다음과 같은 정보를 담을 수 있습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;키 이름&lt;/li&gt;&#xA;&lt;li&gt;설명(description: 용도나 설명 등, 운용상의 식별에 사용)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;실제 암호화에 사용되는 비밀키(시크릿)는 키 생성 시 GS2 측에서 안전하게 생성되어 GS2 내부에 보관됩니다. 비밀키 자체를 클라이언트 측에서 꺼내어 사용하는 설계가 아니라, 암호화·복호화 요청을 GS2-Key에 전송하고 결과만 받는 구조로 되어 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Limit</title>
				<link>/ko/microservices/limit/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/limit/</guid>
				<description>&lt;p&gt;플레이어가 행동할 수 있는 횟수를 제한하기 위한 구조입니다.&#xA;&amp;ldquo;하루에 5번까지 가챠를 뽑을 수 있다&amp;rdquo;, &amp;ldquo;일주일에 한 번만 받을 수 있는 보상&amp;rdquo; 등, 게임 내에서 자주 등장하는 횟수 제한을 일괄적으로 관리할 수 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Action[&amp;#34;플레이어의 행동&amp;#34;] --&amp;gt; CountUp[&amp;#34;카운트업 (maxValue 지정)&amp;#34;]&#xA;  CountUp -- 상한에 도달하지 않음 --&amp;gt; Success[&amp;#34;처리를 허가&amp;#34;]&#xA;  CountUp -- 상한에 도달함 --&amp;gt; Failure[&amp;#34;처리를 거부&amp;#34;]&#xA;  Reset[&amp;#34;리셋 주기&amp;#34;] --&amp;gt; Counter[&amp;#34;카운터를 0으로 되돌림&amp;#34;]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;카운터&#34;&gt;카운터&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%b9%b4%ec%9a%b4%ed%84%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;플레이어의 행동 횟수를 표현하기 위한 엔티티로,&#xA;카운터의 값을 증가시킬 때 허용 가능한 최댓값을 지정하여 카운트업을 시도함으로써, 최댓값을 초과하는 경우에는 카운트업이 실패하고 후속 처리도 실패시킬 수 있는 메커니즘으로 횟수 제한을 실현합니다.&#xA;이때, 카운터 자체에 최댓값이 존재하는 것이 아니라 카운트업 액션에 최댓값을 설정할 수 있다는 점이 특징입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Lock</title>
				<link>/ko/microservices/lock/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/lock/</guid>
				<description>&lt;p&gt;GS2-Lock 는 리소스 단위로 동작하는 뮤텍스를 제공하여, 여러 서버 프로세스·여러 처리계에서 동일한 리소스에 동시에 접근하는 것을 방지하기 위한 분산 배타 제어 서비스입니다.&lt;/p&gt;&#xA;&lt;p&gt;게임 운영에서는 &amp;ldquo;동일한 플레이어에 대해 같은 처리를 이중으로 실행해 버린다&amp;rdquo;, &amp;ldquo;서로 다른 백엔드 서버가 동일한 데이터를 동시에 덮어써 버린다&amp;rdquo; 와 같은 문제가 쉽게 발생합니다. GS2-Lock 을 이용하면, 이러한 문제를 마이크로서비스로 제공되는 공유 뮤텍스를 통해 방지할 수 있습니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;뮤텍스의-기본&#34;&gt;뮤텍스의 기본&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%ae%a4%ed%85%8d%ec%8a%a4%ec%9d%98-%ea%b8%b0%eb%b3%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Lock 의 잠금은 &amp;ldquo;네임스페이스&amp;rdquo;, &amp;ldquo;사용자ID&amp;rdquo;, &amp;ldquo;프로퍼티 ID&amp;rdquo; 의 조합으로 식별되는 &amp;ldquo;뮤텍스&amp;rdquo; 라는 리소스에 대해 획득합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Log</title>
				<link>/ko/microservices/log/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/log/</guid>
				<description>&lt;p&gt;GS2-Log는 게임에 통합된 모든 Game Server Services 마이크로서비스의 API 액세스 로그를 집약·저장하는 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;게임 운영에 있어 &amp;ldquo;언제·누가·어떤 API를·어떤 인수로 호출하고·어떤 결과를 반환했는가&amp;quot;를 나중에 추적할 수 있는 것은 매우 중요합니다.&#xA;부정 플레이어 조사, 게임 밸런스 확인, 문의 대응, KPI 집계 등 모든 운영 업무의 기반으로 GS2-Log의 데이터를 활용할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Log의 기능은 게임 클라이언트에서 직접 이용하는 것이 아니라, 운영 측 도구나 데이터 분석 기반과 연동하여 활용하기 위한 것입니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;로그의-종류&#34;&gt;로그의 종류&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%a1%9c%ea%b7%b8%ec%9d%98-%ec%a2%85%eb%a5%98&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Log는 다음 4가지 종류의 로그를 기록합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-LoginReward</title>
				<link>/ko/microservices/login_reward/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/login_reward/</guid>
				<description>&lt;p&gt;게임에 매일 로그인한 플레이어에게 보상을 지급하는 구조입니다.&#xA;일별 아이템 지급이나 7일/30일 주기로 반복되는 로그인 보너스, 놓친 날의 보상을 나중에 보전해 주는 기능 등, 운영 현장에서 자주 사용되는 패턴을 범용적으로 제공합니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;모드&#34;&gt;모드&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%aa%a8%eb%93%9c&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;로그인 보너스의 제공 방식에는 《스케줄 모드》와 《스트리밍 모드》 2가지 방식이 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Mode{보너스 모드} --&amp;gt; Schedule[&amp;#34;스케줄 모드&amp;lt;br/&amp;gt;(mode: schedule)&amp;#34;]&#xA;  Mode --&amp;gt; Streaming[&amp;#34;스트리밍 모드&amp;lt;br/&amp;gt;(mode: streaming)&amp;#34;]&#xA;  Schedule -- 날짜에 고정 --&amp;gt; SchEx[&amp;#34;1일차=금화, 2일차=은화…&amp;lt;br/&amp;gt;놓치면 건너뜀&amp;#34;]&#xA;  Streaming -- 순서대로 소화 --&amp;gt; StrEx[&amp;#34;1번째=금화, 2번째=은화…&amp;lt;br/&amp;gt;놓쳐도 다음으로 이월&amp;#34;]&#xA;  Streaming --&amp;gt; Repeat{&amp;#34;repeat 설정&amp;#34;}&#xA;  Repeat -- enabled --&amp;gt; Loop[&amp;#34;끝에 도달 후 처음부터 재개&amp;#34;]&#xA;  Repeat -- disabled --&amp;gt; Stop[&amp;#34;끝에서 정지&amp;#34;]&lt;/pre&gt;&#xA;&lt;h3 id=&#34;스케줄-모드&#34;&gt;스케줄 모드&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8a%a4%ec%bc%80%ec%a4%84-%eb%aa%a8%eb%93%9c&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;GS2-Schedule 의 이벤트와 연결하여 이용합니다.&#xA;보상으로 지급할 트랜잭션 액션을 각 일정별로 정의합니다.&#xA;이벤트 시작 일시부터 24시간마다 보상이 변경되며, 각 보상은 1회씩 받을 수 있습니다.&#xA;도중에 놓친 보상이 있을 경우 건너뜁니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Lottery</title>
				<link>/ko/microservices/lottery/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/lottery/</guid>
				<description>&lt;p&gt;가챠를 구현하기 위한 시스템입니다.&#xA;GS2-Lottery는 일반 가챠와 박스 가챠를 지원합니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Trigger[&amp;#34;추첨 트리거&amp;lt;br/&amp;gt;(GS2-Showcase의 구매 보상 / 퀘스트 클리어 보상 등)&amp;#34;] --&amp;gt; LotteryModel[&amp;#34;LotteryModel&amp;lt;br/&amp;gt;(추첨 모델)&amp;#34;]&#xA;  LotteryModel -- &amp;#34;mode = normal&amp;#34; --&amp;gt; Normal[&amp;#34;일반 모드 추첨&amp;#34;]&#xA;  LotteryModel -- &amp;#34;mode = box&amp;#34; --&amp;gt; Box[&amp;#34;박스 모드 추첨&amp;#34;]&#xA;  Normal --&amp;gt; PrizeTable[&amp;#34;경품 테이블&amp;lt;br/&amp;gt;(PrizeTable)&amp;#34;]&#xA;  Box --&amp;gt; BoxData[&amp;#34;플레이어 전용 박스&amp;#34;]&#xA;  PrizeTable --&amp;gt; Prize[&amp;#34;Prize&amp;lt;br/&amp;gt;(acquireActions)&amp;#34;]&#xA;  BoxData --&amp;gt; Prize&#xA;  Prize --&amp;gt; Acquire[&amp;#34;GS2-Distributor&amp;lt;br/&amp;gt;보상 배포&amp;#34;]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;일반-가챠&#34;&gt;일반 가챠&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9d%bc%eb%b0%98-%ea%b0%80%ec%b1%a0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;일반 가챠는 지정된 확률로 순수한 추첨을 진행합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Matchmaking</title>
				<link>/ko/microservices/matchmaking/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/matchmaking/</guid>
				<description>&lt;p&gt;플레이어를 조건에 따라 그룹화하는 기능입니다.&#xA;대전 상대를 찾기 위해 사용할 수 있습니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;스크립트-트리거&#34;&gt;스크립트 트리거&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8-%ed%8a%b8%eb%a6%ac%ea%b1%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;네임스페이스에 &lt;code&gt;createGatheringTriggerScriptId&lt;/code&gt; · &lt;code&gt;completeMatchmakingTriggerScriptId&lt;/code&gt; · &lt;code&gt;changeRatingScript&lt;/code&gt; 를 설정하면, 개더링 생성 완료 시·매칭 완료 시·레이팅 변동 시에 커스텀 스크립트를 실행할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;설정 가능한 주요 이벤트 트리거와 스크립트 설정명은 다음과 같습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;createGatheringTriggerScriptId&lt;/code&gt;: 개더링 생성 완료 시&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;completeMatchmakingTriggerScriptId&lt;/code&gt;: 매칭 완료 시&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;changeRatingScript&lt;/code&gt;: 레이팅 변동 시&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;푸시-알림&#34;&gt;푸시 알림&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ed%91%b8%ec%8b%9c-%ec%95%8c%eb%a6%bc&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;설정 가능한 주요 푸시 알림과 설정명은 다음과 같습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;joinNotification&lt;/code&gt;: 매칭 참가 시 알림&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;leaveNotification&lt;/code&gt;: 매칭 이탈 시 알림&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;completeNotification&lt;/code&gt;: 매칭 완료 시 알림&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;changeRatingNotification&lt;/code&gt;: 레이팅 변동 시 알림&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;모두 GS2-Gateway 를 통해 알림을 보낼 수 있으며, 오프라인 단말로의 모바일 푸시 전송도 가능합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-MegaField</title>
				<link>/ko/microservices/mega_field/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/mega_field/</guid>
				<description>&lt;p&gt;GS2-MegaField는 거대한 3D 공간에 존재하는 대량의 플레이어 위치 정보를, 효율적으로 공유·동기화하기 위한 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;MMORPG나 오픈 월드, 메타버스형 서비스 등, 같은 월드에 대량의 플레이어가 동시에 로그인하는 타이틀에서는, 모든 플레이어의 위치 정보를 전체 플레이어에게 배포하면 네트워크 대역도 CPU도 감당할 수 없게 됩니다.&#xA;GS2-MegaField는 &amp;ldquo;자신의 근방에 있는 플레이어만&amp;quot;을 효율적으로 가져올 수 있도록 함으로써 이 문제를 해결합니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;에어리어와-레이어&#34;&gt;에어리어와 레이어&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%97%90%ec%96%b4%eb%a6%ac%ec%96%b4%ec%99%80-%eb%a0%88%ec%9d%b4%ec%96%b4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-MegaField의 공간은 &amp;ldquo;에어리어(Area)&amp;ldquo;와 &amp;ldquo;레이어(Layer)&amp;ldquo;라는 두 가지 개념으로 구성됩니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AreaModel(에어리어 모델): 하나의 커다란 3D 공간을 나타내는 마스터 데이터. 예를 들어 &amp;ldquo;마을 안&amp;rdquo;, &amp;ldquo;던전&amp;rdquo;, &amp;ldquo;필드&amp;rdquo; 등, 월드 내의 논리적인 구획별로 작성합니다.&lt;/li&gt;&#xA;&lt;li&gt;LayerModel(레이어 모델): 하나의 에어리어 안에 존재하는, 용도별 레이어. 예를 들어 &amp;ldquo;플레이어용&amp;rdquo;, &amp;ldquo;NPC용&amp;rdquo;, &amp;ldquo;아이템용&amp;quot;과 같이, 같은 장소를 다른 목적으로 겹쳐서 이용할 수 있습니다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;에어리어 모델은 여러 레이어 모델을 포함하는 형태로 마스터 데이터로서 정의합니다.&#xA;플레이어의 위치는 &amp;ldquo;어느 에어리어의, 어느 레이어의, 어느 좌표에 있는가&amp;quot;라는 형태로 표현됩니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Mission</title>
				<link>/ko/microservices/mission/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/mission/</guid>
				<description>&lt;p&gt;게임 내에 축적된 행동을 기반으로 플레이어에게 보상을 지급하기 위한 구조입니다.&#xA;일반적으로 업적·트로피·미션이라고 불리는 기능을 구현하기 위한 기능입니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Action[&amp;#34;게임 내 행동&amp;lt;br/&amp;gt;(퀘스트 클리어 / 가챠 실행 등)&amp;#34;] -- &amp;#34;카운터 상승&amp;lt;br/&amp;gt;(IncreaseCounterByUserId)&amp;#34; --&amp;gt; Counter[&amp;#34;미션 카운터&amp;lt;br/&amp;gt;(Counter / Scope)&amp;#34;]&#xA;  Counter -- &amp;#34;목표값 도달&amp;#34; --&amp;gt; Task[&amp;#34;미션 태스크&amp;lt;br/&amp;gt;(MissionTaskModel)&amp;#34;]&#xA;  Task -- &amp;#34;ReceiveRewards&amp;#34; --&amp;gt; Reward[&amp;#34;completeAcquireActions&amp;#34;]&#xA;  Reward --&amp;gt; Distributor[&amp;#34;GS2-Distributor&amp;lt;br/&amp;gt;보상 배포&amp;#34;]&#xA;  Task --&amp;gt; Group[&amp;#34;미션 그룹&amp;lt;br/&amp;gt;(MissionGroupModel)&amp;#34;]&#xA;  Group -- &amp;#34;resetType 에 기반해&amp;lt;br/&amp;gt;수령 플래그를 리셋&amp;#34; --&amp;gt; Task&lt;/pre&gt;&#xA;&lt;h2 id=&#34;미션-카운터&#34;&gt;미션 카운터&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%af%b8%ec%85%98-%ec%b9%b4%ec%9a%b4%ed%84%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;플레이어의 행동에 기반한 횟수를 세기 위한 엔티티입니다.&#xA;&amp;ldquo;퀘스트를 클리어한 횟수&amp;rdquo;, &amp;ldquo;캐릭터를 강화한 횟수&amp;rdquo;, &amp;ldquo;가챠를 뽑은 횟수&amp;quot;와 같은 게임 내 행동 횟수를 카운트하기 위한 카운터를 준비합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Money</title>
				<link>/ko/microservices/money/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/money/</guid>
				<description>&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Warning&lt;/div&gt;&#xA;&lt;p&gt;GS2-Money2가 릴리스되었습니다.&lt;/p&gt;&#xA;&lt;p&gt;특별한 이유가 없는 한 새로 이용할 경우에는 &lt;a href=&#34;/ko/microservices/money2/&#34;&gt;GS2-Money2&lt;/a&gt;를 이용해 주세요.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;게임 내 리소스 중, 현금에 상당하는 가치를 가진 리소스를 다루는 기능입니다.&#xA;일본의 자금결제법상 선불식 지급수단(자사형)에 해당하는 자산을 취급하는 경우에는 반드시 이 기능을 이용해야 합니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;잔액&#34;&gt;잔액&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9e%94%ec%95%a1&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Money는 플레이어가 보유한 과금 통화의 잔액을 단순한 수량으로 관리하지 않고, 구매 시점의 가치별로 수량을 관리합니다.&lt;/p&gt;&#xA;&lt;p&gt;예를 들어, 100엔으로 100개의 과금 통화를 구매한 경우 과금 통화 1개의 가치는 1엔 상당이 됩니다.&#xA;동시에 1000엔으로 1200개의 과금 통화를 구매할 수 있다고 합시다. 어디까지나 과금 통화의 단가를 1엔으로 하고 200개는 덤으로 무료 처리하는 것도 하나의 방법이고, 1000엔으로 구매한 경우는 단가를 0.8334엔으로 하여 다른 단가로 취급하는 것도 하나의 방법입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Money2</title>
				<link>/ko/microservices/money2/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/money2/</guid>
				<description>&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;p&gt;GS2-Money2 는 이름 그대로 버전 2에 해당하는 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;p&gt;이전 버전에 관한 문서는 &lt;a href=&#34;/ko/microservices/money/&#34;&gt;GS2-Money&lt;/a&gt; 를 참조하십시오.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;게임 내 리소스 중 현금에 상당하는 가치를 가진 리소스를 다루는 기능입니다.&#xA;일본의 자금결제법상 선불식 지급수단(자가형)에 해당하는 자산을 취급하는 경우에는 반드시 이 기능을 이용해야 합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Money2 는 단순히 &amp;ldquo;과금 통화의 잔고&amp;quot;를 다루는 서비스가 아니라, 다음과 같은 회계·법령 대응상의 요건을 함께 처리하는 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;입금 일시·단가별 잔고 관리&lt;/li&gt;&#xA;&lt;li&gt;영수증 검증을 통한 부정 입금 방지&lt;/li&gt;&#xA;&lt;li&gt;지갑의 가감산 이력 보관&lt;/li&gt;&#xA;&lt;li&gt;플랫폼 가이드라인에 따른 통화 격리&lt;/li&gt;&#xA;&lt;li&gt;구독(기간 과금) 계약 상태 관리&lt;/li&gt;&#xA;&lt;li&gt;미사용 잔고 집계(선불식 지급수단 대응)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;잔고&#34;&gt;잔고&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9e%94%ea%b3%a0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2-Money2 는 플레이어가 보유한 과금 통화의 잔고를 단순한 수량으로 관리하지 않고, 구매 시의 가치별로 수량을 관리합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-News</title>
				<link>/ko/microservices/news/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/news/</guid>
				<description>&lt;p&gt;게임 내 공지사항을 HTML 형식으로 배포하기 위한 구조입니다.&#xA;배포하는 HTML 콘텐츠는 Hugo(&lt;a href=&#34;https://gohugo.io/&#34;&gt;https://gohugo.io/&lt;/a&gt;) 로 생성해야 합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-News 는 기사 데이터를 업로드하면 GS2 측에서 Hugo를 통한 빌드를 수행하여, 정적 웹 콘텐츠로 호스팅합니다. 게임 클라이언트는 배포된 임시 URL에 접근함으로써 공지사항을 열람할 수 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Author[&amp;#34;운영자&amp;#34;] -- &amp;#34;ZIP 업로드&amp;#34; --&amp;gt; GS2[&amp;#34;GS2-News&amp;#34;]&#xA;  GS2 -- &amp;#34;hugo build (공개/비공개의&amp;lt;br/&amp;gt;모든 패턴을 사전 생성)&amp;#34; --&amp;gt; CDN[&amp;#34;CDN (HTML / ZIP)&amp;#34;]&#xA;  Player[&amp;#34;플레이어&amp;#34;] -- &amp;#34;GetContentsUrl&amp;#34; --&amp;gt; GS2&#xA;  GS2 -- &amp;#34;URL &amp;#43; Cookie&amp;lt;br/&amp;gt;(1시간 유효)&amp;#34; --&amp;gt; Player&#xA;  Player -- &amp;#34;WebView or ZIP DL&amp;#34; --&amp;gt; CDN&lt;/pre&gt;&#xA;&lt;h2 id=&#34;hugo&#34;&gt;Hugo&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#hugo&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Hugo 는 정적 웹페이지를 생성하기 위한 제너레이터입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Quest</title>
				<link>/ko/microservices/quest/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/quest/</guid>
				<description>&lt;p&gt;게임의 진행 관리와 퀘스트의 진행 관리를 수행합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Quest는 게임의 인게임(전투나 스테이지)에 도전하기 위한 &amp;lsquo;입구&amp;rsquo;와 &amp;lsquo;출구&amp;rsquo;만을 서버에서 관리하는 마이크로서비스입니다.&#xA;인게임 내부의 로직에는 관여하지 않으며, 시작 시 비용 소비, 클리어 시 보상 지급, 전제 조건 판정과 같이 서버에서 신뢰해야 할 처리를 담당합니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;  Start[&amp;#34;퀘스트 시작&amp;lt;br/&amp;gt;StartAsync&amp;#34;] --&amp;gt; Battle[&amp;#34;인게임 실행&amp;lt;br/&amp;gt;(클라이언트 / 전용 서버)&amp;#34;]&#xA;  Battle -- 성공 --&amp;gt; End1[&amp;#34;퀘스트 종료 보고&amp;lt;br/&amp;gt;EndAsync(isComplete:true)&amp;#34;]&#xA;  Battle -- 실패 --&amp;gt; End2[&amp;#34;퀘스트 종료 보고&amp;lt;br/&amp;gt;EndAsync(isComplete:false)&amp;#34;]&#xA;  End1 --&amp;gt; Reward[&amp;#34;클리어 보상 지급&amp;#34;]&#xA;  End2 --&amp;gt; FailedReward[&amp;#34;실패 보상 지급&amp;#34;]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;퀘스트&#34;&gt;퀘스트&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ed%80%98%ec%8a%a4%ed%8a%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;퀘스트는 인게임의 기본 단위로, 인게임을 시작할 때 선택하는 엔티티입니다.&#xA;퀘스트에는 도전에 필요한 비용과 도전을 통해 얻을 수 있는 보상을 설정할 수 있으며, GS2-Quest는 그 시작과 종료를 API로 받아들입니다.&#xA;즉, GS2-Quest는 인게임의 내용에는 관여하지 않습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Ranking</title>
				<link>/ko/microservices/ranking/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/ranking/</guid>
				<description>&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Warning&lt;/div&gt;&#xA;&lt;p&gt;GS2-Ranking2 가 릴리스되었습니다.&lt;/p&gt;&#xA;&lt;p&gt;특별한 이유가 없는 한 새로 이용하실 경우에는 &lt;a href=&#34;/ko/microservices/ranking2/&#34;&gt;GS2-Ranking2&lt;/a&gt; 를 이용해 주세요.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;게임의 점수나 클리어 타임을 겨루는 랭킹 기능을 실현합니다.&lt;/p&gt;&#xA;&lt;p&gt;랭킹에는 2종류가 존재하며 &amp;ldquo;참가자 전원이 동일한 보드에서 경쟁하는 것&amp;quot;과 &amp;ldquo;구독한 플레이어의 점수와 경쟁하는 것&amp;quot;이 있습니다.&#xA;전자를 글로벌 랭킹, 후자를 스코프 랭킹이라고 부릅니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;글로벌-랭킹&#34;&gt;글로벌 랭킹&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ea%b8%80%eb%a1%9c%eb%b2%8c-%eb%9e%ad%ed%82%b9&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;글로벌 랭킹은 모든 플레이어와 경쟁하기 위한 랭킹 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Ranking 에서는 수억 명 이상의 플레이어가 참가하는 대규모 랭킹을 실현할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;대신, 랭킹의 집계는 리얼타임이 아니라 사전에 설정한 주기로 집계 처리가 이루어지며 그 집계 결과를 바탕으로 순위 계산 등을 수행합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Ranking2</title>
				<link>/ko/microservices/ranking2/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/ranking2/</guid>
				<description>&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;p&gt;GS2-Ranking2 는 이름 그대로 버전2에 해당하는 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;p&gt;이전 버전에 관한 문서는 &lt;a href=&#34;/ko/microservices/ranking/&#34;&gt;GS2-Ranking&lt;/a&gt; 을 참조하세요.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;게임의 점수나 클리어 타임을 겨루는 랭킹 기능을 실현합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Ranking2 는 다음 3가지 종류의 모드를 제공합니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;글로벌 랭킹&lt;/li&gt;&#xA;&lt;li&gt;클러스터 랭킹&lt;/li&gt;&#xA;&lt;li&gt;구독 랭킹&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;게임에 필요한 랭킹 기능의 대부분은 이 중 하나의 모드로 요건을 충족할 수 있을 것입니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;랭킹-모드&#34;&gt;랭킹 모드&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%9e%ad%ed%82%b9-%eb%aa%a8%eb%93%9c&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;글로벌-랭킹&#34;&gt;글로벌 랭킹&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ea%b8%80%eb%a1%9c%eb%b2%8c-%eb%9e%ad%ed%82%b9&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;글로벌 랭킹은 모든 플레이어와 경쟁하기 위한 랭킹 기능을 제공합니다.&#xA;GS2-Ranking2 에서는 상위 1000위 플레이어만 랭킹에 참가할 수 있으며, 1000위 이하 플레이어의 점수는 전송하더라도 랭킹에 등록되지 않습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Realtime</title>
				<link>/ko/microservices/realtime/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/realtime/</guid>
				<description>&lt;p&gt;게임 플레이어 간의 대전 기능을 구현하기 위해, 낮은 레이턴시로 높은 빈도의 통신이 필요한 경우에 사용할 수 있는 기능입니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2에서는 일반적으로 API 리퀘스트 횟수에 대해 요금이 발생하지만, 이 서비스는 게임 서버가 기동하면&#xA;해당 게임 서버의 가동 시간과 통신 용량에 대해 비용이 발생하며, 통신 횟수에 대해서는 비용이 발생하지 않습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Match[&amp;#34;GS2-Matchmaking 에서&amp;lt;br/&amp;gt;로비 성립&amp;#34;] --&amp;gt; Want[&amp;#34;RoomWant 으로 룸 요청&amp;#34;]&#xA;  Want -- 핫 스탠바이에서 할당 --&amp;gt; Warm[&amp;#34;Warm Start (1~3초)&amp;#34;]&#xA;  Want -- 신규 기동 --&amp;gt; Cold[&amp;#34;Cold Start (40~60초)&amp;#34;]&#xA;  Warm --&amp;gt; Connect[&amp;#34;플레이어가 접속&amp;#34;]&#xA;  Cold --&amp;gt; Connect&#xA;  Connect --&amp;gt; Play[&amp;#34;패킷 릴레이로 대전 중 통신&amp;#34;]&#xA;  Play -- 1분간 무통신 또는 3시간 경과 --&amp;gt; Shutdown[&amp;#34;룸 종료&amp;#34;]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;서버-타입&#34;&gt;서버 타입&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%84%9c%eb%b2%84-%ed%83%80%ec%9e%85&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;현재 GS2-Realtime은 패킷 릴레이 기능만을 제공하고 있습니다.&#xA;이는 게임 서버로 메시지를 전송하면 그 메시지가 다른 플레이어에게 브로드캐스트되는 기능을 기본으로 하며,&#xA;플레이어ID를 지정하여 지정한 플레이어에게 메시지를 전달하는 기능만을 가지고 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Schedule</title>
				<link>/ko/microservices/schedule/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/schedule/</guid>
				<description>&lt;p&gt;게임 내 이벤트 등의 스케줄을 관리하는 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Schedule 은 단독으로는 이벤트의 기간 정보만을 관리하는 기능을 가지고 있으며, 보상 지급이나 구매 제한과 같은 처리는 다른 마이크로서비스와 조합하여 실현합니다.&#xA;GS2-Showcase / GS2-Exchange / GS2-LoginReward / GS2-Mission 등 거의 모든 게임 요소 마이크로서비스가 이벤트 기간과의 연계를 전제로 설계되어 있기 때문에, 기간 한정 운영 시책을 실시할 때 핵심이 되는 마이크로서비스입니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;이벤트-개최-기간&#34;&gt;이벤트 개최 기간&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%9d%b4%eb%b2%a4%ed%8a%b8-%ea%b0%9c%ec%b5%9c-%ea%b8%b0%ea%b0%84&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;이벤트 개최 기간에는 두 가지 종류가 있습니다.&#xA;첫 번째는 모든 플레이어가 동일한 기간을 공유하는 &amp;ldquo;절대 기간&amp;rdquo;, 두 번째는 플레이어마다 기간이 다른 &amp;ldquo;상대 기간&amp;quot;입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Script</title>
				<link>/ko/microservices/script/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/script/</guid>
				<description>&lt;p&gt;GS2-Script는 GS2의 각 마이크로서비스 이벤트에 맞춰 서버 사이드에서 커스텀 로직을 실행하기 위한, Lua 기반의 스크립트 실행 환경입니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2의 각 마이크로서비스에는 특정 API 호출 전후에 스크립트를 실행하는 《스크립트 트리거》라는 구조가 마련되어 있습니다.&lt;br&gt;&#xA;여기에 GS2-Script로 작성한 스크립트를 연결함으로써, 각 서비스의 표준 기능으로는 실현할 수 없는 게임 고유의 검증 로직이나 데이터 가공 처리, 외부 시스템 연동 등을 서버 측에서 동작시킬 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;클라이언트 측 로직은 변조의 위험이 있기 때문에, 부정 방지나 감사 관점에서 중요한 처리는 서버 측에서 동작시키고 싶은 경우가 많습니다.&lt;br&gt;&#xA;GS2-Script를 사용하면 GS2의 완전관리형 환경 안에서 그러한 서버 로직을 작성·운용할 수 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-SeasonRating</title>
				<link>/ko/microservices/season_rating/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/season_rating/</guid>
				<description>&lt;p&gt;플레이어 실력에 따라 플레이어를 분류하여, 더 비슷한 실력의 플레이어와의 매치메이킹을 실현하기 위한 기능입니다.&#xA;레이트 값에 의한 매치메이킹 기능은 GS2-Matchmaking에 갖추어져 있지만, 최근 늘어나고 있는 현실 시간으로 몇 주에서 몇 달 정도의 시즌을 통해 플레이어를 랭크 매기는 방식에는 대응하지 못했습니다.&lt;/p&gt;&#xA;&lt;p&gt;이 마이크로서비스는 정해진 기간을 시즌으로 간주하고, 시즌 기간 동안 더 높은 티어를 목표로 대전을 반복하는 게임 사이클을 실현하기 위해 이용할 수 있습니다.&#xA;그렇기 때문에 이 기능에서 강함을 나타내는 지표는 레이트 값이 아니라 어느 티어에 속해 있는지로 표현됩니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-SerialKey</title>
				<link>/ko/microservices/serial_key/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/serial_key/</guid>
				<description>&lt;p&gt;게임 외부의 물품 판매나 오프라인 이벤트, SNS 캠페인, 콜라보 캠페인 등을 통해 게임 내 아이템을 배포하고 싶은 경우에 사용할 수 있습니다.&#xA;종이 패키지나 QR 코드에 인쇄한 코드, 이메일/SNS로 배포하는 문자열 모두 동일한 구조로 다룰 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;단, 이 기능은 일부 플랫폼 사업자가 구현을 허용하지 않는 경우가 있으므로, 채택할 때는 플랫폼 사업자의 가이드라인을 확인하도록 하십시오.&lt;/p&gt;&#xA;&lt;h2 id=&#34;시리얼-코드의-종류&#34;&gt;시리얼 코드의 종류&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8b%9c%eb%a6%ac%ec%96%bc-%ec%bd%94%eb%93%9c%ec%9d%98-%ec%a2%85%eb%a5%98&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;시리얼 코드에는 다음 두 가지 종류가 있습니다.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;시리얼 키: 1회 사용하면 재사용할 수 없는 코드&lt;/li&gt;&#xA;&lt;li&gt;캠페인 코드: 하나의 코드를 여러 사람이 공유할 수 있는 코드&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  SerialCode[&amp;#34;시리얼 코드&amp;#34;]&#xA;  SerialCode --&amp;gt; SerialKey[&amp;#34;시리얼 키&amp;lt;br/&amp;gt;1인 1회 한정&amp;#34;]&#xA;  SerialCode --&amp;gt; CampaignCode[&amp;#34;캠페인 코드&amp;lt;br/&amp;gt;여러 명이 공용&amp;#34;]&#xA;  SerialKey --&amp;gt; SerialKeyUse[&amp;#34;RPCLP-FP7N-NCDMJ-FLVA-IRI4&amp;#34;]&#xA;  CampaignCode --&amp;gt; CampaignCodeUse[&amp;#34;NEWYEAR2026&amp;#34;]&lt;/pre&gt;&#xA;&lt;h3 id=&#34;시리얼-키&#34;&gt;시리얼 키&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8b%9c%eb%a6%ac%ec%96%bc-%ed%82%a4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;1회 사용하면 두 번 다시 사용할 수 없게 되는 코드 입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Showcase</title>
				<link>/ko/microservices/showcase/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/showcase/</guid>
				<description>&lt;p&gt;게임 내에서 상품을 판매할 때 사용합니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-Exchange와의 차이점은 진열대가 존재한다는 점입니다.&#xA;진열대에는 DisplayItem을 진열할 수 있으며, DisplayItem을 구매하기 위해 필요한 대가와 상품을 구매했을 때 얻을 수 있는 보상을 설정할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;진열대에는 2종류가 있으며, 고정된 DisplayItem이 진열되는 《스탠다드 진열대》와, 일정 간격으로 진열 내용이 랜덤으로 추첨되는 《랜덤 진열대》가 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Master[&amp;#34;마스터 데이터&amp;#34;] --&amp;gt; Showcase[&amp;#34;스탠다드 진열대&amp;lt;br/&amp;gt;(ShowcaseModel)&amp;#34;]&#xA;  Master --&amp;gt; RandomShowcase[&amp;#34;랜덤 진열대&amp;lt;br/&amp;gt;(RandomShowcaseModel)&amp;#34;]&#xA;  Showcase --&amp;gt; DisplayItem[&amp;#34;DisplayItem&amp;lt;br/&amp;gt;(SalesItem / SalesItemGroup)&amp;#34;]&#xA;  RandomShowcase --&amp;gt; RandomDisplayItem[&amp;#34;RandomDisplayItem&amp;lt;br/&amp;gt;(stock / weight)&amp;#34;]&#xA;  Player[&amp;#34;플레이어&amp;#34;] -- Buy --&amp;gt; DisplayItem&#xA;  Player -- RandomShowcaseBuy --&amp;gt; RandomDisplayItem&#xA;  DisplayItem -- &amp;#34;consumeActions / acquireActions&amp;#34; --&amp;gt; Transaction[&amp;#34;GS2-Distributor&amp;lt;br/&amp;gt;트랜잭션 실행&amp;#34;]&#xA;  RandomDisplayItem -- &amp;#34;consumeActions / acquireActions&amp;#34; --&amp;gt; Transaction&lt;/pre&gt;&#xA;&lt;h2 id=&#34;스탠다드-진열대&#34;&gt;스탠다드 진열대&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8a%a4%ed%83%a0%eb%8b%a4%eb%93%9c-%ec%a7%84%ec%97%b4%eb%8c%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;스탠다드 진열대는 지정한 DisplayItem이 모두 진열됩니다.&#xA;DisplayItem에는 2종류가 있으며 《SalesItem》과 《SalesItemGroup》이 있습니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-SkillTree</title>
				<link>/ko/microservices/skill_tree/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/skill_tree/</guid>
				<description>&lt;p&gt;캐릭터 등의 성장 요소로 일반적으로 사용되는 스킬 트리 기능을 구현하기 위한 마이크로서비스입니다.&#xA;스킬 트리란 아래와 같은 트리 구조를 가지며, 노드를 해제함으로써 캐릭터의 파라미터를 향상시킬 수 있는 기능을 가리킵니다.&#xA;노드 해제에는 비용이 필요하며, GS2-SkillTree에서는 각 마이크로서비스가 제공하는 《소비 액션》을 설정할 수 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart TD&#xA;  Base --&amp;gt; Node1[STR&amp;#43;5]&#xA;  Node1 --&amp;gt; Node2[DEF&amp;#43;5]&#xA;  Node2 --&amp;gt; Node3[SPD&amp;#43;5]&#xA;&#xA;  Node3 --&amp;gt; Node4[STR&amp;#43;5]&#xA;  Node4 --&amp;gt; Node5[DEF&amp;#43;5]&#xA;  Node5 --&amp;gt; Node6[STR&amp;#43;5]&#xA;  Node6 --&amp;gt; Node7[DEF&amp;#43;5]&#xA;&#xA;  Node3 --&amp;gt; Node10[SPD&amp;#43;5]&#xA;  Node10 --&amp;gt; Node11[DEF&amp;#43;5]&#xA;  Node11 --&amp;gt; Node12[SPD&amp;#43;5]&#xA;  Node12 --&amp;gt; Node13[DEF&amp;#43;5]&#xA;&#xA;  Node11 --&amp;gt; Node30[SPD&amp;#43;5]&#xA;  Node30 --&amp;gt; Node31[STR&amp;#43;5]&#xA;  Node31 --&amp;gt; Node32[SPD&amp;#43;5]&#xA;&#xA;  Node7 --&amp;gt; Node20[STR&amp;#43;5]&#xA;  Node13 --&amp;gt; Node20&#xA;  Node20 --&amp;gt; Node21[STR&amp;#43;5]&#xA;  Node21 --&amp;gt; Node22[STR&amp;#43;5]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;노드-정의nodemodel&#34;&gt;노드 정의(NodeModel)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%85%b8%eb%93%9c-%ec%a0%95%ec%9d%98nodemodel&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;스킬 트리를 구성하는 노드는 마스터 데이터 &lt;code&gt;NodeModel&lt;/code&gt;로 정의합니다.&#xA;각 노드는 다음 필드로 구성되며, 이를 통해 노드의 해제 조건·비용·효과·의존 관계를 표현합니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Stamina</title>
				<link>/ko/microservices/stamina/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/stamina/</guid>
				<description>&lt;p&gt;스태미나는 게임 내의 횟수 제한 기능을 실현하는 것입니다.&#xA;GS2-Limit 는 &amp;ldquo;하루에 3회&amp;rdquo; 와 같이 횟수 제한을 표현하지만, GS2-Stamina 는 &amp;ldquo;8시간에 1포인트 회복하는 스태미나를 사용하여 하루 3회로 횟수를 제한한다&amp;rdquo; 와 같이, 시간 경과와 소비 액션의 조합으로 제한을 표현합니다.&lt;/p&gt;&#xA;&lt;p&gt;스태미나의 경우, 소비하는 포인트에 차등을 둠으로써 A라는 행동이라면 하루 3회, B라는 행동이라면 하루 5회와 같은 사양을 구현할 수 있습니다.&#xA;이는 스태미나 1당 얻을 수 있는 경험치나 게임 내 통화의 기준을 마련함으로써, 게임 내에서 어떤 행동을 취하더라도 특별히 효율이 좋은 행동이라는 것을 배제할 수 있어, 게임 밸런스를 조정하기 쉬워집니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-StateMachine</title>
				<link>/ko/microservices/state_machine/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/state_machine/</guid>
				<description>&lt;p&gt;GS2-Quest 는 퀘스트의 시작·종료를 관리하고, 시작한 퀘스트에 따라 종료 시 보상을 받을 수 있는 구조를 제공했습니다.&#xA;하지만 인게임의 무작위성이 강해 보상을 사전에 특정하기 어려운 게임 사양은 GS2-Quest 로는 잘 다루지 못하는 과제가 있었습니다.&lt;/p&gt;&#xA;&lt;p&gt;GS2-StateMachine 은 더 세밀한 단위로 인게임의 상태 관리를 하기 위해 개발되었습니다.&lt;/p&gt;&#xA;&lt;h2 id=&#34;스테이트-머신&#34;&gt;스테이트 머신&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%ec%8a%a4%ed%85%8c%ec%9d%b4%ed%8a%b8-%eb%a8%b8%ec%8b%a0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;인게임의 상태 관리에 사용하는 것이 스테이트 머신입니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart TD&#xA;  Start ----&amp;gt; MainStateMachine_Initialize&#xA;  MainStateMachine_Pass ----&amp;gt; Exit&#xA;  subgraph MainStateMachine&#xA;    MainStateMachine_Initialize[[Initialize]] --&amp;gt;|Pass| MainStateMachine_ChoiceSkill&#xA;&#xA;    MainStateMachine_ChoiceSkill[/ChoiceSkill/]&#xA;&#xA;    MainStateMachine_InGame([InGame]) --&amp;gt;|Pass| MainStateMachine_NextTurn&#xA;    MainStateMachine_InGame([InGame]) --&amp;gt;|Fail| MainStateMachine_Pass&#xA;&#xA;    MainStateMachine_NextTurn[[NextTurn]] --&amp;gt;|Next| MainStateMachine_ChoiceSkill&#xA;    MainStateMachine_NextTurn[[NextTurn]] --&amp;gt;|Exit| MainStateMachine_Pass&#xA;&#xA;    MainStateMachine_Pass[\Pass/]&#xA;&#xA;&#xA;    subgraph ChoiceSkill&#xA;        ChoiceSkill_Initialize[[Initialize]] --&amp;gt;|Pass| ChoiceSkill_LotterySkills&#xA;&#xA;        ChoiceSkill_LotterySkills[[LotterySkills]] --&amp;gt;|Pass| ChoiceSkill_WaitChoiceSkill&#xA;&#xA;        ChoiceSkill_WaitChoiceSkill([WaitChoiceSkill]) --&amp;gt;|ChoiceSkill| ChoiceSkill_ChoiceSkill&#xA;        ChoiceSkill_WaitChoiceSkill([WaitChoiceSkill]) --&amp;gt;|ReLotterySkill| ChoiceSkill_ReLotterySkill&#xA;&#xA;        ChoiceSkill_ReLotterySkill[[ReLotterySkill]] --&amp;gt;|Pass| ChoiceSkill_LotterySkills&#xA;        ChoiceSkill_ReLotterySkill[[ReLotterySkill]] --&amp;gt;|AlreadyReLottery| ChoiceSkill_WaitChoiceSkill&#xA;&#xA;        ChoiceSkill_ChoiceSkill[[ChoiceSkill]] --&amp;gt;|Pass| ChoiceSkill_Pass&#xA;        ChoiceSkill_ChoiceSkill[[ChoiceSkill]] --&amp;gt;|InvalidSkillIndex| ChoiceSkill_WaitChoiceSkill&#xA;&#xA;        ChoiceSkill_Pass[\Pass/]&#xA;&#xA;&#xA;    end&#xA;  end&#xA;&#xA;  MainStateMachine_ChoiceSkill --&amp;gt; ChoiceSkill_Initialize&#xA;  ChoiceSkill_Pass --&amp;gt;|Pass| MainStateMachine_InGame&#xA;&#xA;  Player -----&amp;gt;|Interaction| MainStateMachine_InGame&#xA;  Player -----&amp;gt;|Interaction| ChoiceSkill_WaitChoiceSkill&lt;/pre&gt;&#xA;&lt;p&gt;당신이 프로그래머라면 기획자로부터 위와 같은 플로우차트를 받아본 적이 있을 것입니다.&#xA;이러한 상태 전이를 표현한 것이 스테이트 머신입니다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GS2-Version</title>
				<link>/ko/microservices/version/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/ko/microservices/version/</guid>
				<description>&lt;p&gt;애플리케이션 버전이나 추가 에셋의 버전, 이용약관에 동의한 버전 등을 판정하는 기능을 제공합니다.&lt;/p&gt;&#xA;&lt;p&gt;버전 체크를 통과했을 때, 새로운 임시 GS2 클라이언트ID/시크릿을 발급할 수 있습니다.&lt;/p&gt;&#xA;&lt;p&gt;이 기능을 이용함으로써, 앱에 내장된 GS2의 클라이언트ID/시크릿은 로그인 및 버전 체크를 수행하는 API만 호출할 수 있는 권한만 가지도록 하고, 버전 체크를 통과한 후에 실제로 게임을 플레이하기에 충분한 권한을 가진 클라이언트ID/시크릿을 받을 수 있도록 할 수 있습니다.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;  Boot[&amp;#34;앱 실행&amp;#34;] --&amp;gt; Login[&amp;#34;GS2-Account 로 로그인&amp;#34;]&#xA;  Login -- &amp;#34;최소 권한의&amp;lt;br/&amp;gt;클라이언트ID/시크릿&amp;#34; --&amp;gt; Check[&amp;#34;GS2-Version&amp;lt;br/&amp;gt;CheckVersion&amp;#34;]&#xA;  Check -- &amp;#34;OK&amp;#34; --&amp;gt; Token[&amp;#34;새로운 ProjectToken 취득&amp;lt;br/&amp;gt;(원래 권한)&amp;#34;]&#xA;  Check -- &amp;#34;Warning&amp;#34; --&amp;gt; Notify[&amp;#34;플레이어에게 업데이트 안내&amp;#34;]&#xA;  Check -- &amp;#34;Error&amp;#34; --&amp;gt; Force[&amp;#34;강제 버전 업&amp;#34;]&#xA;  Notify --&amp;gt; Token&#xA;  Token --&amp;gt; Game[&amp;#34;게임 본편&amp;#34;]&lt;/pre&gt;&#xA;&lt;h2 id=&#34;버전-모델&#34;&gt;버전 모델&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%eb%b2%84%ec%a0%84-%eb%aa%a8%eb%8d%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;네임스페이스에는 최대 10개의 버전 모델을 선언할 수 있습니다. 버전 체크에는 여러 항목을 설정할 수 있으며, 모든 버전 체크를 통과한 경우에만 체크를 통과할 수 있습니다.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
