Overview
The Tinkerer pattern targets experimentation and learning while staying within AWS free tier limits. It runs ECS on a single EC2 instance with direct access (no Application Load Balancer), keeping costs as low as possible.What’s Included
- ECS on EC2 (t4g.micro instance)
- Direct access (no Application Load Balancer)
- RDS Instance database (t4g.micro)
- Basic networking setup
Architecture
Generated Infrastructure
Free Tier Limits
| Service | Free Tier Allowance | Tinkerer Usage |
|---|---|---|
| EC2 | 750 hrs/month t4g.micro | 720 hrs (24/7) |
| RDS | 750 hrs/month t4g.micro | 720 hrs (24/7) |
| EBS | 30 GB storage | ~8 GB |
| Data Transfer | 100 GB/month | Varies |
Specifications
Compute (ECS on EC2)
- Instance type: t4g.micro (ARM-based, free tier eligible)
- Memory: 400 MiB allocated to the container
- Access: Direct port mapping (no Application Load Balancer)
- Auto-scaling: Disabled (single instance)
- Availability: 2 AZ
Database (RDS Instance)
- Instance: t4g.micro
- Engine: PostgreSQL 17.5
- Storage: 20 GB gp2 (free tier max)
- Backup: 1-day retention
- Multi-AZ: Not available
Networking
- VPC: Default configuration
- Subnets: Public and private
- NAT: None (public subnets only)
- Security groups: Basic rules
Cost Breakdown
Monthly cost: $0 (within free tier) Potential charges if exceeding limits:- Extra EC2 hours: ~$0.0084/hour (t4g.micro)
- Extra RDS hours: ~$0.016/hour
- Data transfer over 100 GB: $0.09/GB
- EBS storage over 30 GB: $0.10/GB/month
Use Cases
Perfect for:- Learning AWS and Fjall
- Personal projects
- Proof of concepts
- Development environments
- Hackathon projects
- Portfolio applications
- Production workloads
- High-traffic applications
- Multi-AZ requirements
- Large databases
- CPU-intensive tasks
Customisation Options
Environment Variables
Adding Lambda Functions
Lambda has a free tier of 1M requests per month:Monitoring Your Usage
CloudWatch Dashboard
Monitor free tier usage:- EC2 instance hours
- RDS instance hours
- Data transfer
- Storage usage
Scaling Beyond Free Tier
When ready to scale:Option 1: Upgrade in Place
Option 2: Create New App
Development Tips
Local Development
Use Docker Compose to mirror the setup locally:Resource Constraints
The t4g.micro instance has limited resources:- Develop locally
- Deploy only tested code
- Use minimal dependencies
- Optimise container size
Common Issues
Out of Memory
The container is limited to 400 MiB:- Reduce container memory usage
- Optimise application code
- Remove unused dependencies
- Use lightweight base images
Database Connection Limits
t4g.micro has limited connections:- Use connection pooling
- Close idle connections
- Implement retry logic
Best Practices
- Monitor usage daily during development
- Set billing alerts at 5, $10
- Stop resources when not in use
- Use Lambda for sporadic workloads
- Optimise images to reduce storage
- Clean up unused resources
Breaking Out the Pattern
When you are ready to move beyond the Tinkerer defaults, you can decompose the pattern into individual factory calls for full control over each component. See the individual factory documentation for details:- Compute Factory - Customise ECS or Lambda settings
- Database Factory - Configure RDS parameters
- Storage Factory - Manage S3 buckets
- Network Factory - Custom VPC and networking
Next Steps
Deploy your application
Ship the Tinkerer stack to AWS.
Add resources
Extend the application with databases, compute, storage, and more.
Upgrade to Lightweight
Move to Fargate when you outgrow the single instance.
Upgrade to Standard
Run a production-ready, multi-AZ stack.