2023年10月8日(日)に「PHPカンファレンス2023」が大田区産業プラザにて開催され、GMOインターネットグループはスペシャルスポンサーとして協賛・登壇しました!
今回は、スポンサーセッション「ConoHaの課金元データ収集バッチの進化と軌跡」と題して、OpenStackを利用しているConoHaの課金におけるシステムの一部に焦点を当てた講演内容をお届けします。ぜひご覧ください。
イベント告知:https://developers.gmo.jp/35808/
目次
登壇者
- 瀬戸悠平
GMOインターネットグループ株式会社 インフラ運用本部アーキテクト統括チームSREチーム
プロポーザル:https://fortee.jp/phpcon-2023/proposal/196a5410-96d5-470c-a975-1fba619c33e7
ConoHaとOpenStackについて
ConoHaは、GMOインターネットグループが提供するIaaS型クラウドサービスで、2013年7月4日のリリースから今年で10周年となるサービスです。2023年3月1日にはゲームに特化したConoHa for GAMEもリリース。基盤はOpenStackで、時間課金を採用したサービスとなっています。

この時間課金は複合的で、利用が1カ月に満たない場合は時間課金として、例えばメモリ1GBプランだと1時間1.7円で、1カ月間利用すると、月額料金以上の請求は発生しない、という形になります。VPSや追加SSD(Volume)、ロードバランサー、イメージ保存の容量などが課金対象です。

基盤として使っているOpenStackは、オープンソースで開発されている、IaaS環境構築のためのソフトウェア群で、ConoHa for GAMEではバージョン「yoga」を採用していると瀬戸は説明します。
ConoHa for GAMEのインフラ構成では、各機能の提供や管理を行うコンポーネントごとに分かれていて、仮想マシンのNova、VMイメージのGlance、仮想ネットワーキングのNeutron、認証と権限管理のKeystoneなどといった具合です。

各コンポーネントはさらに分割されていて、相互に通信する仕組みをしています。 例えばNovaであれば「Nova-api」「Nova-compute」「Nova-conductor」「Nova-scheduler」に分かれています。

課金システムを独自実装
こうしたOpenStackですが、ConoHaが提供しているような時間課金に直結するようなコンポーネントが存在しないと瀬戸は言います。そこでまず利用したのが、OpenStackで使われるEvent Typeで、「create.end」や「delete.end」といった作成・削除の完了通知を計測すれば利用時間が計測できると考えたそうです。
バッチシステムv1について


ConoHaのシステム構成ではMongoDBに課金に必要な情報が登録されているため、そのまま課金システムと接続するのが自然ですが、課金システムを別チームが作っているため、バッチシステムとMySQLの課金データ用DBを経由して課金システムに接続する形になりました。

MongoDB上のデータを定期的にバッチシステムが参照し、課金システム側が参照している課金データ用DBに書き込むという仕組みです。これがバッチシステムのv1として稼働しました。
バッチシステムv1は、ConoHaの稼働にあわせて2013年からスタート。php5.4を利用し、1時間に1回実行してMySQLに書き込む作業を実施。合致するEvent Typeを検索して一致したものを取得して挿入するというシンプルな設計です。一人で開発して運用するという状況だったと言います。
ただ、そうした状況だったため、不整合検知の仕組みはあっても完全ではなく、最終的に人の目で確認が必要なのにダブルチェックができないという状況で、そこで瀬戸が参加してスキルトランスファーが実施されることになりました。
実際に参画してみるといくつか課題があったそうです。まずgit管理されていない点、同じ時間課金システムを採用するConoHaの複数リージョンや別サービスで、似たようなシステムが乱立してしまっている点、そしてコードの可読性も低かったと瀬戸は話します。

git管理されていないことの問題としては、課金システム自体は回収が通常発生しない基本システムではあるものの、バックファイルが乱立してしまう問題がありました。様々な名称のファイルが乱立して、引継ぎをしてもどのファイルが実際に利用されているものか分かりづらかったそうです。

