AWSの初心者ガイド-コンピューティングサービス編-

はじめに

AWS(Amazon Web Services)のコンピューティングサービスとは、クラウド上でサーバーやコンピューティング環境を提供する各種サービスのことです。クラウドコンピューティングを利用すると、自前でサーバーを購入・設置せずに必要なときに必要な分だけ計算リソースを使えるようになります。これにより、システムの規模に応じた柔軟なスケーラビリティ(リソースの拡張・縮小)が実現できます。また、使った分だけ支払うコスト効率の良さや、ハードウェア管理から解放される運用負荷の軽減といったメリットも得られます。

AWSが提供するコンピューティングサービスは、大きく仮想サーバー型コンテナ型サーバーレス型オンプレミス/ベアメタル型エッジコンピューティング型などに分類できます。例えば、従来型の仮想マシンを利用するサービスや、コンテナ技術を用いるサービス、さらにはサーバーを意識せずにコードを実行できるサービスまで、多彩な種類があります。それぞれのカテゴリに属する主なサービスの概要を、本文で順に説明していきます。初心者の方でも全体像をつかみやすいよう、専門用語はできるだけかみ砕いて解説します。

AWSの主要なコンピューティングサービス

仮想サーバー型

仮想サーバー型のサービスは、クラウド上に仮想マシン(VM)を作成して利用するものです。自分専用のサーバーを借りる感覚で、OSの選定やミドルウェアのインストールなど自由度高く環境を構築できます。AWSでは代表的に次の2つがあります。

Amazon EC2(Elastic Compute Cloud)

AWSでもっとも基本的な仮想サーバー提供サービスです。必要に応じてクラウド内で仮想サーバー(インスタンス)を起動でき、安全で柔軟なコンピューティング環境を提供します 。EC2ではCPUやメモリなど様々なスペックのインスタンスタイプが用意されており、用途に合わせて選択可能です。サーバーの起動・停止や台数の増減も数分で行えるため、負荷に応じたスケールアップ(性能向上)/ダウン(縮小)がしやすいという利点があります。

Amazon Lightsail

小規模なプロジェクトや初心者向けに設計された仮想サーバーサービスです。Lightsailは最も簡単に仮想プライベートサーバーを起動・管理できる方法として提供されており 、仮想マシン本体だけでなくSSDストレージやデータ転送、DNS管理、固定IPアドレスといった必要な機能がパッケージで含まれています 。料金も月額固定のパッケージ制になっているためコストが明瞭で予算を立てやすいのが特徴です 。手軽さと引き換えに大規模な拡張性や細かな設定自由度はEC2より制限されますが、シンプルなWebサイトやブログをすぐに立ち上げたい場合に適したサービスです。

コンテナ型

コンテナ型のサービスは、アプリケーションをコンテナという単位で実行・管理するものです。コンテナは軽量な仮想化技術で、アプリケーションの実行に必要な環境をひとまとめにして移動可能にしたものです。AWSではコンテナを効率よく運用するためのマネージドサービスが提供されており、主に以下のものがあります。

Amazon ECS(Elastic Container Service)

AWSが独自に提供するコンテナ管理サービスです。複数のコンテナを安全かつ信頼性が高くスケーラブルに実行する方法を提供してくれるプラットフォームです 。ECSを使えば、自分でコンテナ用の管理サーバー群を構築せずともAWS上でコンテナ群を稼働できます。これはAWSに最適化されたシンプルなオーケストレーションサービスです。主にAWS内で完結するコンテナ運用を手軽に始めたい場合に向いています。

オーケストレーション
複数のコンテナの連携や管理を自動化する仕組み

Amazon EKS(Elastic Kubernetes Service)

業界標準のコンテナオーケストレーションであるKubernetesをAWS上でフルマネージドで利用できるサービスです 。Kubernetesのマスター(制御部分)をAWSが管理・運用してくれるため、利用者は自分のクラスターを一から構築する手間なく標準的なKubernetes環境を使えます。既にKubernetesに習熟している場合や、マルチクラウドに渡ってポータビリティの高い環境を求める場合にEKSが適しています。

AWS Fargate

コンテナ向けのサーバーレス実行基盤です 。上記のECSやEKSと組み合わせて利用し、EC2インスタンス(仮想サーバー)を用意せずにコンテナを動かすことができます。コンテナごとに必要なCPUやメモリ量を指定すれば、Fargateがその都度必要なリソースを裏側で確保しコンテナを実行してくれます。そのため利用者はサーバーのプロビジョニングや管理から解放され、アプリケーションのコンテナ化とデプロイに専念できます 。

