I’m lucky enough to currently work on a large microservices-based project as a solution architect. I’m responsible for designing different architecture views, each targeting very different audiences, hence different preoccupations:
The application view dealing with modules and data streams between them (targeting product stakeholders and developers)
The software view (design patterns, database design rules, choice of programming languages, libraries…) that developers should rely upon;
The infrastructure view (middleware, databases, network connections, storage, operations…) providing useful information for integrators and DevOps engineers;
The sizing view dealing with performance;
The security view, which is mainly transversal.