anitsh / til

Today I Learn (til) - Github `Issues` used as daily learning management system for taking notes and storing resource links.
https://anitshrestha.com.np
MIT License
76 stars 11 forks source link

Software Architectures and Architects #439

Open anitsh opened 3 years ago

anitsh commented 3 years ago

The Difference Between Different Architect Roles

Technical Specialization : Software > Systems > Solutions > Enterprise Cross Domain Knowledge: Enterprise > Solutions > Systems > Software

The following schematic diagrams depicts the different layers in an organization–Technology, Application, Data, People, Process, and Business, and makes the focus area of the architect roles very clear:

image image image image image

Technical Architect or Software Architect

Technical architect is concerned with the core technology (hardware/software/network) used in an organization. A Security architect creates or tunes the security strategy used in applications to fit the organization's information security goals. An Information architect comes up with architectural solutions to make information available to/from applications in a way that facilitates the organization's business goals. These specific architectural roles are all concerned with their own systems and subsystems. So, each of these roles is a System architect role.

These architects help the Enterprise architect to understand the smaller picture of each of the business domain they are responsible for, which helps the Enterprise architect to get information that will aid him in formulating business and organizational strategies.

Technical architect is responsible for implementation of, and processes within, a specific application or suite of applications. The application in question may be bespoke of a customized of-the-shelf product. Should have deep knowledge of the product/application and will often be consulted by other architects as part of a larger solution.

Software Architects provide technical leadership for development teams. These architects usually have a more hands-on approach, defining best practice standards to follow. As this approach has to be focused, we usually only find specialized Technical Architects, such as Java Architect, Infrastructure Architect etc.

System Architect

A System architect usually has a higher technology focus and a lower strategy focus. It is a practice in some service-oriented software organizations to have a Solution architect, who combines the different systems to create a solution for a specific client. In such cases, the different architect roles are often combined into one, depending on the size of the organization, and the specific time and cost requirements of the project.

Solution Architect

A Solution architect typically straddles the middle position when it comes to strategy versus technology focus and organizational versus project scope. A Solution architect is responsible for designing a high level solution to a specific set of business requirements, within the framework laid down by the enterprise architecture team. This solution may span multiple applications.

Enterprise Architect

An Enterprise architect is responsible for strategic thinking, roadmaps, principles, and governance of the entire enterprise. Usually has a close relationship with the business, vendors, and senior IT management.

An Enterprise Architect handles the entire enterprise as his name implies. An Enterprise Architect's main interest is describing the company in terms of its business entities, its properties and the relations between them and the external environment. One of the principal concerns of Enterprise Architecture are the lifecycle of the applications and what technologies are used by which one. At the same time, they ensure that the company as a whole have integrity and consistency.

Review

Enterprise Architects aren't focused on a specific domain (some would say they cover everything, others might say they are so high level they don't cover any). Likewise, Solution Architects aren't focused on a specific domain; they work on actual projects with specific business goals and requirements. We'd expect a Solution Architect to have a broad understanding of multiple "subjects" but not necessarily deep understanding. System Other kinds of Architects, or Technical Architects (Data, Security, Infrastructure, etc) are different; they have a very deep understanding of a specific subject area and work at all levels, including contribution to the Enterprise Architecture, standards relating to their subject, and supporting specific projects where necessary. Software Architect (as the name suggests) focuses on software. In some ways a Software Architect is a subject specific architect as defined above (like an Infrastructure Architect). If you were going to embark on a major bespoke (custom) software development you'd want a Software Architect to lead that as the development of bespoke software is a specialized area.

Things become murky when a single person performs more than one architectural role - and this is quite common. I would guess that people's perceptions of what a specific kind of architectural role is become tainted by what they perceive a specific person (that they know or work with) did; for example you might work with someone who is called a Software Architect but they might also be performing the role of a Solution Architect.

Resource

anitsh commented 3 years ago

System Architecture vs Software Architecture

System Architecture is about how the components of a distributed system are placed across multiple machines. It focuses on the entire system. An example would be a e-commerce system containing a web front-end, a service layer, and a database.

We have two main systems architectures that we use today: Client-Server and Peer-To-Peer (P2P).

Software Architecture, it tells us about the logical organization of software components, that is, how they interact between them, your structures, how they can be independent of them, and so on. Focuses about components. It is at a lower level than the system architecture. Software Architecture is a type of System Architecture. Example: A component of a e-commerce system is the web front end.

A common keyword in literature when we talk about distributed architectures is architectural style. An architectural style is formulated in terms of components, it is the way in which these components are connected together and how data is exchanged between the components. Components are modular units with well-defined interfaces. In addition, they have characteristics of being replaceable and reusable. Connectors are communication links between modules that coordinate between components. Therefore, the idea behind distributed architectures is to have components presented in different ways, where the components can communicate with each other over a network. The use of different configurations of components and connectors leads us to four main architectural styles for distributed systems:

Resource