AWS OpsWorks features an integrated management experience for the entire application lifecycle including resource provisioning, configuration management, application deployment, monitoring, and access control. It will work with applications of any level of complexity and is independent of any particular architectural pattern.
- Configure instances
- Automate provisioning
- Deploy app
How it fits in the AWS ecosystem:
tl; dr - like EngineYard but less opaque **
Similar surface area to EngineYard. For the developer with EY experience, there are potential pros and cons of switching a production application to OW.
Pros
- EY + more flexibility and control
- Cheaper than EY: roughly $1k/month + %10 ... for same instances + AWS Business-level support
- Additional features like auto-healing and auto-scaling
- More easily virtualizable **
Cons
- More control => more responsibility
- Usage Gotchas? unknown
- Learning curve/How to? (snapshots, security updates, ssh keys, etc)
- Quality of Support? unknown
- Maintenance effort? unknown
Basic App
Multiple layers
Load Balancing
Dashboard
Base Cookbooks
Customize with custom cookbooks and json
Anatomy of a custom cookbook repo
Example custom chef json
{
"deploy": {
"simple-php": {
"application_type": "php",
"document_root": "web",
"scm": {
"scm_type": "git",
"repository": "dev/simple-php"
},
"memcached": {},
"database": {
"host": "10.10.10.20",
"database": "simple-php",
"username": "root",
"password": "correcthorsebatterystaple",
"reconnect": true
}
}
},
"mysql": {
"server_root_password": "correcthorsebatterystaple",
"tunable": {"innodb_buffer_pool_size": "256M"}
},
"opsworks": {
"layers": {
"php-app": {
"instances": {
"php-app1": {"private-ip": "10.10.10.10"}
}
},
"db-master": {
"instances": {
"db-master1": {"private-ip": "10.10.10.20"}
}
}
}
},
"opsworks_custom_cookbooks": {
"enabled": true,
"scm": {
"repository": "ops/cookbooks"
}
}
}
Time-based Scaling
Load-based Scaling
Monitoring
Security and Permissions via IAM
Create and configure lightweight, reproducible, and portable development environments
- Virtualize linux environment on Mac (any) host
- OpsWorks tools and Chef recipes baked into the image
- Use cases:
- Development
- Deployment
- Increased Dev-Prod parity
- Increased Dev-Dev parity
- Improved agility
$ vagrant up
$ vagrant ssh
$ vagrant provision
or$ vagrant reload --provision
$ vagrant halt
Within guest:
- rails app repo synced to
/vagrant
for development. - deployment and provisioning to
/srv/www/platform
Vagrant + OpsWorks
- OpsWorks Product Page
- OpsWorks User Guide
- OpsWorks Cookbooks
- OpsWorks Rails Tutorial
- Artsy OpsWorks Intro
- Vagrant Docs
- AWS Instance Price Calculator
** author's opinion