[Intuit] Control Everything

Download [Intuit] Control Everything

Post on 21-May-2015

5.843 views

Category:

Technology

0 download

Embed Size (px)

DESCRIPTION

See how the Intuit Payments Division achieves DevOps automation and continuous delivery in the cloud using Perforce.

TRANSCRIPT

<ul><li> 1. 1 Control EverythingGil ClarkSystem ArchitectIntuit, Inc.Payments Division</li></ul> <p> 2. 2 Topics / Agenda DevOps Automation Not much Build Automation (lots of otherpresentations around this) Not Test Automation (whole other world) 3. 3 But first What are we supposed to control? Source code? Sure, we all know that But there is so much more Because the first DevOps rule is 4. 4 Automate Everything!Even has its own T-Shirt 5. 5 What is Automate?1) Start with some content that represents Everything OS PVM Code Data OS PVM Code OS PVM Code Network 2) Get it to the Compute Pla1orm 3) Congure and Run the Compute Pla1orm 6. 6 What is EverythingOS (sudoers, IPtables, services, crontab, etc., etc.) PVM (heap space, treads, class paths, etc., etc.) Source Code (preOy obvious) Code Cong (properQes les, class paths, libraries, etc., etc.) Data (schema, seed data, cong data, etc., etc.) But this is not complete, we have all the automaQon code as well what is that? 7. 7 Get it to the platform Phase IDeployment Packaging Automation1. Sync from P4 App Code App Cong 2. Build libraries jar, war, etc. 3. Build packages zip, rpm, etc. Including App Cong 4. Publish packages le server, yum, apt Content Packaging File Server HTTP FTP Yum Apt Nexus Jenkins Archive Perforce Release Library Puppet Chef Salt Rundeck Capistrano Fabric Rsync/Rdist Content SynchronizaQon Cloud Management 8. 8 Run the compute platform Phase IIEnvironment Orchestration Automation1. Sync from P4 AutomaQon Code Host Env Cong 2. Build packages zip, rpm, etc. Env specic App cong Host Env cong 3. Publish packages le server, yum, apt File Server HTTP FTP Yum Apt Nexus Jenkins Archive Perforce Release Library Puppet Chef Salt Rundeck Capistrano Fabric Rsync/Rdist Content SynchronizaQon and Process Management Cloud Management Content Packaging 9. 9 Another View of the SystemApplication Code andConfiguration,Schema, ScriptsMiddleware andConfiguration(Jboss, Tomcat,Apache, Mule, Oracle)Operating SystemConfiguration(Linux)Configuration Sync file content Install packages (VM Image Management)Orchestration Push file content Start, stop services CI Server- Host metadata- AutomationCode- ConfigurationContent- ApplicationContent Host machines are classied by role which determines the content chosen by the automaQon ApplicaQon Stack 10. 10 So, now we have EverythingOS (sudoers, IPtables, services, crontab, etc., etc.) PVM (heap space, treads, class paths, etc., etc.) Source Code (preOy obvious) Code Cong (properQes les, class paths, libraries, etc., etc.) Cloud Cong (VM templates, ACL cong, VPC cong, CloudFormaQon scripts, etc., etc.) Data (schema, seed data, cong data, etc., etc.) AutomaQon ConfguraQon (job deniQons, recipies) 11. 11 Control Everything!Intuit uses Perforce to control all this code ConguraQon as Code Infrastructure as Code 12. 12 Example Branching Model Overall SystemDevOps Code (ConguraQon and OrchestraQon) ApplicaQon A ApplicaQon B Code Build and Package Cong Code Build and Package Cong Datacenter A Environment A1 Environment A2 Datacenter B Environment B1 Environment B2 13. 13 DevOps Specific BranchingDatacenter A Environment A1 Overall System OrchestraQon Jobs and Scripts ConguraQon Recipes System properQes cong OrchestraQon Jobs and Scripts ConguraQon Recipes System properQes cong Environment A2 Datacenter B There are dierent techniques for merging this content Treat as modular and compose the content (templates, placeholders, etc.) Treat as monolithic and use branch / merge SCM tools 14. 14 Gluing Everything TogetherDatacenter Cong Environment Cong ApplicaQon Cong Puppet Rundeck Jenkins App 1 App 1 App 1 App 1 App 1 App 2 App 1 App 1 App 3 Jenkins Source Code Release Server (Zip, RPM) ArQfact Server (Nexus) 15. 15 Example Process Steps// Start with overall systems state;for each datacenter {select datacenter specific content, save;}for each environment {select environment specific content, save;}for each application to be deployed {select app specific content;merge content from datacenter, environment, app}move merged content to master control server for the target environment in the target datacenter;populate configuration system content (Puppet manifests and modules);populate orchestration system content (Rundeck jobs);kick configuration system (Puppet kick ala Rundeck);run orchestration jobs (Rundeck);done; 16. 16 ClosingContact Info:gil_clark@intuit.com</p>