🎃

[SAA-C03対策講座]おさえておきたいSAAに出てくるITサービス・オプション名称(コンピューティング・コンテナ・サーバーレス)

2024/09/27に公開

はじめに

AWS Certified Solutions Architect – Associate(以後、SAA)の範囲で出題されるITサービスについて、ざっくり網羅的に説明する試みです。

当記事では、数あるSAA出題範囲のなかから、コンピューティング・コンテナ・サーバーレスに絞って、解説をしていきます。

コンピューティング・コンテナ・サーバーレス以外のサービスについては、末尾の関連記事を参考にしてください。

※この記事では、概要レベルでの簡易的な解説になりますので、各項目については個別に理解を深めてください。

コンピューティング

Amazon EC2

サービス概要

Amazon EC2は、AWSクラウド上で仮想サーバー(インスタンス)を起動し、必要な時に必要なだけコンピューティング能力を利用できるサービスです。様々なOS、インスタンスタイプ、ストレージオプションを選択でき、柔軟な構成が可能です。Webサーバー、アプリケーションサーバー、データベースサーバーなど、幅広い用途に利用できます。

関連キーワード

Amazon Machine Image (AMI):

EC2インスタンスを起動するためのテンプレートです。OS、アプリケーション、設定などが含まれており、必要な環境を素早く構築できます。

Auto Scaling グループ

EC2インスタンスの数を自動的に調整する機能です。需要の変化に応じてインスタンス数を増減させることで、可用性とコスト効率を向上させます。

スポットインスタンス

未使用のEC2キャパシティを、オンデマンドインスタンスよりも大幅に低い価格で利用できるインスタンスです。ただし、AWSが必要とする場合はインスタンスが中断される可能性があります。バッチ処理や柔軟なスケジューリングが可能なワークロードに適しています。

リザーブドインスタンス

1年または3年の契約期間で、特定のインスタンスタイプを事前に予約することで、オンデマンドインスタンスよりも大幅に割引された料金で利用できるインスタンスです。安定したワークロードや長期的な利用に適しています。

インスタンスファミリー

EC2インスタンスは、それぞれ異なる特性を持つ複数のインスタンスファミリーに分類されます。

インスタンスファミリー 内容
汎用インスタンス 様々なワークロードに対応できるバランスの取れたインスタンスです。
コンピューティング最適化インスタンス 高性能なCPUを搭載し、計算処理中心のワークロードに適しています。
メモリ最適化インスタンス 大容量のメモリを搭載し、メモリ集約型のワークロードに適しています。
ストレージ最適化インスタンス 高速なストレージアクセスを提供し、大規模なデータ処理に適しています。
アクセラレーテッドコンピューティングインスタンス GPUやFPGAなどのハードウェアアクセラレータを搭載し、機械学習や科学技術計算などの特殊なワークロードに適しています。
一緒に利用されるサービス

Elastic Load Balancing (ELB): 複数のEC2インスタンスにトラフィックを分散させ、可用性と耐障害性を向上させます。
Amazon Elastic Block Store (EBS): EC2インスタンスにアタッチできる永続的なブロックストレージです。データベースのデータやアプリケーションのデータを保存するのに使用されます。
Amazon Virtual Private Cloud (VPC): AWSクラウド上に論理的に隔離された仮想ネットワークです。EC2インスタンスをVPC内に配置することで、セキュリティグループやネットワークACLを使用してネットワークトラフィックを制御できます。
AWS Systems Manager Session Manager: インバウンドポートを開放することなく、EC2インスタンスへの安全なリモートアクセスを提供します。SSHキーの管理や踏み台サーバーの構築が不要となり、監査証跡の取得も可能です。

コンテナ

Amazon Elastic Container Service (Amazon ECS)

サービス概要

Amazon ECSは、コンテナ化されたアプリケーションをAWS上で簡単に実行、スケーリング、管理できるフルマネージド型のコンテナオーケストレーションサービスです。コンテナ化とは、アプリケーションとその依存関係を一つのパッケージにまとめる技術で、これにより、アプリケーションの実行環境を統一し、開発、テスト、デプロイを効率化できます。Amazon ECSは、このコンテナ化されたアプリケーションをAWSのインフラ上で効率的に管理するためのサービスを提供します。

関連キーワード

コンテナ

