In the design of this level, you can find answers to questions like the following:
- Is the system going to use the multilayer design?
- Is it a monolith or does it use microservices?
- What are subsystems, and how do they communicate using SOAP, REST, or AMQP?
- Is there any interaction with third-party systems? How do they communicate?
This level of design is fundamental and, most of the time, you do the architectural design up-front and, once it is done, you don't change it unless there is something fundamentally wrong or if the implementation of requirement changes would be impossible without a redesign at this level. You write the design of this level in design documents because figuring out the architecture level design by going through the source code is often a daunting experience and impossible when there is a significant amount of code built around that architecture.