プロビジョニング
必要なリソースを事前に確保・設定する作業

サーバーレス型

サーバーレス型のサービスでは、開発者はサーバーを意識せずにコードやアプリケーションを実行できます。インフラの設定や管理はすべてクラウド側に任されるため、必要なのは実行したいコードやコンテナイメージを用意することだけです。AWSの代表的なサーバーレス型サービスは次の通りです。

AWS Lambda

イベント駆動型でコードを実行できるサーバーレスコンピューティングサービスです。例えばファイルのアップロードや一定間隔のタイマー発火などのイベントに応じて、あらかじめ登録した自分の関数(プログラム)が自動的に実行されます。サーバーのことを考えずにコードを実行でき、実行に要した時間分だけ料金を支払えば良いモデルになっています 。短時間の処理や不定期なジョブに適しており、アイドル時(何もしていない時間)のコストが発生しない点もメリットです。

AWS App Runner

WebアプリケーションやAPIを簡単にデプロイして実行するためのフルマネージドサービスです 。ソースコード一式またはコンテナイメージを用意するだけで、App Runnerが自動的にビルドからデプロイまで行い、必要に応じてロードバランシングやスケーリングもしてくれます 。インフラ構築やサーバー設定の知識がなくてもアプリケーション提供が可能になるため、開発に集中したい場合に有用です。継続的に稼働するWebサービスを手間なくクラウド上に立ち上げたいケースで威力を発揮します。

ロードバランシング
複数のサーバーにトラフィックを分散させる

ベアメタル型

ベアメタル型のサービスは、物理的なハードウェアリソースを直接活用する特殊なケースや、オンプレミス環境向けのソリューションです。クラウド内の仮想サーバーではなく、自社データセンターにAWSの基盤を導入したり、物理サーバーに近い形でAWSリソースを利用したりする場合に関係します。

AWS Outposts

AWSのインフラストラクチャやサービスを、自社のデータセンターなどオンプレミス環境で実行できるようにするソリューションです 。専用のラックに収められたAWSハードウェアを設置することで、自社施設内でEC2(仮想サーバー)やEBS(ストレージ)など主要なAWSサービスを利用できます。クラウドと同じAPIや管理ツールを使用でき、AWSリージョンとオンプレミス環境を統合して運用できるため、一貫したハイブリッドクラウド体験を実現します 。低遅延が求められるシステムを手元で動かしたい場合や、データを手元に置く規制がある場合に選択肢となります。

AWS Nitro System

AWSの最新世代の仮想化基盤となっているシステムです。Nitro SystemはEC2インスタンス(仮想サーバー)の土台となる新しい仮想化インフラストラクチャで、専用のハードウェアカードによる処理オフロードと軽量なハイパーバイザーにより高性能・高セキュリティを実現しています 。従来のようにホストOSが重い処理を担うのではなく、多くの機能を専用ハードウェアに任せることでオーバーヘッドを削減し、ほぼベアメタル(生のハードウェア)に近いパフォーマンスを引き出せます 。NitroのおかげでEC2では「ベアメタルインスタンス」(物理サーバーそのものを占有するインスタンス)も提供可能となっており、必要に応じて仮想化層なしでサーバーリソースを利用することもできます 。

エッジ・分散型コンピューティング

エッジ・分散型コンピューティングのサービスは、クラウドの計算処理基盤をユーザーの近くや特殊な環境で提供するものです。通常のAWSリージョン(データセンター群)ではなく、よりユーザーに近い場所にコンピューティングリソースを配置することで、遅延(レイテンシー)の大幅な低減や、オフライン環境でのデータ処理を可能にします。

AWS Wavelength

5Gモバイルネットワーク向けの超低遅延コンピューティングサービスです。通信事業者の5G基地局施設内にAWSの計算基盤を配置し、モバイル端末に対してミリ秒単位の低遅延でアプリケーションを提供できます 。たとえばリアルタイム性が求められるゲームやAR/VRのようなアプリでも、ユーザーに近い場所で処理することで通信遅延を極限まで抑えることが可能です。

AWS Local Zones

