1	  Control EverythingGil ClarkSystem ArchitectIntuit, Inc.Payments Division
2	  Topics / Agenda•  DevOps Automation•  Not much Build Automation (lots of otherpresentations around this)•  Not Test Au...
3	  But first…•  What are we supposed to control?•  Source code? – Sure, we all know that•  But there is so much more•  Be...
4	  Automate Everything!Even	  has	  its	  own	  T-­‐Shirt	  
5	  What is “Automate”?1)	  Start	  with	  some	  content	  that	  represents	  “Everything”	  OS	  PVM	  Code	  Data	  OS...
6	  What is “Everything”OS	  (sudoers,	  IPtables,	  services,	  crontab,	  etc.,	  etc.)	  PVM	  (heap	  space,	  treads,...
7	  “Get it to the platform” – Phase IDeployment Packaging Automation1.  Sync	  from	  P4	  •  App	  Code	  •  App	  Config...
8	  “Run the compute platform” – Phase IIEnvironment Orchestration Automation1.  Sync	  from	  P4	  •  AutomaQon	  Code	  ...
9	  Another View of the SystemApplication Code andConfiguration,Schema, ScriptsMiddleware andConfiguration(Jboss, Tomcat,A...
10	  So, now we have EverythingOS	  (sudoers,	  IPtables,	  services,	  crontab,	  etc.,	  etc.)	  PVM	  (heap	  space,	  ...
11	  Control Everything!Intuit	  uses	  Perforce	  to	  control	  all	  this	  code	  ConfiguraQon	  as	  Code	  Infrastruc...
12	  Example Branching Model – Overall SystemDevOps	  Code	  (ConfiguraQon	  and	  OrchestraQon)	  ApplicaQon	  A	  Applica...
13	  DevOps Specific BranchingDatacenter	  A	  Environment	  A1	  Overall	  System	  OrchestraQon	  Jobs	  and	  Scripts	 ...
14	  Gluing Everything TogetherDatacenter	  Config	  Environment	  Config	  ApplicaQon	  Config	   Puppet	  Rundeck	  	  	  	...
15	  Example Process Steps// Start with overall systems state;for each datacenter {select datacenter specific content, sav...
16	  ClosingContact Info:gil_clark@intuit.com
Upcoming SlideShare
Loading in …5
×

[Intuit] Control Everything

6,216 views

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,216
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[Intuit] Control Everything

  1. 1. 1  Control EverythingGil ClarkSystem ArchitectIntuit, Inc.Payments Division
  2. 2. 2  Topics / Agenda•  DevOps Automation•  Not much Build Automation (lots of otherpresentations around this)•  Not Test Automation (whole other world)
  3. 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. 4  Automate Everything!Even  has  its  own  T-­‐Shirt  
  5. 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)  Configure  and  Run  the  Compute  Pla1orm  
  6. 6. 6  What is “Everything”OS  (sudoers,  IPtables,  services,  crontab,  etc.,  etc.)  PVM  (heap  space,  treads,  class  paths,  etc.,  etc.)  Source  Code  (preOy  obvious)  Code  Config  (properQes  files,  class  paths,  libraries,  etc.,  etc.)  Data  (schema,  seed  data,  config  data,  etc.,  etc.)  But  this  is  not  complete,  we  have  all  the  automaQon  “code”  as  well  –  what  is  that?  
  7. 7. 7  “Get it to the platform” – Phase IDeployment Packaging Automation1.  Sync  from  P4  •  App  Code  •  App  Config  2.  Build  libraries  è  jar,  war,  etc.  3.  Build  packages  è  zip,  rpm,  etc.  •  Including  App  Config  4.  Publish  packages  è file  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. 8  “Run the compute platform” – Phase IIEnvironment Orchestration Automation1.  Sync  from  P4  •  AutomaQon  Code  •  Host  Env  Config  2.  Build  packages  è  zip,  rpm,  etc.  •  Env  specific  App  config  •  Host  Env  config  3.  Publish  packages  èfile  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. 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  classified  by  role  which  determines  the  content  chosen  by  the  automaQon    ApplicaQon  Stack  
  10. 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  Config  (properQes  files,  class  paths,  libraries,  etc.,  etc.)  Cloud  Config  (VM  templates,  ACL  config,  VPC  config,  CloudFormaQon  scripts,  etc.,  etc.)  Data  (schema,  seed  data,  config  data,  etc.,  etc.)  AutomaQon  ConfguraQon  (job  definiQons,  recipies)  
  11. 11. 11  Control Everything!Intuit  uses  Perforce  to  control  all  this  code  ConfiguraQon  as  Code  Infrastructure  as  Code  
  12. 12. 12  Example Branching Model – Overall SystemDevOps  Code  (ConfiguraQon  and  OrchestraQon)  ApplicaQon  A  ApplicaQon  B  Code  Build  and  Package  Config  Code  Build  and  Package  Config  Datacenter  A  Environment  A1  Environment  A2  Datacenter  B  Environment  B1  Environment  B2  
  13. 13. 13  DevOps Specific BranchingDatacenter  A  Environment  A1  Overall  System  OrchestraQon  Jobs  and  Scripts  ConfiguraQon  Recipes  System  properQes  config  OrchestraQon  Jobs  and  Scripts  ConfiguraQon  Recipes  System  properQes  config  Environment  A2  Datacenter  B  There  are  different  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. 14  Gluing Everything TogetherDatacenter  Config  Environment  Config  ApplicaQon  Config   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. 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. 16  ClosingContact Info:gil_clark@intuit.com

×