サーバレスとコンテナ:同じところと違うところ

  • On 2019年9月25日
カテゴリー DevOpsとIT運用 スポットライト DevSecOpsの完全な可視性 コンテナとサーバレスコンピューティングは、今日のアプリケーションのデプロイで最もホットなテクノロジーです。正しい方法で使用すると、素早く費用対効果の高いデプロイができるようになります。 コンテナとサーバレスアーキテクチャの機能はいくつかの点で重複していますが、互換できる技術ではありません。コンテナは、ある用途ではより適切に機能しますが、別の用途ではサーバレスのほうが望ましいことがあります。 この記事では、コンテナとサーバレスコンピューティングサービスの類似点と相違点について説明し、DevOpsチームがニーズに応じていずれかのテクノロジーを選択する理由を説明します。 コンテナとは 簡単に言えば、コンテナは軽量の仮想化アーキテクチャです。これを使用すると、個別のアプリケーション(または場合によっては完全なオペレーティングシステム)を、移植可能な隔離された環境内に実装できます。 コンテナは、仮想オペレーティングシステムをエミュレートするのではなく、ホストサーバとシステムリソースを共有するため、仮想マシンよりも効率的です。 さらに、アプリケーションを外部ホスト環境から分離することにより、コンテナは摩擦のないアプリケーション展開を可能にします。ホストサーバがコンテナランタイムをサポートしていれば、コンテナ構成のアプリケーションをデプロイできます。アプリケーションの設定を調整したり、環境変数と格闘したりする必要はありません。同じ理由で、コンテナ化されたアプリケーションをホスト間で簡単に移動できます。 サーバレスとは​​何ですか? サーバレスコンピューティングは、アプリケーションコードがオンデマンドで実行されるアーキテクチャです。ユーザーの観点から見ると、コードを実行するために必要な作業は、コードをアップロードして、実行したい時にトリガーすることだけです。維持すべきサーバがない、それがサーバレスと呼ばれる理由です。 サーバレスの主な利点は、ホスト環境を継続的に維持することなく、ユーザーが必要なときにいつでもコードを実行できることです。これは、特にリソースを大量に消費するコードを実行する必要がある場合に、料金を節約するのに役立ちます。 コンテナとサーバレスの類似点 コンテナとサーバレスは同一のテクノロジーではありません。ただし似た機能を提供します。 どちらもアプリケーションコードをデプロイできます どちらも仮想マシンよりも効率的です コンテナでもサーバレスでも、そのうえで動作するアプリケーションは、ホスト環境から隔離されています 両方とも効果的にスケールするにはオーケストレーションツールが必要です ​ サーバレスとコンテナの違い 以上の類似点以外では、サーバレスとコンテナは別個のテクノロジーです。 コンテナとサーバレスの主な違いは次のとおりです。 サポートされているホスト環境:コンテナは最新のLinuxサーバと特定のバージョンのWindowsで実行できます。対照的に、サーバレスは特定のホストプラットフォームで実行され、そのほとんどはパブリッククラウド(AWS LambdaやAzure Functionsなど)です セルフサービス能力:上記の理由により、ほとんどの場合、サーバレスを使うにはパブリッククラウドを使用する必要があります。(Fnのようなオンプレミスのサーバレスフレームワークがありますが、まだ広く利用されていません)コンテナでは、独自のオンプレミスホスト環境と、ECSなどのパブリッククラウドサービスの両方を使用できます コスト:サーバレス環境はクラウドにホストされているため、使用するには費用がかかります。対照的に、コンテナはオープンソースを使用して無料で自分でコンテナ環境を設定できます(もちろん管理コストはかかりますが) サポートされている言語:ホストサーバがサポートしていれば、任意の言語で記述されたアプリケーションをコンテナ化できます。サーバレスフレームワークは異なります。サポートする言語は限られています。サポートされるサーバレス言語は、サーバレスプラットフォームごとに異なります ステートフル:ほとんどのサーバレスプラットフォームは、ステートレスワークロードをサポートするように設計されています(一部のサーバレスプロバイダーは、限定的なステートフルサービスを提供しています。AzureのDurable Functionsを参照してください)。サーバレスプラットフォーム内から外部ストレージサービス(AWSのS3など)に接続できますが、機能自体はステートフルにできません。コンテナには永続的なストレージの課題がありますが、ステートフルなコンテナ化されたアプリの作成が可能です 可用性:サーバレス機能は、シャットダウンする前に短時間(通常は数百秒)実行するように設計されています。コンテナは、必要な限り実行できます   サーバレスとコンテナの用途 上記の違いにより、コンテナとサーバレスは異なる用途に向いています。 コンテナは、次のことが必要な状況に最適です。 アプリケーションコードがデリバリーチェーンを下るときに、環境パリティを維持する 異なるホストサーバ間でアプリケーションをすばやく移動する オンプレミスとクラウドの間でワークロードを移動する機能を保持する サービスを継続的に利用可能にする 一方、サーバレスは次の場合に最適です。 リソースを集中的に使用するコードを1回限り迅速に実行する。たとえば、ユーザーが画像をアップロードするたびに画像のサイズを変更するコードを実行するというような場合、サーバレスはそのための優れた方法です 仮想サーバをセットアップしたり、継続的にクラウドリソースに料金を支払うことなく、クラウドで限定的なアプリケーションコードを実行する 結論 コンテナ対サーバレスという観点から考えるよりも、コンテナとサーバレスを互いに補完するテクノロジーと考える方が良いでしょう。ほとんどの組織は、どちらか一方ではなく、コンテナとサーバレスの両方を使用する可能性があります。実際、両方のテクノロジーを使用して同じアプリケーションを提供することもできます。 コンテナ サーバレス ワークロードの分離 ○ ○ ステートフル機能/アプリか? ○ ほとんどの場合× ホスト環境 クラウドまたはオンプレミス ほとんどクラウド コスト 自分で用意すれば無料 クラウド料金が発生 サポートする言語 実質的に全て 限定的 永続的なサービス ○ × https://www.sumologic.com/blog/serverless-vs-containers/ カリアン・ラマナサン Kalyanはソフトウェアおよびマーケティングで20年以上の経験を持ち、IT運用とマーケット管理について深く理解しています。 Sumo Logicの前は、AppDynamicsの製品マーケティング担当副社長でした。また、CrittercismのCMO、Electric Cloudのマーケティング担当副社長、Opsware/HPの製品マーケティングのシニアディレクターも務めました。 KalyanはIntelでキャリアをスタートし、スタンフォードビジネススクールのMBAを取得しています。
Read More