特定の都市圏など、AWSの通常のリージョンから離れた場所にも一部のAWSサービス基盤を拡張する仕組みです。Local Zoneを利用するとエンドユーザーの近くでEC2仮想サーバーや一部AWSサービスを動かせるため、その地域のユーザー向けにレイテンシーを大幅に削減できます。またデータを地域内に留めたい場合(データ主権やコンプライアンス上の要件がある場合)にも有用です 。たとえば日本の東京リージョン以外の都市圏にLocal Zoneを設置し、そこで映像レンダリングなどを行うことで、東京以外のユーザーにも高速なサービス提供が可能になります。

AWS Snow Family

大容量データの物理搬送や、ネット接続が不安定な環境でのデータ収集に特化した専用デバイス群です。Snow Familyには、数十TBからペタバイト級のデータを安全に転送できるケース型ストレージデバイスのSnowball, 小型で持ち運び可能なエッジコンピューティングデバイスのSnowconeなどが含まれます。これらは堅牢な設計になっており、オフィスや遠隔地でデータを収集して物理的にAWSに送りたい場合などに活用されます 。ネットワーク帯域の制約でオンラインでの転送に時間がかかりすぎる場合や、離れた現場で取得したデータを後でまとめてクラウドに取り込みたい場合に有効なソリューションです。

どのサービスを選べばいいのか?

ここまでAWSの主要なコンピューティングサービスについて概要を紹介しましたが、実際にどれを使えば良いかはユースケースによって異なります。最後に、「用途」「コスト・性能」「スケーラビリティと運用」の観点からサービス選択のポイントを簡単にまとめます。

用途別の選び方

小規模プロジェクト・初心者

個人開発や小規模なウェブサイトなら、セットアップが簡単でコスト把握もしやすいLightsailがおすすめです。Lightsailは必要な機能がオールインワンで提供されており、初心者でも扱いやすい設計です 。まずはLightsailでクラウドに触れてみて、より高度なことが必要になったら他のサービスを検討するのも良いでしょう。

高度な制御や特殊な要件がある場合

エンタープライズ向けの大規模システムや、OSレベルから細かく環境を調整したい場合はEC2が適しています。EC2ならインスタンスタイプの選択肢も豊富で、高性能GPUを搭載したインスタンスや大容量メモリ搭載インスタンスなど用途に特化した構成を選べます。また、他のAWSサービス(データベースやストレージ等)と自由に組み合わせて柔軟にシステムを構築できるため、要件に応じた拡張性も確保できます 。

コンテナ化されたアプリケーション

アプリケーションをすでにコンテナ(Dockerなど)で実装している場合は、ECSもしくはEKSが選択肢になります。自前のオーケストレーション管理を省略したいならECS、標準的なKubernetes環境を活用したいならEKSが向いています。それぞれAWSによって管理された制御基盤上で動作するため、オンプレミスでKubernetesクラスターを構築・運用するより格段に手間が少なくなります。なお、どちらの場合もAWS Fargateを利用すればコンテナ実行におけるサーバー管理を省けるので、より「サーバーレス」に近い形でコンテナ運用が可能です 。

インフラ管理を避けたい/サーバーレス志向

サーバーを全く意識せずに任意のコードやアプリを動かしたい場合は、LambdaあるいはApp Runnerが適しています。イベント駆動のバッチ処理やトリガーベースの処理にはLambdaが便利ですし、常時稼働するウェブサービスにはApp Runnerが手軽です。いずれもインフラのプロビジョニングやメンテナンスはAWSに任せる形になるため、開発スピードを重視したいアプリケーションに向いています 。短時間の処理ならLambda、ウェブサーバーとして継続稼働させるならApp Runnerという使い分けができます。

オンプレミスや超低遅延が必要なケース

工場や店舗などクラウド接続が限定的な現場でAWS基盤を使いたい場合や、数ミリ秒の遅延もシビアな用途では、OutpostsやLocal Zones/Wavelengthといったサービスが検討対象となります。自社データセンター内にクラウドと同等の環境を構築したいならOutposts、特定都市圏で低遅延サービスを提供したい場合はLocal Zones、5Gモバイル向けのリアルタイム処理にはWavelengthがそれぞれマッチします 。これらは特殊用途向けのサービスであり、必要な場合に限定的に組み合わせて使われるケースが多いでしょう。

大容量データの移行・収集

ネットワーク経由では移動に膨大な時間がかかるデータの物理移送や、ネット接続のない環境でのデータ収集にはSnow Familyが活躍します。例えば数百TBに及ぶデータをクラウドに上げるにはSnowballを使って安全に輸送するのが現実的ですし、山間部の工事現場でセンサーデータを集めるには小型のSnowconeデバイスを使って後でクラウドと同期するといった使い方ができます。クラウドとエッジ(現場)を繋ぐ特殊な手段として位置付けられるサービスです。

