meetup.com/nycdevops/events/54160602/
Peter Kim presents "Dr. Strangelove : How I Learned to Stop Worrying and Love the Self-Service Build & Deployment Bomb. A DevOps Story with ControlTier”
Peter Kim is the Software Control Director at INVISION, Inc where he manages the build and release engineering operations for the company’s flagship product, DealMaker. Peter will discuss the challenges he faced when staffing decreased, forcing him to change his service model. He will also introduce ControlTier, an open source automation framework, and show how it helps development teams build better software faster through self-service deployment functionality.
Video: https://vimeo.com/42351065
I Rock Therefore I Am. 20 Legendary Quotes from Prince
Using ControlTier for Self-Service Build and Deployments
1. Dr. Strangelove or: How I Learned to Stop Worrying and Love
the Self-Service Build & Deployment
Bomb
A DevOps Story with ControlTier
Presented by Peter Kim
Humble Software Control Grand Poobah
March 21, 2012
Twitter: @peterpkim
peter.kim@invisioninc.com
The Leading Provider of Ad Sales Systems to the Media Marketplace
CONFIDENTIAL PROPERTY OF INVISION INC.
2. The Leading Provider of Ad Sales Systems to the Media Marketplace
CONFIDENTIAL PROPERTY OF INVISION INC.
5. About Me
Yes, I’ve been
here a long
time…
CONFIDENTIAL PROPERTY OF INVISION INC. 5
6. What is Software Control?
At this company
SCM
Build & Release Engineering
Database Administration
Environment Management
CONFIDENTIAL PROPERTY OF INVISION INC. 6
7. Once Upon a Time
CONFIDENTIAL PROPERTY OF INVISION INC.
15. Road to Provisioning
Cloud OS install System
Configuration Application
Service
Orchestration
CONFIDENTIAL PROPERTY OF INVISION INC. 15
16. In this Corner…
Available on Available on
sourceforge github
Open source cross-platform framework used to
coordinate application service tasks via command
dispatching
CONFIDENTIAL PROPERTY OF INVISION INC. 16
17. Installation
Runs on
− Windows
− Solaris
− Linux
− Mac OS X
RPMs for Linux, self-contained .zip for Windows
Requires Java 5/6
Cygwin/SSH for Windows clients & public keys
Authentication: file-based (default) or AD/LDAP
CONFIDENTIAL PROPERTY OF INVISION INC. 17
26. Installation
All deployments centralized for better control
Self-service enables greater efficiency:
− Dev teams can generate builds & deployments as
often as they need
− Saving time and resources for higher value work
More sleep
CONFIDENTIAL PROPERTY OF INVISION INC. 26
2009 new management Changed the culture: Promote organic growth – build 2 new products Transition SDLC from waterfall to agile scrum Company reorg!
Team of 5, reduced to 2 New goals: Survive & Accomplish more, by working smarter Provide self-service
Team of 5, reduced to 2 New goals: Survive & Accomplish more, by working smarter Provide self-service
Talk about 0 and 1 touch deployments, then discuss the need for self-service Doesn ’t work for this business need We initially tried to use what we had. We enabled one touch deployments for our scrum teams, using CruiseControl. We experienced mixed results. Use the dashboard, invoke a build and the code deploys. However there are a few issues. Build redundancy and bottlenecking. It doesn ’t scale.
Connect to nodes via SSH (private keys) - Run script, write a script - script file, calling existing files on a local server - Command, echo, shell commands - defined commands from existing modules from moduleforge, ant tasks, kill, ps, netutil, tgz, zip - Job reference (call another job) Threadcounts (for serial or parallel runs) Logs levels, from very verbose to just errors (one time or recurring) Command line interface or web based UI (jetty) There are 4 components: CTL – distributed command dispatching framework Workbench – resource model repository, lists node definitions, build artifacts, builders, updaters, etc. Ctlcenter – web based GUI for CTL, also supports scheduled jobs Moduleforge – collection of reusable CTL commands and workflows & plugins for popular tools, ie puppet, svn, maven, hudson
In this design pattern, the existing call to the ctl Build command will now feature an additional setBuildstamp operation which will record the latest version built. The new Updater, to be triggered by a CTLCenter job, will asynchronously execute the cruisecontrol project's build via the appropriate url, subsequently block by polling for the imminent buildstamp setting update, to be followed by a typical Change-Dependencies/Deploy operation. If no update is detected in a configurable amount of time, the updater will time out and fail.
In this design pattern, the existing call to the ctl Build command will now feature an additional setBuildstamp operation which will record the latest version built. The new Updater, to be triggered by a CTLCenter job, will asynchronously execute the cruisecontrol project's build via the appropriate url, subsequently block by polling for the imminent buildstamp setting update, to be followed by a typical Change-Dependencies/Deploy operation. If no update is detected in a configurable amount of time, the updater will time out and fail.
In this design pattern, the existing call to the ctl Build command will now feature an additional setBuildstamp operation which will record the latest version built. The new Updater, to be triggered by a CTLCenter job, will asynchronously execute the cruisecontrol project's build via the appropriate url, subsequently block by polling for the imminent buildstamp setting update, to be followed by a typical Change-Dependencies/Deploy operation. If no update is detected in a configurable amount of time, the updater will time out and fail.
Describe the new ant targets for the build.xml This one calls “Change-Dependencies” The CTL-EXEC command is used to remotely execute ad-hoc shell commands on a set of nodes which are specified by the filter options. The remote shell command that is invoked is specified after the -- on the command-line. This string should begin with the command name and be followed by any arguments you want to pass to it.
http://eqxcoctier:8080/ctlcenter Show folders, by scrum team view GF Head build & deploy Show CruiseControl dashboard, demonstrate build is kicked off (atlbuild1:8880) SOS HEAD Deploy Demonstrate the picklist Invoke the job
Calculated from FootPrints Software Control project. # of builds are the number of tickets related to build, deployments and supporting enviroments
Management Support - who is the champion of your cause? Organizational culture stakeholders – what ’s in it for me? accomplish more when no one cares who ’s getting the credit
Everyone wants results right away. Good ideas can be spoiled easily Through patience you will achieve excellence.
Technology innovation drives the business Self service frees up resources for higher value work