これは瀬戸が真っ先にgit管理に変更し、バックアップファイルをすべて削除して整理。1サービスだけで1,118件の無駄なファイルが整理されたそうです。gitはバージョン管理ができるため、自動的にバックアップファイルが不要になりました。
複数のサービスでConoHaと同じOpenStackやCeilometerなどを使ったシステムを構築していたためバッチシステムを流用してしまったことで、同じようなシステムが乱立していたという課題に対しては、v1のバッチシステムでは対処が難しく、v2の開発で解決を目指しました。
3つ目の課題であるコードの可読性の低さについては、例えば基本的に変数を3文字に省略して記載されていたため謎解きに近い状態だったと言います。また、コメントもほとんどないので個人的に読みにくかったそうです。結果としてコードを読もうとしても理解に時間がかかり、問題発生時にも対処が遅れる問題がありました。

そして、git管理以外の課題解決を目指して、バッチシステムv2の開発がスタートしました。バッチシステムv1では、ディレクトリ構成が環境ごとに用意されていました。日本リージョン向け、タイリージョン向けなどといった具合に切り分けられ、そのディレクトリの中には同じ名前のファイルが存在していました。
こうしたディレクトリ構成を改め、configや処理部分を1カ所にまとめ、未導入だったcomposerの導入も行いました。composerによって構成管理がしやすくなったそうです。
バッチシステムv2について


そしてさらに導入したのが「php-cs-fixer」です。これは、コード自動整形を備えたツールで、開発者のコードの癖を除去できると言います。OSSであるため無料で利用できることに加え、整形ルールをgitに保存できるので統一しやすいといったメリットもあったそうです。
この取り組みによって3つの課題すべて解決したバッチシステムv2が実現できました。
ConoHaの最新サービスであるConoHa for GAMEでは、OpenStackのバージョンとして「yoga」を採用しました。ところが、課金のための情報を保管するMongoDBに対してコンポーネントのCeilometerがレコードを登録しなくなってしまいました。
バッチシステムv3について

そのため、Rabbit MQからバッチシステムが情報を取得する設計に変更。それを実現するためのバッチシステムv3の開発に取りかかりました。今までは1時間に1回の情報取得だったのを、リアルタイムにRabbitMQからデータ取得する宇ようにしました。これはphp-amqplibを採用して実現したそうです。

