AWS Well-Architected design considerations - Enhanced Document Understanding on AWS

AWS Well-Architected design considerations

This solution was designed with best practices from the AWS Well-Architected Framework which helps customers design and operate reliable, secure, efficient, and cost-effective workloads in the cloud.

This section describes how the design principles and best practices of the Well-Architected Framework were applied when building this solution.

Operational excellence

This section describes how we architected this solution using the principles and best practices of the operational excellence pillar.

  • We built the solution as infrastructure as code using CloudFormation.

  • Lambda functions push custom metrics to CloudWatch and a custom CloudWatch dashboard to monitor the health of the solution.

  • The solution components are modularized, providing the flexibility to choose which components to deploy.

Security

This section describes how we architected this solution using the principles and best practices of the security pillar.

  • The solution encrypts data at-rest and in-transit.

  • All service resources integrate through AWS Identity and Access Management (IAM) roles using the best practice of least-privilege permissions.

  • Policy definitions don’t use AWS managed policies.

  • Each Lambda function has its own role and policy (no shared roles between Lambda functions).

  • CloudFront and AWS WAF protect publicly-exposed endpoints.

Reliability

This section describes how we architected this solution using the principles and best practices of the reliability pillar.

  • We built the solution to use a serverless architecture wherever possible.

  • We built the architecture for on-demand, horizontal scalability, and automatic recovery from underlying infrastructure failure.

  • The architecture includes buffering and throttling requests to not overwhelm underlying endpoints.

  • We orchestrated the workflows AWS Step Functions to state management and retry failures.

  • We configured the dead-letter queue to capture failures and retry failed requests.

Performance efficiency

This section describes how we architected this solution using the principles and best practices of the performance efficiency pillar.

  • The architecture uses DynamoDB, a fully managed serverless NoSQL database with on-demand scaling.

  • The architecture uses Amazon S3 as object storage and to host a website (through CloudFront) to provide low cost and scalability, with 99.999999999% durability.

Cost optimization

This section describes how we architected this solution using the principles and best practices of the cost optimization pillar.

  • We built the solution with a serverless architecture, and customers pay only for what they use.

  • The architecture uses pre-trained models and endpoints from AWS AI services. No dedicated provisioned endpoints for machine learning inferences.

Sustainability

This section describes how we architected this solution using the principles and best practices of the sustainability pillar.

  • The solution’s modular, componentized architecture provides the flexibility to customize resources to provision for individual use cases.

  • The architecture uses serverless compute and storage, which optimizes resource utilization.

  • As a cloud-based solution, this solution benefits from shared resources, networking, power cooling, and physical facilities.