🤖

【AWS認定(SAP-C02)ノート】移行後アーキテクチャとモダナイゼーション

2023/08/16に公開

はじめに

本記事は、AWS Certified Solutions Architect - Professional の下記の分野とタスクステートメントに関連するAWSサービスの特徴やポイントのまとめです

  • 第 4 分野: ワークロードの移行とモダナイゼーションの加速
    • タスクステートメント 3: 既存ワークロードの新しいアーキテクチャを決定する。
    • タスクステートメント 4: モダナイゼーションと機能強化の機会を決定する。

コンテナ

Amazon ECS (Elastic Container Service)

Amazon ECR (Elastic Container Registry)

リポジトリ単位でECRにプッシュされたコンテナイメージを管理するレジストリ

ECS、EKS、App Runnerなどのコンテナ実行サービスから使用できる

ECSクラスタ

コンテナを実行するためのサービスとタスクのグループ

組織のチームや部分ごとに分けたり、アクセス権限やコストで分離する

タスク定義

アプリケーションを形成するパラメータと 1 つ以上のコンテナを記述する JSON 形式のテキストファイル

  • タスク定義の中で指定できるパラメータの一部
    • タスクの各コンテナで使用するDocker イメージ
    • 各タスクで、またはタスク内の各コンテナで使用する CPU とメモリの量
    • 使用する起動タイプ、これによりタスクをホストするインフラストラクチャを決定
    • タスクのコンテナで使用する Docker ネットワーキングモード
    • タスクで使用するログ記録設定
    • コンテナの開始時に実行するコマンド
    • タスク内でコンテナが使用するデータボリューム
    • タスクで使用される IAMロール

ボリュームの追加でEFSファイルシステムを指定して使用できる

Amazon EventBridgeでスケジュールを設定して、ターゲットにECSタスクのコンテナを指定し、定期的に実行可能

サービス

サービスを使用すると、Amazon ECS クラスター内で、タスク定義の指定した数のインスタンスを同時に実行して維持できる

起動タイプ

Amazon EC2から実行

  • EC2インスタンスが起動して、その上でコンテナを実行するように指定
  • EC2インスタンスのOS、可用性、エージェントの更新など運用が必要

Fargateでコンテナを起動

  • OS、クラスタの可用性、ソフトウェアの管理が不要で、コンテナの実行に集中できる

キャパシティプロバイダー

より詳細にコントロールできるコンテナの実行環境

クラスタで利用可能なキャパシティプロバイダーを設定して、サービスで指定できる

  • EC2

    • EC2 Auto Scalingグループをキャパシティプロバイダーに紐付けて、キャパシティプロバイダーごとの重み付けを設定できる
    • 起動するサブネットごとにタスク数を均等化してり、スポットインスタンスとの割合を決められる
  • Fargate

    • FargateとFargate Spotがあり
    • Fargate Spot
      • 最大70%の割引利用で使用できる
      • スポットインスタンス同様にコンテナ中断の可能性がある

ネットワークモード

  • EC2起動タイプ
    • awsvpc、none、bridge、hostを使用できる
    • hostの場合:EC2のENIにコンテナポートを直接マッピングできる
  • Fargate
    • awsvpcモードのみ
    • タスクにENIが割り当てられて使用できる
    • コンテナタスクにセキュリティグループが設定できる

AWS Proton

コンテナの実行環境を環境とサービステンプレートに分けて、自動構築、管理できるサービス

ワークフロー

  1. 管理者としてAWS Protonに環境テンプレートを作成し登録すると、共有リソースを定義
  2. 環境テンプレートに基づいて、1 つ以上の環境をデプロイする
  3. 管理者としてAWS Protonにサービステンプレートを作成し登録すると、関連するインフラストラクチャ、監視、CI/CD リソース、および互換性のある環境テンプレートを定義する
  4. 開発者として、登録済みのサービステンプレートを選択し、ソースコードリポジトリのリンクを提供する
  5. AWS Protonは、サービスインスタンス用のCI/CD パイプラインでサービスをプロビジョニングする
  6. AWS Proton は、選択したサービステンプレートで定義されたソースコードを実行するサービスとサービスインスタンスをプロビジョニングして管理する

Amazon EKS

独自のKubernetesコントロールプレーンまたはノードをインストール、操作、および維持することなく、AWSでKubernetesを実行するために使用できるマネージドサービス

  • EC2起動タイプとFargateを使用できる
  • 次の機能のような多くの AWS サービスと統合されている
    • Amazon ECR
    • Elastic Load Balancing
    • IAM
    • Amazon VPC

AWS App Runner

GitHubのソースコードまたはECRイメージからアプリケーションを継続的にデプロイ、運用できるサービス (インフラストラクチャの管理は不要)

実行環境のvCPU、メモリ、環境変数、IAMロールを設定、オプションでAuto Scaling、KMSキーなどを設定できる

Amazon Managed Service for Prometheus

コンテナ化されたアプリケーションとインフラストラクチャを大規模にモニタリングおよびアラートを提供するPrometheus互換サービス

  • Prometheusクエリ言語(PromQL)を使用して、コンテナで構築されたサービスのモニタリングとアラートを出せる
  • EKS、ECS、および AWS Distro for OpenTelemetry と統合されている

Amazon Managed Service for Grafana

Grafanaのフルマネージドサービス

メトリクスの保存場所に関係なく、メトリクスに関するクエリ、視覚化、理解、アラートの受信が可能

Amazon Kinesis

継続的に生成され続けるデータ(ストリーミングデータ)を継続的に収集して、分析などの処理を継続的に行う必要がある処理に特化しているサービス

Amazon Kinesis Data Streams

ストリームデータを収集して順番通りにリアルタイム処理を実現するサービス

パーティションキー

  • ストリーム内のデータをシャード単位でグループ化するために使用される
  • プライマリキーではないので、同じパーティションキーを持ったデータも送信できる

シャード

ストリーム内の一意に識別されたデータレコードのシーケンス

  • 1シャードにつき1 秒あたり最大1,000 レコード、1 MB(パーティションキーを含む)のデータ書き込みと、2 MBの読み込みが可能
  • ストリームのデータ容量は、ストリームに指定したシャードの数によって決まる
  • ストリーム内のシャードの数を調整して、ストリームのデータフロー率の変化に適応させることができる(リシャーディング)

キャパシティモード

  • オンデマンドモード
    • 必要なスループットを提供するために Kinesis Data Streams がシャードを自動的に管理
    • 使用した実際のスループットに対してのみ課金
  • プロビジョンドモード
    • データストリームのシャード数を指定する必要がある

保持期間

デフォルトで作成後 24時間、追加料金が発生するが最長8760時間 (365日)データ保持可能

サーバー側の暗号化

プロデューサーがストリームに入力するときに、機密データをAWS KMSキーで自動的に暗号化できる

プロデューサー

Amazon Kinesis Data Streams にレコードを配置

コンシューマー

Amazon Kinesis Data Streams からレコードを取得して処理

メトリクス

CloudWatchモニタリング:(標準)ストリーム単位、(追加料金)シャード単位

送信されたデータは、コンシューマーが1秒未満のレイテンシーですぐにGetRecordsして使用できる

Amazon Kinesis Data Firehose

リアルタイムのストリーミングデータを指定した送信先に配信するためのフルマネージドサービス

送信先

  • Amazon S3
  • Amazon Redshift
  • Amazon OpenSearch Service
  • サポート対象のサードパーティサービスプロバイダーが所有するカスタム HTTP エンドポイントまたは HTTP エンドポイント

など

バッファ設定

送信先に送信するタイミングを決定

  • Buffer Size (MB 単位):指定のサイズまでデータが蓄積
  • Buffer Interval (秒単位):指定した時間が経過するかのいずれか、最小時間は60秒

Kinesis Data Streamsと比較してデータの遅延が発生する

Amazon Kinesis Data Analytics

Kinesis Data StreamsとKinesis Data Firehoseのストリーミングデータを主にSQLクエリを使用して分析し、指定の送信先に送信する方法

Amazon Kinesis Video Streams

動画ストリームをAWSに収集して、Amazon Rekognition Videoなどと連携して、リアルタイムな動画分析を行える

Amazon Managed Streaming for Apache Kafka (MSK)

フルマネージドApache Kafka により、ストリーミングデータの取り込みと処理をリアルタイムで簡単に行うことができるサービス

VPCに指定して複数のAZのサブネットでKafkaクラスタを起動できて、高い可用性を提供する

データレイク

データレイクは、規模にかかわらず、すべての構造化データと非構造化データを保存できる一元化されたリポジトリ

データをそのままの形で保存できるため、データを構造化しておく必要がない

AWS Glue

分析を行うユーザーが複数のソースからのデータを簡単に検出、準備、移動、統合できるようにするサーバーレスのデータ統合サービス

