Unlocked Nov 2013: Main Slide Pack

6,518 views

Published on

Main slide deck from Unlocked: the hybrid cloud in London on 19 November 2013. Includes commercetools case study and Technical Track slides

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

  • Be the first to like this

No Downloads
Views
Total views
6,518
On SlideShare
0
From Embeds
0
Number of Embeds
3,213
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Unlocked Nov 2013: Main Slide Pack

  1. 1. Unlocked London America square conference centre 19 November 2013
  2. 2. welcome to unlocked garry prior rackspace academy
  3. 3. Logistics #RSUnlocked
  4. 4. @rackspaceUK #RSUnlocked #RSUnlocked
  5. 5. #RSUnlocked
  6. 6. why unlocked? #RSUnlocked
  7. 7. morning Everything is Code Accelerate DevOps Pillars of Cloudiness Case Studies TMP Worldwide Commercetools #RSUnlocked
  8. 8. afternoon Tech Track in Ludgate Room ! Cloud Principles Track in Fleet Room #RSUnlocked
  9. 9. why hybrid cloud? garry prior rackspace academy
  10. 10. NIST SAys... #RSUnlocked
  11. 11. NIST says... #RSUnlocked
  12. 12. NIST says... #RSUnlocked
  13. 13. #RSUnlocked
  14. 14. 3 MYTHS OF PUBLIC CLOUD • All apps run best in the public cloud • It’s always cheaper to run on public cloud • Everything can be automated in a public cloud/(So who needs support?) #RSUnlocked
  15. 15. HYBRID CLOUD: THE RIGHT FIT FOR ENTERPRISE PUBLIC CLOUD PRIVATE CLOUD DEDICATED SERVERS Security Security Performance Performance Reliability Reliability Per Unit Cost Per Unit Cost Utility Billing Utility Billing Speed Speed MUTLI-TENANT & GENERALIZED SINGLE TENANT & SPECIALIZED Lowest Total Cost? Depends on your needs. #RSUnlocked
  16. 16. The changing priorities of IT 59% DELIVER APPS FASTER 48% BETTER ALIGN WITH BUSINESS 44% EXPAND USE OF AGILE INCREASE INNOVATION 38% http://www.serena.com/index.php/en/solutions/app-dev-delivery/infographic-application-development-priorities-2013/ #RSUnlocked
  17. 17. DEVELOPERS RULE
  18. 18. tools documentation apis #RSUnlocked
  19. 19. #RSUnlocked
  20. 20. #RSUnlocked
  21. 21. KEY TAKEAWAYS • Hybrid Cloud is the right fit • Hybrid Cloud gives Developers the most power and freedom • Developers with power drive innovation #RSUnlocked
  22. 22. everything as code Marc Cluet Advisory Services
  23. 23. WHAT IS devops? #RSUnlocked
  24. 24. Culture & Work Methodology Set of tools Deployment strategy Way of measuring *everything* Automate all the things #RSUnlocked
  25. 25. What Does DevOps Enable? #RSUnlocked
  26. 26. Tooling #RSUnlocked
  27. 27. #RSUnlocked
  28. 28. Gerrit #RSUnlocked
  29. 29. #RSUnlocked
  30. 30. Server Deployment Strategies #RSUnlocked
  31. 31. #RSUnlocked
  32. 32. #RSUnlocked
  33. 33. Node web01 #RSUnlocked
  34. 34. Role web02 #RSUnlocked web01
  35. 35. Role web02 #RSUnlocked web01
  36. 36. Cookbooks Chef Server Attributes web01 web02 db01 Environment #RSUnlocked
  37. 37. Cookbooks Workstation #RSUnlocked
  38. 38. Cookbooks Chef Server knife Workstation #RSUnlocked
  39. 39. Cookbooks Chef Server HTTPS knife Nodes (chef-client) Workstation #RSUnlocked
  40. 40. CHEF TOOLS Test Kitchen berkshelf Vagrant #RSUnlocked foodcritic
  41. 41. RECIPE ! ! template  "/etc/margarine/logging.ini"  do      source  "logging.erb"      mode  0600      owner  "root"      group  "root"   end   ! artifact_deploy  "margarine"  do      version  "1.0.0-­‐alpha"      artifact_location  "https://github.com/raxsavvy/margarine/archive/ 1.0.0_alpha.tar.gz"      deploy_to  "/srv/www/margarine"      owner  "root"      group  "root"      action  :deploy   end   #RSUnlocked
  42. 42. RECIPE ! ! template  "/etc/margarine/logging.ini"  do      source  "logging.erb"      mode  0600      owner  "root"      group  "root"   end   ! artifact_deploy  "margarine"  do      version  "1.0.0-­‐alpha"      artifact_location  "https://github.com/raxsavvy/margarine/archive/ 1.0.0_alpha.tar.gz"      deploy_to  "/srv/www/margarine"      owner  "root"      group  "root"      action  :deploy   end   #RSUnlocked
  43. 43. RECIPE ! ! template  "/etc/margarine/logging.ini"  do      source  "logging.erb"      mode  0600      owner  "root"      group  "root"   end   ! artifact_deploy  "margarine"  do      version  "1.0.0-­‐alpha"      artifact_location  "https://github.com/raxsavvy/margarine/archive/ 1.0.0_alpha.tar.gz"      deploy_to  "/srv/www/margarine"      owner  "root"      group  "root"      action  :deploy   end   #RSUnlocked
  44. 44. #RSUnlocked
  45. 45. Node web01 #RSUnlocked
  46. 46. Class web02 #RSUnlocked web01
  47. 47. Class web02 #RSUnlocked web01
  48. 48. Manifests Puppet Master Facts web01 web02 db01 Environment #RSUnlocked
  49. 49. Manifests #RSUnlocked
  50. 50. Manifests Puppet Master #RSUnlocked
  51. 51. Manifests Puppet Master Puppet CA #RSUnlocked
  52. 52. Manifests Puppet Master Puppet CA #RSUnlocked HTTPS Agents
  53. 53. PUPPET TOOLS Test Kitchen - soon librarian-puppet Vagrant #RSUnlocked puppet-lint
  54. 54. Manifest    file  {  "/etc/init/spread.conf":          ensure  =>  present,          content  =>  template("${module_name}/spread/spread.conf.erb"),          owner  =>  root,          group  =>  root,          mode  =>  644,      }   !    service  {  "spread":          require  =>  [              File["/etc/init/spread.conf"],              Class["margarine::common"],              ],          enable  =>  true,          ensure  =>  running,      } #RSUnlocked
  55. 55. Manifest    file  {  "/etc/init/spread.conf":          ensure  =>  present,          content  =>  template("${module_name}/spread/spread.conf.erb"),          owner  =>  root,          group  =>  root,          mode  =>  644,      }   !    service  {  "spread":          require  =>  [              File["/etc/init/spread.conf"],              Class["margarine::common"],              ],          enable  =>  true,          ensure  =>  running,      } #RSUnlocked
  56. 56. Manifest    file  {  "/etc/init/spread.conf":          ensure  =>  present,          content  =>  template("${module_name}/spread/spread.conf.erb"),          owner  =>  root,          group  =>  root,          mode  =>  644,      }   !    service  {  "spread":          require  =>  [              File["/etc/init/spread.conf"],              Class["margarine::common"],              ],          enable  =>  true,          ensure  =>  running,      } #RSUnlocked
  57. 57. Which do I Use? #RSUnlocked
  58. 58. #RSUnlocked
  59. 59. Minion web01 #RSUnlocked
  60. 60. Role web02 #RSUnlocked web01
  61. 61. Role web02 #RSUnlocked web01
  62. 62. States Salt Master Grains web01 web02 db01 Environment #RSUnlocked
  63. 63. States #RSUnlocked
  64. 64. States Master #RSUnlocked
  65. 65. States Master Minions #RSUnlocked
  66. 66. STATE apache:      pkg:          -­‐  installed      service:          -­‐  running          -­‐  watch:              -­‐  pkg:  apache              -­‐  file:  /etc/httpd/conf/httpd.conf              -­‐  user:  apache     #RSUnlocked
  67. 67. STATE apache:      pkg:          -­‐  installed      service:          -­‐  running          -­‐  watch:              -­‐  pkg:  apache              -­‐  file:  /etc/httpd/conf/httpd.conf              -­‐  user:  apache     #RSUnlocked
  68. 68. STATE apache:      pkg:          -­‐  installed      service:          -­‐  running          -­‐  watch:              -­‐  pkg:  apache              -­‐  file:  /etc/httpd/conf/httpd.conf              -­‐  user:  apache     #RSUnlocked
  69. 69. #RSUnlocked
  70. 70. Node web01 #RSUnlocked
  71. 71. Role web02 #RSUnlocked web01
  72. 72. Role web02 #RSUnlocked web01
  73. 73. Playbooks Facts web01 web02 db01 Environment #RSUnlocked
  74. 74. Playbooks #RSUnlocked
  75. 75. Playbooks SSH Hosts #RSUnlocked
  76. 76. PLAY -­‐-­‐-­‐   -­‐  hosts:  webservers      vars:          http_port:  80          max_clients:  200      user:  root      tasks:      -­‐  name:  ensure  apache  is  at  the  latest  version          yum:  pkg=httpd  state=latest      -­‐  name:  write  the  apache  config  file          template:  src=/srv/httpd.j2  dest=/etc/httpd.conf          notify:          -­‐  restart  apache      -­‐  name:  ensure  apache  is  running          service:  name=httpd  state=started #RSUnlocked
  77. 77. PLAY -­‐-­‐-­‐   -­‐  hosts:  webservers      vars:          http_port:  80          max_clients:  200      user:  root      tasks:      -­‐  name:  ensure  apache  is  at  the  latest  version          yum:  pkg=httpd  state=latest      -­‐  name:  write  the  apache  config  file          template:  src=/srv/httpd.j2  dest=/etc/httpd.conf          notify:          -­‐  restart  apache      -­‐  name:  ensure  apache  is  running          service:  name=httpd  state=started #RSUnlocked
  78. 78. PLAY -­‐-­‐-­‐   -­‐  hosts:  webservers      vars:          http_port:  80          max_clients:  200      user:  root      tasks:      -­‐  name:  ensure  apache  is  at  the  latest  version          yum:  pkg=httpd  state=latest      -­‐  name:  write  the  apache  config  file          template:  src=/srv/httpd.j2  dest=/etc/httpd.conf          notify:          -­‐  restart  apache      -­‐  name:  ensure  apache  is  running          service:  name=httpd  state=started #RSUnlocked
  79. 79. PLAY -­‐-­‐-­‐   -­‐  hosts:  webservers      vars:          http_port:  80          max_clients:  200      user:  root      tasks:      -­‐  name:  ensure  apache  is  at  the  latest  version          yum:  pkg=httpd  state=latest      -­‐  name:  write  the  apache  config  file          template:  src=/srv/httpd.j2  dest=/etc/httpd.conf          notify:          -­‐  restart  apache      -­‐  name:  ensure  apache  is  running          service:  name=httpd  state=started #RSUnlocked
  80. 80. PLAY -­‐-­‐-­‐   -­‐  hosts:  webservers      vars:          http_port:  80          max_clients:  200      user:  root      tasks:      -­‐  name:  ensure  apache  is  at  the  latest  version          yum:  pkg=httpd  state=latest      -­‐  name:  write  the  apache  config  file          template:  src=/srv/httpd.j2  dest=/etc/httpd.conf          notify:          -­‐  restart  apache      -­‐  name:  ensure  apache  is  running          service:  name=httpd  state=started #RSUnlocked
  81. 81. Which do I Use? #RSUnlocked
  82. 82. Measure All the Things #RSUnlocked
  83. 83. CollectD + GRAPHITE #RSUnlocked
  84. 84. CollectD + GRAPHITE #RSUnlocked
  85. 85. CollectD + GRAPHITE #RSUnlocked
  86. 86. NAGIOS NRPE NAGIOS NSClient++ Windows SNMP #RSUnlocked Linux Networking
  87. 87. NAGIOS PluGINS #RSUnlocked
  88. 88. • Application Monitoring Service ! • Agent-based ! • Plugins #RSUnlocked
  89. 89. Automate All the Things #RSUnlocked
  90. 90. #RSUnlocked
  91. 91. #RSUnlocked
  92. 92. SOME OF THESE != SUCCESS #RSUnlocked
  93. 93. NO CULTURE BUY-IN = NO DEVOPS #RSUnlocked
  94. 94. accelerate Devops Marc Cluet Advisory Services
  95. 95. SOFTWARE DEVELOPMENT LIFECYCLE #RSUnlocked
  96. 96. DEV + OPS + QA WORKING together = DEVOPS #RSUnlocked
  97. 97. How to Embrace DevOps SCRUM #RSUnlocked KANBAN AGILE
  98. 98. SCRUM #RSUnlocked
  99. 99. SCRUM roles Scrum Master Product Owner #RSUnlocked Developers
  100. 100. 1. Design 5. QA 2. Build 4. Release Product Backlog #RSUnlocked Sprint Backlog 3. Configure Sprint Working increment of the software
  101. 101. 1. Design 5. QA 4. Release #RSUnlocked 2. Build 3. Configure
  102. 102. SCRUM: KEY MEETINGS Backlog Grooming Sprint Planning Daily Scrum Sprint Review Sprint Retrospective #RSUnlocked
  103. 103. kanban #RSUnlocked
  104. 104. kanban practices Visualise Limit Work in Progress Manage Flow Make Policies Explicit Implement Feedback Loop Improve Collaboratively #RSUnlocked
  105. 105. KANBAN Features Feature A Feature B Feature C #RSUnlocked In Progress Blocked Tabled Testing Complete
  106. 106. KANBAN Features Feature D Feature E Feature C #RSUnlocked In Progress Feature A Feature B Blocked Tabled Testing Complete
  107. 107. KANBAN Features Feature D Feature F Feature G #RSUnlocked In Progress Feature C Feature E Blocked Feature B Tabled Testing Feature A Complete
  108. 108. KANBAN Features In Progress Blocked Tabled Testing Feature C Complete Feature A Feature H Feature E Feature I Feature D Feature F Feature G #RSUnlocked Feature B
  109. 109. KANBAN Features In Progress Blocked Tabled Testing Feature C Feature H Complete Feature A Feature B Feature I Feature D Feature E Feature F Feature G #RSUnlocked
  110. 110. AGILE development #RSUnlocked
  111. 111. AGILE DEVELOPMENT ! ! Individuals and Interactions vs. Process and Tools #RSUnlocked
  112. 112. ! AGILE DEVELOPMENT ! Working Software vs. Comprehensive Documentation #RSUnlocked
  113. 113. ! AGILE DEVELOPMENT ! Customer Collaboration vs. Contract Negotiation #RSUnlocked
  114. 114. AGILE DEVELOPMENT ! ! Responding to Change vs. Implementing a Plan #RSUnlocked
  115. 115. AGILE TEAMS Traditional Teams AGILE Teams Project Manager / Team Lead Self-Organized Servant Leader / Facilitator #RSUnlocked
  116. 116. agile needs ci #RSUnlocked
  117. 117. agile needs ci #RSUnlocked
  118. 118. Same Problems #RSUnlocked
  119. 119. What Version is in Production? #RSUnlocked
  120. 120. Issues are Found, Fixed & Redeployed Quickly #RSUnlocked
  121. 121. Test as You Develop #RSUnlocked
  122. 122. Same Best Practices #RSUnlocked
  123. 123. Tag, branch & release code that defines your infrastructure #RSUnlocked
  124. 124. Coverage Lifecycle Over Various Stages #RSUnlocked
  125. 125. Continuously Test As You Make Changes #RSUnlocked
  126. 126. break
  127. 127. case study: tmp worldwide philip wright head of technology tmp worldwide
  128. 128. case study: commercetools dirk hoerig ceo commercetools
  129. 129. ! Using Rackspace to scale ! Dirk Hoerig @commercetools @sphereio dirk@commercetools.com
  130. 130. eCommerce Platform-as-a-Service ! ‣ Flexible eCommerce Framework for Web, Mobile, App and Store ‣ Cloud service with auto-scaling capabilities for demanding brands and merchants ‣ Made for international roll-outs ‣ Low TCO because of real Cloud and SaaS architecture ‣ SLA with 99,8% availability guaranteed
  131. 131. 2007 What we did first: ‣ Multi-Tenant architecture ‣ Extension layer for custom code, objects, integrations, ... ‣ Housing partner for core services (Internet, power supply, security, space, ...) ‣ Purchased hardware directly Image Source: http://godandlove.files.wordpress.com/2012/04/desert-002.jpg
  132. 132. This is how we started: First Blade Installation
  133. 133. 2009 Image Source: http://upload.wikimedia.org/wikipedia/commons/3/3c/Podium_finishers_of_2010_Malaysian_GP.jpg
  134. 134. 2009
  135. 135. Step 1: Hybrid Cloud on Rackspace LB A1 A2 A3 Cloud DB Dedicated DB An
  136. 136. 201 0 Image Source: http://www.autonews-123.de/wp-content/uploads/2011/03/Sebastian-Vettel-Formel-1-Weltmeister-2010.jpg
  137. 137. Step 2: Automation with DevOps Process LB A1 A2 A3 A4 A5 Cloud DB Dedicated DB ... An
  138. 138. Step 3: Auto-Scale through Rackspace API LB ‣ One command line call to setup new nodes ‣ Full automated node bootstrapping and provisioning ‣ Adding new nodes to F5 Loadbalancer in less than 15 Minutes A1 A2 A3 A4 A5 Cloud DB Dedicated DB ... An
  139. 139. 201 2 99,98% Image Source: http://awesome-desktop.com/wp-content/uploads/2012/10/Felix-Baumgartner-Before-Jump-1920x1080-HD-Wallpaper.jpg
  140. 140. Can‘t we deliver a platform for eCommerce that anybody could use anywhere on any scale?
  141. 141. One single-source platform to serve modern eCommerce applications.
  142. 142. SPHERE API
  143. 143. JAVA NODE.JS IOS RUBY PHP ANDROID SPHERE API
  144. 144. T O DA Y
  145. 145. 100% Cloud ‣ Designed for failure ‣ Agile (200+ releases in 2013) ‣ Automation ‣ High (very high!) scalability ‣ Fast (<100ms)
  146. 146. OLD NEW ! ! ‣ Java ‣ Scala ‣ JSF ‣ REST/JSON ‣ MySQL ‣ Mongo ‣ Solr ‣ ElasticSearch ‣ System admin ‣ DevOps ‣ Not agile ‣ Agile
  147. 147. App Stack Ops Stack ! ! ‣ Scala ‣ Puppet ‣ Play 2 ‣ mcollective ‣ REST/JSON ‣ hiera/raziel ‣ Netty ‣ Ruby ‣ Mongo ‣ nginx ‣ ElasticSearch ‣ Rackspace
  148. 148. Today’s challenge... Code Server
  149. 149. ... in practice ! several environment different languages LB config LB fast iterations sensitive data multiple server
  150. 150. The big picture ! ! Jenkins: Compile Unit Tests Package as DEB ! ! ! ! ! GitHub UserVoice JIRA PagerDuty ... Mission Control DEB repo robut CI robut Staging robut Production
  151. 151. System automation - bootstrapping ! ‣ Bootstrap cloud servers
 with http://fog.io ‣ We build nodes from scratch based on standard distro image
  152. 152. Demystify ! Build tooling that brings complexity of systems down to: ‣ single command line ‣ click of a button
  153. 153. Demystify deployments ! ! ! ! HipChat with ! robut = mco client ! !
  154. 154. BTW: Quality matters ! ‣ All this works only when you can trust your security net = automated tests ! ‣ No explicit QA team, task whatever ‣ Let all involve in the story we use cucumber for specifying ‣ web ‣ command line ‣ API
  155. 155. What to take home ! ‣Using Cloud requires ‣product design and architecture ‣organisational change (agile) ‣infrastructure ‣support ‣If we can do it, you can, too ‣Do it for your business, not because of it! Data Source: eMarketer 2012
  156. 156. ! SPHERE.IO - from developers to developers! Try: admin.sphere.io ‣ 60 days for free! ‣ no cc required ‣ #holyshit
  157. 157. Questions? www.commercetools.com http://support.sphere.io @commercetools @sphereio
  158. 158. 5 PILLARS OF CLOUDINESS SRI RAJAN advisory services
  159. 159. FIVE PILLARS OF CLOUDINESS Parallel Horizontal Agile Secure 1 #RSUnlocked Modular 2 3 4 5
  160. 160. Pillar #1: Parallel
  161. 161. 1M Records Node Answer #RSUnlocked
  162. 162. 1M Records Node Node Node Node 1-250K 251K-500K 501K-750K 751K-1M Answer #RSUnlocked
  163. 163. 1M Records Node Node Node Node 1-250K 251K-500K 501K-750K 751K-1M Answer #RSUnlocked
  164. 164. 1M records 1M records Node #RSUnlocked Node Node Node 1-250K Answer Node 251K-500K 501K-750K 750K-1M Answer
  165. 165. #RSUnlocked
  166. 166. #RSUnlocked
  167. 167. pillar #2: modular

×