I have the below question asked in the interview but could not able to find any straight answers to the below questions.
- What design pattern do we follow while creating the REST API in Spring boot application?
- Microservices uses which design pattern?
CodePudding user response:
for your question one, we're using the (MVC)
pattern to create a REST API
but in the REST API
we're not using View
instead we're using a JSON
responses, and also other patterns that may be used while building REST API
including Command Query Responsibility Segregation (CQRS)
pattern, its also worth to be mentioned that Microservices
also use this pattern which we mentioned now since the Microservices
uses an architectural style that involves building a large, complex application as a collection of small, independent services, The design pattern that is commonly used when building microservices
is the Command Query Responsibility Segregation (CQRS)
pattern because This pattern involves separating the responsibilities of reading
and writing
data into separate components which gives single responsibility
to the component as they already are.
CodePudding user response:
The questions that the interviewer has covered are fairly broad questions. Anyway, I believe that it is important to show your basic knowledge based on the Spring MVC pattern, and how the embedded Tomcat Servlet container in the Spring Boot operates. (So basically it is the main role of the Spring Boot Controller)
In the Spring MVC, you use various controllers to handle HTTP requests and create REST APIs, by adding spring-boot-starter-web dependency. This dependency includes some key libraries including the Spring MVC framework and the Tomcat servlet container. Then, you got two options either @Controller
or @RestController
, to create your own servlet for your web application.
Since the interviewer is asking about REST API design, I would prefer to use
@RestController
, because this annotation is capable to produce RESTful response entities.
As for the second question, I am prudent to answer it, because Microservice Architecture is a type of "Architecture Pattern", which is a more complicated and sophisticated backend structure for the business service. Overall, I believe that the Event-driven design pattern
is a good option as a fundamental one for implementing a successful MSA.
In the MSA, the event-driven design pattern
is useful for enabling communication between different microservices projects. Because microservices are designed to be small, independent, and loosely coupled, they often communicate with each other using asynchronous messages(a.k.a. events)
. By using an event-driven design pattern
, you can create a publish-subscribe model
of communication between microservices, which can make it easier to scale the system and add new microservices over time.
BUT don't forget that MSA contains various design patterns that are useful as well!