I am starting a series on the job of the solution architect. In the first chapter we are setting up the scene and find out what are the types of architects and what is special about Solution Architects in particular.
In order to have some context for the article, let's consider a sample system.
First of all, we have some client facing apps: a web site, a mobile application, maybe a desktop client(marked as yellow rectangles). Those apps should talk to some sort of backend, deployed to a cloud or a platform on premise. There we have API Gateway, which provides balancing, requests proxy, authentication/authorization etc. For the latter, we need some SSO as well.
After the the gateway, we have a layer of microservices. Maybe we have several clusters(i.e. Kubernetes) of those services(depicted with green).
Those services should store the data in the databases(violet). They can use different paradigms, like relation databases or NoSQL. Alongside we have the binary data to store in some buckets: images, videos, etc. This is the system that works with user data.
But business also wants to interpret and analyze the data to drive the sales or get the insights about clients behavior. The user data should land into some big data storage, where it can be used for analytics, reporting and business intelligence.
Also, we might want to use some Machine Learning to help the analysis. And there are internal systems which handle hiring, accounting and other processes. Of course, there is monitoring, logs, technical audit, message queues etc.
Outside of the cloud or data center we also have 3rd party systems which provide some additional value, like Google Analytics, or media process, or external data sources etc.
Types of Architects
The industry(as far as I know) distinguishes the following types of architects:
- Application Architect
- System Architect
- Data Architect
- Solution Architect
- Enterprise Architect
Let's see what every one of them do.
Application Architect's responsibility is a single application, be it a web app, a mobile app or a single backend service. This role understands how to build an app from scratch, how to split it into different modules, how to deploy it. Say, if we have a backend service, the app architect will decide should we use Clean Architecture, or go with Hexagonal, or adhere to layered approach etc. the responsibility of application architect also includes an integration with other applications through Kafka/REST API/etc.
When we speak about deployment pipelines, reliability and infrastructure we think about a Site Reliability Engineer or SRE. In some places we call it a System Engineer. You can think about System Engineer for reliability as kinda of a developer for programming. System architects design what and how the System Engineers will make. The responsibility of a System Architect is to properly design a system which allow to efficiently build and deploy the software both to the test environments and to production. The role will decide how to manage the cloud, the container or VMs clusters, how they will be monitored and accessed. The role will also work on the networks, Virtual Private Clouds, Load Balancing etc.
In the data world we have Machine Learning engineers, Data engineers and at the same time we have Data Architects, who design how all of this should work together. It means designing the data storage and understanding how to handle the data flows, which the engineers will later work on. Data Architects also design data processing: will it be happening in batch mode or realtime, do we need data streaming etc.
Typical situation Data Architects works with is the following:
We have some data sources like the databases with user data. Next the Data Architects decide how we read, transform and load that data. It happens this data should be enriched using some external systems. Then this data is stored somewhere, where it is easy to read for reporting and analytics. This system provides an ability to make business decisions so that business continues growing.
We learned about application, system and data architects. What do Solution Architects do? They design the system as a whole. For example, the business requests something new, like a mobile-first online banking, who do I do that? Solution Architect is a technical person who communicates with the business, understands what should be done and convert it into a working system. That means the architect will create some set of documents which will allow for the team to actually build the solution.
Unfortunately it is impossible to have a deep expertise in every and each aspect of the solution development. Typically Solution Architect has a very good understanding of couple of technology domains, say backend services with Java and Spring, or Web Development, or mobile development. At the same time SA has an overall understanding of other domains, like data bases, etc. Of course, there are aspects the SA knows little about. So how the Solution Architect still does his/her job?
Naturally Solution Architect involves other architects and lead developers for collaboration. The role of SA is to coordinate and combine the effort of the design team to ensure the system at design will fulfill it's business purpose through adhering to requirements. How that happens I will be speaking in the next chapter.
If you need a personal consultation on a solution design or architecture for your project itself I am available for it.
Don't forget to smile alright! 🤩
Also, if you liked the article, don't forget to Subscribe to get notified once a new article is published. Sharing the article in your social networks are always welcome as well.