Microservices Interview
Questions & Answers
1) What is Microservices?
Ans: It is also
known as the microservice architecture - is an architectural style that
structures an application as a collection of services. That means they
can be built by one or more small services and deploy.
2) What are the advantages &
disadvantages of Microservices?
Ans: Advantages:
a) Independent Development: Each functionality you can develop a separate
service and you can manage it and control it totally. You can deploy
independently each service so no need to deploy entire architecture. If you
have change in particular service then can change it and deploy only that service.
b) Fault Tolerant/Isolation: If particular microservices goes down it
does not affect the functionality of other services. Example: I have 50 services/application
and that services working parallelly. If one of the applications fails means that
can application not dependent on other services. If we take Monolithic architecture,
if one service fails means that entire application will break down but in microservices
not like that.
c) Mixed Technology Stack: We have different microservices and independent
approach towards to the development. You can go head and implement those
technology. It means suppose one service can implement based on java or other
services can be implement based on .Net.
d) Scalability & Productivity: We can implement the small components in
Microservices architecture; it is easier to development teams can be scale up
or scale down by following requirement specific.
Disadvantages:
a) Communication between services is complex: Since everything is now an independent
service, you have to carefully handle requests traveling between your modules.
b) More services equals more resources: Multiple databases and transaction management
can be painful.
3) What are the features of Microservices?
Ans:
a) Decoupling:
Your application can be easily decoupled or rather separated to have individual
functionality. It means easily developed, maintainability and deployment.
b) Continuous Deliver: You can release frequently of your
application and system can continuously updated and modify.
c) Responsibility: Every domain or every project is treated as
product that means team will take a responsibility of that product then they
will bring it live and tested.
d) Decentralized: Microservices architecture individual
component have individual databases. It embraces the concept of decentralized
data management. Microservices
prefer letting each service manage its own database, either different instances
of the same database technology, or entirely different database systems.
e) Agility:
We can go easily build the application and also discard them if they are not
needed because since following the decentralized data management.
4) What are the characteristics of
the microservices?
Ans:
a) Organized on Business Capabilities: Splitting up into services organized around business capability.
b) Smart endpoints and dumb pipes: You have different applications that requires decentralized and that has to be a way of communications basically.
c) Products not projects: Most application development efforts that we
see use a project model: where the aim is to deliver some piece of software
which is then considered to be completed. On completion the software is handed
over to a maintenance organization and the project team that built it is
disbanded..
d) Decentralized Governance
e) Decentralized Data Management: Decentralization of data management presents
in a number of different ways.
f) Infrastructure Automation: Many of the products or systems being build
with microservices are being built by teams with extensive of CD and CI.
g) Design for failure:
5) What are the best practice to
design microservices?
Ans:
a) Separate data storage for each microservices.
b) Keep code at a similar level of maturity
c) Separate build for each microservice.
d) Deploy into containers
e) Treat servers as stateless
f) Fast delivery
6) What is Domain Driven Design (DDD)?
Ans: It is an
approach. That helps to collaborate all the teams together and also easy to
creation of complex applications. It connects the related pieces of the
software into an ever-evolving model.
a) It focuses of the core domain and domain logic
b) Find complex designs on models of the domain
c) Constantly collaborate with domain experts to
improve the application model and to resolve any domain-related issues.
7) Why there is a need of DDD?
Ans: Mapping
to domain, reduce complexity, Testability, Maintainability, Context focused and
ubiquitous language (It is used by all team members to connect all the
activities of the team with the software). DDD design patterns grouped as
strategic design patterns and tactical design patterns of DDD.
Context: The setting in which a word or statement
appears that determines its meaning. Statements about a model can only be
understood in a context.
Model: A system of abstractions that describes
selected aspects of a domain and can be used to solve problems related
to that domain.
Ubiquitous
Language: A language structured around
the domain model and used by all team members to connect all the
activities of the team with the software.
Bounded
Context: A description of a boundary
(typically a subsystem, or the work of a specific team) within which a
particular model is defined and applicable. 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 interrelationships.
CQRS: CQRS stands for Command Query Responsibility Segregation. At its heart is the notion that you can use a different
model to update information than the model you use to read information. For
some situations, this separation can be valuable, but beware that for most
systems CQRS adds risky complexity.
8) How does microservice
architecture work?
Ans: The
main idea behind a microservice architecture is that applications are simpler to build and maintain
when broken down into smaller pieces that work seamlessly together.
These modules communicate with each other through simple, universally
accessible application programming interfaces (APIs).
9) What are the pros and cons of
Microservices architecture?
Ans:
Pros of Microservices architecture |
Cons of Microservices architecture |
Each of use different technologies |
Increase troubleshooting challenges |
Each microservices focuses on single
business capability |
Increase delay due to remote calls |
Support individual deployable units |
Increase efforts for configuration and other
operations |
Allows frequent software releases |
Difficulty to maintain transaction safety |
Ensure security of each service |
Tough to track data across various service
boundaries |
Multiple services are parallelly developed
and deployed |
Difficult to move code between services. |
10) What is difference between
Monolithic, SOA and Microservice architecture?
Ans:
Monolithic: It is an ancient word referring to a
huge single block of stone. In software engineering, a monolithic pattern
refers to a single indivisible unit. The concept of monolithic software lies in
different components of an application being combined into a single program on
a single platform. Usually, a monolithic app consists of a database,
client-side user interface, and server-side application.
SOA:
Service-oriented architecture is
essentially a collection of services. These services communicate with each
other. The communication can involve either simple data passing or two or more
services coordinating some activity.
Microservices:aka microservice
architecture, is an architectural style that structures an application as
a collection of small autonomous services modeled around a business domain.
Add caption |
11) What are the key differences between
SOA and Microservices architecture?
Ans:
SOA |
Microservices Architecture |
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 |
12) What are the challenges with
Microservice architecture?
Ans:
a) Inter Service Communication: Microservices
will rely on each other and they will have to communicate. A common
communication channel needs to be framed using HTTP/ESB etc.
b) Automating the components:
c) Configuration Management: Configuring these
many microservices and having clear architecture for it can be a problem.
d) Debugging & Monitoring: We have fault isolation,
if some application fails it does not affect working of any other application that
also means that continuously monitoring these applications.
e) Cyclic Dependencies: Dependency management
different across different services and their functionality is very important
and cyclic dependencies can be a headache.
f) Distributed logging: Different services will
have its own logging mechanism, resulting GBs of distributed unstructured data.
13) What is Cohesion?
Ans: Cohesion
refers to the degree to which the elements inside a module being together. Good
design has High Cohesion and Low Coupling. Coupling (Inter-Module Concept) refers
to the interdependencies between modules, while cohesion (Intra-Module
Concept) describes how related the functions within a single module are.
14) What are different types of Test
for Microservices?
Ans: Unit
Testing, Exploratory Test, Acceptance Test and Performance testing
15) What is Conway’s Law?
Ans: Conway's
Law applies to
modular software systems and states that: "Any organization that designs a
system (defined more broadly here than just information systems) will
inevitably produce a design whose structure is a copy of the organization's
communication structure".
16) What is End to End Microservices
testing?
Ans:
Microservices architecture is built with multiple smaller parts that are choreographed
dynamically, end-to-end tests provide value by adding coverage of the gaps
between the services.
17) What is the use of Container in
Microservices?
Ans: You can
encapsulate your microservice in a container image along with its dependencies,
which then can be used to roll on demand instances of microservices without any
additional effort. It uses modularity. In single container have code libraries,
microservices and database. It means your application works independently.
18) What is DRY in Microservices
architecture?
Ans: DRY
stands for Don’t Repeat Yourself. It promotes concept of code reusability. Due
to which people develop libraries and share these libraries. This sharing can
result in tight coupling.
19) What is a Consumer Driven
Contract (CDC)?
Ans: CDC is
a pattern for developing microservices to be used by external systems. In a
microservice, there is a provider that builds it and there are one or more
consumers that use the microservice.
General
approach is for provider to specify its interface in an XML like document. But
in
CDC, each consumer
of service provides the interface it expects from provider. In this way, a
Provider can never introduce a breaking change if it keeps adhering to the CDC.
20) What is Reactive Extensions in
microservices?
Ans: Reactive
Extensions is a design approach in which we collect results by calling multiple
services and then compile a combined response.
No comments:
Post a Comment