There's been a lot of talk about the benefits of migrating from legacy infrastructures and monolithic apps to microservice architectures. The benefits of microservices are, of course, very attractive to most enterprises, where staying relevant and continuous software delivery go hand-in-hand. A lot of monolithic apps become bloated with features over their lifetime, causing unneeded complexity in the app’s code and may even cause bad user experiences with updates that might go wrong.
What a lot of people tend to forget is that a quick jump from legacy infrastructure to something modern is a difficult task. It’s not something that can be done overnight, and it will take a significant amount of changes to implement. Moving to microservices will not solve every problem that an enterprise faces. There will be costs to consider, training to be done, apps to be developed to suit the new infrastructure, and so on. This is where a hybrid infrastructure steps in, because it can offer the best of both worlds without a lot of sacrifice.
Docker chief executive Ben Golub called the belief that legacy and microservice infrastructures must work separately the “Bi-modal IT fallacy.” At Dockercon 16 he noted that “as people are adopting Docker, it’s no longer simply for next-generation, greenfield microservices applications. While clearly, the top use cases are in areas like that, one of the most common use cases for Docker is migrating legacy apps to microservices. And an equally common use case is containerizing legacy apps.”
When changes are managed, you become flexible. In the case of moving to microservices, a hybrid infrastructure is highly practical. Many companies have on-premise servers that have been heavily invested in and can still be used. Taking familiar legacy, monolithic apps and packing them in containers makes the transition a lot smoother than having to build completely new apps for microservices.
The most obvious benefit of containers is that it gets rid of compatibility issues and makes apps portable. Another benefit is that monolithic apps can be divided into a set of services that are packed into separate containers that make up the whole. This way, each service can be developed separately and scaled according to demand, and it also makes updates more efficient. So, if demand for a certain application is low or if it’s already a simple monolithic app without a lot of features, it can remain in legacy infrastructures without having to incur the cost of migration.
As mentioned earlier, change must be managed. Maintaining a hybrid architecture will not be without its own challenges. Change management will allow you to make careful, incremental updates to your infrastructure. If a mistake is made, it can be easier to fix when it’s smaller. As your team slowly gets used to the new infrastructure, mistakes made later on will not be as devastating.
Along with change management, certain practices must be adopted to keep things in control and make things run smoothly. Let’s take a look at how you can get to this goal.
Have a clear vision
With access to both infrastructures at hand, it is important that your team members know what’s happening. DevOps encourages teamwork and a collaborative environment and it becomes even more relevant when you’re using a hybrid infrastructure. Make sure that everybody is in sync and is provided the right information of the projects that’s being working on, or else there will be an information overload.
Using a monitoring solution can allow you to have a good view of the workings of your infrastructures without contributing to chaos. This way you can see which app needs to be scaled at any given moment depending on the demand and also know what needs to be worked on.
Make it familiar
Make sure that team members are well trained in the new, unfamiliar technology that’s being introduced. There shouldn’t be any hurry in implementing microservices. Once you’re sure that every team member is on the same page, microservices can be implemented in phases and synergized with the legacy infrastructure. This way, everyone is not afraid of all the new interfaces and code and will know what to do when an incident occurs.
Be agile, but take it slow
Once control is established, continuous delivery can be a lot smoother through hybrid infrastructure. It can be tough for your team to grasp the concept of agility at first as things can be faster when using microservices as compared to monolithic apps. That’s why introducing microservices in phases is important. A few apps or a few features at a time can be developed separately to work as a microservice to be practiced on. This can help your team members get a feel of how to be more agile and deliver code faster than before. An important aspect of transitioning smoothly is to have a plan or blueprint that consists of goals and steps to move toward a hybrid infrastructure. This way, everyone has a picture of what they’re trying to achieve.
Tools that can help with agility are ones that automate the delivery of new code. It will help the development pipeline to be smooth and free flowing. Usually these tools will contain a dashboard that will also give you a view of the development progress which can be very useful as a whole.
A good safety net
Agility is great when it comes to being ahead of the competition and helps your apps stay relevant. But if you’re not careful, there can be reliability issues. That’s why it’s vital to make sure that the DevOps culture is strong in your work environment. The developers and operations teams must be collaborating at all times. Blind spots must not be allowed. Operations must know what the developers are planning so that they know what the new update, tool, or app is for. Letting them in at the development phase will not only allow them to figure out reliability issues at an earlier stage but it also makes them less fearful of change due to concerns over stability.
Implementing an incident management tool is also a good idea. It makes the entire team heave a sigh of relief, as it can feel like a safety net of sorts. When something does break -- which it will -- team members can be notified on their computer or mobile device and it can be quickly rectified no matter where people are at any time.
It’s definitely a great idea to move toward to a hybrid infrastructure. It provides the best of both worlds: the agility of microservices and the familiarity of monolithic apps. Once the practices are used carefully, you can have a flexible infrastructure at your disposal that lets you take a large and significant step toward the future without leaping into a void.