データソース

  • S3
  • RDS
  • DynamoDB
  • DocumentDB
  • Kinesis Data Streams
  • Apache Kafka

データターゲット

  • S3
  • RDS
  • DocumentDB

データカタログ

AWS Glueの持続的なメタデータストア

AWS Glue環境を管理するためのテーブル定義、ジョブ定義、およびその他のコントロール情報が含まれている

Crawler (クローラー)

データストア (ソースまたはターゲット) に接続し、分類子の優先順位リストを進行してデータのスキーマを判断し、データカタログにメタデータテーブルを作成するプログラム

  • 1回の実行で複数のデータストアをクロールできる
  • データソースがS3の場合、オプションで増分クロール可能
  • カスタム分類子を組み込んで、独自のスキーマを確実に読み込める

ジョブ

ETL作業を実行するために必要なビジネスロジック

  • 変換スクリプト、データソース、およびデータターゲットで構成されている
  • スケジュールされたトリガーにより、または、イベントにトリガーされることでジョブが実行される

Amazon Athena

標準的な SQLを使用してAmazon S3内のデータを直接分析することを容易にするインタラクティブなクエリサービス

  • Athenaはクエリ結果をあらかじめ指定したS3に保存する
  • BI(ビジネスインテリジェンス)ツールを使うことでSQLクエリの結果をグラフなどで可視化、セルフ分析できる
  • Athenaで使用するDB、テーブスは、AthenaのクエリエディタからSQLで作成することも、Glueクローラーで自動作成することも可能
  • Athenaで作成したテーブルの定義はGlueデータカタログに保存される

AWS Lake Formation

データレイクの構築、セキュア化、および管理に通常必要となる手動での複雑な手順の多くを簡単に実行できるフルマネージドサービス

ブループリント

データレイクにデータを簡単に取り込めるようにするデータ管理テンプレート

作成されたリソースはGlueのクローラー、ジョブとそれらを実行制御するワークフロー

ワークフローは編集して個別の要件に合わせて調整できる

アクセス制御

  • 登録されたS3バケットのプレフィックスなどのロケーションのデータへ、パーミション設定によりきめ細やかなアクセス設定ができる
  • データローケーション設定:Glueデータベースと連携され、DB、テーブル、列、行、セルの単位までIAMユーザーやグループごとに制御可能

AWS Data Exchange

データプロバイダーがサードパーティーデータをS3バケットにインポートできて、AWS クラウドで簡単に検索、サブスクライブ、および使用できるようにするサービス

Amazon AppFlow

  • SaaS (Software as a Service)アプリケーションと AWS サービス (S3、RedShiftなど)間の双方向のデータフローをわずか数クリックで自動化する
  • AWS以外でのSaaSから生成されたデータもデータレイクに統合できる

Amazon SageMaker

機械学習のトレーニングのための環境構築、作成した推論モデルのデプロイなどを提供しているサービス

Amazon Comprehend

文章テキストから自動でキーワードを抽出、ネガティブ/ポジティブを判定できる自然言語処理 (NLP) サービス

個人特定情報(PII)の自動識別も可能

Amazon Rekognition

画像、動画を分析できるサービス

Amazon Forecast

S3に蓄積した過去の時系列データをもとに、時系列予測を作成できるサービス

Amazon Fraud Detector

  • オンライン決済詐欺や偽アカウントによる不正を自動検出できる
  • 与えたS3バケットのデータによって自動で不正を検出するAPIが構築される

Amazon Kendra

AWSサービスや、SaaSのストレージサービスの情報をインデックスして、自然言語検索サービスを構築できる

Amazon Translate

高速で高品質かつカスタマイズ可能な言語翻訳を提供するニューラル機械翻訳サービス

  • 特定言語の翻訳定義のカスタマイズも可能
  • 翻訳対象のファイル形式:テキスト、HTML、Word、Excel、PowerPointなど

Amazon Polly

テキストを音声に変換するサービス

  • MP3などの音声ファイルへの変換をサポート
  • ほぼリアルタイムな変換、ストリーミング再生が可能
  • SSML (Speech Synthesis Markup Language)に対応している

Amazon Transcribe

音声をテキストに変換するサービス

Amazon Textract

スキャンしたドキュメントからテキスト、手書き文字、およびデータを自動的に抽出するサービス

Amazon Lex

アプリケーションに会話型インターフェイスを設計、構築、テスト、およびデプロイするための高度な自然言語モデルを備えた、フルマネージド型AIサービス

