ソフトバンクロボティクス株式会社様
「効率化に向けロボット管理プラットフォームをAWSマネージドサービス構成へ移行」
■プロジェクトにおける課題
SBRは同社が展開しているロボットを管理するためのシステム環境に以下のような課題があったため、改善を考えていました。
- ロボットの操作や必要な情報の管理・蓄積が必須
- 運用管理は管理効率を考慮しシンプルな構成にしたい
- 継続的インテグレーションの環境をシンプルな構成にしたい
これらの課題解決への対応として、下記のような対応策を検討しました。
- ロボット管理プラットフォーム連携基盤の構築
- お客様向けロボット管理フロントシステムの整備とアマゾン ウェブ サービス(以下、AWS)への移行
- 環境に合わせた継続的インテグレーションの整備
1、ロボット管理プラットフォーム連携基盤の構築
ロボット管理プラットフォームは、お客様が使用するロボットとのインターフェイスとなるフロントシステムと、ロボット機体の制御を行う外部プラットフォームを連携する役割を持っています。このロボット管理プラットフォームで、ロボットへの制御命令、ロボットのステータスやイベント情報を一元管理します。
現行システムではこれらの情報を中継するだけの機能でしたが、情報を蓄積できるようにすることで、今後のサービス展開への活用が見込まれると考えました。
アーキテクチャとしては、会社の方針通り、クラウド基盤の利用はもちろん、クラウドネイティブ構成での構築となりました。基盤には広く活用されているAWSを選択し、また、アプリケーションのコンポーネント同士は、拡張性/耐障害性を確保するためにも独立性を担保できるよう疎結合で構成しました。
<システム構成のポイント>
- ロボットビジネスの拡大に合わせてスケールするよう、AWSのマネージドサービスをフル活用したクラウドネイティブアプリケーション構成
- ロボット仕様の追加変更に対応しやすいように、すべての処理を機能毎にLambda関数ベースで構築
- Amazon API Gateway Lambda Authorizerを使用した認可
2、お客様向けロボット管理フロントシステムの整備とAWSへの移行
該当のロボット管理フロントシステムはもともと他クラウドのKubernetes基盤で稼働していましたが、サーバの役割ごとにPodが分かれていたために構成が複雑で、運用保守の負荷も比較的高く、またコストも割高になっている状況でした。
この構成をシンプルにすべく検討しました。基盤はロボット管理プラットフォームと統一し、AWSのマネージドサービスで実装することとしました。役割毎のサーバはAmazon ECS(以下、ECS)へ集約し、一部バッチ等はAWS Lambda (以下、Lambda)で機能を実現することが可能だったため、結果、可用性も損なわずに移行することができました。
なお、ECSを採用した際に、Amazon EKS(以下、EKS)の選択肢もありましたが、EKSとの比較で主に以下の点から、ECSを採用しました(採用当時)。
- 構築時:個別に作りこむ部分が少ない
- 運用時:バージョンアップへの追従の負荷が低い
<システム構成のポイント>
- Amazon CloudFrontでルーティングし、静的コンテンツ(HTML, JavaScript)はS3で配信
- 動的コンテンツはECSで構成したAPIサーバが担当
- 配信バッチ処理はLambdaで再構築し不要なコンピュート資源を抑制
- コンテナ管理にECS Fargateを採用し管理負荷を軽減
3、環境に合わせた継続的インテグレーションの整備
これらの構築、および環境移行後も継続的な開発を行うために、CI/CDのフローを採用し、環境を整備しました。
Gitフローに従った開発を行うことで、環境間のアプリケーションの移行も自動化し、アプリケーションの修正リリースなどの期間短縮に一役買っています。
<システム構成のポイント>
- Gitサーバにてアプリケーション、Dockerのビルド
- 環境別のリリースもGitフローで実現
- Lambda、ECSへの自動リリース