As far as microservices go, there are still much left to explore. For some, it’s the next logical step in software development evolution, while for others it’s still a little bit of a mystery. We’ve taken it upon ourselves to sort out some of the more common questions about microservices. In order to do so, we’ve talked a little bit with Jakob Ehn, Senior Consultant at Active Solution with over 13 years of experience in designing and developing solutions on the Microsoft .NET platform. Here are the questions and answers below:
What would you say is the biggest advantage to using microservices instead of a traditional monolithic architecture?
By dividing your domain into smaller bounded contexts owned by separate team, and then implement these contexts using a microservice architecture, teams can deliver value to end users faster. They manage this without being slowed down by other parts of the organization, due to dependencies such as shared databases.
What are the most common problems you run into when working with microservices?
One of the hardest problems with a microservice architecture is to get the separation right. If an existing monolithic application is split up into smaller parts where the parts still have a lot of dependencies to other parts, you end up with a distributed monolith which arguably is worse than a traditional monolithic application. Using domain driven design and bounded contexts has been proven to be a good way to attack this.
Microservices and service-oriented architecture (SOA) have a lot in common. What are some main differences?
Microservices focus on using simple communication protocols (typically REST and simple queues) to avoid logic and business rules creeping into the infrastructure layer. This is often referred to as “smart endpoints and dumb pipes”. In SOA, it was very common to use pretty advanced and complex systems for communicating between the services (“enterprise bus”) which often resulted in a hard dependency.
What tools would you recommend when developing within a microservices architecture?
Microservices as an architecture does not in any way require any specific tools. However, since you will end up with many smaller services that need to be build, deployed and monitored separately, container technologies like Docker makes it easier to do this in a consistent way.
Why does microservices fit so well with DevOps and CI/CD?
Microservices is one of the first ”new” architectural styles that has become popular after the DevOps movement, and for good reasons. DevOps is all about getting value into production at a fast cadence and use monitoring and telemetry to learn about the application from real usage. Microservices allows businesses to delivery new functionality, using CI/CD, to production at a higher cadence compared to traditional application architectures.
And there you have it. If you’re interested in learning more about microservices or listen to Jakob talk in real person, make sure to take a look at our upcoming Meetup on August 28th.