はじめに
本田技研工業 RoadSyncチームのバックエンドを担当している安部と申します。
今回はTechブログ第四弾の投稿となります。
RoadSyncの概要説明はTechブログ第一弾に記載していますので、ぜひご覧ください。
Techブログ第一弾
簡単に自己紹介
私は今年の1月から本田技研工業へ入社(転職)し、RoadSyncチームでバックエンドを担当をしております。
前職では主にAzure、AWSを扱っていましたが、RoadSyncのバックエンドではGCPを扱っておりCloud Run上でAPI等をコンテナ化して運用しています。
そこで、自己学習の意味も込めて改めてクラウドのコンテナ管理・実行サービスの大まかな分類とその選定基準について整理していきたいと思います。
TL;DR
- コンテナ管理・実行サービスをサーバレスか否かで分類してみた
- サーバレスなコンテナ管理・実行サービスとそうでないものの選定基準について考えてみた
コンテナ管理・実行サービスの分類について整理
コンテナ管理・実行サービスは、大きく「サーバレスなコンテナサービス」と「サーバーレスではないコンテナサービス」に分けることができると考えています。サーバレスなコンテナサービスの概念はこちらを参考にしております。
https://aws.amazon.com/jp/fargate/
-
サーバレスなコンテナサービス
コンテナを稼働させるリソースの所有、実行、ライフサイクル管理をクラウド事業者側が行うサービスです。そのため、利用者はOSへのパッチ適用やセキュリティ管理などを行う必要がなくアプリケーションの開発に集中できるようになります。
-
サーバーレスではないコンテナサービス
コンテナのオーケストレーション部分はマネージドされますが、コンテナを稼働させるリソースの管理は利用者が実施する必要があるサービスになります。そのため、利用するプロダクト、バージョンなどの自由度は高くなりますが、OSやミドルウェアへのパッチ適用など運用管理が発生します。
3大クラウドのコンテナ管理・実行サービスで当てはめると大体このようになリます。
サーバレスなコンテナサービス | サーバーレスではないコンテナサービス | |
---|---|---|
AWS | ・Amazon Elastic Container Service on Fargate ・Amazon Elastic Kubernetes Service on Fargate ・AWS App Runner |
・Amazon Elastic Container Service on EC2 ・Amazon Elastic Kubernetes Service on EC2 |
Azure | ・Azure Container Apps ・Azure Container Instances ・Azure Web App for Containers |
・Azure Kubernetes Service ・Azure Service Fabric ・Azure Red Hat OpenShift |
GCP | ・Google Kubernetes Engine Autopilot ・Cloud Run |
・Google Kubernetes Engine |
選定基準について考えてみる
「サーバレスなコンテナサービス」と「サーバレスではないコンテナサービス」で比較検討しサービスを選定する場合、大きく以下の2つの観点で確認していくのが無難かと思います。(※)
-
コスト面
コンピューティングコストと運用コスト(利用料ではない)の側面で考えられ、一般的には大体以下の通りになるかと思います。
サーバレスなコンテナサービス サーバーレスではないコンテナサービス コンピューティングコスト 割高 普通 運用コスト
(利用料ではない)低い 高い -
利用用途
例えば、サーバレスなコンテナサービスはGPUインスタンスに対応していないことが多く深層学習の学習用/推論用サーバーとして使うことはできません。このように利用用途で考えることもできるかと思います。
(※)この記事の中では詳しく触れませんが、例えばサーバレスなコンテナサービスの中でもそれぞれ異なる特徴があるので、サーバレスなコンテナサービスにすると決めた後も各サービスの特徴を理解した上でさらに選定する必要があります。
結論
- コンテナ管理・実行サービスは、大きく「サーバレスなコンテナサービス」と「サーバーレスではないコンテナサービス」に分類することができる。
- サービス選定の際はコスト面、利用用途の側面から考えてみるのがいい。