Introduction
- It's important to identify the requirements and structure of an application before building it
- Monoliths, microservices, trade-offs
Design Considerations
- While working on context discovery, it's important to identify the necessary functionalities of the application and the available resources that can enable its buildout
- Stakeholders: Understand who requires and sponsors the application
- Functionalities: What all functionalities are necessary for the application?
- End Users: Who is this application/tool for?
- I/O Process: Understand how the input and output flow works. Is the output depenedent on input given by the user? How does the output present itself?
- Engineering Teams: Which team is skilled enough to build the application and implement the project?
- While talking about the available resources, it's a good practice to list out the following: the number of people who can work on this/ability to hire contractors, financial resources, time frames, and internal knowledge (any particular skills/langauges that need to be known beforehand)
Monoliths vs Microservices
- The goal of both architectures is to provide value to customers and make it easy to adjust and extend the existing functionalities
- Both architectures have 3 (three) main layers:
- UI (User Interface Layer) – It handles all the HTTP requests triggered by the users and returns a response
- Business Logic Layer – The main component that represents a collection of functionalities that provide a service to the customer
- Data Layer – Accessing and storing objects through our application execution by using a database
Monolithic vs Microservices
Trade-offs
Understanding more aspects that help us decide which architecture we must choose:
Trade-offs