- 更新日 2024.03.18
- カテゴリー インフラ構築
AWSのコンテナ活用方法をまとめ。サーバレスでの低コストな高速処理・dockerコンテナの快適な運用方法などを解説【2024年最新版】
- コンテナやサーバレスというワードをよく聞くが、何ができるかわからない
- Lambdaというサービスがよく使われているようだけど、どんなメリットがある?
- AWSのコンテナサービスやサーバレスサービスには、どのようなものがあるの?
AWSのコンテナサービスやサーバレスサービスの導入を検討している企業も増えてきましたが、自社で使うメリットや導入後のイメージが沸かずに躊躇している方も多いです。
そこで、AWSのコンテナサービスやサーバレスサービスを使って開発をしているクラウドエンジニアへの取材情報をまとめました。
最後まで読めば、AWSのコンテナサービスやサーバレスサービスについて理解できるので、ぜひ参考にしてください。
※AWSのコンテナサービスやサーバレスサービスを使った開発に不安がある方は、システム幹事にお問い合わせください。予算や目的などをヒアリングした上で、最適な開発会社を提案します。相談料・紹介料は一切かかりません。
【無料】AWSのコンテナ・サーバレス開発の外注先選定を相談する
Amazon Web Service(AWS)とは
Amazon Web Service(AWS)は、2006年にAmazonがリリースしたクラウドコンピューティングサービスです。Microsoft AzureやGoogle Cloud(GCP)などの主要なクラウドサービスと比較してもリリースは2〜4年程度早く、現在でも業界のリーダー。まずは前提となるクラウドコンピューティングについて説明した後に、AWSをご紹介していきます。
クラウドコンピューティングとは
クラウドコンピューティングとは自社にサーバーを置かず、インターネットを介してプロバイダーのサーバーやストレージを必要な時に必要な分だけ利用するシステムのことです。
近い例を出すのであれば、カーシェアやシェアサイクル。従来は、車や自転車は自分で購入・保有するのが当たり前でした。(≒オンプレミス)
しかし近年は、自らで車や自転車を保有せず、使いたい時に使いたいだけ使うシェアサービスが台頭してきています。(≒クラウド)
従来のオンプレミス方式では、自社のデータセンターにサーバーを用意する必要があり多くの初期費用や所要時間がかかっていましたが、クラウドを活用することで、初期費用を抑えて素早い開発を始めることができます。
有名なクラウドとしては、業界No1のAWSや2位のMicrosoft Azure、Googleが提供するGCP(Google Cloud)があります。
また国内のクラウドとしては、富士通のニフクラなどが挙げられます。
AWSでできること
AWSは業界のリーダーとして、開発に活用できる様々なサービスを提供しています。2006年のリリース以降、日々サービスを拡張し、現在では200以上のサービスを提供しています。また、業界内でのシェアは現在33%と、毎年1位を維持。
クラウドインフラストラクチャーのシェア
AWSの特徴は、業界のリーダーとして様々な領域・ユースケースのサービスをバランスよく提供していることや、設定や実装方法に関するドキュメントがインターネットに多く存在することなどが挙げられます。これは公式のドキュメントはもちろんのこと、非公式の個人や企業のAWSに関する技術記事なども多く存在します。
特に実際に開発する際には、ドキュメントが整備されているかどうかで開発スピードはかなり異なってくるため、情報の多さという観点も非常に重要です。
AWSが生まれた経緯
画像引用:AWS
2000年代初頭のAmazonは債務超過であり、コスト削減施策の一環として、データセンターのサーバをLinuxサーバへ移行を進めました。小売業のAmazonでは、季節ごとのアクセスの増減があり、使っていないサーバリソースが存在する時期も多くありました。これを他社に貸すことで、EC事業の赤字の打開策としたというのが元々のAWSが生まれた経緯です。
2006年のサービス開始以降、利用者は右肩上がりで増えています。
例えばNetflixは、AWSを2009年に大規模導入しています。これは当時としてはかなり先進的で、Netflixの本気度が伺えます。Netflixでは現在、15万台以上の仮想サーバーを利用してマイクロサービスを構築しています。
関連記事:Amazon Web Service(AWS)とは?主な機能と活用事例・メリット・注意点
コンテナとは
ITにおけるコンテナとは、使用するリソースを他のプロセスから隔離し、その中でアプリケーションを実行する技術です。コンテナ上のアプリケーションは、独立したコンピュータ上で動作しているように見えます。
コンテナ技術を用いると、OSの種類やバージョンなどが異なるサーバであっても、同一の環境を簡単に再現することができます。物流に使われるコンテナをイメージしてみてください。輸送している船やトラックなどに関わらず、コンテナの中の貨物は基本的に独立しており、他の荷物や輸送方法に影響を受けません。これは、コンテナとして外部から区切られているためです。
ITのコンテナについてもこのイメージと近いです。アプリケーションごとに空間を区切って、OSと切り離すようなイメージです。このようにOSや他アプリケーションから隔離して切り離すことで、OSや設定が異なるサーバ上でも同一の環境を再現することができます。
コンテナの最も代表的な技術がDockerです。Dockerはオープンソースソフトウェア(OSS)であり、Docker社が管理しています。
AWSの主要なコンテナサービス
続いては、AWSの主要なコンテナサービスについて紹介します。
Amazon ECS
ECSは、dockerコンテナを簡単に実行・管理できるサービスです。
ECSは、コンテナを動かすホストサーバとして、IaaSサービスであるEC2を使用することができます。EC2の仮想サーバー上でdockerコンテナを起動し、ECSがコンテナを管理します。AWSコンソール上から、コンテナの状態を確認できます。
また、EC2の代わりにFargateというサーバレスの実行環境を使用することもできます。この場合も、ECSがコンテナを管理し、AWSコンソールから同様に確認が可能です。Fargateを使うと、ホストサーバのOSやミドルウェアの管理から解放されるというメリットがあります。一方で、場合によってはEC2と比較しコストがやや高くなったり、コンテナからのログの取得方法が制限されたりするといったデメリットもあります。
参考:ECSのWebコンソール画面
ECSのメリット①環境の統一
コンテナサービスであるECSを使用することで、同一環境でアプリケーションを動作させることができます。例えばOSやミドルウェアのバージョンが異なるサーバー上でも、環境差異の影響を受けることなく画一的にアプリケーションの動作が担保できます。
従来のコンテナを使用しない開発では、OSやミドルウェアのバージョンや設定の違いによって、挙動が変わってしまったりシステムが動かなくなってしまうといったことが多く発生していました。
コンテナサービスであるECSを使用することで、基盤となるサーバのOSやミドルウェアをアップデート、また刷新した際も、原則そのままアプリケーションを動作させることができます。
ECSのメリット②スクラップ&ビルドが可能
ECSを含むコンテナは、アプリケーションの起動ごとに都度新しい環境を構築しており、古い環境を廃棄しています。このため、OSなどの後始末を気にせず気軽に検証をすることができ、開発の高速化などにつながります。
従来の開発では、常にその後のシステムやサーバの状態を考えて操作を行う必要がありました。
コマンドを間違って実行してしまうと、簡単には元の設定に戻せなかったり、他のアプリケーションに影響してしまったりというリスクがあります。コンテナサービスであるECSを使うことで、このようなリスクを回避することができます。
ECSのメリット③監視や負荷分散などのオプションがマネージドで用意されている
ECSは、CPUなどのパフォーマンスやログをCloudWatchを用いて簡単に監視することができます。また、負荷分散サービスであるロードバランサーとの連携や、アクセス急増などの条件に合わせてコンテナの数を増やして対応するスケールアウトなども、画面上から簡単に設定できます。
また、権限管理サービスであるIAMも指定できるため、例えばECSコンテナからS3ストレージ上のファイルにアクセスするなど、他のAWSサービスともシームレスに連携できます。
サーバレスとは
続いて、サーバレスや、AWSのサーバレスサービスについて紹介します。「利用者がサーバーを意識することなくプログラムを実行できる」というサービスがサーバレスです。例えばSNSやYouTubeに投稿された経験がある方は、サーバーを契約しなかったはずです。これがサーバレス。
プログラム実行時に、裏側で瞬時にサーバが立ち上がり、CPUやメモリなどが自動で割り当てられます。利用者はサーバを意識する必要がなく、あたかもサーバがないように見えるのでサーバレスと言います。
通常の場合、プログラムを実行するためには、コード以外にサーバー(コンピュータ)が必要です。サーバは、OSやそのバージョン、プログラムを実行するためのミドルウェアなど、さまざまな設定を行う必要があります。従来、アプリケーション構築の前段階として、このようなサーバ構築などの事前準備が必要不可欠でした。
サーバレスサービスを用いることで、サーバーの事前構築などの作業が不要となり、サーバーを意識せずにプログラムを実行することができます。
また、サーバレスサービスは従量課金である場合が多く、起動時間も早いため、オンライン処理でもコストを抑えて実装することができます。また、バッチ処理など特定の期間以外はサーバリソースを使用しない場合などにも、コストメリットを出すことができます。
AWSの主要なサーバレスサービス
AWS Lambda
Lambdaは、サーバレスの関数実行環境です。サーバーレスなので、サーバーやOS、ミドルウェアなどの管理が不要な点もメリットです。そのため、開発者はコーディングに集中でき、素早く品質の高いシステム開発が可能になります。負荷に応じて自動的に拡張するため、大量のアクセスが来たときもサーバーの負荷を気にしたくない、といったメリットがあります。また費用面でも、サーバーを常時起動しておらず起動時のみ課金されるので、コストを抑えやすいです。
使用言語としては、Node.js12〜16、Python3.7〜3.9、Java8,1、Go1.x、Ruby2.7などをサポートしています。
デメリットとしては、メモリ上限が10GBまでと決まっていることや、実行最大時間が15分の制限が挙げられます。
参考:LambdaのWebコンソール画面
Lambdaのメリット
続いて、サーバレスサービスであるLambdaのメリットを紹介していきます。
コストが抑えられる
Lambdaは従量課金制で、リクエストが来た時のみ起動します。リクエストが来ていない時は起動しておらず料金がかからないため、コストを抑えることができます。負荷に応じて自動的に拡張するため、大量のアクセスが来たときもサーバーの負荷を考えなくて良い、といったメリットもあります。また、バッチ処理などの特定の時間帯だけ実行するといった処理にも向いています。
従来のサーバーを用いた開発では、リクエストが来ていない時でもサーバーを常時起動しておく必要があり、コストがかさむ場合が多くありました。サーバレスサービスであるLambdaを使用することで、このようなコストを大幅に削減できます。
保守運用が不要
Lambdaはサーバレスサービスなので、サーバーやOS、ミドルウェアなどの管理が不要な点が大きなメリットです。開発者はコードの作成に集中でき、素早く品質の高いシステム開発が可能になります。また、負荷に応じて自動的に拡張するため、拡張のためのシステムを構築・保守運用する必要もありません。
従来のサーバーを用いた開発では、OSやミドルウェアのアップデートやパッチ適用、その前段に行うバックアップの取得など、サーバーの維持のために多くの作業が必要でした。特にエンタープライズのシステムなどでは、利用者のいない深夜帯にこれらの作業を実行するなど、保守運用者の負荷が大きいという課題がありました。Lambdaを使うことで、OSのアップデートなどの悩みから解放されます。
他のAWSサービスとの連携が容易
Lambdaは、他のAWSサービスとの連携も簡単にできます。
例えばLambdaのWebコンソール上からCloudWatch Eventsと連携させ、日次や週次でLambdaのプログラムを実行する設定をすることができます。またAPI Gatewayと統合することで、LambdaをAPIのバックエンドとして設定できます。
APIの認証であったりロギング、パスの管理なども行うことが可能。またStep Functionsを使うことで、Lambdaを使った複雑なワークフローも組むことができます。
従来のサーバを用いた開発では、定期的なプログラム実行やワークフローの構築は、原則サーバ内の設定を入れ込んだり、アプリケーション内で実装する必要がありました。Lambdaを使うことで、これらの便利な機能を持つサービスたちと容易に連携することができるため、プログラム作成に集中することができます。
AWSのコンテナ活用事例
ECSコンテナを使ってコストを50%削減|米Vanguard社
Vanguard社は、アメリカの世界最大規模の資産運用会社です。日本でも、投資信託などでよく名前を聞くのではないでしょうか。
Vanguard社は、もともとオンプレミスでシステムを運用していました。しかし、コストや拡張性(スケーラビリティ)の観点から、2015年にAWSへの移行を開始しました。
画像引用:AWS
Vanguard社はサーバレスのコンテナサービスであるECS Fargateを積極的に活用しています。
これによりIT部門がサーバをメンテナンスする必要がなくなり、新規サービス構築や既存アプリケーションの強化に使える時間が増加しました。
また、Fargateの購入オプションなども活用し、コストを半分近くまで削減することに成功。
Vanguard社は現在、アメリカやヨーロッパなどで、AWSサービス上で850以上の本番向けアプリケーションを稼働させています。また2022年5月以降、ECS・Fargateを使って270%もの成長を遂げています。
コンテナサービスとサーバレスサービスを使ってコストを削減した良い例と言えます。
AWSのサーバレス活用事例
数時間かかっていた画像処理をサーバレスで数十秒で実現|株式会社スクウェア・エニックス
株式会社スクウェア・エニックスは、ゲームやアミューズメント領域をリードする日本の大手企業です。ドラゴンクエストやファイナルファンタジーなどにハマったことのある人も多いのではないでしょうか?
ファミコン用ソフトとして始まったドラゴンクエストは、昨今では多人数同志参加型のオンラインゲーム形式でも遊べるよう進化しています。数十万人がプレイするドラゴンクエストXでは、お客様が快適にゲームをプレイできるようなITインフラが不可欠です。
ドラゴンクエストX内では写真が撮れる機能があり、お客様はポータルサイトからこれらを観覧できます。ゲーム内の写真はサーバーに送られ、サーバー上でコピーライトなどの加工が行われます。これらの処理は重く、サーバー負荷の原因でした。通常は1分あたり200-300枚ですが、クリスマスや大晦日などのイベント時には、1分に6000枚もの写真処理が必要となることもあります。課題として、お客様が写真を閲覧できるようになるまでに数分を要していました。
画像引用:AWS
これを解決するために、サーバレスで並列処理ができるLambdaが選ばれました。Lambdaはリクエストに応じて自動で拡張します。Lambdaへ移行した後のイベント時には、6000枚以上の写真を十数秒で処理することができました。これは、従来の1/20程度の所要時間です。また、運用管理やメンテナンス費用も抑えることができ、人的リソースの削減も達成しました。
サーバレスサービスを使ってユーザー体験の向上とコスト削減の両方を達成した好例と言えます。
システム構成図
画像引用:AWS
大規模なサーバレスアプリケーションを10人未満で保守運用|米iRobot
iRobotは、アメリカに本社を置く家庭用清掃ロボットの会社です。皆さんのご家庭にも、ルンバは身近なのではないでしょうか。iRobotはこれまでに2000万台以上のロボットを世界中で販売してきました。
最近のルンバはインターネットに接続でき、IoT機器としての側面を持ちます。2017年には既に、60カ国以上、200万台程度のインターネット接続型のロボットが使われていました。
画像引用:iRobot
この基盤を支えるのが、AWSです。主にAWS IoTとLambdaを基盤としたサーバレスな構成を使用しています。 AWS IoTは、ロボットとクラウド間で億〜兆単位のメッセージを処理しています。Lambdaはそのバックエンドとして、イベントに応じてコードを実行しています。
iRobotでは、このようなサーバレスな構成を利用することで、クラウドの運用コストを抑え、10人未満の人員でソリューションを管理しています。これにより、運用ではなくコードとお客様に集中できるようになりました。
サーバレスを活用して運用コストを大幅に抑えた典型的な事例です。
システム構成図
画像引用:AWS
AWSのコンテナ・サーバレスまとめ
AWSのコンテナサービス、サーバレスの概要とメリット、成功事例について紹介しました。
- ECSはAWSのコンテナサービスであり、同一環境でアプリケーションを実行できる。
- LambdaはAWSのサーバレスサービスであり、サーバのメンテナンスが不要でコストを
抑えて利用できる。 - ECSやLambdaは他のAWSサービスと簡単に連携できる。
AWSを使うことで、通常のIaaSだけでなくコンテナ・サーバレスなどの低コスト、高品質な最先端のサービスも活用することができます。一方で、ITインフラに関わる専門知識がないと使いこなせないケースも少なくありません。
自社の力だけではAWSのコンテナサービスやサーバレスサービスを使いこなすのが難しいと感じたら、プロに外注することをおすすめします。開発会社選びに困った場合は、システム幹事にご相談ください。予算や目的から最適な会社をご紹介します。相談料などは一切かかりません。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
必ず開発会社に発注する必要はありません。システム開発の相場の情報から最適な会社選びまで無料でサポートします。お気軽にご相談ください。
【無料】AWSのコンテナ・サーバレスを使った開発に強い会社を紹介してもらう
Q. AWSのサーバレスサービスとは何ですか?
利用者がサーバーを意識することなくプログラムを実行できるサービスのことです。プログラム実行時に裏側で瞬時にサーバが立ち上がり、CPUやメモリなどが自動で割り当てられる、といった特徴があります。
この記事を書いた人
Definer Inc. | ライターチーム
専門分野: クラウド開発・クラウド移行(フルスクラッチ開発・自社SaaS提供・AI Ops構築)
外資IT企業出身のトップエンジニアが、企画・要件定義の上流から開発まで、総合的なITソリューションをワンストップ提供しております。また、AWS、Azure、GCPでのクラウド開発・移行、フルスクラッチなアプリ・システム開発を得意としています。「2025年の崖」を打破すべく、クラウドに関するお役立ち情報をお届けします。
このライターの記事一覧