コストとパフォーマンスの比較

サービスの選択にあたっては料金モデルとパフォーマンス特性の違いも重要です。まずコスト面では、Lightsailのように月額固定料金で予算が立てやすいものもあれば 、EC2のように細かな時間単位・リソース単位で従量課金されるものもあります。サーバーレス型のLambdaはリクエスト数や実行時間に応じた課金でアイドル時はコストがゼロですが、長時間連続稼働させる用途では逆に割高になるケースもあります。一般に、短期間・断続的なワークロードはサーバーレス型がコスト効率に優れ、常時稼働が必要なワークロードは専有リソース型(EC2など)を使ってリソースを確保した方が安定しやすいと言われます。

パフォーマンス面では、どのサービスもAWSの高性能なインフラ上で動作するため基本的な計算性能は非常に高いです。ただし遅延への強さハードウェア特性の活用という観点で差異があります。例えば、遅延を極力減らしたい場合はユーザーに近いLocal ZonesやWavelengthを使うことでネットワーク往復時間を短縮できます。またGPU計算や特殊チップ(AWSのGravitonプロセッサなど)が必要な場合は、該当インスタンスタイプを選べるEC2が有利です。AWS Nitro Systemに支えられたEC2のベアメタルインスタンスでは仮想化による overhead がなく、生のハードウェア性能を引き出せる点も特筆すべきでしょう。総じて、要求する性能やコストに応じて最適なサービスを選ぶことが大切です。

スケーラビリティ・管理のしやすさ

クラウドサービスを選ぶ際には、負荷に対するスケーラビリティ(拡張性)と、インフラの管理負荷の違いも考慮します。サーバーレス型のサービス(LambdaやApp Runner)は需要に応じて自動でインスタンス数が増減するため、急なアクセス増にも人手を介さず対応できます。コンテナ型のECS/EKSでもオートスケーリングの仕組みを設定すれば自動拡張が可能ですが、その設定やチューニングは利用者側の責任となります。EC2の場合は自分でサーバー台数を増減するか、自動スケーリンググループを組んでおく必要があります。したがって、「何もしなくても勝手にスケールしてほしい」ならサーバーレス系「細かく制御しながらスケールさせたい」ならマネージドなコンテナ or 仮想サーバー系と考えると良いでしょう。

管理のしやすさという点では、一般的に抽象度の高いサービスほど運用管理は楽になります。例えばLightsailは機能がパッケージ化されているぶん構成の自由度は下がりますが、設定箇所が少なくGUIも簡潔なので扱いやすいです 。LambdaやApp Runnerのようにサーバーレスで提供されるものは、パッチ適用やOSメンテナンスといった作業から完全に開放されます。一方でEC2はOSレベルの管理や他サービスとの組み合わせ設定などやることは増えますが、その分細部まで自分の思い通りに構築できます。このように「管理の手間」対「自由度」はトレードオフの関係にあるため、チームのスキルや求められる運用体制に応じて適切なサービスレベルを選択することが重要です。

まとめ

ここまでAWSの主要なコンピューティングサービスについて、仮想サーバー・コンテナ・サーバーレス・オンプレミス・エッジといったカテゴリ別に概観しました。それぞれ提供される機能や適したユースケースが異なり、サービスごとにメリット・デメリットがあります 。AWSのクラウドではこれら多彩な選択肢を組み合わせることで、小規模なWebサイトから大規模分散システム、機械学習用の高度な計算環境まで幅広いニーズに対応できます。自分のプロジェクト要件に合ったサービスを選ぶことで、クラウドの利点である柔軟性・スケーラビリティ・コスト効率を最大限に活かすことができるでしょう。

最後に、さらなる学習のためにはAWS公式のドキュメントやチュートリアルも活用してみてください。各サービスの公式ページには詳細な説明や料金体系、始め方ガイドが掲載されています。例えばAWS公式ウェブサイトの製品ページAWSドキュメントサイトでは、今回紹介したサービスの最新情報やベストプラクティスが提供されています。そうしたリソースも参照しながら、ぜひAWSのコンピューティングサービスを使いこなしてみてください。クラウドを上手に活用することで、アイデア次第でスピーディーにサービスを展開できるエンジニアリングの幅が広がるはずです。