Welcome!

@DevOpsSummit Authors: Liz McMillan, Yeshim Deniz, Zakia Bouachraoui, Pat Romanski, Elizabeth White

Related Topics: @DevOpsSummit, Microservices Expo, Agile Computing, @CloudExpo, Cloud Security, @DXWorldExpo, SDN Journal

@DevOpsSummit: 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.

@DevOpsSummit Stories
With more than 30 Kubernetes solutions in the marketplace, it's tempting to think Kubernetes and the vendor ecosystem has solved the problem of operationalizing containers at scale or of automatically managing the elasticity of the underlying infrastructure that these solutions need to be truly scalable. Far from it. There are at least six major pain points that companies experience when they try to deploy and run Kubernetes in their complex environments. In this presentation, the speaker will detail these pain points and explain how cloud can address them.
While DevOps most critically and famously fosters collaboration, communication, and integration through cultural change, culture is more of an output than an input. In order to actively drive cultural evolution, organizations must make substantial organizational and process changes, and adopt new technologies, to encourage a DevOps culture. Moderated by Andi Mann, panelists discussed how to balance these three pillars of DevOps, where to focus attention (and resources), where organizations might slip up with the wrong focus, how to manage change and risk in all three areas, what is possible and what is not, where to start, and especially how new structures, processes, and technologies can help drive a new DevOps culture.
When building large, cloud-based applications that operate at a high scale, it's important to maintain a high availability and resilience to failures. In order to do that, you must be tolerant of failures, even in light of failures in other areas of your application. "Fly two mistakes high" is an old adage in the radio control airplane hobby. It means, fly high enough so that if you make a mistake, you can continue flying with room to still make mistakes. In his session at 18th Cloud Expo, Lee Atchison, Principal Cloud Architect and Advocate at New Relic, discussed how this same philosophy can be applied to highly scaled applications, and can dramatically increase your resilience to failure.
As Cybric's Chief Technology Officer, Mike D. Kail is responsible for the strategic vision and technical direction of the platform. Prior to founding Cybric, Mike was Yahoo's CIO and SVP of Infrastructure, where he led the IT and Data Center functions for the company. He has more than 24 years of IT Operations experience with a focus on highly-scalable architectures.
CI/CD is conceptually straightforward, yet often technically intricate to implement since it requires time and opportunities to develop intimate understanding on not only DevOps processes and operations, but likely product integrations with multiple platforms. This session intends to bridge the gap by offering an intense learning experience while witnessing the processes and operations to build from zero to a simple, yet functional CI/CD pipeline integrated with Jenkins, Github, Docker and Azure.