View a markdown version of this page

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

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

オペレーションの簡素化

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

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

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

AWS CloudFormation と  AWS Serverless Application Model (AWS SAM) AWS Cloud Development Kit (AWS CDK)、または Terraform を使用すると、サーバーレスアプリケーションを定義するプロセスが効率化されます。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 コールフロー