94
CHAPTER 5 | Designing and Developing Multi-Container and Microservice-Based .NET Applications
to consume. It should also be able to integrate its microservices or external applications
asynchronously, so that approach will help resiliency of the microservices in the case of partial failures.
The application will consist of these types of components:
•
Presentation components. These components are responsible for handling the UI and
consuming remote services.
•
Domain or business logic.
This component is the a
pplication’s domain logic.
•
Database access logic. This component consists of data access components responsible for
accessing databases (SQL or NoSQL).
•
Application integration logic. This component
includes a messaging channel, based on message
brokers.
The application will require high scalability, while allowing its vertical
subsystems to scale out
autonomously, because certain subsystems will require more scalability than others.
The application must be able to be deployed in multiple infrastructure environments (multiple public
clouds and on-premises) and ideally should be cross-platform, able to move from Linux to Windows
(or vice versa) easily.
Development team context
We also assume the following about the development process for the application:
•
You have multiple dev teams focusing on different business areas of the application.
•
New team members
must become productive quickly, and the application must be easy to
understand and modify.
•
The application will have a long-term evolution and ever-changing business rules.
•
You need good long-term maintainability, which means having agility when implementing new
changes in the future while being able to update multiple subsystems
with minimum impact on
the other subsystems.
•
You want to practice continuous integration and continuous deployment of the application.
•
You want to take advantage of emerging technologies (frameworks, programming languages,
etc.) while evolving the application. You do not want to make full migrations
of the application
when moving to new technologies, because that would result in high costs and impact the
predictability and stability of the application.
Dostları ilə paylaş: