- How does the request reach the backend application?
- What kind of components are involved and how is a response generated?
- Describe an arbitrary REST API endpoint.
- How do you define the packages?
- Rest Controller, Service, Repository, Dao
- What kind of HTTP methods would you implement?
i. Unit Tests 3. Integration Tests 4. End-to-end tests 5. What kind of classes would you test with which kind of test? v. What are the benefits of each kind of tests? vi. Experience with TDD/BDD in any project?
- What is your personal choice?
- Create a draft of the classes involved in such an endpoint.
- How could the underlying database model look like?
- What kind of things would you test in such an environment?
- How many Unit/Integration/End-to-end tests would you write?
-
What are the pros
- Fast and continuous improvements i. Versatile: different tech stacks
- Continuous Delivery iii. Resilience
- Scalability
- Faster time to market
-
Cons
- How do you slice micro-services?
- System integration tests are more difficult
- Management of too many micro-services is difficult
- Architecture is hard to do right
-
Ways of communication between micro-services?
- APIs, remote procedure calls, event bus
-
How could the data flow look like, starting with the HTTP request?
Let's dive in deeper into the backend, assuming there is Kubernetes cluster or NGINX with a Spring Boot application:
- Describe some pros/cons of a micro-service architecture.