What Would Be Your Logging Strategy In A Microservice Architecture
Logging is a very important aspect of any application. If we have done proper logging in an application, it becomes easy to support other aspects of the application as well. Like in order to debug the issues / in order to understand what business logic might have been executed, it becomes very critical to log important details.
Ideally, you should follow the following practices for logging.
- In a microservice architecture, each request should have a unique value and this value should be passed to each and every microservice so the correlationid can be logged across the services. Thus the requests can be traced.
- Logs generated by all the services should be aggregated in a single location so that while searching becomes easier. Generally, people use ELK stack for the same. So that it becomes easy for support persons to debug the issue.
Define Domain Driven Design
The main focus is on the core domain logic. Complex designs are detected based on the domains model. Involves collaboration with domain experts constantly to resolve issues related to the domain and improve the model of the application. While answering this microservices interview question, you will also need to mention the core fundamentals of DDD. They are
- DDD focuses mostly on domain logic and the domain itself.
- Complex designs are completely based on the domains model.
- To improve the design of the model and fix any emerging issues, DDD constantly works in collaboration with domain experts.
Q34 What Is End To End Microservices Testing
End-to-end testing validates each and every process in the workflow is functioning properly. This ensures that the system works together as a whole and satisfies all requirements.
In layman terms, you can say that end to end testing is a kind of tests where everything is tested after a particular period.
Fig 14: Hierarchy of Tests Microservices Interview Questions
You May Like: List Of Interview Questions For Employers
How To Handle Exceptions In Microservices
In the case of microservices, exception handling is important. If any exception/error is not handled, it will be propagated to all the downstream services creating an impact on the user experience. To make the services more resilient, handling exceptions becomes very important.
In the case of 500 Internal Service Error, Sprint Boot will respond like below.
( "timestamp": "2020-04-02T01:31:08.501+00:00","path": "/shop/action","status": 500,"error": "Internal Server Error","message": "", "requestId": "a8c4c6d4-3"}
Spring provides ControllerAdvice for exception handling in Spring Boot Microservices. @ControllerAdivce informs Spring Boot that a class will act like an Interceptor in case of any exceptions.
We can have any number of exception handlers to handle each exception.
Eg. For handling generic Exception and RunTimeException, we can have 2 exception handlers.
How To Deploy Microservices
Microservices are developed and deployed quickly and in most cases automatically as part of the CI/CD pipeline. Microservices could be deployed in Virtual Machines or Containers. The virtual machines or containers can be On-premise or in the cloud as well.
There are different deployment approaches available for Microservices. Some of the possible deployment approaches for microservices are mentioned below.
- Multiple service instances per host
- Service instance per host
- Service deployment platform
Also Check: How To Interview A Data Scientist
How Does Microservice Architecture Work
Ans: A microservice architecture has the following components:
- Clients Different users from various devices send requests.
- Identity Providers Authenticates user or clients identities and issues security tokens.
- API Gateway Handles client requests.
- Static Content Houses all the content of the system.
- Management Balances services on nodes and identifies failures.
- Service Discovery A guide to find the route of communication between microservices.
- Content Delivery Networks Distributed network of proxy servers and their data centers.
- Remote Service Enables the remote access information that resides on a network IT devices.
Why Are Container Used In Microservices
Containers are easiest and effective method to manage the microservice based application. It also helps you to develop and deploy individually. Docker also allows you to encapsulate your microservice in a container image along with its dependencies. Microservice can use these elements without additional efforts.
You May Like: What To Do Before An Interview
Common Mistakes Made While Transitioning To Microservices
Not only on development, but mistakes also lies on the process side often. And any experienced interviewer will have this under the queue for microservices interview questions. Some of the common mistakes are
- Often the developer fails to outline the current challenges.
- Rewriting the programs that are already existing.
- Responsibilities, timeline, and boundaries not clearly defined.
- Failing to implement and figure out the scope of automation from the very beginning.
What Is The Role Of Web Restful Apis In Microservices
Ans: A microservice architecture is based on a concept wherein all its services should be able to interact with each other to build a business functionality. So, to achieve this, each microservice must have an interface. This makes the web API a very important enabler of microservices. Being based on the open networking principles of the Web, RESTful APIs provide the most logical model for building interfaces between the various components of a microservice architecture.
Also Check: What To Say In A Sales Interview
What Is Coupling And Cohesion
The coupling can be considered to be the measurement of strength between the dependencies of a component. A good Microservices application design always consists of low coupling and high cohesion.
Following the previous question, often the interviewer will ask about cohesion. It is also another measurement unit. More like a degree to which the elements inside a module remain bonded together.
If you are appearing for microservices interview questions then it is imperative to keep in mind that an important key to design microservices is a composition of low coupling along with high cohesion. When loosely coupled, a service knows very little about other. This keeps the services intact. In high cohesion, it becomes possible to keep all the related logic in a service. Otherwise, the services will try to communicate with each other, impacting the overall performance.
Java Microservices Interview Questions On Inter
Here are some Interview Questions on Java OOPS Concepts you should practice.
These Java Microservices interview questions will help you prepare for your next Java developer interview.
Recommended Reading: Basic Phone Interview Screening Questions
How Would You Manage Application Configuration In Microservice Running In A Container
As container based deployment involves a single image per microservice, it is a bad idea to bundle the configuration along with the image.
This approach is not at all scalable because we might have multiple environments and also we might have to take care of geographically distributed deployments where we might have different configurations as well.
Also, when there are application and cron application as part of the same codebase, it might need to take additional care on production as it might have repercussions how the crons are architected.
To solve this, we can put all our configuration in a centralized config service which can be queried by the application for all its configurations at the runtime. Spring cloud is one of the example services which provides this facility.
It also helps to secure the information, as the configuration might have passwords or access to reports or database access controls. Only trusted parties should be allowed to access these details for security reasons.
What Is Spring Boot
Spring boot is a major topic under the umbrella of microservices interview questions.With the new functionalities that have been added, Spring got more complex. Whenever you are starting a new project it is mandatory to add a new build path or Maven dependencies. In short, you will need to do everything from scratch. Spring Boot is the solution that will help you to avoid all the code configurations. Explaining by a real time example is better while answering this common microservices interview question. If you are cooking a dish, the ingredients can be considered to be Spring. While Spring Boot is the completely cooked recipe.
You May Like: Big Data Analytics Interview Questions
What Should One Do So That Troubleshooting Becomes Easier In Microservice Based Architecture
This is a very interesting question. In monolith where HTTP Request waits for a response, the processing happens in memory and it makes sure that the transaction from all such modules work at its best and ensures that everything is done according to expectation. But it becomes challenging in the case of microservices because all services are running independently, their datastores can be independent, REST Apis can be deployed on different endpoints. Each service is doing a bit without knowing the context of other microservices.
In this case, we can use the following measures to make sure we are able to trace the errors easily.
How Will You Develop Microservices Using Java
Spring Boot along with Spring Cloud is a very good option to start building microservices using Java language. There are a lot of modules available in Spring Cloud that can provide boiler plate code for different design patterns of microservices, so Spring Cloud can really speed up the development process. Also, Spring boot provides out of the box support to embed a servlet container inside an executable jar , so that these jars can be run directly from the command line, eliminating the need of deploying war files into a servlet container.
You can also use Docker container to ship and deploy the entire executable package onto a cloud environment. Docker can also help eliminate “works on my machine” problem by providing logical separation for the runtime environment during the development phase. That way you can gain portability across on-premises and cloud environment.
Spring Boot makes it easy to create stand-alone, production-grade Spring-based applications that you can “just run” with an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss.
Main features of Spring Boot
Don’t Miss: Interview Questions For An Hr Manager
When Should One Consider Microservice Kind Of Architecture
There are two cases.
- If you already have a monolith application and it grows to an extent where there are problems in scaling or we are not able to reutilize the components/modules/services across different projects/platforms and there is a need to do so. As well as at the same time implementing new features is painful and more error-prone and it is difficult to scale further.
- For new applications where implementation has not started yet started, we can think of a business case to be efficiently implemented, which can be easily maintainable, testable and scalable in the future and might be used across other projects/products/platforms at the same time.
Why Microservices Are Better Than Monoliths
Microservices architecture is meant for developing large distributed systems that scale with safely. There are many benefits of microservices architecture over monoliths, for example:
As illustrated in the above example, a typical monolith eShop application is usually a big war file deployed in a single JVM process . Different components of a monolith communicate with each other using in-process communication like direct method invocation. One or more databases are shared among different components of a monolith application.
Read Also: Interview With The Vampire Streaming
What Is A Client Certificate
This is a type of digital certificate usually used by client systems for making a request that is authenticated by a remote server. It plays an important role in authentication designs that are mutual and provides strong assurance of the identity of a requester. However, you should have a fully configured back-end service for authenticating your client certificate.
Q24 What Do You Understand By Distributed Transaction
Distributed Transaction is any situation where a single event results in the mutation of two or more separate sources of data which cannot be committed atomically. In the world of microservices, it becomes even more complex as each service is a unit of work and most of the time multiple services have to work together to make a business successful.
Don’t Miss: How To Stop Being Nervous For An Interview
What Are Different Types Of Tests For Microservices
Ans:While working with microservices, testing becomes quite complex as there are multiple microservices working together. So, tests are divided into different levels.
- At the bottom level, we have technology-facing tests like- unit tests and performance tests. These are completely automated.
- At the middle level, we have tests for exploratory testing like the stress tests and usability tests.
- At the top level, we have acceptance tests that are few in number. These acceptance tests help stakeholders in understanding and verifying software features.
What Is The Use Of Container In Microservices
Ans:Containers are a good way to manage microservice based application to develop and deploy them individually. You can encapsulate your microservice in a container image along with its dependencies, which then can be used to roll on-demand instances of microservice without any additional efforts required.
You May Like: What To Bring To An Interview
What Are The Challenges That One Has To Face While Using Microservices
The challenges that one has to face while using microservices can be both functional and technical as given below: Functional Challenges:
- Require excessive planning to handle or manage operations overhead.
- Microservices are always interdependent. Therefore, they must communicate with each other.
- It is a heavily involved model because it is a distributed system.
- You need to be prepared for operations overhead if you are using Microservice architecture.
- To support heterogeneously distributed microservices, you need skilled professionals.
- It is difficult to automate because of the number of smaller components. For that reason, each component must be built, deployed, and monitored separately.
- It is difficult to manage configurations across different environments for all components.
- Challenges associated with deployment, debugging, and testing.
What Are Restful Web Services
Restful web services are web services that follow the REST architectural style. RESTful web services communicate with each other using CRUD operations. The REST architectural style emphasizes scalability and flexibility, which makes it compatible and frequently preferred for microservice architecture.
Recommended Reading: How To Relax Before An Interview
Q: What Is The Difference Between Monolithic Architecture Microservices Architecture And Service
A: Lets recognize that each of these styles is used to reach the same goal – to serve the application.
Monolithic architecture takes a holistic approach to program architecture. The entire application will exist as one piece, with various interdependent nodes. There are downstream consequences, however. If one aspect of the app’s functionality breaks, the entire application can belly up. This even makes activities like regular maintenance a challenge.
Service-oriented architecture means that services across programs and apps can communicate with each other. While you might employ microservices to help service a single app, service-oriented architecture has a wider scope. You would be thinking about SOA in the context of an entire enterprise.
Write The Fundamental Characteristics Of Microservice Design
- Based on Business Capabilities: Services are divided and organized around business capabilities.
- Products not projects: A product should belong to the team that handles it.
- Essential messaging frameworks: Rely on functional messaging frameworks: Eliminate centralized service buses by embracing the concept of decentralization.
- The development teams are accountable for all aspects of the software they produce.
- Microservices allow each service to manage its data separately.
- Automated infrastructure: These systems are complete and can be deployed independently.
- Design for failure: Increase the tolerance for failure of services by focusing on continuous monitoring of the applications.
Recommended Reading: How To Pass Coding Interview
Top Microservices Interview Questions
According to Gartner, microservices are the new application platform for cloud development. Microservices are deployed and managed independently, and once implemented inside containers they have very little interaction with the underlying OS. So, if you are planning to start your career in the Microservices and you wish to know the skills related to it, now is the right time to dive in, when the technology is in its nascent state. Hence, to help you prepare for your interviews, I have come up with Microservices Interview Questions and Answers blog.
In this Microservices interview questions blog, I have collected the most frequently asked questions by interviewers. These questions are collected after consulting with Microservices Certification Training experts.
Top Trending Technologies Article.
In case you have attended any Microservices interview in the recent past, do paste those interview questions in the comments section and well answer them ASAP. You can also comment below if you have any questions in your mind, which you might face in your Microservices interview.