blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2023.04.25 カルチャー・環境

リアルタイムネットワークグループとOSS

by castaneai

#kubernetes #oss

こんにちは。 castaneai です。 ゲームサービス事業本部内のリアルタイムネットワークグループという部署に属しており、主にゲームのリアルタイム通信部分の開発・運用を担当しています。

2021年12月にDeNAに中途入社し、現在の勤務歴は1年ちょっとです。 入社後に私が行ったリアルタイムネットワークグループの業務内容について一部紹介できればと思います。

リアルタイムネットワークグループについて

はじめにリアルタイムネットワークグループについて軽く紹介します。 リアルタイムネットワークグループは主にゲーム分野におけるリアルタイム通信(協力プレイや対戦など、ゲーム内の状況がリアルタイムに変化する遊びの部分)の開発と運用を担当するチームです。

リアルタイム通信がかかわる箇所は、他の機能にはない固有の知識が求められます。 高頻度なデータのやり取りが必要な中でどのように遅延や通信量の削減をできるかが鍵となります。そのためのインフラも特殊な設定が必要です。 リアルタイムネットワークグループはそういった知識を持つメンバーが集まってサポートを行っています。

OSSの業務利用と貢献

ここ最近のリアルタイムネットワークグループではOSS(オープンソースソフトウェア)の利用が増えています。 したがって業務内でもOSSの調査や技術検証を行う機会が多くあります。

私自身の興味もあって入社後は主にKubernetesとその周辺環境の検証や運用を行いました。 KubernetesそのものもOSSですし、Kubernetes上で動く拡張機能もまたOSSとして多く公開されています。

具体的な例のひとつが External Secrets Operator です。これはKubernetes上で秘密情報を扱うための拡張機能で、業務で利用する可能性があったため検証を行いました。

基本的な機能は問題なく動作しましたが、特定の例外ケースでメモリリークする不具合が発見されました。報告して修正を待つという手もありますが、せっかくのOSSということで自ら修正を試みました。

Goで書かれたアプリケーションのリークであるため、いわゆる"Goroutine leak"(Goroutineが単調増加する問題)だと推測し、 付属のProfiling tool を使って問題発生時にGoroutineのbacktraceを表示して処理を特定しました。

レビュアーにとって修正内容が分かりやすいように、PrometheusとGrafanaを使って時間経過によるGoroutine数を計測しパッチ適用前と適用後の比較画像を用意しました。 こういったメトリクスが手軽に取れるのはGoの良いところですね!

送信したパッチは以下のGitHub Pull Requestです。 いくつかのレビューの後、変更が承認されマージしてもらいました!

Fix the leak in GCPSM when the secret operator cannot find the secret. by castaneai · Pull Request #722 · external-secrets/external-secrets

Gaming OSSコミュニティへの参加

ゲームに特化したOSSの検証も行っています。例えばGoogleさん主導で開発されている Agones Open Match などが該当します。 こちらも上記のExternal Secretsと同様に、業務内で検証を行い開発者へのフィードバックやバグの報告、修正パッチの送信までを行っています。

OSS開発へ参加することで多くの人が同時に触りやすいコードベースをどうすれば維持できるか、利用者にとって分かりやすいインタフェースは何か、ドキュメントはどのように書くべきか、などソフトウェア開発において重要なスキルが身につくことを実感します。業務内でこのような経験ができるのは個人のスキルアップにもつながるため大変ありがたく感じます。

また、 Game Engineers Meetup(通称GEM) というGoogle CloudやGoogle発のGaming OSSをテーマとした勉強会も行われており私自身も何度か登壇させていただきました。 GEMのコミュニティSlack もありGaming OSSについて日本語での情報交換もできます。

積み上げたナレッジを外部に発信することでよりGaming OSSの利用者が増え結果的にOSS自体の開発も促進されることが期待できます。また、登壇することで会社としてのプレゼンスも上がるのも嬉しいポイントですね。

まとめ

リアルタイムネットワークグループではゲームのリアルタイム通信にかかわる開発や運用を日々行っており、最近はOSSの利用も増えています。

ゲーム特化のOSSに限らず業務で使う可能性のあるものは幅広く検証しており、時には自らパッチを送ることもあります。こうした業務からソフトウェア開発において重要なスキルが身に付き、外部発信のきっかけにもなるので今後ともやっていきたいと思っています。

最後に宣伝になりますが、リアルタイムネットワークグループでは一緒に働く仲間を募集しています。 リアルタイム通信技術やOSSに興味のある方はぜひ 採用ページ もご覧ください!

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。