Need a proper production platform? Docker isn’t going to solve your problem
No software architect can resist the temptation to talk about their experience with microservices. We launched an interview series with experts who talked about the benefits and challenges of microservices, when people should not use them and what impact they have on an organization. Our third interviewee is Daniël van Gils, a polyglot developer advocate at Cloud 66 and JAX London speaker.
JAXenter: Why did you start using microservices?
Daniël van Gils: When I was CTO at an Amsterdam-based digital agency, we needed practices which allow us to produce digital campaigns more quickly and adopt change when the campaign was live. Making adjustments in minutes, not hours or days. Microservices allowed us to embrace the change and still have fun.
JAXenter: What is the most important benefit of microservices?
Daniël van Gils: Splitting a system into responsibilities and letting your team’s skill set shine on the pieces which they love the most. And with the rise of containers and isolating process and using a polyglot approach we aren’t stuck to one piece of technology (lock-in).
JAXenter: Have microservices helped you achieve your goals?
Daniël van Gils: Yes, but I am still using it with caution. Sometimes a system with two bigger services…like a static front-end (Angular for example) and an API in Go works fine for smaller projects. It all depends on the needs, the scale, the time to market and the crucial parts of the system.
Microservices allowed us to make adjustments in minutes, not hours or days.
JAXenter: What do you think should be the optimal size of a microservice?
Daniël van Gils: I’m personally not opinionated about size. I’m more about velocity. One service should be built and fully tested in less then a week.
What works for you and your team is the optimal size of a microservice. If you decide to split up your API in 10 microservices, you can have a nightmare on your hand if you don’t have good reverse proxy in place for example.
JAXenter: What is the biggest challenge of microservices?
Daniël van Gils: Taming the message queue beast if you are using a MQ to have microservices talk to each other. You need to have a good debug strategy and to make sure your tests are deterministic and explanatory. Have some management tools in place to see what is going on inside your MQs.
What works for you and your team is the optimal size of a microservice.
Deploying microservices in production is another challenge. Do you need a proper production platform? Docker isn’t going to solve your problem. It is just the foundation. Maintaining your application is the hardest part.
JAXenter: What technology do you think is the most important as far as microservices are concerned?
Daniël van Gils: Containerization technology and high available message queues.
JAXenter: How much do microservices influence an organization? Can they leave the organization unchanged?
Daniël van Gils: The organization needs to change. Start small with a green field project inside your organization and spread the word. You need to be the microservice developer advocate. Give a talk.
JAXenter: When should you not use microservices?
Daniël van Gils: When you have a system that works great.
JAXenter: What are your guiding principles in the division of an application into microservices?
Daniël van Gils: Splitting the monolith in two: front-end and API. Next phase is to split the API in cooperative microservices.
JAXenter: Should every microservice be written in the same language or is it possible to use more languages?
Daniël van Gils: I’m more of a polyglot fan. I think some languages/frameworks are better in different areas. If your team can handle it, I say just go for it. There is such a nice amount of clever solutions/frameworks which can be easily used. Make sure you come up with guidelines and how to maintain them.
JAXenter: What aspects should you take into consideration before using microservices?
Daniël van Gils: Don’t use it just for the sake of it. Make upfront decisions like how do we benefit from using microservices? Is it approach maintainable? Is the team happier when they use microservices?
Thank you very much!
Here is our microservices checklist series:
Daniël van Gils will be delivering one talk at JAX London which will focus on the five key ingredients for creating the RIGHT minimal lovable image: small, secure, performant, stable and immutable.