[ Content | View menu ]

DevOps and The Lean Startup

Mark Mzyk October 3, 2011

All the rage in developer circles and at conferences at the moment is talk of DevOps. This is the loosely defined movement that is about getting developers more closely involved in operations.

All the rage in entrepreneur circles at the moment is the concept of the Lean Startup. The term, coined by Eric Ries, is a startup that achieves validated learning through the build-measure-learn loop. What is validated learning? Learning what the customer actually wants so that a useful product and a sustainable business model are built.

It may not appear that the Lean Startup and DevOps are related. Obviously, with a statement like that, I’m now going to tell you how they are. It starts with small batches.

Small batches are the practice of having cross-functional teams work together on the smallest units of work possible while pushing that work to the customer as soon as possible. In working this way, the product gets to the customer quickly, allowing the business model or product direction to be validated.

The common model today is large batches. Instead of a small team working cross-functionally to push a product in front of a customer, the team specializes, with various team members completing their phase of the product before passing it on to the next person in the chain. If at any point a fault is found, the product has be sent back down the chain while those up stream ideal, waiting for the product to reach them. All the while nothing is getting put in front of the customers, so no feedback is being gained. Eventually the product will reach the customer, but if any flaws are found or the customer rejects the product, the entire process is repeated, leading to long lead times before customer behavior can be learned.

Contrast this with the small batch process, where small changes are continually pushed to the customer. This leads to quick feedback and rapid turn around times, resulting in a better product.

Lean startups embrace small batches as I’ve just described. DevOps is the same. DevOps is about embracing small batches, but the batch in this case is a narrow part of the overall process: pushing a product from development to deployment to seeing it in use.

DevOps is about allowing production behavior to quickly feed back to developers so that development can adjust quickly to situations in production. Often times the fastest way to make this happen is to have developers occasionally serve as, or even to be, the operations team. As with the lean startup, the potential efficiency of an individual unit (developers, operations) might appear to be undercut, but the efficiency of the system as a whole (developing products that work in production) is sped up.

When developing a system it is easy to envision how a system should run, but that doesn’t mean that is how the system will run. Often unavoidable differences in hardware and traffic lead to differences in how the system actually performs with how it was envisioned to perform.

DevOps is about tightening the same loop as the Lean Startup: the build-measure-learn loop. The only difference is the narrower focus of DevOps. With the loop as tight as possible, knowledge gained from the actual system is fed back into the next iteration of the product so the system becomes better in small, but tight, increments.

DevOps is a subset of the Learn Startup. Both are a reaction to today’s fast changing world and the need to create a system that can optimize the whole quickly, even if that means undercutting what appears to be the efficiency of the individual unit.

Both DevOps and The Lean Startup are about eliminating waste.

Waste / CC License

I’ve only touched the surface of the Lean Startup and DevOps movement. For more on DevOps and to read the article that inspired this one, see the Ars Technica article Google CIO and others talk DevOps and “Disaster Porn” at Surge.

For more on the lean startup, read Eric Ries’ blog on the topic, or read his recently published book, The Lean Startup.

Management,Software Engineering - 0 Comments


Installing Java 7 and JRuby on Mac OS X Lion

Mark Mzyk August 24, 2011

I currently have a project that I’m evaluating using JRuby for. The first step in the evaluation is of course to set everything up. While I could have installed JRuby and let it run with the version of Java already available on Mac OS X Lion, I opted to be on the edge. That means installing the latest OpenJDK Mac OS X port of Java 7 and installing JRuby on top of it.

These are the directions of how I did that.

These steps can be found in other places, but my hope is that by collecting them all in one place I make it easier for others.

First stop, Java.

Java 7 is not yet officially out for Lion, but it is possible to install a Mac OS X port early release version without too much trouble.

The directions are available on the OpenJDK Mac OS X Port page.

First make sure you meet the prerequisites, such as having a 64 bit capable machine, having Lion, having the latest Xcode installed (Version 4.1, available through the Mac app store for free).

Once you’ve verified the prerequisites and installed Xcode 4.1 if you need it, you’ll need to download Apple’s preview of Java 7. This doesn’t install Java 7, but it is necessary so that you have the proper APIs for Java 7 to work on the Mac.

To download it, go to connect.apple.com.

You will need to log in using your Apple Id and password. You can register if you don’t have one.

Once in, navigate to the Java section. You’ll then want to download the latest disk image for Lion, which as of this writing is Java for 10.7 – 11M3504 (Disk Image).

Once the download is complete, run the disk image and install it.

Next you’ll need to follow further directions from the Mac OS X Ports page, found here.

The directions will tell you how to install a preview version of Java 7 on Lion. You can either build it from source or download an unofficial build. I opted to download the latest unofficial build, which is OpenJDK-OSX-1.7-universal-20110822.dmg at the time of this writing.

Once downloaded, install it.

Now Java 7 is on your system, but it won’t be the default Java. To make it the default Java, launch:

/Applications/Utilities/Java Preferences.app

and drag both of the OpenJDK 7 entries to the top of the list. Then close the Java Preferences app. Java 7 is now installed on your system and is the default.

To make sure Java 7 is the default, launch a terminal and run java -version.

You should see output that looks similar to this:

openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-b00)
OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)

It’s onto JRuby.

Download the latest JRuby from jruby.org (as of this writing, it is 1.6.4).

I downloaded the tar ball. Extract it. It will place a jruby-1.6.4 folder wherever you extracted it to.

Move the folder to the location you want it on your system, if it isn’t already there.

Add the bin folder from the jruby folder you extracted to your system path. Good directions can be found at Hathology.com. Note that those directions modify the path for every user on the system, not just a single user.

Once that is done, close and restart any terminals you have open. Then type jruby -v and you should see this:

jruby 1.6.4 (ruby-1.8.7-p330) (2011-08-23 17ea768) (OpenJDK 64-Bit Server VM 1.7.0-internal) [darwin-x86_64-java]

Success. You’re now running JRuby with Java 7 on Mac OS X Lion.

Since the Java 7 isn’t an official version, I can’t promise there won’t be bugs or other weirdness, but that’s the fun of living on the edge.

JRubyConf Post DesignCC License 

 

 

 

General - 0 Comments


Code Coffee Raleigh

Mark Mzyk July 20, 2011

When you’re in software development for even a short time, you learn that developers love coffee more than almost anything else, except code. Perhaps only beer can rival coffee.

You also learn that developers love meetups. If a new language or technology shows up, no matter how obscure, a meetup will spring into being to support it. That doesn’t always mean many developers will go, but the mere fact that the meetup exists is enough.

For some odd reason though, coffee and meetups don’t often intermingle. Meetups normally happen at night, so beer and meetups are far more common. This is a reprehensible state of affairs.

To remedy this, I’m announcing Code Coffee Raleigh, a currently once a month gathering of developers over coffee in the morning. I’m not the first to have this idea, not by a long shot, but as far as I know no gathering of software minds over coffee currently exists in Raleigh.

I’m not specifically calling this a meetup: there’s no place to sign up and no member count. All it needs is you to show up, ready to drink coffee and talk code. Details are on the website.

The first happening is tomorrow, July 21, starting at 7:30 am, going until people have to leave. The place is New World Coffee House, although I haven’t told them we’re coming, so let’s be courteous and try not to overrun the place.

I hope to see you there. If you can’t make it, I hope to see you at future meetings. That being said, you don’t have to wait for me to grab some coffee and code. Nothing about this process is unique to me, so feel free to start your own gathering. I’ve even put the website code on github if you want it.

Happy drinking and coding.

ritual / CC License

General - 0 Comments