Amazon Simple Email Service (SES)

ユーザー自身の E メールアドレスとドメインを使用して E メールを送受信するための、簡単でコスト効率の高い方法を提供する E メールプラットフォーム

SES受信

Route53などのDNSサービスで、MXレコードをSESドメインに向けて設定する

SES送信

Amazon SES コンソール、Amazon SES Simple Mail Transfer Protocol (SMTP) インターフェイス、または Amazon SES API を使用して E メールを送信する

Amazon Pinpoint

複数のメッセージングチャンネルをまたがってお客様とやり取りするためのサービス

メッセージが届いた、見られた、リンクがクリックされたなどのアクティビティを分析できる

AWS Transfer Family

AWS ストレージサービスとの間でファイルを送受信できる安全な転送サービス

サポートしているAWS ストレージサービス

  • Amazon S3
  • Amazon EFS

サポートしているプロトコル

  • Secure Shell (SSH) File Transfer Protocol (SFTP): バージョン 3
  • File Transfer Protocol Secure (FTPS)
  • File Transfer Protocol (FTP)
  • 適用性ステートメント 2 (AS2)

データの読み取り、書き込みの権限

  • TransferサービスがIAMロールを引き受けることで実現できる
  • S3に関しては、セッションポリシーも有効なので、クライアントユーザーごとに対象のプレフィックスを絞り込むこともできる

ユーザーIDの認証

  • Transfer Familyサービス自体でマネージドとして管理
  • AWS Directory Service for Microsoft Active Directoryを使用
  • API Gateway経由で独自の認証サービスを使用

低遅延を実現するサービス

AWS Outposts

AWSのデータセンターで運用されているものと同様のハードウェア機器が、ラックサーバー単位で、指定したオンプレミスデータセンターに設置され、AWSのインフラストラクチャ、サービス、API、ツールをオンプレミスまで拡張するフルマネージドサービス

ラック、サーバー、スイッチ、ケーブルなどのOutposts機器は、すべてAWSが所有し管理する

AWS Local Zones

  • リージョンよりもユーザーに近い拠点で一部のサービスを使用できる
  • VPCのダッシュボードから有効にすることでサブネット作成時に選択できる

AWS Wavelength

高い帯域幅と超低レイテンシーを備えた5GネットワークとAWSのコンピューティングおよびストレージサービスが組み合わせ

  • EC2のダッシュボードから有効にすることで、リージョンに紐付いたWavelength Zoneをサブネット作成時に選択できる
  • キャリアゲートウェイとキャリアゲートウェイへのルートをサブネットに関連付けて使用する

マネージドデータベース

Amazon Neptune

高速で信頼性に優れたフルマネージド型のグラフデータベースサービスで、ノード同士の関係性を保存して検索する機能を提供

ノード:人、使用端末
関係性:友達(Friends)、いいね(Like)

Amazon DocumentDB (MongoDB 互換)

クラウド内でMongoDBと互換性のあるデータベースを簡単にセットアップ、運用、スケールすることができる完全マネージド型のデータベースサービス

JSONデータを保管し、クエリ検索、インデックス作成ができる

AWS DMSはMongoDBからDocumentDBへの移行をサポート

Amazon Keyspaces

Apache Cassandra 互換のマネージドデータベースサービス

Apache Cassandra同様にCassandraクエリ言語(CQL)、API、Cassandraドライバーをサポートしているので、これまで同様の開発者ツールを使える

Amazon Timestream

高速かつスケーラブルなサーバーレス時系列データベースサービス

  • 1日あたり数兆件規模のイベントを最大1,000倍の速度でより簡単に保存および分析できる
  • 容量とパフォーマンスを調整するために自動的にスケールアップまたはスケールダウンする

マネージドアプリケーションサービス

AWS AppSync

サーバーレスのGraphQLおよびPub/Sub APIを作成し、単一のエンドポイントを通じて安全にデータの照会、更新、公開を行うことで、アプリケーションの開発を簡素化する

DynamoDBテーブル、OpenSearch Serviceなどへ安全に接続してデータの読み書きが行える

AWS Device Farm

広範なデスクトップブラウザと実際のモバイルデバイスでテストすることにより、ウェブアプリとモバイルアプリの品質を向上させるアプリケーションテストサービス

CodePipelineなどで実行するCI/CDパイプラインで、Device Farmのテストを組み込んで自動化できる

Discussion