Adjusting the architecture
While for most of this book we've been talking about system design, which is the basic function of an architect, it is most likely that the bulk of their day-to-day job will be more focused on redesigns.
This is always an endless task, as working software systems are always under revision and expansion. Some of the reasons why it may be necessary to adjust the architecture of a system are as follows:
- To provide certain features or characteristics previously not available – for example, adding an event-driven system to run asynchronous tasks, allowing us to avoid the request-response pattern that was previously all that was available.
- Because there are bottlenecks or limitations with the current architecture. For example, only a single database is present in the system and there's a limit on the number of queries that can run.
- As systems grow, it may be necessary to divide parts to allow better control over them...