How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013
-
Upload
amazon-web-services -
Category
Technology
-
view
1.773 -
download
0
description
Transcript of How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013
© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
DMG305 - How Intuit Leveraged AWS
OpsWorks as the Engine of Our PaaS
Capen Brinkley and Rick Mendes, Intuit
November 14, 2013
Agenda
• How we got into AWS, and why we’ve decided
to do a PaaS
• Why we chose AWS OpsWorks as our engine
• How we use AWS OpsWorks to build our PaaS
• Q&A
Intuit’s Journey to AWS
Why PaaS?
EC2
CloudFormation
S3
Auto Scaling
Chef
Simple Deploy
Heirloom
Application A Application B
Why AWS OpsWorks?
• Skillset and operational expertise:
• Chef
• AWS services
• Similar operational model
• More controls, compliance, and security than
Elastic Beanstalk could offer
Architecture
Layered
Layers
Intuit Abstraction Layer
AWS OpsWorks
EC2 IAM S3 ELB SQS
Abstraction Layer Benefits
Nomenclature
Intuit AWS OpsWorks
App Stack
Stack Layer
Instance Instance
Build App
Deployment Deployment
Simplicity
Abstraction Layer
• Create app API
• 3 parameters
• All parameters simple
strings
• Users only need to
provide name, app type
and region
AWS OpsWorks
• Create stack API
• 16 parameters
• Parameters mix of simple
strings and elements
• Users need AWS
knowledge to set
parameters
Simplicity – Create Inputs Abstraction Layer
{
"name": "My App",
"app_type": "rails",
"region": "us-west-2"
}
AWS OpsWorks {
"Attributes": {
"string" : "string"
},
"ConfigurationManager": {
"Name": "string",
"Version": "string"
},
"CustomCookbooksSource": {
"Password": "string",
"Revision": "string",
"SshKey": "string",
"Type": "string",
"Url": "string",
"Username": "string"
},
"CustomJson": "string",
"DefaultAvailabilityZone": "string",
"DefaultInstanceProfileArn": "string",
"DefaultOs": "string",
"DefaultRootDeviceType": "string",
"DefaultSshKeyName": "string",
"DefaultSubnetId": "string",
"HostnameTheme": "string",
"Name": "string",
"Region": "string",
"ServiceRoleArn": "string",
"UseCustomCookbooks": "boolean",
"VpcId": "string"
}
Flexibility – Multiple Clients
Behind the Curtain
Continuous Integration
Intuit Package Manager
Intuit Abstraction Layer
Intuit Abstraction Layer
User Vars User, System Vars
Custom JSON
App Instances
App Configuration Variables
Managing Instance Statuses Start/Stop
Intuit Abstraction Layer
Status Request
Info Manager
Transition
Collaborators
App
1
App
2 Dev Group A
(4 users)
Dev Group B (6 users)
QA Group A (2 users)
Technologies
• RESTful APIs
• Ruby on Rails
• AWS SDK Gem
• RDS MySQL
• Opscode Chef
Challenges
• Think differently about Chef code – Things like roles and data bags are not supported yet
• Polling for instance statuses – There are no asynchronous APIs or notifications at this time
• Multi-step deletion of apps – Instances cannot be deleted automatically
Looking Ahead
• Java Support – Should we replace our custom support with AWS OpsWorks
support
• Application Visibility – Access to application logs and application runtimes
• Additional Languages/Frameworks – Expand beyond Ruby and Java
Q & A
Please give us your feedback on this
presentation
As a thank you, we will select prize
winners daily for completed surveys!
DMG305