AWS Certification Training - Solutions Archit ...
- 94k Enrolled Learners
- Live Class
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.
In case you have attended any Microservices interview in the recent past, do paste those interview questions in the comments section and we’ll answer them ASAP. You can also comment below if you have any questions in your mind, which you might face in your Microservices interview.
|Independent Development||All microservices can be easily developed based on their individual functionality|
|Independent Deployment||Based on their services, they can be individually deployed in any application|
|Fault Isolation||Even if one service of the application does not work, the system still continues to function|
|Mixed Technology Stack||Different languages and technologies can be used to build different services of the same application|
|Granular Scaling||Individual components can scale as per need, there is no need to scale all components together|
Refer to the above diagram. Here, each hexagonal shape represents an individual service component. Similar to the working of bees, each agile team builds an individual service component with the available frameworks and the chosen technology stack. Just as in a beehive, each service component forms a strong microservice architecture to provide better scalability. Also, issues with each service component can be handled individually by the agile team with no or minimal impact on the entire application.
Fig 3: Features of Microservices – Microservices Interview Questions
Fig 4: Best Practices to Design Microservices – Microservices Interview Questions
A microservice architecture has the following components:
Fig 5: Architecture of Microservices – Microservices Interview Questions
|Pros of Microservice Architecture||Cons of Microservice Architecture|
|Freedom to use different technologies||Increases troubleshooting challenges|
|Each microservices focuses on single capability||Increases delay due to remote calls|
|Supports individual deployable units||Increased efforts for configuration and other operations|
|Allow frequent software releases||Difficult to maintain transaction safety|
|Ensures security of each service||Tough to track data across various boundaries|
|Mulitple services are parallelly developed and deployed||Difficult to code between services|
Fig 6: Comparison Between Monolithic SOA & Microservices – Microservices Interview Questions
Developing a number of smaller microservices sounds easy, but the challenges often faced while developing them are as follows.
The key differences between SOA and microservices are as follows:
|Follows “share-as-much-as-possible” architecture approach||Follows “share-as-little-as-possible” architecture approach|
|Importance is on business functionality reuse||Importance is on the concept of “bounded context”|
|They have common governance and standards||They focus on people collaboration and freedom of other options|
|Uses Enterprise Service bus (ESB) for communication||Simple messaging system|
|They support multiple message protocols||They use lightweight protocols such as HTTP/REST etc.|
|Multi-threaded with more overheads to handle I/O||Single-threaded usually with the use of Event Loop features for non-locking I/O handling|
|Maximizes application service reusability||Focuses on decoupling|
|Traditional Relational Databases are more often used||Modern Relational Databases are more often used|
|A systematic change requires modifying the monolith||A systematic change is to create a new service|
|DevOps / Continuous Delivery is becoming popular, but not yet mainstream||Strong focus on DevOps / Continuous Delivery|
You can list down the characteristics of microservices as follows:
Fig 7: Characteristics of Microservices – Microservices Interview Questions
You may go through this recording of Microservices Interview Questions and Answers where our instructor has explained the topics in a detailed manner with examples that will help you to understand this concept better.
Fig 8: Principles of DDD – Microservices Interview Questions
Fig 9: Factors Why we need DDD – Microservices Interview Questions
If you have to define the Ubiquitous Language (UL), then it is a common language used by developers and users of a specific domain through which the domain can be explained easily.
The ubiquitous language has to be crystal clear so that it brings all the team members on the same page and also translates in such a way that a machine can understand.
The degree to which the elements inside a module belong together is said to be cohesion.
The measure of the strength of the dependencies between components is said to be coupling. A good design is always said to have High Cohesion and Low Coupling.
Representational State Transfer (REST)/RESTful web services are an architectural style to help computer systems communicate over the internet. This makes microservices easier to understand and implement.
Microservices can be implemented with or without RESTful APIs, but it’s always easier to build loosely coupled microservices using RESTful APIs.
It’s a knows fact that spring has become more and more complex as new functionalities have been added. If you have to start a new spring project, then you have to add build path or add maven dependencies, configure application server, add spring configuration. So everything has to be done from scratch.
Spring Boot is the solution to this problem. Using spring boot you can avoid all the boilerplate code and configurations. So basically consider yourself as if you’re baking a cake spring is like the ingredients that are required to make the cake and spring boot is the complete cake in your hand.
Fig 10: Factors of Spring Boot – Microservices Interview Questions
Spring Boot actuator provides restful web services to access the current state of running an application in the production environment. With the help of actuator, you can check various metrics and monitor your application.
According to the official website of Spring Cloud, Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, leadership election, distributed sessions, cluster state).
While developing distributed microservices with Spring Boot we face few issues which are solved by Spring Cloud.
WebMvcTest annotation is used for unit testing Spring MVC Applications in cases where the test objective is to just focus on Spring MVC Components. In the snapshot shown above, we want to launch only the ToTestController. All other controllers and mappings will not be launched when this unit test is executed.
Though you can implement microservices in multiple ways, REST over HTTP is a way to implement Microservices. REST is also used in other applications such as web apps, API design, and MVC applications to serve business data.
Microservices is an architecture wherein all the components of the system are put into individual components, which can be built, deployed, and scaled individually. There are certain principles and best practices of Microservices that help in building a resilient application.
In a nutshell, you can say that REST is a medium to build Microservices.
While working with microservices, testing becomes quite complex as there are multiple microservices working together. So, tests are divided into different levels.
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.
Idempotence is the property of being able to do something twice in such a way that the end result will remain the same i.e. as if it had been done once only.
Usage: Idempotence is used at the remote service, or data source so that, when it receives the instruction more than once, it only processes the instruction once.
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD’s strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their inter-relationships.
Two-factor authentication enables the second level of authentication to an account log-in process.
Fig11: Representation of Two Factor Authentication – Microservices Interview Questions
So suppose a user has to enter only username and password, then that’s considered a single-factor authentication.
The three types of credentials are:
Fig 12: Types of Credentials of Two Factor Authentication – Microservices Interview Questions
A type of digital certificate that is used by client systems to make authenticated requests to a remote server is known as the client certificate. Client certificates play a very important role in many mutual authentication designs, providing strong assurances of a requester’s identity.
PACT is an open source tool to allow testing interactions between service providers and consumers in isolation against the contract made so that the reliability of Microservices integration increases.
OAuth stands for open authorization protocol. This allows accessing the resources of the resource owner by enabling the client applications on HTTP services such as third-party providers Facebook, GitHub, etc. So with this, you can share resources stored on one site with another site without using their credentials.
“Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.” – Mel Conway
Fig 13: Representation of Conway’s Law – Microservices Interview Questions
This law basically tries to convey the fact that, in order for a software module to function, the complete team should communicate well. Therefore the structure of a system reflects the social boundaries of the organization(s) that produced it.
According to Martin Flower, contract test is a test at the boundary of an external service which verifies that it meets the contract expected by a consuming service.
Also, contract testing does not test the behavior of the service in depth. Rather, it tests that the inputs & outputs of service calls contain required attributes and the response latency, throughput is within allowed limits.
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
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.
Fig 15: Representation of Containers and How they are used in Microservices – Microservices Interview Questions
DRY stands for Don’t Repeat Yourself. It basically promotes the concept of reusing the code. This results in developing and sharing the libraries which in turn result in tight coupling.
This is basically a pattern for developing Microservices so that they can be used by external systems. When we work on microservices, there is a particular provider who builds it and there are one or more consumers who use Microservice.
Generally, providers specify the interfaces in an XML document. But in Consumer Driven Contract, each consumer of service conveys the interface expected from the Provider.
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.
Semantic monitoring, also known as synthetic monitoring combines automated tests with monitoring the application in order to detect business failing factors.
Cross-functional testing is a verification of non-functional requirements, i.e. those requirements which cannot be implemented like a normal feature.
Non-Deterministic Tests (NDT) are basically unreliable tests. So, sometimes it may happen that they pass and obviously sometimes they may also fail. As and when they fail, they are made to re-run to pass.
Some ways to remove non-determinism from tests are as follows:
For example, for an empty stack, you can create a stub that just returns true for empty() method. So, this does not care whether there is an element in the stack or not.
For example, for a Customer object, you can mock it by setting name and age. You can set age as 12 and then test for isAdult() method that will return true for age greater than 18. So, your Mock Customer object works for the specified condition.
Mike Cohn provided a model called Test Pyramid. This describes the kind of automated tests required for software development.
Fig 16: Mike Cohn’s Test Pyramid – Microservices Interview Questions
As per pyramid, the number of tests at first layer should be highest. At service layer, the number of tests should be less than at the unit test level, but more than at the end-to-end level.
Docker provides a container environment that can be used to host any application. In this, the software application and the dependencies which support it are tightly-packaged together.
So, this packaged product is called a Container and since it is done by Docker, it is called Docker container!
Canary Releasing is a technique to reduce the risk of introducing a new software version in production. This is done by slowly rolling out the change to a small subset of users before giving it out to the entire infrastructure, i.e. making it available to everybody.
Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits changes to version control. This encourages developers to share code and unit tests by merging the changes into a shared version control repository after every small task completion.
Continuous monitoring gets into the depth of monitoring coverage, from in-browser front-end performance metrics, through application performance, and down to host virtualized infrastructure metrics.
An architect in microservices architecture plays the following roles:
As we know that each Microservice owning its own database is an independently deployable program unit, this, in turn, lets us create a State Machine out of it. So, we can specify different states and events for a particular microservice.
For Example, we can define an Order microservice. An Order can have different states. The transitions of Order states can be independent events in the Order microservice.
Reactive Extensions also are known as Rx. It is a design approach in which we collect results by calling multiple services and then compile a combined response. These calls can be synchronous or asynchronous, blocking or non-blocking. Rx is a very popular tool in distributed systems which works opposite to legacy flows.
Hope these Microservices Interview Questions would help you in your Microservices Architect Interviews.
If you wish to learn Microservices and build your own applications, then check out our Microservices Architecture Training which comes with instructor-led live training and real-life project experience. This training will help you understand Microservices in depth and help you achieve mastery over the subject.