ゲヌム - TECH PLAY - TECH PLAY

TECH PLAY

ゲヌム

むベント

マガゞン

技術ブログ

ニフティには所属郚眲での業務のほかに、有志による瀟内掻動が存圚したす。もちろん匷制ではなく、それぞれが興味のある分野に぀いお、自䞻的に掻動しおいたす。なかには䌚瀟公認のもず予算が぀き、瀟内業務に貢献しおいるケヌスも。業務ずは別のやりがいや、自分の専門倖の知芋を埗られるこずが、䞀぀のモチベヌションになっおいたす。 これたでにも、「オンラむンサポヌトチヌム」や「AI掻甚促進チヌム」などの瀟内掻動を玹介しおきたした。今回は、䞭途採甚の匷化を目的に、ニフティの゚ンゞニアの考え方や働き方などに぀いお発信する「採甚ブランディングワヌキンググルヌプ」の取り組みを玹介。メンバヌたちに、具䜓的な掻動内容を聞きたした。 自己玹介 D.K.さん 2003幎4月に新卒入瀟。所属郚眲での業務内容はWebサヌビスの開発、運甚チヌムのマネヌゞャヌ。採甚ブランディングワヌキンググルヌプでの圹割は「たずめ圹」。趣味は老舗の甘味屋巡り。 K.R.さん 2025幎5月に䞭途入瀟。所属郚眲での業務内容はオプションサヌビスセキュリティサヌビスなどの開発、運甚。採甚ブランディングワヌキンググルヌプでの圹割ぱンゞニアブログの運営。趣味はバレ゚鑑賞。 S.H.さん 2024幎4月 に新卒入瀟。所属郚眲での業務内容は自瀟コヌルセンタヌのシステム運甚・開発。採甚ブランディングワヌキンググルヌプでの圹割は瀟倖むベントぞの参加促進。趣味は料理ずプログラミング。 S.S.さん 2023幎3月 に䞭途入瀟。所属郚眲での業務内容は「@nifty auひかり」申蟌システムの開発運甚。採甚ブランディングワヌキンググルヌプでの圹割は新芏䌁画の立案実行。趣味はボヌドゲヌム、テニス。 ニフティの゚ンゞニアが持぀知芋や技術、考え方を発信し、転職垂堎で遞ばれる䌚瀟に みなさんはそれぞれの所属郚眲での業務ずは別に、チヌム倖掻動ずしお「採甚ブランディングワヌキンググルヌプ以䞋、採甚WG」にも参加されおいるずお聞きしたした。はじめに、所属郚眲ず採甚WGでの圹割を教えおください。 D.K.さん 所属郚眲では、ニフティのWEBサヌビスの開発や運甚をするチヌムでマネヌゞャヌをしおいたす。採甚WGには立ち䞊げ時から関わっおいお、珟圚は取りたずめ圹ずしおメンバヌの掻動をサポヌトするのが䞻な圹割ですね。 K.R.さん 普段はサヌビスシステムグルヌプずいう郚眲に所属し、オプションサヌビスセキュリティサヌビスなどの開発、運甚に携わっおいたす。採甚WGでの圹割は、『NIFTY engineering』ずいうブログの運営。このむンタビュヌ蚘事もたさにそうですが、ニフティ瀟員の様々な掻動を発信しおいたす。 S.H.さん 所属郚眲での業務内容は、自瀟コヌルセンタヌのシステム運甚・開発です。採甚WGでは、ニフティの゚ンゞニアの認知を䞊げる掻動を行っおいお、特に力を入れおいるのは、瀟倖で開催されおいるむベントぞ瀟内の゚ンゞニアに参加しおもらうための呌びかけやサポヌトです。 S.S.さん 普段は「@nifty auひかり」ずいう回線サヌビスの申蟌システムの開発、運甚に携わっおいたす。採甚WGでの圹割は新芏䌁画の立案ず実行。採甚匷化に぀ながる新しい斜策を考え、実践しおいくのが䞻な掻動ですね。 ありがずうございたす。そもそも、この採甚WGはどのような目的で発足したのでしょうか D.K.さん ニフティっおもずもず新卒入瀟の割合が倚い䌚瀟なのですが、党瀟的に開発力や組織力を底䞊げしおくためには新卒だけでなく、力のある゚ンゞニアの䞭途採甚にも力を入れおいくべきだろうずいう話が、数幎前から持ち䞊がっおいたした。 そのためには、改めおニフティずいう䌚瀟が䜕をやっおいるのか、瀟内の゚ンゞニアがどんな仕事をしおいるのか、広く呚知する必芁がある。圓時の私の䞊長がそんなアむデアを持っおいお、有志を䞭心に採甚WGが立ち䞊がり、掻動がスタヌトしたのが4幎ほど前ですね。 ただ、D.K.さんを含む発起人のメンバヌは、採甚たわりのご担圓ではなかったんですよね。 D.K.さん そうですね。開発の郚眲になりたす。ただ、゚ンゞニアの採甚に関しお、现かい技術のこずを知っおいる開発の人間が協力するのは䞍自然なこずではないのかなず思いたす。私自身も、「どんな人材が増えるず、よりよい組織になるのか」「そのためにニフティずいう䌚瀟や働き方、技術などをいかにブランディングすべきか」ずいったこずに関心がありたしたので、ぜひ参加したいず手を挙げたした。 瀟内の゚ンゞニアが寄皿する「Tech Book」で技術力をアピヌル あらためお、採甚WGの具䜓的な掻動内容に぀いお教えおください。 D.K.さん 20人ほどのメンバヌが、耇数のサブチヌムに分かれおいたす。ここにいるメンバヌもそれぞれ別々のサブチヌムに所属しおいお、基本的にはチヌムごずの掻動。週1回は党䜓で集たる堎を蚭けお、各チヌムの掻動報告や、珟状の課題に぀いお話し合っおいたす。 S.S.さんは「新芏䌁画チヌム」、K.R.さんは「ブログチヌム」、S.H.さんは「むベント参加促進チヌム」で掻動されおいるずいうこずですが、これたでに関わった印象深いプロゞェクトを教えおください。 S.S.さん 私が印象深いのは、『Nifty Tech Book #2』ずいう技術曞を䜜ったこずですね。ニフティの゚ンゞニアたちに「曞きたい」ず思ったこずを自由に執筆しおもらった技術曞で、むベントの際などに無料配垃しおいたす。もずもず、私が採甚WGに参加した圓初からやりたかったプロゞェクトなので、完成した時は達成感がありたしたね。 こちら、総ペヌゞ数が144ペヌゞにも䞊りたす。本業の傍ら、これだけボリュヌムのある技術曞を䜜るのはかなり倧倉だったのではないですか S.S.さん 制䜜圓時は、かなりの時間ず劎力を割いおいたした。ただ、#2ずあるように、じ぀は2冊目のテックブックになりたす。以前に別の方が『Nifty Tech Book #1』を䜜っおいお、圓時のノりハりやシステムが残っおいたので、それをうたく掻甚するこずで効率よく進めるこずができたした。 執筆者は瀟員の䞭から募集しお、私は䞻に原皿のレビュヌや印刷の手配などを担圓しおいたす。 むベントなどで配垃されおいるずいうこずですが、反響はいかがですか S.S.さん むベントで配垃した際には、「ニフティの回線䜿っおいたすよ」ずいった嬉しい反応を倚くいただきたした。技術曞ずしおも面癜い内容になっおいるず思いたすが、ニフティずいう䌚瀟自䜓を改めお認知しおいただく効果も、䞀定皋床はあるのかなず感じたす。 あずは、瀟内の新卒採甚の堎面でも掻甚されおいるようで、䟋えば、倧孊蚪問の際に教授にこの本を枡しお、孊生に読んでもらったり、぀い最近も䞭途入瀟の方から「転職掻動䞭にこのTech Bookを読んで、ニフティに興味を持ちたした」ずいう声をいただいたりもしお、ずおも嬉しかったですね。 S.H.さん 私の同期も寄皿しおいるのですが、内容的にも普通にお金を取っおいいくらいレベルが高い技術曞になっおいるず感じたした。この本を通じお、ニフティの゚ンゞニアが持぀技術、レベルの高さを知っおいただけるのではないかず思いたす。 D.K.さん 採甚WGがスタヌトした圓初はブログだけで情報発信しおいお、本ずいう発想は党くなかったんです。そもそも本業を抱えながらやるには、劎力がかかりすぎるため、無理だろうず思っおいたした。ただ、そのめちゃくちゃ倧倉なこずにS.H.さんはチャレンゞしお、実際に圢にしおくれた。玔粋にすごいず思いたすし、それくらい熱心に掻動しおくれおいるのが嬉しいですね。 ニフティの゚ンゞニアが「瀟倖むベント」に参加しやすい環境を぀くる K.R.さんはブログの運営をご担圓されおいるず。 K.R.さん はい。具䜓的には、ブログの芋栄えや䜿い勝手を良くしたり、コンスタントに蚘事が投皿されるような斜策を実斜しおいたす。䟋えば、新入瀟員の方にリレヌ圢匏で蚘事を曞いおもらったり、クリスマスの時期にAdvent Calendarずいうテヌマを立おおブログの執筆者を募ったりず、色んな䌁画を行っおきたした。 K.R.さんはブログの運営をご担圓されおいるず。 K.R.さん ニフティの採甚サむトにも瀟員にむンタビュヌした蚘事はあるのですが、チヌムでの掻動にスポットを圓おた蚘事があっおもいいんじゃないかずいうこずでスタヌトしたした。チヌムの考え方や、目的意識、リアルな仕事の進め方を芋せるこずで、入瀟埌の働き方のむメヌゞがより湧くのではないかず。そういう私自身も、入瀟前に別チヌムのむンタビュヌ蚘事を読んでいお、ニフティでの仕事により興味が湧きたした。 K.R.さんはこれたでの掻動で印象に残っおいるこず、あるいは印象に残っおいる蚘事はありたすか K.R.さん やはり蚘事がバズった時は印象に残るずいうか、玠盎に嬉しいです。最近では、Advent Calendarの「ファミコンの゜フトを䜜る。Rustで。」ずいう蚘事がよく読たれたした。 あずは新人さんに蚘事を曞いおもらうこずもあるのですが、クオリティの高さに驚かされたす。私が読んでも普通に勉匷になるこずが倚くお、読者ずしお楜したせおもらっおいたす。 関連蚘事 ・ファミコンの゜フトを䜜る。Rustで。 ファミコンの゜フトを䜜る。Rust で。 では、S.H.さんはいかがですか S.H.さんのチヌムではニフティの゚ンゞニアが瀟倖むベントに参加しやすいよう、サポヌトを行っおいるずいうこずでしたよね。 S.H.さん そうですね。ニフティではこれたで自瀟むベントを積極的に開催しおきた䞀方で、瀟倖むベントぞの参加促進にはあたり力を入れおきたせんでした。そこで、泚目床の高い瀟倖むベントにどんどん参加し、䌚瀟のこずや゚ンゞニアの考え方を発信しおいくこずで、ニフティに関心を持っおもらおうず考え、昚幎からその埌抌しになるような取り組みを匷化しおいたす。 具䜓的に、どんな取り組みを S.H.さん たず、そもそも瀟倖むベントに関心を持っおいる、参加したいず思っおいる瀟員がどれくらいいるのかを知るためにアンケヌトを取りたした。するず、8割くらいが関心を持っおいるず。 かなりの割合ですね。 S.H.さん 私たちも正盎驚きたした。ただ、関心はあっおも、「むベントの準備をする時間が取れない」「自分に合うむベントが分からない」「参加にあたっお、瀟内申請や手続きの方法が分からない」ずいった課題を感じおいるこずが分かったんです。 こうした課題をふたえ、申請のフロヌを明確化したり、登壇資料の䜜成をお手䌝いしたり、その方に合いそうなむベントを玹介したりず、少しでも障壁を枛らすためのサポヌトを行っおいたす。 ちなみに、これたでどんなむベントに、瀟内の゚ンゞニアが登壇しおきたのでしょうか S.H.さん ニフティも協賛しおいるSRE NEXTずいうカンファレンスのセッションに、瀟内の゚ンゞニアも登壇しおもらいたした。ちょうどSRに関する掻動をしおいる瀟員がいお、こちらから参加をお願いしお実珟した事䟋ですね。 D.K.さん 瀟倖むベントぞの参加促進に関しおはただ取り組みが始たったばかりですので、これからどんどん数を増やしおいきたいず思っおいたす。いきなり「登壇したせんか」ず蚀っおもハヌドルが高いず思いたすので、たずは芳る偎・聞く偎ずしお気軜に参加しおもらうこずが倧事です。実際、瀟内のむベント参加蚘録を芋おも、採甚WGが匷化の取り組みを始めおから参加者が増えおいたすので、少しず぀成果が出始めおいるず感じたすね。 埌線に続きたす 今回はニフティの採甚ブランディングワヌキンググルヌプのむンタビュヌの様子をお届けしたした。埌線の蚘事は近日公開予定です。 このむンタビュヌに関する求人情報 /ブログ蚘事 ニフティ株匏䌚瀟 求人情報
はじめに リアルタむム性の高いマルチプレむダヌゲヌムは、耇数のプレむダヌの入力を集玄し、ゲヌムの状態を䞀貫させお党員ぞ配信する仕組みを必芁ずしたす。この仕組みの䞀぀に、暩嚁あるサヌバヌがゲヌムの状態を管理する専甚ゲヌムサヌバヌ (Dedicated Game Server) 方匏がありたす。察戊の公平性やチヌト察策、倚人数の同時接続が求められるタむトルでは、専甚ゲヌムサヌバヌ方匏が広く採られおいたす。この方匏では、マッチメむキング、ゲヌムサヌバヌの割り圓お、セッション終了埌のサヌバヌ回収ずいったラむフサむクル管理が必芁になり、そのオヌケストレヌション基盀をどう構築・運甚するかが蚭蚈䞊の倧きなテヌマずなりたす。 AWS で専甚ゲヌムサヌバヌをホストする䞻な遞択肢は、マネヌゞドサヌビスの Amazon GameLift Servers を利甚するか、 Amazon Elastic Compute Cloud (EC2) や Amazon Elastic Container Service (ECS) 、 Amazon Elastic Kubernetes Service (EKS) 䞊でセルフホストするかの 2 ぀です。GameLift Servers はむンフラ構築・運甚の倧郚分を担いたすが、芁件によっおはより柔軟な制埡が必芁な堎合があり、 Agones の利甚が遞択肢の䞀぀ずなりたす。Agones はオヌプン゜ヌスの専甚ゲヌムサヌバヌホスティング向け補品で、Amazon EKS 䞊にデプロむでき、柔軟性を享受し぀぀専甚ゲヌムサヌバヌの構成を簡玠化できたす。しかし Kubernetes 基盀の運甚は避けられず、Agones の運甚には䞀定の負荷が存圚したした。 2024 幎 12 月に䞀般提䟛が始たった Amazon EKS Auto Mode は、Kubernetes の構築・運甚負担を䜎枛する機胜です。Agones の基盀ずなる EKS クラスタで EKS Auto Mode を利甚できれば、専甚ゲヌムサヌバヌを柔軟か぀簡玠に構築・運甚できたす。ただし EKS Auto Mode にはいく぀かの制玄もありたす。 本蚘事では、EKS Auto Mode の制玄が Agones の特性を阻害しないようにするための蚭蚈方針を玹介したす。 Agones リ゜ヌスの抂芁 本蚘事の内容に関連する Agones カスタムリ゜ヌスに぀いお説明したす。 GameServer プレむダヌが接続するゲヌムサヌバヌプログラムが動䜜する Pod にあたるリ゜ヌスです。状態を持ち、Ready 状態はゲヌム開始可胜で埅機しおいる状態、Allocated 状態はゲヌムプレむのためにリ゜ヌスが確保された状態を衚したす。 Fleet GameServer のたずたりを管理するためのリ゜ヌスです。垞に起動しおおくべき GameServer リ゜ヌスの数を指定でき、Fleet Autoscaler リ゜ヌスによるスケヌリング制埡も可胜です。 GameServer Allocation ゲヌムプレむのために GameServer リ゜ヌスを遞択し確保する操䜜を行うリ゜ヌスです。この操䜜により遞択された GameServer リ゜ヌスは Ready 状態から Allocated 状態ずなりたす。 コントロヌラ系リ゜ヌス Agones の機胜を実珟・制埡するためのリ゜ヌス矀です。 EKS Auto Mode ず Agones の共存における課題 EKS Auto Mode は、クラスタのノヌド管理を AWS の責任範囲で自動化したす。䟋えば Karpenter をベヌスずしたノヌドのプロビゞョニング・スケヌリング・入れ替え、Bottlerocket による最適化された OS、各皮アドオンのマネヌゞド管理ずいった機胜により、Kubernetes の運甚を倧幅に簡玠化できたす。 䞀方、ナヌザヌ偎で蚭定できる範囲が狭たるずいうトレヌドオフがありたす。Agones の基盀ずしお特に考慮が必芁なのは、EKS Auto Mode が以䞋の目的のために自動で行うノヌドの䞭断です。 Consolidation 皌働䞭の Pod が少ないノヌドを終了し、利甚率の高いノヌドぞ Pod を集玄しおコストを最適化する。 Drift NodePool や NodeClass の蚭定倉曎、AMI の曎新などに远埓しおノヌドを入れ替える。 Expiration セキュリティ維持のため、䞀定期間が経過したノヌドを匷制的に入れ替える。 Interruption Spot Instance の䞭断通知やハヌドりェア障害などに応じおノヌドを終了する。 ※EKS Auto Mode の長期実行ワヌクロヌドでの扱いに぀いおは、builders.flash 蚘事「 Amazon EKS Auto Mode のノヌド自動曎新を Deep Dive する 」もあわせお参照ください。 いずれの䞭断でも、察象ノヌド䞊の Pod ぞ SIGTERM が発行されたす。Agones䞊で動かすような専甚ゲヌムサヌバヌには「プレむ䞭のゲヌムセッションを䞭断させない」ずいう匷い制玄があるため、察策をしないずプレむ䞭のゲヌムサヌバヌが匷制終了されるリスクがありたす。 EKS Auto Mode ず Agones を共存させる蚭定のポむント そこで、Agones のコントロヌラ系ずゲヌムプレむ䞭のサヌバヌプログラムをノヌドの䞭断から保護する仕組みを、次の 6 ぀のポむントで構成したす。以降、それぞれのポむントに぀いお、実際の蚭定ファむル ( nodepools.yaml / fleet.yaml / agones-values.yaml ) を匕甚しながら、具䜓的な実装方法を説明したす。 Point # 察象 内容 Point 1 共通 NodePool の expireAfter 、 terminationGracePeriod を適切に蚭定する Point 2 GameServer GameServer の Pod の terminationGracePeriodSeconds をゲヌムの最倧持続時間より長い倀に蚭定する Point 3 GameServer GameServer 䞊で動くサヌバヌアプリで、適切なシグナルハンドリングを実装する Point 4 GameServer Eviction を蚱可しおノヌドの自動最適化を機胜させる ( spec.eviction.safe: Always ) Point 5 コントロヌラ系 Agones コントロヌラ系ず GameServer が配眮される NodePool を分ける Point 6 コントロヌラ系 agones-allocator ず agones-ping の PDB を有効にする Point 1 (共通) NodePool の expireAfter / terminationGracePeriod を適切に蚭定する EKS Auto Mode では、ノヌドは必ずい぀か䞭断されたす。特に Expiration はノヌド生存期間最倧21日の制玄があり、必ず発生したす。この expireAfter の倀ず、ノヌドが匷制的に䞭断されるたでの猶予期間である terminationGracePeriod を、ワヌクロヌド特性に合わせお NodePool に蚭定するこずが起点になりたす。 NodePool ずは、Karpenter ベヌスのノヌド管理機胜で、Pod の芁求に応じおむンスタンスを自動的にプロビゞョニング・スケヌリングし、クラスタヌのコンピュヌトリ゜ヌスを柔軟に管理するための仕組みです。 蚭定にあたっおは、次の関係を守るようにしおください。 terminationGracePeriod は、埌述する Pod の terminationGracePeriodSeconds より長く蚭定する (ノヌドが匷制削陀される前に、Pod が Graceful に終了しきるようにするため) 。 expireAfter + terminationGracePeriod の合蚈は最倧 21 日に収める (EKS Auto Mode の制玄) 。 たた disruption.budgets の nodes: "10%" NodePool Disruption Budgets: NDBにより、同時に䞭断凊理ぞ入るノヌド数を党䜓の 10 % に制限し、䞀斉䞭断の圱響を抑えたす。 consolidationPolicy: WhenEmpty に぀いおは Point 4 で觊れたす。 Point 1 を螏たえた NodePool の蚭定䟋は次の通りです nodepools.yaml 。 # GameServer 甹 NodePool apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: agones-worker spec: template: spec: # Point 1: ゲヌムセッション時間を考慮しお蚭定 # terminationGracePeriod は Pod の terminationGracePeriodSeconds より長くするこず expireAfter: 336h # 14日 terminationGracePeriod: 4h # expireAfter + terminationGracePeriod が21日(504h)に収たるように disruption: consolidationPolicy: WhenEmpty consolidateAfter: 30s budgets: - nodes: "10%" Point 2GameServerPod の terminationGracePeriodSeconds をゲヌム最倧持続時間より長く蚭定する ノヌドが䞭断され Pod に SIGTERM が発行されおから、Pod が匷制終了SIGKILLされるたでの猶予が terminationGracePeriodSeconds です。この倀をゲヌムの最倧持続時間より長く蚭定するこずで、進行䞭のゲヌムが途䞭で匷制終了されるこずを防ぎたす。 terminationGracePeriodSeconds は Pod リ゜ヌスの蚭定倀ですが、Agones では GameServer リ゜ヌス定矩内で蚭定するこずになりたす。たた GameServer の制埡は Fleet で行うこずが䞀般的なため、ここでは Fleet の蚭定䟋を次の通り瀺したす ( fleet.yaml ) apiVersion: "agones.dev/v1" kind: Fleet metadata: name: simple-game-server-fleet spec: replicas: 3 template: spec: # ... (省略) template: spec: # Point 2: ゲヌムセッション最倧持続時間 + バッファより長い倀を蚭定 # 䟋: ゲヌム最倧30min + クリヌンアップ5min = 35min = 2100sec terminationGracePeriodSeconds: 2100 ゲヌムセッション 1 ぀の最倧持続時間に、クリヌンアップ凊理のバッファを加えた倀を蚭定したす。Point 1 の terminationGracePeriod (ノヌド偎の猶予) を、この terminationGracePeriodSeconds (Pod 偎の猶予) より長く蚭定するこずで、 terminationGracePeriod > terminationGracePeriodSeconds > ゲヌム最倧持続時間 の関係が成立し、プレむ䞭のゲヌムを保護できたす。 たずめるず、 以䞋を満たすように各パラメヌタを蚭定すればよいこずになりたす。 NodePool の terminationGracePeriod > Pod の terminationGracePeriodSeconds > ゲヌムの最倧持続時間 NodePool の expireAfter は自由 ( terminationGracePeriod ずの合蚈は 21 日以䞋) Point 3 (GameServer) 適切なシグナルハンドリングを実装する Point 1・2 で猶予期間を確保しおも、SIGTERM を受け取ったサヌバヌプログラムが適切に振る舞わなければ、ゲヌムサヌバヌは安党に終了できたせん。GameServer 䞊で動くサヌバヌプログラムでは、SIGTERM を受信したずきに次の動䜜を実装したす。 Allocated 状態 (ゲヌム進行䞭) 進行䞭のゲヌムの終了を埅ち、クリヌンアップ凊理を行った埌に Agones SDK の sdk.Shutdown() を呌び出す。 Ready 状態 (埅機䞭) 新芏 Allocation を防ぐため、即時 sdk.Shutdown() を呌び出す。 この実装により、ノヌド䞭断のシグナルを受けおも、進行䞭のゲヌムを守り぀぀、埅機䞭のサヌバヌは速やかに退去できたす。 Point 4 (GameServer) Eviction を蚱可しおノヌドの自動最適化を機胜させる ( spec.eviction.safe: Always ) Point 1〜3 でプレむ䞭のゲヌムを保護できたら、次に Agones の spec.eviction.safe を Always に蚭定し、EKS Auto Mode によるノヌドの自動最適化を機胜させたす ( fleet.yaml ) 。 spec: template: spec: # Point 4: eviction.safe を Always に蚭定 # Karpenter の Drift/Consolidation/Expiration 時に Graceful な Eviction を蚱可する eviction: safe: Always spec.eviction.safe は、各 GameServer の Pod に察しお Agones が内郚的に䜜成する PDB ( maxUnavailable: 0% ) を有効化するかどうかを制埡したす。デフォルトの Never の堎合、垞に eviction をブロックする動きずなりたす。 (衚は https://agones.dev/site/docs/advanced/controlling-disruption/ より) Never のたたでは、この PDB がすべおの Eviction をブロックし、EKS Auto Mode 環境で次の問題が発生したす。 Karpenter が Consolidation / Drift を詊みおも Pod に SIGTERM が発行されず退去しないため、Cordon 状態のノヌドが既存 Pod ごず残り続け、コスト効率が悪化する。 Drift (AMI 曎新) が PDB にブロックされ、セキュリティパッチの適甚が遅延する。 䞊蚘の動䜜の結果、近い時間垯に起動した党ノヌド䞊の Pod が Expiration たで生存し続け、それらの Pod が近い時間垯に䞀斉に SIGKILL されるリスクが生じる。 Always を蚭定するず Agones のネむティブ PDB が無効化され、Eviction が蚱可されたす。Pod が皌働䞭のノヌドでも Drift による AMI 自動曎新ず、Expiration 時の Graceful なノヌド入れ替えが機胜するようになりたす (Never ではこれらが PDB にブロックされたす) 。プレむ䞭のゲヌムの保護は Point 1〜3 で確保した猶予期間ずシグナルハンドリングが担保するため、Always にしおも進行䞭のゲヌムが即座に切断されるこずはありたせん。 Always の蚭定でも安党に運甚する目的で、Point 1 で蚭定した consolidationPolicy: WhenEmpty (Pod が残っおいるノヌドでは Consolidation を発動させない) ず NDB ( nodes: "10%" 、同時䞭断ノヌド数の制限) を補完策ずしお組み合わせたす。Always は Drift / Expiration を有効に機胜させる䞀方、Consolidation たで WhenEmptyOrUnderutilized にするず皌働䞭 Pod のあるノヌドも集玄察象ずなりゲヌムサヌバヌが頻繁に Evict され埗るため、Consolidation は WhenEmpty に絞り、空ノヌドの回収のみに留めたす。Agones の Fleet 蚭定 spec.scheduling の倀はデフォルトで Packed ずなっおおり、できるだけ既に GameServer が動䜜しおいるノヌドに新芏 GameServer を起動するようにスケゞュヌルするため、 WhenEmpty の蚭定でも十分なコスト最適化効果が芋蟌めたす。 Point 5 (コントロヌラ系) Agones コントロヌラ系ず GameServer の NodePool を分ける Point 1 で蚭定した expireAfter / terminationGracePeriod は NodePool 単䜍の蚭定です。Agones のコントロヌラ系 (controller / extensions / allocator / ping) ず GameServer では、必芁な猶予期間が異なりたす。 コントロヌラ系 短時間の再起動が蚱容されるため、長期安定皌働を優先し぀぀猶予は比范的短くおよい。 GameServer ゲヌム最倧持続時間に察応した長い猶予 ( terminationGracePeriod ) が必芁。 そこで、コントロヌラ系甚ず GameServer 甚で NodePool を分離したす ( nodepools.yaml ) 。 # コントロヌラ甚 NodePool apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: agones-controller spec: template: metadata: labels: agones-role: controller # ラベルで圹割を区別 spec: # コントロヌラは長期安定皌働を優先 expireAfter: 336h # 14日 terminationGracePeriod: 72h # 3日 --- # GameServer 甹 NodePool (Point 1 で前掲) # labels: agones-role: gameserver / terminationGracePeriod: 4h そのうえで、GameServer 偎は Fleet の nodeSelector で GameServer 甹 NodePool を指定したす ( fleet.yaml ) 。 template: spec: # Point 5: GameServer 甹 NodePool にスケゞュヌル nodeSelector: agones-role: gameserver コントロヌラ系は、Agones の Helm Values で nodeSelector を指定し、コントロヌラ甚 NodePool に配眮したす ( agones-values.yaml ) 。 agones: controller: # Point 5: コントロヌラ甚 NodePool にスケゞュヌル nodeSelector: agones-role: controller extensions: nodeSelector: agones-role: controller allocator: nodeSelector: agones-role: controller ping: nodeSelector: agones-role: controller これにより、それぞれのワヌクロヌド特性に合った猶予期間を䞡立できたす。 Point 6 (コントロヌラ系) agones-allocator ず agones-ping の PDB を有効にする 前述の通り EKS Auto Mode ではい぀か必ずノヌドの䞭断が発生するため、Agones のコントロヌラ系サヌビスでも可甚性維持のための蚭定が重芁です。agones-allocator (ゲヌムサヌバヌの割り圓おリク゚ストを受け付けるサヌビス) ず agones-ping (レむテンシヌ蚈枬甚サヌビス) はデフォルトで PDB が無効のため、ノヌドが䞭断されおもこれらが党停止しないよう、PDB を有効化したす ( agones-values.yaml ) 。 agones: allocator: replicas: 3 # Point 6: allocator の PDB を有効化 pdb: enabled: true minAvailable: 1 ping: replicas: 2 # Point 6: ping の PDB を有効化 pdb: enabled: true minAvailable: 1 minAvailable: 1 により、ノヌド䞭断時にも最䜎 1 レプリカが皌働し続けるこずを保蚌し、コントロヌルプレヌンの可甚性を維持したす。 なお、agones-controller, agones-extensions はデフォルトで PDB が有効ずなっおいたす。 さらに安定した運甚のための補足 (レアケヌスぞの察凊) Point 1〜6 の蚭蚈により、通垞のノヌド䞭断からのゲヌムサヌバヌ保護を実珟できたす。さらに安定した運甚のためには、次のレアケヌスぞの察凊も怜蚎ポむントになりたす。いずれも各実装に䟝存するため、必芁に応じお怜蚎しおください。 GameServerAllocation のレヌスコンディション Ready 状態の GameServer が SIGTERM を受信した盎埌から Shutdown 完了たでの間に、GameServerAllocation によっお Allocate される可胜性がれロではありたせん。これが起こるず、プレむダヌが接続するころには Allocate された GameServer が既に停止しおおり゚ラヌずなるリスクがありたす。以䞋はこれを防ぐ方法の䟋です。 GameServer にあらかじめラベル ( allocationblock=false 等) を付䞎し、GameServerAllocation 偎でそのラベルを持぀ Pod のみを察象ずする蚭定を行う。SIGTERM 受信時には即座にラベルを倖す。ラベル削陀埌も䞀定時間埅機し、その間に Allocate された堎合はゲヌムを継続し、終了埌に Shutdown する。 èµ·å‹•äž­ Pod ぞの SIGTERM 発行時のハンドリング䞍可 コンテナ起動䞭 (Starting / ContainerCreating) に SIGTERM が発行されるず、アプリケヌション偎でハンドリングできず、GameServer は正垞に起動し Ready 状態ずなる䞀方、 Pod は terminationGracePeriodSeconds 経過埌に停止しおしたう動䜜ずなり、ゲヌムを保護できたせん。これを防ぐには以䞋の方法が䟋ずしお挙げられたす。 察策䟋 1 GameServer にあらかじめラベル (allocationblock=false 等) を付䞎し、GameServerAllocation 偎でそのラベルを持぀ Pod のみを察象ずする蚭定を行う。倖郚コントロヌラで Pod の deletionTimestamp を監芖し、非 null、぀たり削陀予定がある状態なら、前述の Allocation 甚ラベルを倖し、新芏 Allocation を防ぐ。 察策䟋 2 むメヌゞサむズの削枛・DaemonSet 等による事前 pullずいった方法で起動時間短瞮を図り、発生確率を最小化する。 たずめ 本蚘事では、Agones の基盀に EKS Auto Mode を採甚する際、ノヌドの自動䞭断からゲヌムサヌバヌを保護する蚭蚈を 6 ぀のポむントで玹介したした。専甚ゲヌムサヌバヌのセルフホストで、Agones の柔軟性を掻かし぀぀ EKS Auto Mode で運甚管理をシンプルにするには、EKS Auto Mode のノヌド䞭断ず Agones のゲヌムサヌバヌラむフサむクルの競合を解消する蚭蚈が鍵になりたす。 本蚘事で玹介した Point 1〜6 の蚭蚈パタヌンず実装䟋 ( nodepools.yaml / fleet.yaml / agones-values.yaml ) が、EKS Auto Mode 䞊での Agones 導入を怜蚎する方の参考になれば幞いです。
1. はじめに これたで、AWS AI League Community Editionに぀いお、以䞋の蚘事で党䜓像ずデプロむ方法を玹介したした。 AWS AI Leagueを自身のAWS環境で詊す ─ Community Editionの党䜓像 AWS AI Leagueを自身のAWS環境で詊す ─ Community Editionのデプロむ 前回の蚘事では、Community Editionを自身のAWSアカりントぞデプロむし、ブラりザからログむンできるずころたで確認したした。今回は、実際に Game Play を実行しおみたす。 Community Editionでは、甚

動画

曞籍

おすすめマガゞン

蚘事の写真

空間で䌝えるオフィス――虎ノ門「Honda Software Studio Tokyo」に隠されたHondaの哲孊を探し...

蚘事の写真

「PyCon JP 2026」の芋どころを解説 䜕が新しい泚目のキヌノヌトやトヌクはプログラムチヌムリヌダヌに聞い...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

新着動画

蚘事の写真

【解説】SNSで話題の「グラプンゞニアリング」の正䜓は / ルヌプ゚ンゞニアリングずの関係も解説

蚘事の写真

クラりドAIが䜿えない珟堎は、どうAIを"持぀"のか補造業の事䟋から孊ぶロヌカルAIFOCUSTUDIO

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず