Applications in the Cloud are reliable, and in some cases even cheaper than on-premises, but we all have made a lot of mistakes when started with AWS.
Cost Optimization
First and one of the most important tips to keep in mind:
- Monitor your AWS costs by setting billing alerts & automate everything
CloudFormation template
---
AWSTemplateFormatVersion: "2010-09-09"
Description: "Simple budget example"
Parameters:
Email:
Type: String
Default: email@example.com
Description: Please enter the email address to which budget notifications should be addressed.
Resources:
BasicBudget:
Type: "AWS::Budgets::Budget"
Properties:
Budget:
BudgetLimit:
Amount: 10
Unit: USD
TimeUnit: MONTHLY
BudgetType: COST
NotificationsWithSubscribers:
- Notification:
NotificationType: ACTUAL
ComparisonOperator: GREATER_THAN
Threshold: 99
Subscribers:
- SubscriptionType: EMAIL
Address: !Ref Email
- Notification:
NotificationType: ACTUAL
ComparisonOperator: GREATER_THAN
Threshold: 80
Subscribers:
- SubscriptionType: EMAIL
Address: !Ref Email
Outputs:
BudgetId:
Value: !Ref BasicBudget
- Tag everything
Performance Efficiency
- Use Serverless Architectures as much as possible
- Store no application state
- Log useful information and enable traceability
Reliability
- Scale-out is better in most of the cases
Security
- Create an IAM user for your AWS account.
- Enable MFA in all your AWS users
- Grant roles to EC2, applications should not have AIM accounts
- Assign privileges to groups and not directly to the users
Operational Excellence
- Leverage Infrastructure as Code: Terraform, CDK or even CloudFormation
- Make things easy to rollback