GIO HaaS APIについて

GIO HaaS APIについて

GIO HaaSシステムでは、システムをコントロールするためのAPIが用意されている。3層でいう所のサービス層がクライアントからのAPI受け口になる。 APIリクエストを処理するために、サービス層には、Request Broker Daemonが動作している。このDaemonをHaas Request Brokerと呼ぶ。

APIのリクエストで使用されるプロトコルはXML-RPCである。XML-RPCを採用した理由は、IIJ社内で一番利用されているプロトコルであったためである。 APIは大きくいくつかの項目に分類される。VM管理、ネットワーク管理、ストレージ管理、初期化、VMイメージ管理、その他となる。

おのおのの分類のなかに細かいAPIが定義されることになる。例としていくつかを以下にあげる。

VM管理
VM情報を管理する。またイメージのインストールや電源管理なども含む。
  • getVmInfo(VM情報取得)
  • powerOnVm(VMパワーオン)
  • powerOffVm(VMパワーオフ)
  • restoreImage(イメージのインストール)
    ....
ネットワーク管理
ネットワーク情報を管理する。VMへのネットワークの付けこみ、IPアドレスの確保などを行う。
  • getNetworkList(ネットワーク情報取得)
  • allocateNetowrk(ネットワークリソース確保)
  • allocateIpAddress(IPアドレス確保)
  • attachNetwork(VMへネットワークの取りつけ)
    ....
ストレージ管理
ストレージ情報の管理を行う。拡張ディスクの管理や付けこみなどを行う。
  • getVolumeList(ストレージ情報取得)
  • allocateVolume(ストレージリソース確保)
  • deallocateVolume(ストレージリソース解放)
  • attachVolume(VMへストレージの取りつけ)
    ....
初期化
OS設定ファイルを扱う。現時点ではCentOSに特化した仕様になっている。
  • setIpAddress(IPアドレス設定)
  • setNetwork(ネットワーク設定)
  • setPassword(パスワード設定)
  • setSshKey(ssh keyの設定)
    ....
VMイメージ管理
インストールイメージ情報の管理を行う。
  • getImageList(VMイメージの取得)
  • getImageInfo(VMイメージ情報の取得)
    ....
その他
付加情報の管理を行う。コメント管理やリクエスト情報などを扱う。
  • getRequestInfo(APIリクエスト情報の取得)
  • setResourceComment(リソースへのコメント追加)
    ....

現在39個のAPIで、リソースの管理やVMの制御を行える状態になっており、VMの大量生成、同時起動などがAPI経由で簡単に行える仕組みになっている。 実際にIIJ社内から、サービスに提供されるシステムから利用されたり、コマンドラインベースのツールが作成されたりして、APIの利用が行われている。 APIの種類はさらに増加する予定であり、現在も機能追加は続いている。

サービス層に実装されるAPI

図2:サービス層に実装されるAPI(クリックで拡大)

GIO HaaS APIの設計思想

GIO HaaS APIシステムを実装する時に内部で議論があがったこととして、3層アーキテクチャが果たして有益かどうかという部分があった。 階層分けの利点としては、各層ごとに独立に開発が進められるということがある。HaaS APIの仕様は、HaaS側で一方的に決めたものではなく、 利用者(IaaS)側とも協議しながら決めていったものであり、サービス層のAPI仕様を決めている間に、物理デバイス制御に近い、 ファシリティ層とコントローラ層が明示的に分離した並行開発が可能になった。各層での通信プロトコル仕様を固め、最後に結合するというアプローチが実際に取られた。

欠点としては結合試験時の影響や、層をまたぐことによる処理レスポンスの低下、複雑性の増大などがあげられた。 欠点を理解した上で3層構造にて突き進んだ理由は、開発の人的リソースや開発期間の関係もあったが、コントロール層やファシリティ層の増減に対応した、 複数のデータセンター分散へのチャレンジを視野にいれた設計をしたかったというモチベーションも大きくあった。

API自体の設計思想としては、「プリミティブな機能を実現する」という部分が大きく仕様に反映されている。 APIの要求を聞き始めると、すべてがAPI経由でできる魔法のシステムの様な夢が膨らむ傾向にあった。 実際にいくつかのプリミティブなAPIを組み合わせればできるような要求も出てくる感じであったので、要求を細かく細分化した上で、 APIの仕様を作り上げることに大きく時間がかかった。その結果仕様として採用されたのが、39個の基本的なAPIになっている。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30