Welcome!

Java Authors: Liz McMillan, Pat Romanski, Trevor Parsons, Yeshim Deniz, Ivan Antsipau

Related Topics: DevOps Journal, SOA & WOA, Web 2.0, Cloud Expo, Security, Big Data Journal, SDN Journal

DevOps Journal: Article

Continuous Infrastructure

How IT Went from the Back of the Class to the Front of the Board Room

Businesses have IT because apps deliver value to their customers. This can be direct value - a user-facing app. Or it can be indirect - an internal app for managing sales, marketing, or even HR transactions. Either way, the idea is that the app will make the business more efficient and responsive.

The purpose of IT used to be to develop, purchase and operate these apps. But today, every team in the business is writing apps, and every part of the business depends on the apps that they run. These apps have gotten bigger. They have become more complex. There are more apps everywhere, and they are more mission critical than before.

In fact, we are long past the point where any modern application is a single piece of software. Most apps these days run on top of a collection of common services - such as web servers, database servers, queue servers - even the storage space and network connections are increasingly consumed as-a-service, by apps.

So the purpose of IT has been transformed from being an operator of apps, to an operator of services to power them. What's different about being a provider of IT services, rather than an operator of applications?

  1. It's about scale.
  2. It's about efficiency.
  3. It's about speed.

Explaining the difference between scale-up, and scale-out, is beyond the scope of this article. But I encourage you to read Maged Michael's excellent summary of the topic[1]. Whether we're scaling the number of users, the amount of data, or the complexity of calculations required (or even if you're scaling all three) - the era of scale-up is drawing to a close.

So if we can't scale UP, we have to scale OUT - which means building multi-server distributed systems. These are notoriously tricky. (In fact, Google famously considers their expertise in this to be a key competitive advantage.) So when we've invested the work in developing a system for delivering a particular service, we're likely to try and get as many different apps to share that service as possible. This is the same type of thinking that encouraged object-oriented programming and object reuse - if we're all sharing the same system, we can invest more in making it as reliable and efficient as possible. I like to call this the "Warren Buffet" approach to enterprise architecture - put all your eggs in one basket, and then watch that damn basket!

So we can see that, as our businesses have become more and more dependent on IT apps, those apps have in turn become more and more dependent on scalable, efficient services. And as applications have gotten both larger and more complex, IT has had to focus more on the services that can power these applications - rather than just the applications themselves.

Now, technology doesn't necessarily make life better. Nor does it reduce the number of mistakes we make. But it *does* help us go faster, which means we can make mistakes at a faster and faster rate. And this is what it's done in business, too - IT has sped everything up.

The pursuit of speed in IT has been transforming everything about how we develop software over the past ten years. It started with our project management methodologies, switching from traditional SDLC approaches to Agile ones such as Scrum or Kan-Ban. As we sped development up, we needed to integrate and test our systems earlier, and the Continuous Integration ecosystem was born, with tools such as Jenkins and Build Bot at the heart of it. Eventually, the need for speed broke through from development and testing, into the production operations environments, and the DevOps movement was born. We're starting to see a raft of tools and technologies to support Continuous Deployment now - the most mature form of DevOps.

The final step in this metamorphosis is a revolution in the delivery of the underlying infrastructure services - the push to API-driven, or software-defined, ...well, everything. Only when Continuous Infrastructure supports the Continuous Deployment of Continuously Integrated and Continuously Prioritized apps and features, will our work be complete.

For more of my thoughts on apps and services, open source software and how to manage your IT infrastructure like 400-head of Holsteins, check out my blog at http://www.pistoncloud.com/blog.

1. http://www.cecs.uci.edu/~papers/ipdps07/pdfs/SMTPS-201-paper-1.pdf

More Stories By Joshua McKenty

Prior to co-founding Piston Cloud Computing, Joshua McKenty was the Technical Architect of NASA's Nebula Cloud Computing Platform and the OpenStack compute components. As a board member of the OpenStack Foundation, Joshua plays an instrumental role in the OpenStack community. Joshua has over two decades of experience in entrepreneurship, management and software engineering and architecture. He was the team lead for the development of the Netscape Browser (vs. 8) as well as AOL's IE AIM toolbar, and a senior engineer at Flock.com. He also led the successful first release of OpenQuake, an open source software application allowing users to compute seismic hazard, seismic risk and the socio-economic impact of earthquakes. In his spare time, Joshua has crafted a handmade violin and banjo, fathered two children, and invented his own juggling trick, the McKenty Madness.