結果としてよりシンプルな構成となったバッチシステムv3が現在のシステムとして稼働しています。
課金収集バッチシステムの開発者として瀬戸は、git管理の重要性を改めて感じたと話します。コードの可読性やシステムやサービスの拡張性を考慮したシステム構成をあらかじめ検討してサービスを展開する必要性も感じたと言います。
こうした点は従来から一般的にいわれていることですが、特に変数名の省略形を使わなかった場合の対応を実体験として行えたことが学びになったと瀬戸は話していました。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(608)
-
イベント(242)
-
カルチャー(61)
-
デザイン(77)
TAG
- 5G
- Active Directory
- AI
- AI for DevOps
- AI TALK
- AI 機械学習強化学習
- AI/機械学習
- AIO
- AIエージェント
- AIコーディング
- AIコーディングエージェント
- AIセキュリティ
- AI人財
- AI教育
- AI活用
- AI研究
- AI駆動
- Behind the Scenes
- BIT VALLEY
- blockchain
- ChatGPT
- ChatGPT Team
- Claude Code
- Claude Team
- cloudflare
- cloudnative
- CNDO
- CNDT
- CODE BLUE
- ConoHa
- ConoHa VPS
- ConoHa VPS MCP
- CSS
- CTF
- DEF CON
- DEF CON 34
- Designship
- developer
- DevRel
- DevSecOpsThon
- Docker
- DTF
- EDR
- Engineering Journey
- expert
- EXPERT CROSS
- GMO AI&ロボティクス商事
- GMO AIR
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOインターネット
- GMOインターネットグループ
- GMOインターネットグループ陸上部
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティ byイエラエ
- GMOサイバーセキュリティbyイエラエ
- GMOデジキッズ
- GMOヒューマノイド・ラボ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメイクショップ
- GMOメディア
- GMOロボッツ
- GMO大会議
- GMO天秤AI
- Go
- GPUクラウド
- GTB
- Hack-1グランプリ
- IETF
- iOS
- IoT
- ISUCON
- Japan Drone
- JapanDrone
- Java
- JJUG
- JSAI2026
- K8s
- Kaigi on Rails
- Kerberos
- Kids VALLEY
- LLM
- LLMO
- MCP
- MetaMask
- MySQL
- NFT
- OpenStack
- OSS
- Perl
- PHP
- PHPcon
- PHPerKaigi
- Python
- QUIC
- RFC
- RPA
- Ruby
- SECCON
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- Takumi byGMO
- Terraform
- TypeScript
- UI/UX
- vibe
- VLA
- VPN
- VPS
- VS Code
- WebRTC
- Webアプリケーション開発
- XR
- XSS
- Yoitoi Summit
- ZTNA
- アウトプット
- アドベントカレンダー
- イベントレポート
- インターンシップ
- インハウス
- インフラ
- エキスパート制度
- エキスパート座談会
- エンジニア採用
- エンジニア文化
- お名前.com
- クラウド
- クリエイターインタビュー
- クリエイティブ
- コーディングエージェント
- コンテナ
- コンピュータビジョン
- サイバーセキュリティ
- サマーインターン
- スクラム
- スパム対策
- スペシャリスト
- セキュリティ
- セキュリティカンファレンス
- セキュリティ人材
- センシング
- ソフトウェアサプライチェーン
- ソフトウェア開発
- チームビルディング
- データサイエンティスト
- デザイン
- ネットのセキュリティもGMO
- ハーネスエンジニアリング
- バイブコーディング
- バックエンド
- ヒューマノイド
- ヒューマノイドロボット
- フィジカルAI
- フルスタック開発
- プログラミング教育
- ブロックチェーン
- フロントエンド
- プロンプトインジェクション
- ペアリング暗号
- ペネトレーションテスト
- ホワイトハッカー
- ゆめみらいワーク
- リモートワーク
- レッドチーム
- レンタルサーバー
- ロボット
- ロボット導入
- ロボティクス
- ワークフロー
- 世界モデル
- 京大ミートアップ
- 京都大学
- 京都未踏
- 人型ロボット
- 人工知能
- 人工知能学会
- 光学
- 国際ロボット展
- 国際標準化
- 基礎
- 多拠点開発
- 大阪公立大学
- 宇宙セキュリティ
- 宮崎オフィス
- 強化学習
- 応用
- 技育プロジェクト
- 技術イベント
- 技術ブログ
- 技術同人誌
- 技術広報
- 技術書典
- 拡張知能
- 新卒
- 新卒研修
- 新規サービス開発
- 映像
- 映像クリエイター
- 映像制作
- 暗号
- 未踏
- 業務効率化
- 機械学習
- 次世代育成
- 決済
- 生成AI
- 産学連携
- 研究開発
- 社会実装
- 社内コミュニティ
- 組織横断
- 耐量子暗号
- 脆弱性診断
- 自動化
- 自律実行
- 若手人材育成
- 通信技術
- 開発組織
- 開発者
PICKUP
-
【エキスパート座談会 #1】生成AI活用の現在地:作業の自動化から「仕組みづくり」へ
技術情報
-
【第4回・AI TALK】GMOインターネットグループ・石丸智輝さんに聞く、AI時代に「人が書く意味」
技術情報
-
近畿圏の若手14名、半年の開発の起点に。「京都未踏」ブースト会議レポート
イベント
-
【第3回・AI TALK】GMOインターネットグループ・真次さんに聞く、ヒューマノイドの現在地と研究者としての挑戦
技術情報
-
【DEF CON 34 参加レポート】GMOインターネットグループが挑む、世界最高峰セキュリティカンファレンスの最前線
イベント
-
【Expert Cross #4・後編】「場づくり」を通じて新しい概念を組織に浸透。横のつながりと共に広がった「エキスパートとしての視野」
技術情報