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

222 lines
6.5 KiB
Markdown

# 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