Wednesday, October 5, 2011

JavaOne 2011: Why Java Is An Ideal Platform for Devops Automation

Wednesday morning is the only morning of the four main technical days of JavaOne 2011 that does not begin with a keynote presentation. I began the day by attending Michael Neale's "Java/JVM - an Ideal Platform for DevOps Automation" (25146) in Hilton Imperial Ballroom B. Neale provided a brief definition of devops as development + operations/deployment. He acknowledged the concern that many of us have that this is just another movement to sell books and consulting. He even acknowledged that in some areas there is some degree of truth to that. The presentation only had about twenty people in attendance and I think that while some of that is due to the "early" hour on a day without a keynote to drag people out at 8:30 am, it is probably even more so due to the fact that many in the Java community are still skeptical of the devops movement.

One of Neale's slides stated, "Developers do/help with deployment - realtime feedback, adjustment, adaptation." Neale said that he likes to think of this as two separate roles conceptually even though there may be cases where a single person is both the developer and the deployer. Neale provided a brief history of deployment including virtualization and up to today's cloud phenomenon. He described "layers" of cloud: infrastructure, platform, and software. His slide stated, "In all cases provision is decoupled from plugging in hardware." Another slide said cloud is "infrastructure as code" and is "aggressive automation."

Neale introduced jclouds. The open source (Apache 2.0 license) jclouds runs on the JVM, is "battle hardened," and supports numerous providers and their APIs. Neale added that jclouds "can reduce runtime dependencies on your servers" and talked about provisioning the inside of the server from the outside. He stated, "Automation is no longer a script run as needed, but a core part of application operation."

Neale talked about BlobStore and ComputeService as generic binary storage and generic service provisioning respectively as "cross cloud API abstractions." Neale referenced Adrian Cole's JavaOne 2011 presentation for more details on BlobStore. His slide stated that BlobStore is "proven to be very, very reliable and scalable." There are multiple providers of the BlobStore and Neale's slide concludes, "BlobStore's are all very similar - no reason to not use a cross cloud API for binary objects." There are two levels of ComputeService: high for common denominator/generic API and low for type-safe cloud specific APIs.

Neale showed a slide on "jclouds api" that listed several API capabilities that are "all cross-platform." He described some more definitions: the "image" is a pre-cooked virtual machine image and the "template" is an image plus a virtual hardware configuration that is "ready to go." A "run script" is "something to run immediately after bootup" and "location" is the "physical details of where cloud is."

Neale stated that Java is not the only language with jclouds support and added that Clojure has first-class support in jclouds. He also stated that Scala works fine "out of the box" with jclouds, though he'd like to see Scala get an idiomatic API.

In a portion of the presentation on cloud-specific APIs, Neale talked about using Amazon EC2. He showed specific examples using EC2. He talked about use of JSON in the API.

Neale mentioned supplemental tools such as Puppet and Chef for recipes and cookbooks for managing scripts.

Neale contrasted "image preparation" against "post boot preparation" and outlined the advantages and disadvantages of each after discussing each approach's characteristics. He stated that "post boot preparation" is "easier to automate," but can have some performance penalties. I recommend looking at his five or slides carefully if trying to decide which approach to use.

Neale's slide "Cloud vs Traditional" had some interesting points. One point he made in this slide is that "cloud servers typically are shorter lived." He also cautioned in the slide, "Do NOT expect cloud hosting to behave traditionally. Have spare capacity, roll in new images often.

Neale did have a slide on "Cloud API peril." I always appreciate a speaker explicitly acknowledging issues, limitations, and problems with whatever they are talking about in the presentation. Neale showed more pragmatism when he said "No one size fits all" and even recommended "be pragmatic." Neale acknowledged that the "infrastructure as code" concept may seem "too hard." He said this is "where Platforms (PaaS) come in." He likes this because it "lets someone else do it" and "lets someone else wear the pager."

Neale's presentation led me to google for more details on the relationship between devops and the cloud and that search quickly led to Ben Rockwood's interesting Three Aspects of DevOps: What’s in a word and Matt Zimmerman's insightful DevOps and Cloud. Neale's focus on cloud computing was welcome because it provided something "concrete" to a discussion on devops. It is helpful to see an "concrete instantiation" of the devops concept. Neale delivered a fast-paced presentation that provided a nice start to the day. Although his quick pace made it difficult to write a blog post on what he was saying, it kept the energy level high and kept the audience engaged.