type
status
date
slug
summary
tags
category
icon
password
理論
1. コンテナ化されたアプリケーションのオーケストレーション
- Amazon ECS (Elastic Container Service) や Amazon EKS (Elastic Kubernetes Service) は、コンテナ化されたアプリケーションを管理するためのサービスです。これらのサービスは、コンテナのデプロイ、スケーリング、管理を簡素化し、複雑なアプリケーションのオーケストレーションを実現します。
- ECS (Fargate) はサーバーレスオプションで、インフラ管理を不要にし、リソース管理を抽象化しますが、複雑な設定や完全な制御を必要とする場合は ECS (EC2) が適しています。これにより、インフラやネットワークの設定をフルコントロールできます。
2. データベースの選択
- Amazon RDS (Relational Database Service) は、フルマネージドなリレーショナルデータベースサービスで、SQL Server、MySQL、PostgreSQL などのデータベースエンジンをサポートしています。レガシーの Microsoft SQL Server を使用している場合、AWS での移行をサポートするために RDS for SQL Server が適しています。
- Amazon Aurora は、MySQL と PostgreSQL の互換性があり、高速でスケーラブルなリレーショナルデータベースです。Aurora は大規模なデータベースアプリケーションに最適で、従来の SQL Server の要件に合致する場合があります。
3. メッセージング
- Amazon SQS (Simple Queue Service) は、非同期メッセージングのためのフルマネージドサービスで、メッセージキューにメッセージを送信し、処理を分散させることができます。MSMQ(Microsoft Message Queueing)の代替として広く使用されます。
- SNS (Simple Notification Service) は、パブリッシュ/サブスクライブ型のメッセージングサービスで、リアルタイムの通知やメッセージングに使用されます。MSMQ の代替には不適切な場合が多いですが、通知型のメッセージングシステムに有用です。
4. AWS Fargate vs. EC2
- Fargate はコンテナの実行基盤を抽象化し、インフラストラクチャの管理を不要にします。簡単にコンテナをスケールできる一方で、細かいネットワーク設定やホスト管理が必要な場合は EC2 が有利です。特に、ネットワークの完全な制御やホストのカスタマイズが求められる場合、EC2 上で ECS を使うほうが適切です。
5. AWS のアーキテクチャ設計
- 分散アーキテクチャ を設計する際、データベースの選択やコンテナのオーケストレーションに加えて、アプリケーションのスケーラビリティや可用性を確保するために、負荷分散や自動スケーリング、フェイルオーバーの設計が重要です。例えば、ALB (Application Load Balancer) と Auto Scaling を組み合わせることで、アプリケーションの耐障害性を高め、負荷に応じて自動的にスケールします。
これらの概念を理解し、適切なAWSサービスを選択することが、効果的なアーキテクチャ設計に繋がります。
実践
略
一問道場
問題 #346
ある企業は、複数の .NET Framework コンポーネントで構成されたレガシーアプリケーションを運用しています。これらのコンポーネントは、同じ Microsoft SQL Server データベースを共有し、Microsoft Message Queueing (MSMQ) を使用して非同期に通信します。企業は AWS に移行するために、コンテナ化された .NET Core コンポーネントにアプリケーションをリファクタリングすることを計画しています。.NET Core コンポーネントには複雑なオーケストレーションが必要です。企業はネットワーキングとホストの設定に完全な制御を持つ必要があります。アプリケーションのデータベースモデルは強いリレーショナルです。
どのソリューションがこの要件を満たすでしょうか?
A. .NET Core コンポーネントを AWS App Runner でホストします。データベースを Amazon RDS for SQL Server でホストします。非同期メッセージングには Amazon EventBridge を使用します。
B. .NET Core コンポーネントを Amazon Elastic Container Service (Amazon ECS) で AWS Fargate 起動タイプを使用してホストします。データベースを Amazon DynamoDB でホストします。非同期メッセージングには Amazon Simple Notification Service (Amazon SNS) を使用します。
C. .NET Core コンポーネントを AWS Elastic Beanstalk でホストします。データベースを Amazon Aurora PostgreSQL Serverless v2 でホストします。非同期メッセージングには Amazon Managed Streaming for Apache Kafka (Amazon MSK) を使用します。
D. .NET Core コンポーネントを Amazon Elastic Container Service (Amazon ECS) で Amazon EC2 起動タイプを使用してホストします。データベースを Amazon Aurora MySQL Serverless v2 でホストします。非同期メッセージングには Amazon Simple Queue Service (Amazon SQS) を使用します。
解説
この問題は、企業がレガシーの .NET Framework アプリケーションを AWS に移行し、コンテナ化された .NET Core アプリケーションとしてリファクタリングする際の最適なアーキテクチャを選択するものです。
要件として、以下が挙げられています:
- .NET Core コンポーネントの複雑なオーケストレーション:コンテナ化とそのオーケストレーションが必要。
- ネットワーキングとホスト設定の完全な制御:ネットワークやインフラの設定に対する柔軟な制御。
- リレーショナルなデータベースモデル:既存の Microsoft SQL Server データベースのモデルに基づいた解決策が求められています。
各選択肢についての評価:
A. AWS App Runner + RDS for SQL Server + EventBridge
- AWS App Runner はコンテナ化されたアプリケーションを簡単にデプロイできますが、複雑なオーケストレーションに対応するためには、AWS ECS の方が適しています。また、EventBridge はイベント駆動型アーキテクチャに適していますが、非同期メッセージングには他の選択肢がより適しています。
- このオプションは要件に完全には合致しません。
B. ECS (Fargate) + DynamoDB + SNS
- Amazon ECS (Fargate) はコンテナオーケストレーションに非常に適していますが、DynamoDB はリレーショナルデータベースではなく、ノーSQLデータベースであるため、既存の Microsoft SQL Server の強いリレーショナルモデルには合いません。SNS は非同期メッセージングには使えますが、同様に MSMQ の代替としては不適切です。
- この選択肢も適していません。
C. Elastic Beanstalk + Aurora PostgreSQL + MSK
- Elastic Beanstalk は簡単にアプリケーションをデプロイできますが、Aurora PostgreSQL はリレーショナルデータベースとして適しているものの、既存の SQL Server との互換性や要件を満たすかが疑問です。Amazon MSK はストリームデータに特化しており、MSMQ による非同期メッセージングには不向きです。
- このオプションは不適切です。
D. ECS (EC2) + Aurora MySQL + SQS
- Amazon ECS (EC2) は、ネットワーク設定やホスト構成に完全な制御を持ち、複雑なオーケストレーションにも対応します。また、Aurora MySQL はリレーショナルデータベースとして適切で、既存の SQL Server の要件を満たします。Amazon SQS は、非同期メッセージングに適しており、MSMQ の代替として問題なく使用できます。
- この選択肢は、すべての要件を満たし、最適な解決策となります。
結論:
最適な解決策は D. ECS (EC2) + Aurora MySQL + SQS です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/177d7ae8-88e2-80d7-a6b0-d420c4184783
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章