オペレーションの簡素化 - でのマイクロサービスの実装 AWS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

オペレーションの簡素化

マイクロサービスの実行、保守、モニタリングに必要な運用作業をさらに簡素化するために、フルサーバーレスアーキテクチャを使用できます。

Lambda ベースのアプリケーションのデプロイ

Lambda コードをデプロイするには、zipファイルアーカイブをアップロードするか、有効な Amazon ECR イメージ URI を使用してコンソール UI からコンテナイメージを作成してアップロードします。ただし、Lambda 関数が複雑になった場合、つまりレイヤー、依存関係、アクセス許可がある場合、UI を介したアップロードはコードの変更に扱いにくい場合があります。

AWS CloudFormation と AWS Serverless Application Model (AWS SAM)、または Terraform を使用すると AWS Cloud Development Kit (AWS CDK)、サーバーレスアプリケーションを定義するプロセスが合理化されます。CloudFormation でネイティブにサポートされている AWS SAM は、サーバーレスリソースを指定するためのシンプルな構文を提供します。AWS Lambda レイヤーは、複数の Lambda 関数間で共有ライブラリを管理し、関数のフットプリントを最小限に抑え、テナント対応ライブラリを一元化して、開発者エクスペリエンスを向上させるのに役立ちます。Lambda SnapStart for Java は、レイテンシーの影響を受けやすいアプリケーションの起動パフォーマンスを向上させます。

デプロイするには、CloudFormation テンプレートでリソースとアクセス許可ポリシーを指定し、デプロイアーティファクトをパッケージ化し、テンプレートをデプロイします。 AWS CLI ツールである SAM Local は、Lambda にアップロードする前に、サーバーレスアプリケーションのローカル開発、テスト、分析を許可します。

IDE、 AWS CodeBuild、 AWS CodePipeline などのツールとの統合により AWS CodeDeploy、SAM AWS Cloud9 ベースのアプリケーションの作成、テスト、デバッグ、デプロイが効率化されます。

次の図は、CloudFormation および AWS CI/CD ツールを使用した AWS Serverless Application Model リソースのデプロイを示しています。

AWS Serverless Application Model (AWS SAM) を示す図

図 2: AWS Serverless Application Model (AWS SAM)

マルチテナンシーの複雑さの抽象化

SaaS プラットフォームなどのマルチテナント環境では、マルチテナンシーに関連する複雑さを合理化し、開発者が機能と機能の開発に集中できるようにすることが重要です。これは、クロスカットの問題に対処するための共有ライブラリを提供する AWS Lambda Layers などのツールを使用して実現できます。このアプローチの理論的根拠は、共有ライブラリとツールを正しく使用すると、テナントコンテキストを効率的に管理することです。 

ただし、複雑でリスクがあるため、ビジネスロジックのカプセル化にまで拡張すべきではありません。共有ライブラリの根本的な問題は、更新に伴う複雑さが増し、標準コードの重複に比べて管理が難しくなることです。したがって、最も効果的な抽象化を求めるには、共有ライブラリの使用と重複のバランスを取ることが重要です。

API 管理

APIs の管理は、特に複数のバージョン、開発サイクルの段階、認可、スロットリングやキャッシュなどの機能を考慮する場合、時間がかかることがあります。API Gateway とは別に、API 管理に ALB (Application Load Balancer) または NLB (Network Load Balancer) を使用するお客様もいます。Amazon API Gateway は、RESTful APIs。これにより、プログラムで APIs を作成し、バックエンドサービス、認可とアクセスコントロール、レート制限、キャッシュ、モニタリング、トラフィック管理からデータ、ビジネスロジック、機能にアクセスするための「フロントドア」として機能し、サーバーを管理することなく APIs を実行できます。

図 3 は、API Gateway が API コールを処理し、他のコンポーネントとやり取りする方法を示しています。モバイルデバイス、ウェブサイト、またはその他のバックエンドサービスからのリクエストは、レイテンシーを短縮し、最適なユーザーエクスペリエンスを提供するために、最も近い CloudFront の Point of Presence (PoP) にルーティングされます。

API Gateway コールフローを示す図

図 3: API Gateway コールフロー