Types of Architecture¶
- Technological Architecture
- Enterprise/Corporate Architecture
- Solution Architecture
- Software Architecture
Technological Architecture¶
This type of architecture focuses on specific technologies used in the market. A technology architect has in-depth knowledge of a particular tool or technology and can generate value based on their expertise. They are well-versed in the workings of a particular technology, and are able to recommend and implement solutions that leverage that technology. Examples of technology architects include Elastic architects (for Kibana and Elastic Search), Java architects, SQL Server architects, SAP architects...
- Specialization in specific market technologies, has a great knowledge of a technology/tool.
- Generate value based on specialties;
- In-depth knowledge of the technology;
Enterprise Architecture¶
Enterprise architecture involves creating policies and rules that strategically impact the organization as a whole. In large companies with thousands of employees, the number of technologies that can be utilized may be endless. An enterprise architect brings solid governance to the infrastructure and technology that will be used, with a focus on evaluating costs that make sense for the company's growth. They evaluate licenses, assess new technologies, standardize technologies, plan large-scale implementations, and oversee core systems and migrations (such as from monolithic to microservices).
- Policies and rules that strategically impact the organization as a whole,
- The number of technologies that can be used can reach N, this architect brings solid governance regarding the infrastructure/technology that will be used with an evaluation of costs that make sense for the company to grow.
- Evaluation of licenses;
- Evaluation of possible new technologies;
- Standardization of technologies;
- Planning for large deployments (SAP, Salesforce,...)
- Core systems, migrations (Monolithic, Microservices, ...)
Solutions Architecture¶
Solution architecture sits at the intersection of business and software, translating business requirements into software solutions. Solution architects create architectural designs that map out how the software will function. They use tools like the C4 diagram, UML, and BPMN to analyze the commercial impact of technology choices, assess the company's context and team, and make informed decisions. For example, they may assess whether it makes sense for a company to switch from AWS to Google Cloud Platform, or whether migrating from Oracle to SQL or Postgres would be cost-effective. Solution architects take a short, medium, and long-term view of the software, and may be involved in pre-sales and sales processes to better understand the business and its needs. They also analyze the cost impact of implementing solutions, bringing predictability to the project.
- Between the business and software area, transforms business requirements into software solutions;
- Architectural designs of the software solution to reproduce how it will work;
- C4 diagram, UML, BPMN;
- Analyzes commercial impacts regarding a technology choice, analyzes the company's context and team to be able to make that decision (ex: if the company is using AWS, does it make sense to switch to Google just because it's the technology your team knows? Is there a financial advantage in this?, Oracle database, does it make sense to switch to SQL, Postgres,...?);
- Short, medium, long-term thinking;
- May participate in the pre-sales and sales process, usually accompanies the client to better understand the business;
- Analyzes the cost impacts for the business, how much does it cost to implement this CRM? brings predictability
- High-level vision (macro);
Software Architecture¶
Software architecture is a discipline of software engineering that is directly tied to the software development process. It has a significant impact on the organizational structure of a company, and involves forming teams and structuring software components. Software architects must consider how to develop the software in components that best meet the business objectives. They must also take into account any restrictions or limitations, such as budget constraints, team capabilities, or technological requirements. Software architecture is the fundamental organization of a system and its components, as well as the principles that guide its design and evolution. A software architect must build a software system with a long-term perspective, and must ensure that the software delivers value to the company. They focus on the micro-level details of design, patterns, tests, implementation, clean architecture, code reviews, and requirements.
- Discipline of software engineering, directly linked to the software development process;
- Directly affects the organizational structure of the company;
- Formation of teams, structure of software components;
- How can I develop this software in components? How can these components best meet business objectives? every business has constraints, so I have to adapt my components to these constraints (financial, team, technological, etc.).
- It is the fundamental organization of a system and its components, their relationships, their environment, as well as the principles that guide its design and evolution.
- Software must be built with long-term thinking.
- The role of the software architect is to make the software return value to the company.
- Micro vision (design, patterns, tests, implementations, clean architecture, code reviews, requirements,....)
Role of the Software Architect¶
- Translate business requirements into architectural patterns;
- Orchestrate developers and domain experts;
- Assist in decision-making in times of crisis;
- Reinforce good development practices.
- Have a deep understanding of architectural concepts and models;
It is common for us to want to solve a new problem in the same way we solved past ones. For example, if we always used a monolithic pattern, it is very likely that the next challenge will also be a monolithic application. The more the software architect understands architectural models, the greater their range of possibilities to understand and solve the challenge in the best possible way.
Why learn Software Architecture?¶
- Ability to navigate from the macro to the micro view of one or more software;
- Understand the various options we have to develop the same thing and choose the best solution for a given context;
- Think long-term about the project and its sustainability (Deadlines, People);
- Make decisions in a more cold and calculated way, thus avoiding being influenced by market "hypes";
- Dive into design patterns and development and their best practices;
- Have a clearer understanding of the impact that software has on the organization as a whole;
- Make decisions with more confidence.