BMAD-METHOD/expansion-packs/bmad-java/data/aws-services-guide.md

6.5 KiB

AWS Services Guide for Java Applications

Compute Services

Amazon EC2

  • Use Case: Virtual machines for traditional applications
  • Java Integration: Deploy Java applications on EC2 instances
  • Best Practices: Use Auto Scaling Groups, Elastic Load Balancer
  • Monitoring: CloudWatch metrics and logs
  • Security: Security Groups, IAM roles

AWS Lambda

  • Use Case: Serverless functions for event-driven applications
  • Java Integration: Java 21 runtime support
  • Best Practices: Keep functions stateless, optimize cold starts
  • Monitoring: CloudWatch logs and metrics
  • Security: IAM roles and VPC configuration

Amazon ECS

  • Use Case: Container orchestration for microservices
  • Java Integration: Deploy Java containers
  • Best Practices: Use Fargate for serverless containers
  • Monitoring: CloudWatch container insights
  • Security: Task roles and security groups

Amazon EKS

  • Use Case: Kubernetes cluster management
  • Java Integration: Deploy Java applications on Kubernetes
  • Best Practices: Use managed node groups, implement RBAC
  • Monitoring: CloudWatch container insights
  • Security: Pod security policies, network policies

Database Services

Amazon RDS

  • Use Case: Managed relational databases
  • Java Integration: JDBC drivers for MySQL, PostgreSQL
  • Best Practices: Use Multi-AZ for high availability
  • Monitoring: CloudWatch database metrics
  • Security: Encryption at rest and in transit

Amazon Aurora

  • Use Case: High-performance MySQL/PostgreSQL compatible databases
  • Java Integration: Standard JDBC drivers
  • Best Practices: Use Aurora Serverless for variable workloads
  • Monitoring: CloudWatch performance insights
  • Security: Automated backups, encryption

Amazon DynamoDB

  • Use Case: NoSQL database for scalable applications
  • Java Integration: AWS SDK for Java
  • Best Practices: Use DynamoDB Accelerator (DAX) for caching
  • Monitoring: CloudWatch metrics
  • Security: IAM policies, encryption

Storage Services

Amazon S3

  • Use Case: Object storage for files and data
  • Java Integration: AWS SDK for Java
  • Best Practices: Use lifecycle policies, versioning
  • Monitoring: CloudWatch metrics
  • Security: Bucket policies, encryption

Amazon EBS

  • Use Case: Block storage for EC2 instances
  • Java Integration: File system access
  • Best Practices: Use Provisioned IOPS for high performance
  • Monitoring: CloudWatch metrics
  • Security: Encryption, snapshots

Amazon EFS

  • Use Case: Shared file system for multiple instances
  • Java Integration: NFS mount
  • Best Practices: Use performance mode for high throughput
  • Monitoring: CloudWatch metrics
  • Security: Encryption, access points

Networking Services

Amazon VPC

  • Use Case: Virtual private cloud for network isolation
  • Java Integration: Network configuration
  • Best Practices: Use multiple availability zones
  • Monitoring: VPC Flow Logs
  • Security: Security groups, NACLs

Amazon API Gateway

  • Use Case: API management and routing
  • Java Integration: REST API endpoints
  • Best Practices: Use caching, throttling
  • Monitoring: CloudWatch metrics
  • Security: API keys, IAM authorization

Application Load Balancer

  • Use Case: Load balancing for web applications
  • Java Integration: HTTP/HTTPS load balancing
  • Best Practices: Use health checks, SSL termination
  • Monitoring: CloudWatch metrics
  • Security: Security groups, SSL certificates

Security Services

AWS IAM

  • Use Case: Identity and access management
  • Java Integration: Assume roles, temporary credentials
  • Best Practices: Use least privilege principle
  • Monitoring: CloudTrail logs
  • Security: Multi-factor authentication

AWS Secrets Manager

  • Use Case: Secrets and credential management
  • Java Integration: AWS SDK for Java
  • Best Practices: Rotate secrets automatically
  • Monitoring: CloudWatch metrics
  • Security: Encryption, access logging

AWS KMS

  • Use Case: Key management for encryption
  • Java Integration: AWS SDK for Java
  • Best Practices: Use customer managed keys
  • Monitoring: CloudWatch metrics
  • Security: Key rotation, access policies

Monitoring and Logging

Amazon CloudWatch

  • Use Case: Monitoring and observability
  • Java Integration: Custom metrics, logs
  • Best Practices: Use custom metrics, alarms
  • Monitoring: CloudWatch dashboards
  • Security: Log encryption, access control

AWS X-Ray

  • Use Case: Distributed tracing
  • Java Integration: AWS X-Ray SDK
  • Best Practices: Trace all service calls
  • Monitoring: X-Ray console
  • Security: Trace data encryption

Amazon CloudTrail

  • Use Case: API call logging and auditing
  • Java Integration: AWS SDK calls logged
  • Best Practices: Enable all regions
  • Monitoring: CloudTrail insights
  • Security: Log file validation

Development and Deployment

AWS CodeBuild

  • Use Case: Build and test Java applications
  • Java Integration: Maven/Gradle builds
  • Best Practices: Use buildspec.yml, caching
  • Monitoring: CloudWatch logs
  • Security: IAM roles, VPC configuration

AWS CodePipeline

  • Use Case: CI/CD pipeline automation
  • Java Integration: Maven builds, deployments
  • Best Practices: Use multiple stages, approvals
  • Monitoring: Pipeline execution history
  • Security: IAM roles, encryption

AWS CodeDeploy

  • Use Case: Application deployment automation
  • Java Integration: Blue/green deployments
  • Best Practices: Use deployment groups
  • Monitoring: Deployment history
  • Security: IAM roles, encryption

Best Practices for Java Applications

Performance Optimization

  • Use connection pooling for databases
  • Implement caching strategies
  • Optimize JVM settings for AWS
  • Use AWS services for heavy lifting

Security Best Practices

  • Use IAM roles instead of access keys
  • Encrypt data at rest and in transit
  • Implement proper authentication and authorization
  • Use AWS security services

Cost Optimization

  • Use reserved instances for predictable workloads
  • Implement auto-scaling
  • Use spot instances for non-critical workloads
  • Monitor and optimize resource usage

Monitoring and Observability

  • Implement comprehensive logging
  • Use CloudWatch for monitoring
  • Implement distributed tracing
  • Set up alerts and notifications