アプリケーションとその依存関係をパッケージ化したもの。環境の違いによる問題を軽減し、ポータビリティを高めます

Docker

コンテナの作成と実行のためのオープンソースプラットフォーム。Amazon ECSはDockerコンテナをネイティブにサポートします

タスク定義

コンテナを実行するための設定を定義したもの。どのコンテナイメージを使うか、CPUやメモリなどのリソース割り当て、環境変数などを指定します

サービス

同じタスク定義に基づく複数のタスクを管理し、必要なタスク数を維持するための仕組み。負荷に応じてタスク数を自動調整することも可能です

クラスター

コンテナ化されたアプリケーションを実行するためのEC2インスタンスの論理的なグループ

一緒に利用されるサービス

Elastic Load Balancing (ELB): 複数のコンテナにトラフィックを分散させ、可用性と耐障害性を向上させます。
Amazon Elastic Container Registry (ECR): Dockerイメージを保存、管理するためのフルマネージド型コンテナレジストリサービス。Amazon ECSとシームレスに連携し、コンテナイメージのデプロイを容易にします
AWS Fargate: サーバーのプロビジョニングや管理が不要なサーバーレスコンピューティングエンジン。Amazon ECSと組み合わせることで、コンテナ化されたアプリケーションをさらに簡単に実行できます
※これらのサービス以外にも、Amazon ECSは、Amazon VPC、IAM、CloudWatchなど、様々なAWSサービスと連携して利用されます。

Amazon Elastic Kubernetes Service (Amazon EKS)

サービス概要

Amazon EKSは、マネージド型のKubernetesサービスです。Kubernetesとは、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースのプラットフォームです。Amazon EKSを利用することで、Kubernetesの複雑なセットアップや運用管理をAWSに任せ、開発者はアプリケーション開発に集中できます。

関連キーワード

Amazon EKS Anywhere

Amazon EKS Anywhereは、オンプレミス環境でもAWS Outposts上でも、一貫したAWSのツールと運用を用いてKubernetesクラスターを作成・運用できるサービスです。Amazon EKSと同じKubernetesディストリビューションを使用しており、AWSクラウド上と同様にKubernetesクラスターを管理できます。
[Amazon EKS Anywhereを使うことで得られるメリット]
ハイブリッド環境の構築: AWSクラウドとオンプレミス環境、またはAWS Outposts上で、同じ運用ツールとベストプラクティスを用いてKubernetesクラスターを管理できます。

  • 一貫性のあるKubernetes体験
    AWSクラウド上と同じKubernetesディストリビューションを使用するため、学習コストを抑え、運用ノウハウを共有できます。
  • 柔軟なデプロイ
    オンプレミス環境の要件に合わせて、ハードウェアやネットワーク構成を自由に選択できます。

一緒に利用されるサービス

Elastic Load Balancing (ELB): 複数のコンテナにトラフィックを分散させ、可用性と耐障害性を向上させます。
Amazon Elastic Container Registry (ECR): Dockerイメージを保存、管理するためのフルマネージド型コンテナレジストリサービス。Amazon EKSとシームレスに連携し、コンテナイメージのデプロイを容易にします
AWS Identity and Access Management (IAM): Kubernetesのロールベースアクセス制御(RBAC)と連携し、きめ細かいアクセス制御を実現します。

Amazon EKS と Amazon ECS の違い

どちらもAWS上でコンテナ化されたアプリケーションを実行するためのサービスですが、それぞれの特徴があります。

  1. ベースとなる技術
    [Amazon EKS]
    Kubernetesをベースとしています。Kubernetesは、コンテナオーケストレーションのデファクトスタンダードであり、豊富な機能と柔軟性を備えています。
    [Amazon ECS]
    AWS独自のコンテナオーケストレーション技術を採用しています。AWSとの親和性が高く、シンプルな操作性と容易な運用管理が特徴です。

  2. ユースケース
    [Amazon EKS]

  • Kubernetesの経験やスキルを活かしたい
  • Kubernetesのエコシステムを活用したい
  • 複雑なアプリケーションやマイクロサービスアーキテクチャを運用したい
  • マルチクラウドやハイブリッドクラウド環境を検討している (Amazon EKS Anywhere)
    [Amazon ECS]
  • AWSのマネージドサービスとの連携を重視したい
  • シンプルなコンテナ環境を構築したい
  • サーバーレスコンピューティング (AWS Fargate) を活用したい
  1. 管理の複雑さ
    [Amazon EKS]
    Kubernetesの知識が必要となり、運用管理の複雑さは高めです。ただし、AWSがコントロールプレーンの管理を担うため、Kubernetesクラスタの運用負荷は軽減されます。
    [Amazon ECS]
    AWSが提供するマネージドサービスであるため、運用管理は比較的容易です。特に、AWS Fargateを利用する場合は、サーバーの管理が不要となり、さらに運用負荷を軽減できます。

  2. コスト
    [Amazon EKS]
    コントロールプレーンの料金に加えて、ワーカーノードのEC2インスタンス料金が発生します。
    [Amazon ECS]
    EC2起動型の場合はEC2インスタンス料金、Fargate起動型の場合はvCPUとメモリの使用量に応じた料金が発生します。

