how intuit leveraged aws opsworks as the engine of our paas (dmg305) | aws re:invent 2013
DESCRIPTION
In this talk, the engineering team behind the Intuit PaaS takes you through the design of our shared PaaS and its integration with AWS OpsWorks. We give an overview of why we decided to build our own PaaS, why we chose OpsWorks as the engine, technical details of the implementation as well as all the challenges in building a shared runtime environment for different applications. Anyone interested in OpsWorks or building a PaaS should attend for key lessons from our journey.TRANSCRIPT
![Page 1: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/1.jpg)
© 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
![Page 2: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/2.jpg)
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
![Page 3: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/3.jpg)
Intuit’s Journey to AWS
![Page 4: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/4.jpg)
Why PaaS?
![Page 5: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/5.jpg)
EC2
CloudFormation
S3
Auto Scaling
Chef
Simple Deploy
Heirloom
![Page 6: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/6.jpg)
Application A Application B
![Page 7: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/7.jpg)
Why AWS OpsWorks?
• Skillset and operational expertise:
• Chef
• AWS services
• Similar operational model
• More controls, compliance, and security than
Elastic Beanstalk could offer
![Page 8: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/8.jpg)
Architecture
![Page 9: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/9.jpg)
Layered
![Page 10: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/10.jpg)
Layers
Intuit Abstraction Layer
AWS OpsWorks
EC2 IAM S3 ELB SQS
![Page 11: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/11.jpg)
Abstraction Layer Benefits
![Page 12: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/12.jpg)
Nomenclature
Intuit AWS OpsWorks
App Stack
Stack Layer
Instance Instance
Build App
Deployment Deployment
![Page 13: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/13.jpg)
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
![Page 14: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/14.jpg)
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"
}
![Page 15: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/15.jpg)
Flexibility – Multiple Clients
![Page 16: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/16.jpg)
Behind the Curtain
![Page 17: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/17.jpg)
Continuous Integration
Intuit Package Manager
Intuit Abstraction Layer
![Page 18: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/18.jpg)
Intuit Abstraction Layer
User Vars User, System Vars
Custom JSON
App Instances
App Configuration Variables
![Page 19: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/19.jpg)
Managing Instance Statuses Start/Stop
Intuit Abstraction Layer
Status Request
Info Manager
Transition
![Page 20: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/20.jpg)
Collaborators
App
1
App
2 Dev Group A
(4 users)
Dev Group B (6 users)
QA Group A (2 users)
![Page 21: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/21.jpg)
Technologies
• RESTful APIs
• Ruby on Rails
• AWS SDK Gem
• RDS MySQL
• Opscode Chef
![Page 22: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/22.jpg)
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
![Page 23: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/23.jpg)
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
![Page 24: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/24.jpg)
![Page 25: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/25.jpg)
Q & A
![Page 26: How Intuit Leveraged AWS OpsWorks as the Engine of Our PaaS (DMG305) | AWS re:Invent 2013](https://reader034.vdocuments.net/reader034/viewer/2022042714/554bd69bb4c9058f6c8b5171/html5/thumbnails/26.jpg)
Please give us your feedback on this
presentation
As a thank you, we will select prize
winners daily for completed surveys!
DMG305