Software deployment has evolved as more companies move to the cloud and take advantage of its many benefits, such as cost reduction and increased efficiency. Dell reports that companies that invest in cloud computing enjoy up to 53% faster revenue growth than their competitors. That makes the future pretty exciting for you!
Gone are the days where large software applications were built in a monolithic architectural environment. Combining all elements into a single platform can be quite a nightmare for any company if all was to fail, at once. It’s like putting all of your ‘coded’ eggs in one basket, allowing you a very limited scope to reuse your code, scale your application or respond to customer needs with agility.
Microservice architecture, a fancy term for developing cloud-based software apps into a set of individual and independently deployed services, is making it easy to build large complex projects by breaking them down into smaller components.
Containers, allow software applications to run across different development environments by providing the whole suite of libraries, and any other dependencies an application requires.
Containers go hand-in-hand with microservices so each of the independent applications you develop can be self-sustaining and self-running.
Using containers and microservices together is ideally suited to building applications for the cloud. Think of it as microservices being different individual parts of an engine, while containers being the fuel/platform necessary for all the smooth running of all individual parts.
To prepare for this post, we reach out to four industry experts to discuss the benefits and possible drawbacks of the microservices approach – Mark Wolfe, Cloud Practice Director at Versent, Peter Hanselmann, Solution Architect at Bambora, Adam Cox, Head of Engineering at 4mation and Ollie Brennan, Development Manager at The Iconic.
The Key Features of Microservices
The solutions offered by microservices makes it a real no-brainer for software developers to make full use of them. Here are just a few:
- Identify Flaws Easily: If something goes wrong with your cloud software application, you can quickly pinpoint what’s gone wrong with it if it’s built with microservices. The reason for this is that depending on what’s wrong, you can isolate the cause of the error/problem down to the individual application that’s causing it. Compare this with trying to identify an error on a monolithic architectural environment, where every piece of code is highly interdependent on the other. It could take you ages to find out what’s causing an issue!
- Break Down Software Into Independent Applications: This allows developers the ability to build independent self-running applications within the larger software application. It’s like having many software applications working together, while not compromising on the stability of the larger cloud software application. This also gives developers a lot of control, and freedom on deploying each of these smaller software applications.
- Scale Applications: Microservices work well with containers, and also integrate with third-party applications seamlessly. This can be a real enabler allowing you to scale faster with confidence.We’ll talk more about benefits later in the article. Let’s start by taking a look at how they are changing the cloud game in reality across Australia’s leading tech teams:
Mark Wolfe shares Versent’s move towards microservice architecture, “As a thriving consultancy which has a Microservices and API practice, Versent is very active in their development, with teams who specialise in this niche area.”
He continues, “We have accrued lots of learnings in this area working across a diverse array of customers, keeping things simple, have a good plan and incremental delivery is really important.”
For Wolfe and Versent, the key to success in microservice delivery is two part. Wolfe shares his insight, “Ensuring continuous delivery and automated deployment are an integral part of a project. This is important once you scale up the number of discreet services, and revisiting, updating them is as trouble-free as possible for teams moving to this architecture.”
Bambora has ramped up development and deployment of microservices. Shares Peter Hanselmann, “In the last year we have created some microservices which we have deployed successfully to production. In contrast, we have not yet moved far down the path of using containerisation in production.”
Over at The Iconic, the development team has spent the last two years building a microservice architecture. Development Manager Ollie Brennan shares, “We have been building on a microservice architecture for the best part of two years now. We are a fair way through the journey and the end is finally in sight. It is now possible to get a ‘hello world’ application into production within minutes which was the original goal. What is remaining for us to have achieved the end goal? I think awesome monitoring of containers and providing a simple way to access resources (e.g container logs) will be the cherry on the cake.”
Custom software and web development agency 4mation limits its use of microservices, preferring to evaluate the architectural needs for each project on a case by case. Adam Cox shares, “We’re a consultancy, so we work with multiple projects. It’s a case choosing the right tool for the job, and that includes the tech used, architectural style and patterns applied.”
Cox continues, “When we’ve used this approach, it’s been for large complex applications where we wanted a distributed architecture that allowed independent deployment. We would also want to consider the modular boundaries of the application to avoid confusion. In many instances, we’ve chosen to avoid using microservices as it can add significant complexity.”
The Benefits of Microservices and Containers
Microservices architecture allows you to break large projects into independent modules, implementation of microservices can benefit any business. This is especially useful for those businesses that wish to organize around a product, instead of a technical capability.
Microservices allow large applications to run, even while some components may be down. The biggest and best tech companies in the world, including eBay, Netflix, Amazon, Twitter, Paypal, Walmart, Spotify and more, have all transitioned to microservices. Spotify, for instance, can serve up to 75 million users around the world, while having a lot of microservices malfunction at the same time. It’s easier for them to take the hit of having a few independent components fail, rather than have the entire application come crashing down. This is only possible with microservices.
For Wolfe and Versent, there are four major customer-facing benefits in building smaller, single task, single role services, including:
- Microservices have become the bedrock for version/deprecation/dependency management in any successful API program.
- Reduced application delivery times due to the smaller scope and impact of upgrades.
- Improved recovery times in the case of platform or service failure, again due to smaller components.
- A reduction in the cost of change with single role services being easier to refactor or replace.
Wolfe adds, “One thing to note is that continuous integration, versioning and automated deployment are critical to support microservices as there are more things to deploy and manage.”
Hanselmann discusses the benefits he’s witnessed from the shift to microservices. “We have a large legacy codebase which has contained a large amount of duplication. We have made advances in maintainability through use of Nuget libraries in order to keep code used by multiple applications in a single common library. However, this still suffers from the need of deploying multiple applications each time that a change is made to such a library.
“The cost of such deployments, without a full CI/CD pipeline, can be quite high and, due to the level of caution and verification and need to perform after-hours deployments means that even a handful of applications can take an extended period to deploy. While libraries allow the code to be maintained in one common location, microservices have additional advantages concerning deployability such that a single application can be upgraded for a rollout of new features or security updates instead of multiple applications. This has allowed us to deploy faster and improve the consistency of behaviour between applications.”
Brennan shares how the Iconic has benefitted from the use of microservices. “The biggest benefits have been in speed to release and our ability to create small, well thought out chunks of code that do one thing, and one thing well. We are just beginning the journey with our main application (aka, the monolith) but the most notable innovations to date have come from unexpected sources. Our platform team (DevOps) has pushed many additions in the form of small apps that perform specific monitoring functions.
“We have seen one of our Android engineers (who has been predominantly Java) build a service to manage push notifications, we had a URL shortening service released in just a few days from inception and our new Style Site (think fashion blog) was released in record time.”
The Recommended Platforms
There are so many different platforms for containerized applications available, and it can be difficult to know which one offers the best support for your microservices. To answer this question, we’ll turn to the experts again.
Wolfe shares his top choice. “Within our microservices practice Versent does a lot of work with Docker, most of this happens in Amazon Web Services, so we are heavy users of Elastic Container Service product. As a part of our DevOps practice, we are also deploying and supporting Kubernetes, on AWS, for a few customers. Containerisation has been a big help in simplifying and pushing forward microservices development; it helps us with testing and dramatically simplifies deployment.
“From a developer perspective we have seen great improvements in productivity, and a simplification of developer onboarding, this paired with a very positive experience for development teams has really impressed everyone and we will continue to promote this were possible in our engagements.”
Brennan adds, “It has taken a few iterations of technology to get to where we wanted to be. I think the biggest learning for me was that without Docker, Microservices are a pipe dream. It is ‘possible’ without it but unless you can containerize services cost quickly becomes unmanageable. For us, Kubernetes is our platform of choice.
For Cox and 4mation, it’s another vote for Docker. “We mostly work with Docker and use either Swarm or Kubernetes for orchestration. Again, it’s about choosing the right tool for the job and we are always monitoring other services.”
Bambora is still fully in the Docker camp. However, that’s likely to change. Shares Hanselmann, “In future, we will consider Windows Server Containers.”
Upskill in Microservices
With microservices and cloud computing growing in use in the future, you should definitely consider upskilling yourself in this area. Here’s a list of resources straight from the experts on how you can go about it:
- Hanselmann recommends (a) Pluralsight & (b) Docker and Microsoft documentation.
- Cox suggests two informative whitepapers: Microservices on AWS and Deploying microservices and containers with Azure Container Service and DC/OS.
- Brennan advises that you should: (a) Grab an AWS or GCP free account and deploy a container or two. Meetups are great to understand what others think and what’s ‘cool’ but you need to evaluate based on your needs. (b) Once you have a container running, work out how you create a database or cache cluster. (c) Terraform is a great infrastructure as a code tool and well worth the time investment.