A little while ago I put together a short presentation intended to provide a high-level overview of the wild and wacky world of DevOps, Microservices and Containers. I present this deck both internally and externally to give folks an overview of what is happening in IT today.
For your reference, I have added the speaker notes after the deck. I’m sure everyone has a different take on the concepts and explanations here.
Feel free to add your thoughts.
2) Digital Players
- Digital pioneers have reset customer expectations and disrupted industries resulting in the need for organizations to digitally transform in order to be competitive and ultimately survive (witness Kodak, Borders, Blockbuster, the taxi industry etc). Additionally there is no time to waste, 5 years after the financial crisis companies who have been in cost cutting mode are all waking up at the same time realizing that they have a lack luster product portfolio and need to innovate.
3) Digital Business = Software (and it has a shelf life)
- The key enabler for digital businesses is software and that software has a shelf-life. To be competitive that software needs to reach customers as soon as possible. To help drive this speed and customer focus, The Agile manifesto of 2001 was created. The manifesto was a reaction to the long development cycles driven by the “waterfall” method of software development. Agile turned its focus to the customer and quick iterative turns of development.
4) But that’s only “half” of the equation
- While agile has sped up software develop and has made it more responsive to customer needs, unless its paired with a greater cooperation with operations, the overall delivery of software to customers remains the same.
- In the past, Developers have kept their distance from operations. It is not surprising that these groups have stood apart in light of how vastly different their goals and objectives have been.
- Developers are goaled to drive innovation and reinvention in order to constantly improve on user experience and deliver new features to stay one step ahead of the competition.
- Operations on the other hand is focused on providing rock solid stability, never letting the site go down, while at the same time being able to scale at a moment’s notice.
5) Dev + Ops: A Methodology
- And this is where DevOps comes in. DevOps is a methodology intended to get developers and operations working together to decrease friction and increase velocity. You want to be able to get your “product” to customers as quickly as you can, and shorten this time frame as much as possible, you also want to be able to continuously improve your product via feedback.
- The gap between developers and operations is often referred to as “the wall of confusion” where code that often isn’t designed for production is lobbed over the wall. Besides silos, the tools on each side do not fit together and there isn’t a common “tool chain.” When the site goes down finger pointing results and ops accuses devs of writing bad code and devs accuse ops of not implementing it correctly. This friction is obviously not productive in a world where “slow is the new down”
- By tearing down the wall, the former delineation of responsibilities blurs:
- Developers are asked to put “skin in the game” and for example carry a pager to be notified when an application goes down.
- Conversely operations will need to learn some basic coding.
- In this new world order, developers and ops folks who understand and can work with “the other side” are in high demand.
6) DevOps What its all about
- Double clicking on DevOps, here is how it flows from Tenets to Requirements and then Benefits. I should say that there are a lot of different interpretations of which components make up the key characteristics of DevOps but in the true spirit of the methodology, you need to move forward with “good enough. ” (“Always ready, never done”) One factor that is widely agreed upon is that culture is the most important characteristic of DevOps. Without it, you can have all the great processes and tools you want but they will languish. All of this underpinned by the foundation of cloud, open source software (which the majority of the tools and platforms are composed of) as well as microservices – which I will expand on in a second.
7 & 8) Tool chain
- Now while I said tools are not as important as culture, the concept of a tool chain provides a good illustration of the connected nature of DevOps. DevOps demands a linked tool chain of technologies to facilitate collaborative change. Interchangeability is key to the success of the DevOps toolchain (via loosely coupled via APIs). Open Source tool adoption and appetite remain strong; however, large-enterprise clients prefer commercially supported Open Source distributions. You will see tool chains depicted many different ways with different players and buckets but this example gives a decent overview of the high-level linkage of processes/components. There are many different tools out in the market that fit into these buckets but I have picked just a couple for each to act as illustrations.
- It all starts with new code
- Continuous integration(CI) is the practice in software engineering of merging all developer working copies to a shared mainline several times a day. Changes are immediately tested and reported on when they are added to the larger code base.
- Version Control: These changes to the code are tracked in a central repository –“one source of truth”
- Code deployment: installs the code across 100s/1000s of servers
- Measurement and monitoring: continuously measures and monitors the environment to identify bottle necks. This information is then fed back at the front of the process to drive improvements. This data is then fed back to the front of the chain to drive improvements
- Across this chain the code travels in the form of Microservices that are conveyed in containers.
9) Microservices: essential to iterate, scale and speed
- Lets take a closer look at microservices which although they support DevOps, have developed independently over the last few years as a grassroots, developer driven effort. Microservices is the concept of the decomposing software applications into loosely coupled and recombinable bite-sized processes Eg breaking a “store” component into: order processing, fulfillment, and tracking services . This decomposition greatly increases the ability to iterate, scale and it increases speed, thereby enabling continuous delivery. Microservices and cloud go hand-in-hand, where autoscaling can help ensure no service becomes a bottleneck by adding horse power where needed. Docker and microservices are a perfect fit.
10) Enter the modern container:
- As I mentioned previously, containers fit well as the conduit to deliver microservices. While containers have been around for a decade in the form of Solaris Zones, BSD jails as well as at Google where they have used them to run their infrastructure (creating and blowing away 2 billion containers a week). It has only been in the last year or two that they have come to the fore thanks to Docker who evolved Linux containers in the context of modern applications and made containers easy to use for the general dev/ops person (Docker expertise is currently the second most sought after skill today in the tech world).
- Containers serve perfectly as vehicles to convey microservices and applications across the tool chain from development through testing, staging and production, much the same way goods in shipping containers can be packaged and sent on a truck from the warehouse the loaded on a ship and then put on a truck waiting on the other side. Additionally they can be used on public and private clouds as well as bare metal servers.
11) Containers vs VMs.
- Architecturally VMs and containers differ in that VMs sit on top of hypervisor and each VM contains both a guest OS as well as an app. Containers on the other hand package an app or service by itself and it sits directly on top of the OS. Given the maturity of VMs, they are more secure than containers, they also take much longer to spin up. Containers on the other hand don’t currently have the security of a VM but spin up in milliseconds vs seconds or minutes. In order to address security concerns, in most cases today organizations are running containers within virtual machines
- As all new technology, containers are still rough around the edges and if you aren’t an early adopter kind of organization, you may want to play with/pilot them but not implement on a large scale just yet.
12) The landscape:
- At this point the container landscape is an ever changing field populated by small and large players. This space is dominated by open source offerings.
- Container engines: As the center of gravity for of the landscape are the container engines themselves made up by the 800 pound gorilla, Docker as well as Rocket which was created by CoreOS in response to what CoreOS felt was a lack of security in the Docker container. This summer the Open Container Initiative was kicked off to bring the two sides together and create a common spec.
- MicroOS’s: Sitting beneath the containers are the micro OS’s, basically the size of 25 pictures on your cell phone (100 MB) or 1/20th the size of a typical OS. What makes these so small is that they have been stripped down to the bare necessities eg no fax sw included. These began with CoreOS and now there are offerings from Red Hat (atomic), Microsoft (nano), VMware (photon) and Rancher etc (others include Intel’s ClearOS and Ubuntu’s Snappy)
- Container Orchestration: Just like having VM or server sprawl, you can have container sprawl and need to be able to manage them. The offering that sits at the center is Google’s Kubernetes built on their own container management platform and which can combined with the other orchestration offerings. The others include, Rancher, Docker Swarm, CoreOS, Mesosphere (based off of the Apache Mesos project) and Flocker a container data volume manager
- Clouds with Docker Support: Most clouds are now building docker support from OpenStack to Joyent’s Triton, Google’s container engine, EC2 and Microsoft Azure
13) The DevOps equine continuum
- Now if we zoom back out and take a look at the implemtation of DevOps it can be illustrated by the analogy of an “Equine continuum.” Here is a model for classifying companies into three buckets illustrating their position on DevOps journey.
- In the upper right you have the “Unicorns” (not the billion dollar-valued unicorns of the valley) such as AWS, google, uber etc who have employed devops methodology since their beginnings or soon there after. This tend to be cloud based companies.
- Next on the continuum are “Race Horses” often times banks like Goldman Sachs or JP Morgan Chase who are starting to implement DevOps to increase their agility and gain a competitive edge.
- In lower left are the “Work horses” who have just started looking into how they can improve their competitiveness via digital transformation and what role DevOps may play.
14) Where do I start
- If you fit into the workhorse classification and you’re looking to get started we are not advocating that you dump all your existing infrastructure and start implementing DevOps, for one thing you would have a mutiny on your hands. The best place to focus is on those fast changing applications and services on the front end that are customer facing. You would want to leave stable transaction-oriented systems on the back as they are.
15) What Dell is doing in this space
- Professional services: Dell’s professional services organization has an array of offerings to enable organizations to implement DevOps practices:
- Agile/DevOps Advisory services; Agile Delivery Services
- CI/CD consulting and implementation services
- DevOps Migration/managed services
- DevOps focussed test Automation, performance testing services
- OpenShift: Working with our partner Red Hat, Dell is making the OpenShift Platform as a Service available to our customers.
- Dell XPS 13 developer edition: This is an Ubuntu Linux-based developer laptop that allows developers to create applications/microservices within Docker containers on their laptops and then deploy these containers directly to the cloud.
- Open Networking OS 10: This switch OS works with Kubernetes which coordinates the hardware pieces. OS 10 programs the hardware as containers come and go.
- Flocker plugin: Code that allows ClusterHQ’s Flocker to integrate with the Dell Storage SC Series has been made available on github. What this does is allow developer and operations teams to use existing storage to create portable container-level storage for Docker. Rather than coming from an internal planning process or committee, the idea for a Flocker plugin came from Dell storage coder Sean McGinnis. Sean was looking for ways to make Dell Storage an infrastructure component in an open source environment.
- Containerizing an old-school application: There are also several projects going on within the company to develop a greater understanding of containers and their advantages. About a year ago Senior Linux engineer Jose De la Rosa had heard so much Docker and container-mania that he thought he’d find out what the fuss was all about. Jose started looking around for an app within Dell that he could containerize and came across Dell’s OpenManage Server Administrator (OMSA). In case you’re wondering, OMSA is an in house application used to manage and monitor Dell’s PowerEdge servers. Rather than being a micro-service based application, OMSA is an old school legacy app. Jose succeeded in containerizing the application and learned quite a bit in the process.
- CTO Lab: Dell’s CTO team has set up Joyent’s elastic container infrastructure, Triton, in our lab running Docker. The idea is to learn from this platform and then work with the Active Systems Manager team to decompose ASM into microservices and run it on the Triton platform.
Industry Consortia and Internal use of DevOps
- Open Container Initiative: Dell is a member of the Open Container Initiative which is hosted by the Linux foundation and is chartered to create common specifications for containers to allow for interoperability and increased security.
- Dell IT: Within Dell itself, devops is being used to support Dell.com and internal IT. Dell’s Active System Manager employees the DevOps methodology in its product development process.
- Dell launches Debian-based Open Networking OS
- Working on Triton in the lab, what’s on the horizon
- Installation details for Joyent’s Triton — Dell CTO lab
- The platform supporting Joyent’s Triton — Dell CTO lab
- Intro: Setting up Joyent’s Triton in Dell’s CTO lab
- Containerizing an old school Dell application
- Flocker plugin for Dell storage up on GitHub
- Incorporating DevOps into the development of Dell’s Active System Manager
- My Dell World Talk: DevOps, Containers and Microservices
Pau for now…