AWS App Mesh

サービス概要

AWS App Meshは、マイクロサービス間の通信を管理・制御するためのマネージド型のサービスメッシュです。マイクロサービスアーキテクチャでは、アプリケーションが多数の小さなサービスに分割され、それぞれが独立して動作します。これらのサービス間の通信は複雑になりがちですが、AWS App Meshを使うことで、通信の可視化、トラフィック制御、セキュリティ強化などを実現し、マイクロサービスの管理を容易にします。

関連キーワード

サービスメッシュ

マイクロサービス間の通信を管理するためのインフラストラクチャ層。サービスディスカバリ、トラフィックルーティング、負荷分散、障害回復、セキュリティなどの機能を提供します。

Envoy

AWS App Meshが採用しているオープンソースのプロキシ。各サービスにサイドカーコンテナとしてデプロイされ、サービス間の通信を仲介します。

Virtual Node

App Meshにおけるサービスの論理的な表現。サービスのエンドポイントやトラフィックルーティング設定などを定義します。

Virtual Router

複数のVirtual Node間のトラフィックルーティングを制御するためのコンポーネント。

Virtual Service

クライアントがサービスにアクセスするための論理的な名前。Virtual RouterとVirtual Nodeを関連付け、トラフィックルーティングを定義します。

一緒に利用されるサービス

Amazon ECS/EKS: コンテナ化されたマイクロサービスを実行するためのサービス。App Meshは、ECSやEKSで実行されるサービス間の通信を管理できます。
AWS Cloud Map: マイクロサービスのエンドポイントを登録・管理するためのサービス。App Meshは、Cloud Mapと連携してサービスディスカバリを実現します。
Amazon CloudWatch: AWSリソースの監視サービス。App Meshは、CloudWatchと連携してメトリクスやログを収集し、マイクロサービスの健全性を監視できます。

サーバーレス

AWS Lambda

サービス概要

AWS Lambdaは、サーバーレスコンピューティングを実現するAWSのサービスです。サーバーのプロビジョニングや管理をすることなく、コードを実行できます。イベント駆動型で動作し、特定のイベントが発生したときにのみコードが実行されるため、必要な時に必要な分だけコンピューティングリソースを使用し、コスト効率の高いアプリケーションを構築できます。

関連キーワード

Lambda@Edge

Lambda@Edgeは、AWSのコンテンツ配信ネットワーク(CDN)であるAmazon CloudFrontのエッジロケーションでLambda関数を実行できる機能です。これにより、エンドユーザーに近い場所でコードを実行し、低レイテンシな処理や動的なコンテンツ生成などを実現できます。

Lambda SnapStart

Lambda SnapStartは、Java関数の実行開始時間を短縮する機能です。初回起動時に関数の実行環境のスナップショットを作成し、以降の起動時にそのスナップショットを利用することで、コールドスタートによる遅延を大幅に削減できます。

一緒に利用されるサービス

Amazon API Gateway: API Gatewayと連携することで、Lambda関数をAPIのバックエンドとして使用できます。API GatewayがHTTPリクエストを受け取り、Lambda関数を呼び出して処理結果をクライアントに返します。
Amazon S3: S3にファイルがアップロードされたイベントをトリガーに、Lambda関数を起動し、画像処理やデータ変換などの処理を実行できます。
Amazon DynamoDB: DynamoDBのデータ変更イベントをトリガーに、Lambda関数を起動し、データの加工や他のサービスへの通知などの処理を実行できます。

Discussion