20 February, 2020
Microservices architecture is becoming increasingly popular. With all the performance and scalability benefits it provides, it’s not a surprise that many innovative businesses as well as software houses put more and more emphasis on it. And since microservices can be developed with various technologies, the search for a perfect microservices-oriented backend developer is not limited to one language. A position like this can be quite lucrative for a candidate. But what kind of questions can you expect during an interview?
We’re continuing our series on interview questions for developers. If you haven’t yet, try our PHP interview questions article, or get straight to today’s topic – microservices interview questions.
In our everyday work at The Software House, projects based on microservices are more and more common. To prepare for the challenge, not only do we help our devs grow in this direction, but also search for developers who took interest in this architectural style already.
While the topic of microservices is not limited to Node.js, it’s true that many Node.js-based projects tend to go for microservices. That’s why, as TSH’s Head of Node.js, I can tell you a thing or two about microservices interview questions. A lot of it is also incorporated into a typical interview for a backend developer at TSH and other companies that keep up with what’s going on in the software development market today.
Microservices-oriented developer – how to approach an interview?
The topic of microservices-based architecture is highly connected to various software development areas. It’s not even all that much about Node. It has much more to do with skills typical for DevOps specialists.
When preparing for an interview like this, a candidate should brush up on topics such as distributed systems, containerization, testability and debugging of such systems. Knowledge of deployment methods and tools for developing a distributed architecture may prove vital as well. Some of the tools you should know something about include Kubernetes and Continuous Integration tools such as Jenkins, Bitbucket Pipelines or Circle CI. High-level knowledge of Amazon Web Services can be a great bonus.
Experienced in backend, newbie in microservices – no-go?
Absolutely no! As a matter of fact, the very first step to get into microservices architecture is to understand how to build monolithic applications.
A lot of these skills are very much applicable to microservices. This includes all the steps necessary to keep the app running, such as communication methods, queuing, containerization, logging, tracing etc. Some architecture-related skills such as module separation are also very useful.
Microservices-oriented developer – most important skills to master
Generally speaking, in order to function well in the world of microservices and be able to quickly address any gaps in knowledge, you should have considerable experience in two areas:
The communication area
Microservices don’t just communicate with the outside world and various external systems. Primarily, they communicate with each other (including service discovery). The fact that each of our multiple microservices needs to react to events generated by other services is something completely new to devs that haven’t worked on microservices before and never worked on projects that take advantage of event queuing or low-level communication via gRPC.
The DevOps area
DevOps-related topics are very important to developers that work with microservices. Tracing, logs, containerization, various metrics, service response to events, mocking of third party systems for further development – just a few examples of skills that may prove essential.
These topics are what you might call a foundation of a developer specialized (or at the very least set to get specialized) in microservices. It’s very important to learn as much about it as you can before you go to an interview.
Typical microservices interview questions
What kind of specific questions can you expect during an actual interview? Based on my experience, good recruiters are going to ask questions that not only test the theoretical knowledge, but also how you are able to apply it to various challenges. Here are some examples of that:
- What are the pros and cons of using monorepos in the context of microservices?
- How to program a process that requires activity from more than one service in order to be executed successfully? What if one of the services fails?
- Is it necessary to supply the frontend layer with information on all services when there are a lot of services available?
- What are the most common methods of communication between services? What are their pros and cons?
- What are the most popular techniques for request debugging in distributed systems?
Microservices-oriented developer – final piece of advice
Still not sure if you know how to approach this interview? As you prepare, try to follow these steps.
- Start with learning and practicing containerization. You are very likely to fail an interview for a position like this if you struggle with this topic. The ability to create Dockerfile files is essential.
- Next, focus on all of the methods that make it possible for services to communicate with each other, including events, direct communication, pros and cons etc.
- The next logical step is the architecture. Study different ways to establish communication between microservices and an external system. Sometimes, it may be necessary for the system to know all or most of the services. At other times, it may be possible to use something like API Gateway.
- Finally, learn more about the topic of microservice monitoring. Be sure to know how to tell whether a cross-service request was successfully executed, how to manage logs, or monitor the usage of resources.
Microservices interview questions – summary
How do you feel after reading this article? Are you up for the challenge already, or perhaps there is still a lot for you to learn?
Microservices may seem quite intimidating at first, as they incorporate knowledge from many areas and require developers used to the monolithic architecture to unlearn some habits, but as an architecture that supports innovative and highly scalable systems, it is bound to be popular with extremely interesting and lucrative projects. This makes microservices a great specialization for a developer, regardless of their programming foundation.
Whether you are preparing for an interview or not, you should consider microservices-based development as an important skill to acquire. They will definitely be of great help when applying for one of the job openings at The Software House.