Thursday, November 17, 2011

Cloud-Powered Continuous Integration and Deployment

The speaker comes from Amazon and wants to give us advice on Continuous Integration (CI) and Continuous Delivery (CD) - in the cloud. In the end, I only participated in the first half of his presentation that contained CI basic stuff. When it would have been interesting, the speaker started to be really Amazon EC2 centric... not moch to retain from this session, maybe except the Poka yo-ke technique (see below).

Presentation slides here.

At amazon, the Customer is the center of their universe
Old way was to flow from Requirements to Development, Check-in to Testing and QA to Release. Most of the learning from customers is at the end at the Release phase and a little bit on Requirement phase but pretty much none the middle phases so to learn faster, the goal is to make the inner steps smaller and apply CI, CD and Continuous Optimizations

CI
  • Goal: to have a working state of the code at any point in time
  • Benefit: fix bug earlier when they are cheaper to fix
  • Metric: a new guy can checkout and compile on his first day on the job
Poka yo-ke technique
See here: A poka-yoke is any mechanism in a lean manufacturing process that helps an equipment operator avoid (yokeru) mistakes (poka). Its purpose is to eliminate product defects by preventing, correcting, or drawing attention to human errors as they occur.
Ex: ATM machines with card swipers designed so you keep you card at hand instead of those that "eat" your card offering you a way to possibly forget to take it back when you leave the ATM.

Basic lessons
  1. Keep absolutely everything in version control (scripts, etc.)
  2. Commit early, commit often
  3. Always checkin to trunk, avoid branching
  4. take responsibility for check ins breaking the build
  5. automate the build, test, deploy process
  6. be prepared to stop the mainline when breaking occurs
  7. only one way to deploy and everybody uses the same way
  8. be prepared to revert to previous versions
Cloud
VCS systems in the cloud, CI servers in the cloud, distributed build in the cloud
They use Jenkins, Team city, cruise control, bamboo

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.