Everyone wants me to do everything, they want me to do it now, and they want me to do it with nothing!
Sound familiar? In this blog post I am going to explain how designing a DevOps architecture can help you deliver more with less. That’s right. Deliver more infrastructure, more application features, more online services with less resources, even less people.
A smart, well-designed DevOps architecture and process can greatly improve your products and services that are delivered to your customers. Let’s look at the components of a solid DevOps architecture.
Configuration Management, or CM, is a systems engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. The important thing to remember about CM is that without consistency is necessary within your DevOps architecture to reduce your delivery time. The best advice I can give here is: Manage your configurations or they will manage you.
Continuous Integration is, technically, the practice of merging all developer working copies to a shared mainline several times a day. There are many levels to continuous integration, though. Your DevOps architecture must be modularized enough to allow for new tools and processes to be added. If you design your DevOps architecture in a way that makes it extremely difficult to integrate new process and new tools, your organization will pay again and again in time and resources. Your resources will spend time trying to work your architecture and your processes around bottlenecks. Modularize your architecture to allow it to transform as new tools are adopted and as processes evolve.
Microservices is a variant of Service-Oriented Architecture that structures an application as a collection of loosely coupled services. Microservices in a DevOps architecture is a must, for the same reason that you conquer a mountain one step at a time. Each microservice is a single step in climbing the mountain of delivering that service or product to your customer. I won’t go into detail here because this is an entire blog post by itself, but microservices are key components for modularizing your DevOps architecture.
Collaboration is defined as two or more people or organizations working together to achieve a goal. If your DevOps architecture does not promote collaboration, then you need to scrap it and start all over. Yes, I just said that, because collaboration is one of the key components of DevOps is. That collaboration needs to extend into business, marketing, sales, research and development. I could say it should extend to every area within your corporation, but it can’t do that if your architecture isn’t designed to allow collaboration to happen.
Monitoring collects information about resources being used within a system. This is not monitoring for monitoring’s sake; it’s monitoring to use the collected data to understand the bottleneck in your architecture and your processes. When you don’t monitor your processes, the self-improvement process in your DevOps organization doesn’t do its job.
Development, of course, is the work of creating and maintaining software components. Performing this work efficiently using fewer resources and less time is what DevOps is all about. This can only be accomplished when your architecture is flexible enough to allow new ways of doing development work and new tools to be adopted in the DevOps process.
Tools? Here are just a few examples of software tools that should be key components in your DevOps architecture:
- Configuration Management – Chef, SaltStack, Puppet, Ansible
- Continuous Integration – CodesShip, Jenkins, TeamCity, CircleCi
- Microservices – Docker, Mesos, Trition Compute, ElasticBox
- Collaboration – Slack, HipChat, Trello, Jira
- Monitoring – Monit, Nagios, Ganglla, Snort, Cactt
- Development – Visual Studio, Active MQ, Vagrant, Microsoft Azure
Let me wrap all of this up by going back to my introduction: Everyone wants me to do everything, they want me to do it now, and they want me to do it with nothing!
They really do. The good news is that, with a well-designed, modularized DevOps architecture that has the components I’ve discussed, your organization will be able to become efficient at delivering quality products and services using as few resources as possible in the least amount of time.
Always remember to follow these DevOps rules:
- Automate almost everything
- Keep everything in version control
- Build quality In
- Empower the team
These rules and a DevOps architecture will enable you to do more with less.
About the author
Charles Wilson is our Cloud Solutions Advisor. He has extensive experience in designing and implementing cloud solutions for companies in such industries as financial services, real estate, manufacturing, and retail. He holds certifications as an IBM Certified Enterprise Architect, AWS Technical Professional, and AWS TCO and Cloud Economics.