サーバーレスとコンテナ化は、近年の DevOps の 2 つの最大のバズワードとなっていますが、それには十分な理由があります。 適切なユースケースでは、どちらもパフォーマンスを向上させ、コストを削減できます。 しかし、その人気にもかかわらず、サーバーレスコンピューティングとコンテナの違いを誰もが理解しているわけではありません。
ここでは、両方のテクノロジーを使いこなすために、それぞれが何であるかを見て比較し、それらが互いにどのように補完し合うかを説明し、サーバーレスセキュリティとコンテナセキュリティという重要なトピックを探ります。
コンテナーは、アプリケーションを実行するためのすべての依存関係とコードを含む、軽量で不変のソフトウェア単位です。
コンテナは、さまざまなオペレーティングシステムやプラットフォームで実行できる「コンテナランタイム」(コンテナエンジンと呼ばれることもあります)上で実行されます。 コンテナー ランタイムはコンテナーに必要なすべてのシステム リソースを提供するため、従来のオペレーティング システムにアプリケーションをデプロイする場合の運用の複雑さは最小限に抑えられます。
コンテナは携帯性にも優れています。 コンテナー ランタイムが存在する場所であればどこでも、チームはコンテナー イメージをデプロイできます。 さらに、コンテナにはアプリケーションの実行に必要なものだけが含まれているため、仮想マシンなどの代替手段よりも軽量で高速です。
コンテナプラットフォームの最も一般的な例はDockerです。 ただし、コンテナプラットフォームはDocker だけではありません 。 たとえば、Linux Container (LXC) は Docker よりも前から存在し、現在も使用されています。 さらに、大規模なコンテナ デプロイメントの調整と管理に使用されるKubernetes (K8s) など、コンテナを補完するツールが多数あります。
サーバーレスは、インフラストラクチャのプロビジョニングや管理を必要とせずにオンデマンドでコードを実行するコンピューティング モデルです。
名前が示すものとは裏腹に、サーバーレスコンピューティング に関与するサーバーがあります 。 ただし、企業はサーバーインフラストラクチャについてまったく心配する必要はありません。 代わりに、開発チームはサーバーレスプラットフォームにコードをデプロイするだけで、そのコードが実行されてサーバーリソースを消費した場合にのみ課金されます。
企業はサーバー リソース (CPU など) を使用した時間に対してのみ料金を支払うため、サーバーレスは、使用量が大幅に増加したり減少したりするアプリケーションの導入コストを最小限に抑える優れた方法となります。 これは、ベアメタル サーバー、仮想マシン、コンテナの実行からの根本的な変化です。 アイドル時間にはコストはかからず、課金はアプリがアクティブに実行され、リソースを使用している場合にのみ発生します。
さらに、すべてのインフラストラクチャがサーバーレス プラットフォーム プロバイダーによって抽象化されるため、運用の複雑さが軽減されます。 DevOps チームはコードに集中するだけです。 サーバーレス コンピューティング プラットフォームの一般的な例には、AWS Lambda、Azure App Service、Google の Cloud Run などがあります。
サーバーレスコンピューティングとコンテナが何であるかを理解したところで、その最も一般的なユースケースをいくつか見てみましょう。
もちろん、これらはコンテナとサーバーレスコンピューティングで可能なことのほんの一例にすぎません。 一般的に、コンテナーは、ポータブルで軽量、および不変のイメージを確実にデプロイする必要がある場所に役立ちます。 サーバーレス コンピューティングは、ワークロードが非常に変動し、インフラストラクチャ管理の労力を最小限に抑えることが優先されるさまざまなアプリケーションで役立ちます。
ご覧のとおり、サーバーレスコンピューティングとコンテナには、いくつかの高レベルの類似点があります。 これらにより複雑さが解消され、チームによるアプリケーションの導入と拡張が容易になります。 ただし、次のような重要な違いを考慮する必要があります。
違いはあるものの、コンテナとサーバーレスコンピューティングは必ずしも相反するものではありません。 たとえば、 Docker を使用してサーバーレス関数をコンテナー化できます。 さらに、Google の Cloud Run などのプラットフォームは、従量課金制のサーバーレス モデルを使用してコンテナをデプロイするように設計されています。
テクノロジー自体と同様に、サーバーレス セキュリティとコンテナ セキュリティは微妙なDevSecOpsトピックです。
サーバーレスにより、インフラストラクチャ管理に関連するセキュリティ上の懸念の多くが解消されますが、サーバーレスのセキュリティに関する重要な考慮事項が依然として多く存在します。 たとえば、安全でないサーバーレス権限構成により、アプリケーションに脆弱性が生じる可能性があります。 さらに、サーバーレスワークフローを可能にする機能やプロトコルが増えれば、保護すべき潜在的な攻撃ベクトルも増えます。 複雑さの軽減にはセキュリティのトレードオフも伴います。サービス プロバイダーがインフラストラクチャの大部分を処理するため、サーバーレス デプロイメントの可視性は限られています。
一方、 コンテナセキュリティ には独自の課題があります。 たとえば、信頼できるコンテナのみを安全に調達してデプロイし、パッチを適用し続けることは、運用上の課題になる可能性があります。 さらに、IDおよびアクセス管理(IAM)とコンテナ構成管理は、強力なセキュリティ体制の重要な側面です。
アプリケーション開発のどちらのアプローチでも複雑さは軽減されますが、強力なセキュリティ体制の必要性がなくなるわけではないため、開発プロセスにセキュリティを統合する必要があります。 最小権限の原則に従い、「ゼロトラスト」ポリシーを採用することは、インフラストラクチャを安全に保つための重要な部分ですが、開発チームは、適切なセキュリティソリューションを実装するためのテクノロジーとドメインの専門知識も必要です。
チェック・ポイント・ソフトウェアは、これらの課題に対処するために構築されています。 たとえば、 CloudGuard は、サーバーレスおよびコンテナベースのデプロイメントを含む、すべてのエンタープライズ クラウド資産にエンドツーエンドのマルチクラウド セキュリティを提供します。 CloudGuard は、検討対策、クラウド セキュリティ ポスチャ管理、クラウド ワークロード保護 (コンテナーおよびサーバーレス アプリ用)、インテリジェントな脅威ハンティングなどの機能を提供します。
コンテナーまたはサーバーレス セキュリティの状態を改善したい場合は、今すぐ無料のインスタント セキュリティ チェックにサインアップしてください。 このチェックは、クラウド環境全体のセキュリティとコンプライアンスを脅かす可能性のある構成ミスを特定するのに役立ちます。 また、CloudGuard を自分で試してみたい場合は、無料トライアルにサインアップすることもできます。
サーバーレスとコンテナのセキュリティについて詳しく知りたい場合は、 無料の
サーバーレスセキュリティAdvantage eBookと Guide to Container Security は、始めるのに最適な場所です。