A solution architect understands the needs and goals of an organization. Often, solution architects work for the organization as part of a team. All stakeholders, processes, teams, and organization management affect solution architect roles and their work. In this chapter, you will learn and understand the solution architect role and how solution architects fit within the organization. Following that, you will learn about the various types of solution architect and how they coexist in an organization. You may need a generalist solution architect and other specialist solution architects, depending on your project's complexity.
This chapter will provide details on the solution architect's responsibility and how it can impact an organization's success. A solution architect wears multiple hats and business executives heavily depend...
Types of solution architect role
In the previous chapter, you learned about solution architecture and how various stakeholders impact solution strategies. Now, let's understand the solution architect's role. The software solution can develop without a solution architect, depending on the project's size, but for a large project, it is a requirement to have a dedicated solution architect. The success and failure of the plan depends on the solution architect.
There is always a need for someone who can make architectural decisions for the team and drive team collaboration with stakeholders. Sometimes, it is required to have multiple solution architects in the team, depending on the size of the project.
The different types of solution architect are depicted in the following diagram, showing how they have different self-differentiating responsibilities in the organization:
As shown in the preceding diagram, an organization can have multiple types...
Enterprise solution architect
Do you ever think about how products launch in the information technology industry? This is where the enterprise solution role comes into the picture – they define best practices, culture, and suitable technologies. An enterprise architect works closely with stakeholders, subject matter experts, and management to identify organizational strategies for information technology and make sure that their knowledge aligns with company business rules.
Enterprise architects handle solution design across the organization; they create long-term plans and solutions with stockholders and leadership. One of the most important aspects is to finalize which technologies should be used by the company and making sure the company is using these technologies with consistency and integrity.
Another important aspect of the enterprise architect is defining the business architecture. In some organizations, you may see a business architect as the job title. Business architecture...
In general, this book explores the role of a solution architect in a more generic way. Still, you often see solution architects with different titles, as per the organization's structure, for example, enterprise solution architect, software architect, or technical architect. In this section, you will find some distinct attributes related to the various titles. However, the responsibilities of the solution architect overlap, depending on an organization's structure.
If you wish to know how a solution should be organized and delivered, then a solution architect plays an essential role in this context. A solution architect designs the overall system and how different systems integrate across different groups. A solution architect defines the expected outcome by working with business stakeholders and providing a clear understanding of the delivery objective on the part of the technical team.
The solution architect connects the dots across the organization and...
A technical architect can also be called application architect or software architect. A technical architect is responsible for software design and development. The technical architect works with the organization in terms of engineering and is more focused on defining technical details for software development by a team. They also work across the organization to understand how integration will work alongside other parts of the software module, which may be managed by other groups.
A technical architect can manage the details of API design and define API performance and scaling aspects. They make sure that the software is being developed consistently with the organization's standards and that they can easily integrate with another component.
The technical architect is a point of contact for any technical question related to the engineering team and will have the ability to troubleshoot the system as required. For a small software development project, you may not...
The cloud architect role may not have been in existence within the last decade, but as cloud adoption is increasing among enterprises this is one role that is in high demand in the current scenario. The cloud architect plans and designs the cloud environment and is responsible for deploying and managing the company's cloud computing strategies. Cloud architects provide breadth and depth for cloud services and can define the cloud-native design.
As you learned in the Solution architecture in the public cloud section in Chapter 1, The Meaning of Solution Architecture, using the cloud is now the current trend and it has become the norm for organizations to move onto a public cloud. Major cloud providers such as Amazon Web Services, Microsoft Azure, and Google Cloud Platform are helping customers to adopt cloud platforms at exponential speed with Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS) offerings. You will learn...
An architect evangelist is also known as a technology evangelist, and this is a comparatively new role. This is a new paradigm in marketing, especially when you want to increase the adoption of complex solution platforms. People will always want to hear from an expert who has in-depth knowledge and the ability to answer their queries so that they can make an informed decision. Here, architect evangelists come into the picture as they work as a subject matter expert in a competitive environment.
An architect evangelist can design the architecture based on customer requirements, which resolves the customer's pain points, and results in customer wins. The evangelist can be a trusted advisor for customers and partners. The architect evangelist has a deep understanding of architectural issues, concepts, and market trends to help secure platform adoption and show revenue growth through market capture.
To increase platform adoption for the overall target audience, the...
An infrastructure architect is a specialist architect role heavily focused on enterprise IT infrastructure design, security, and data center operation. They work closely with solution architects to make sure that the organization's infrastructure strategy is aligned with its overall business requirements, and they plan an appropriate resource capacity to fulfill this need by analyzing system requirements and the existing environment. They help reduce capital expenditure that could be utilized for operational spending to increase organizational efficiency and ROI.
The infrastructure architect is the backbone of the organization since they define and plan overall IT resources, from storage servers to individual workspaces. The infrastructure architect creates detailed plans for procuring and setting up IT infrastructures. They define software standards, software patching, and software update plan systems across an organization. The infrastructure architect...
Have you ever wondered how giant enterprises with multiple locations for offices or stores are connected? Here, the network architect comes into the picture, as they orchestrate an organization's network communication strategy and establish communication between IT resources, giving life to the IT infrastructure.
A network architect is responsible for designing the computer network, Local Area Network (LAN), Wide Area Network (WAN), internet, intranet, and other communication systems. They manage organizational information and network systems. They ensure low network latency and high network performance is available for users to increase their productivity. They establish secure connectivity between user workspaces and the internal network using Virtual Private Network (VPN) connectivity.
The network architect works closely with the infrastructure architect and sometimes you see this as an overlapping role to ensure all IT infrastructures are connected. They work...
Any solution design revolves around data, and it is mostly about storing, updating, and accessing it regardless of whether it is about customers or products. As the adoption of the internet is increasing, so is data and the need for data architects. In the last decade, data growth has risen exponentially – not long ago, gigabytes of data were considered to be big data, but now even 100 terabytes of data are deemed to be normal. You can even get a 1-terabyte computer hard disk.
Traditionally, data used to be stored in a structured relational way. Now, most data is in an unstructured format generated from resources such as social media, Internet of Things (IoT), and application logs. There is a need to store, process, and analyze data to get useful insights, where the data architect role comes into the picture.
The data architect defines a set of rules, policies, standards, and models that govern the type of data that's used and collected in the organization database...
Security should be the top priority for any organization. There are multiple instances when large and well-established organizations went out of business due to a security breach. Organizations not only lose customer trust but also experience legal complications due to security incidents. There are various industry compliance certifications, such as Organizational Security (SOC2), Finance Data (PCI), and HealthCare data (HIPPA), that are in place to ensure organization and customer data security, which a company needs to adhere to as per the nature of their application.
Looking at the critical nature of security, organizations need to research and design the most robust security architecture for their projects, and that's where a security architect is necessary. A security architect works closely with all groups and solution architects to make sure security is a high priority. A security architect's responsibilities include the following:
- Designing and deploying...
As a system gets complex, there are more chances of human error, which can lead to additional effort being needed, increased cost, and reduced quality. Automation is the best way to avoid failure and improve overall system efficiency. Now automation is not an optional choice—if you want to be agile and move faster, automation is a must.
Automation can be applied anywhere, whether it is testing and deploying applications, spinning up infrastructure, and even ensuring security. Automation plays a critical role, and a DevOps architect automates everything everywhere. DevOps is a combination of practices and tools that assist in delivering an application at a faster pace.
It allows the organization to serve its customers better and stay ahead of the competition. In DevOps, the development team and operational team work together in sync. For a software application, a DevOps architect defines continuous integration and continuous deployment(CI/CD). In CI, automated builds...
Understanding a solution architect's responsibilities
In the previous section, you learned about the role of a solution architect, the different types of architect in an organization, and how they coexist. In this section, you will learn more details about the responsibilities of a solution architect. A solution architect is a technical leader, and a customer-facing role, which comes with many responsibilities. The primary responsibility of a solution architect is to convert organization business visions into a technical solution and work as a liaison between businesses and technical stakeholders. A solution architect uses broad technology expertise and business experience to ensure the success of the solution's delivery.
A solution architect's responsibilities may differ slightly based on the nature of the organization. Often, in a consulting organization, a solution architect may be dedicated to a particular project and customer, while in a product-based organization...
Analyzing user requirements
Business requirements are at the center of any solution design and they are defined in raw terms when a project starts. It is necessary to engage a diverse set of groups from the beginning, which includes the technical capability to identify requirements. The business stakeholder defines requirements, and it warrants multiple adjustments when it comes to technological evolution. To save effort, it is necessary to engage solution architects while defining the user requirement document.
The solution architect designs the application, which may impact the overall business outcome. This makes requirement analysis a critical skill that a solution architect should possess. A good solution architect needs to have the skills of a business analyst and the ability to work with a diverse set of stakeholders.
Solution architects bring a broad range of business experience with them. They are not only technical experts but also have a good knowledge of the business domain...
Defining non-functional requirements
Non-functional requirements (NFRs) may not be visible to users and customers directly, but their absence may impact the overall user experience in a negative way and hamper the business. NFRs include critical aspects of the system, such as performance, latency, scalability, high availability, and disaster recovery. The most common NFRs are shown in the following diagram:
The preceding diagram shows the following NFRs for consideration:
- What will be the application load time for users?
- How can we handle network latency?
- Security and compliance:
- How can we secure an application from unauthorized access?
- How can we protect an application from malicious attacks?
- How can we meet local laws and audit requirements?
- How can we recover an application from an outage?
- How can we minimize recovery time in the event of an outage?
- How can we recover lost data?
- How can we ensure...
Engaging and working with stakeholders
Stakeholders could be anyone who has a direct or indirect interest in the project. As well as the customer and user, it may also be the development team, sales, marketing, infrastructure, network, support team, or the project funding group.
Stakeholders could be internal or external to the project. Internal stakeholders include the project team, sponsors, employees, and senior management. External stakeholders include customers, suppliers, vendors, partners, shareholders, auditors, and the government.
Often, stakeholders have a different understanding of the same business problem as per their context; for example, a developer may look at a business requirement from a coding perspective, while an auditor may look at it from a compliance and security perspective. A solution architect needs to work with all technical and non-technical stakeholders.
They possess excellent communication skills and negotiation techniques, which help them to find out the...
Handling various architecture constraints
Architecture constraints are one of the most challenging attributes of solution design. A solution architect needs to manage architectural constraints carefully and be able to negotiate between them to find an optimal solution. Often, these constraints depend on each other, and emphasizing one limitation can inflate others.
The most common constraints are as following:
As shown in the preceding diagram, solution design helps us understand the following attributes of an application:
- How much funding is available for solution implementation?
- What is the expected Return on Investment (ROI)?
- How closely should outcomes match functional and non-functional requirements?
- How can we ensure and track the quality of the solution?
- When should the output be delivered?
- Is there any flexibility regarding time?
- What is the exact expectation?
- How does the requirement...
Making technology selections
Technology selection is the key aspect and complexity of the solution architect's role. There is a broad range of technologies available, and a solution architect is required to identify the right ones for the solution. The solution architect needs to have a breadth and depth of technologies to make the right decision since the chosen technology stack can impact the overall delivery of the product.
Each problem can have multiple solutions and an available range of technologies. To make the right selection, a solution architect needs to keep functional requirements and NFRs in mind and define selection criteria while making a technology decision. The selected technology needs to consider different perspectives, whether the goal is the ability to integrate with other frameworks and APIs or to meeting performance requirements and security needs.
A solution architect should be able to choose the technology that not only satisfies current requirements but...
Developing a proof of concept and a prototype
Creating a prototype is probably the most fun part of being a solution architect. To choose a proven technology, a solution architect needs to develop a proof of concept (POC) in various technology stacks to analyze their fit for functional and non-functional requirements for the solution.
The idea of developing POC is to evaluate technology with a subset of critical functional implementations, which can help us to decide on a technology stack based on their capabilities. It has a short life cycle and is limited to being reviewed by experts within a team or organization. The solution design POC is when a solution architect is trying to figure out the building blocks of the solution.
After evaluating multiple platforms using POC, the solution architect may proceed with prototyping to a technology stack. A prototype is developed for demonstration purposes and given to the customer so that it can be used to secure funding. POCs and prototyping...
Designing solutions and staying through delivery
Solution architects work on solution design after understanding different aspects of functional requirements, NFRs, solution constraints, and technology selection. In an agile environment, this is an iterative approach where the requirements may change over time and need to accommodate the solution design.
The solution architect needs to design a future-proof solution, which should have strong building blocks and be flexible enough to adjust to changes. However, the solution architect needs to be careful about drastic changes to the requirements and apply a risk mitigation plan.
For future-proof design, you can take the example of a loosely coupled microservice architecture based on RESTful APIs. These architectures can be extendable to new requirements and have the ability to integrate easily. You will learn more about different architecture designs in Chapter 6, Solution Architecture Design Patterns.
The following flow-chart shows the...
Ensuring post-launch operability and maintenance
The solution architect plays an integral role after the solution's launch in respect of product operability. To handle the increasing user base and product utilization, a solution architect should know how to scale the product to meet demands and ensure high availability without impacting the user experience.
In unforeseen events such as outages, a solution architecture guides you to execute a disaster recovery plan for business process continuation. The solution architect satisfies organization Recovery Point Objectives (RPOs) and Recovery Point Objectives (RTOs). RPO is how much data loss an organization can tolerate in terms of the volume of data which is lost during the outage interval—for example, a loss of 15 minutes of data. RTO is how much time the system takes to get back up and running again. You will learn more about RTO and RPO in Chapter 12, DevOps and Solution Architecture Framework.
In the event of performance...
Working as a technology evangelist
An evangelist is the most exciting part of the solution architect role. The solution architect increases product and platform adoption by spreading the word through public forums. They write blogs about solution implementation and conduct workshops to showcase potential benefits and the use of technology platforms.
They build mass support for technologies and help establish a standard. A solution architect should be passionate about technology. They should be an excellent public speaker and possess excellent writing skills to perform the technology evangelist role.
Solution architects in an agile organization
In the last half decade, you may have seen the rapid adoption of the Agile methodology. In this competitive market, an organization needs to be proactive toward rapid changes and bring output to the customer a very fast. Fast innovation and release can only be possible if organizations are adapting quickly and respond to change faster, which means there must be flexibility built into every part of the organization and solution architecture.
To be successful in an agile environment, a solution architect needs an agile mindset and must adopt the rapid delivery method by continuously working with stakeholders to fulfill their needs. First, let's understand a little bit more about the Agile methodology. This is a vast topic, and in this section, we will take a high-level overview of it.
Why the Agile methodology?
Agile can create and respond to changes to make a profit in a fast-moving business environment. Its agility comes from balancing flexibility and stability. In today's competitive environment, where technology is moving fast (which results in a high probability of changes and customer demand), agile is the answer to coping with the situation and gaining a competitive edge.
Nowadays, all successful organizations are customer driven. They take frequent feedback from end users on their products and use that feedback to expand their user base. Agile helps gather results from the development team to continuously adapt feedback into software releases, and most of the time everything has a high priority. To deal with this situation, you need agile.
Executive management provides funding and looks for transparency. They demand productive output to increase ROI, and you want to win their confidence by showing incremental development of the product. To create transparency...
Applying any agile method requires a clear understanding of the four values stated in the Agile manifesto. Let's understand these values:
- Individuals and interactions over processes and tools: Processes and tools always help complete the project. Project stakeholders, who are a part of the project, know how to implement the plan and how to deliver the successful result with the help of tools for project delivery. But the primary responsibility for project delivery is the people and their collaboration.
- Working software over comprehensive documentation: Documentation is always an essential process for any product's development. In the past, many teams only worked to collect and create a repository for documents such as high-level design, low-level design, and design change, which later help achieve qualitative and quantitative descriptions of the product.
With the Agile methodology, you focus on the deliverable. Therefore, according to this manifesto, you need...
Agile process and terminology
Let's get familiar with the most common agile terms and how they bind together. Here, you will learn about the agile scrum process, which is widely adopted. The agile scrum process has a small sprint cycle of 1 to 3 weeks, depending on the project's stability, but the most common is a 2-week sprint cycle, which you can call a development cycle.
These sprints are development cycles where the team will analyze, develop, test, and deliver a working feature. The team takes an iterative approach and creates a working building block of the product as the project progresses with each sprint. Each requirement is written as a user story that keeps a customer persona in mind, and makes the requirement clearly visible.
The agile scrum team has varied roles. Let's understand the most common roles and how the solution architect collaborates with them:
- Scrum Team: This consists of the Product Owner, Scrum Master, and development team. Analysts, technical...
The sprint cycle includes multiple activities that are performed to manage development, which are often called scrum ceremonies. Those scrum ceremonies are as follows:
- Backlog grooming: Grooming is a time-box meeting in which the product owner, solution architect, and business connect to discuss backlog stories, prioritize them, and create a consensus for sprint deliverables.
- Sprint planning: In sprint planning, the Scrum Master facilitates groomed stories being assigned to the scrum team based on the team's capacity.
- Sprint Daily Standup: Daily Standup is a very efficient way of collaboration, where all team members meet in one place and all discuss their last day's workload, what plans they have for today, and whether they are facing any problems. This meeting is meant to be short and straightforward and around 15 minutes in length. Standup is the platform that the solution architect uses to collaborate with the development team.
- Sprint demonstration:...
Agile tools and terms
Let's learn about some agile tools that help drive team metrics and project progress:
- Planning poker: Planning poker is one of the most popular estimation techniques in Agile methodology, where the Scrum Master plays poker games to estimate user stories when a sprint starts. During this activity, each user story will be evaluated based on its complexity. Team members use comparative analysis to give story points for each user story, which helps the team understand how much effort is required to complete the user stories.
- Burndown chart: A burndown chart is used to monitor sprint progress and help the team understand how much work is pending. The Scrum Master and the team always follow the burndown chart to make sure there is no risk in the sprint and reuse that information to improve the estimation next time.
- Product backlog: The product backlog contains a collection of requirements in the form of user stories and epics. The product owner continuously updates...
Agile versus waterfall
Waterfall is one of the oldest and most traditional software development methodologies that organizations used to follow. In this section, you will learn about the difference between waterfall and agile and why organizations need to move over to agile. We are not going to look at the details of the waterfall process; instead, we will point out the key differences:
- Agile methodologies help change the mindset from the traditional method to an agile mindset. The motivation for this is to move from the waterfall method to agile methods in order to achieve maximum business value and win customer confidence. This makes agile an advocate for customer collaboration at each step and provides transparency. The waterfall method tends to be more project-and document-centric, where customers were involved at the end phase.
- The waterfall method is more helpful for the project when all requirements are unambiguous, and the sequence of their deliverables also known, which helps...
What comes into your mind when you think about the solution architect in an agile model? There are many myths, such as thinking that the solution architecture is a very complex activity, and with agile you will be asked to submit your design right away or in the next sprint cycle. Another myth is that the agile architecture will not be robust to such architecture design and development, that testing cannot be possible, and so on.
Agile architecture is about designing decoupled and extendable interfaces. A solution architect in an agile environment needs to follow an iterative re-architect concept by inspecting and adapting the approach. It's about choosing the right solution for enterprises, communicating well, taking continuous feedback, and modeling in an agile way. The development team needs a solid foundation and the ability to adapt to changing requirements; they need guidance and mentoring from a solution architecture.
The foundation of the agile architecture...
In this chapter, you learned how the solution architect fits into the organization and how different kinds of solution architect roles coexist. There are generalist solution architect roles such as enterprise solution architect, solution architect, technical architect, cloud architect, and architect evangelist.
The generalist solution architect has a broad knowledge of technology and may develop in-depth expertise in a particular area. The specialist solution architect dives deep in other required areas of the project. The specialist solution architect possesses in-depth knowledge of their area of expertise, with some of the most common specialist solution architect roles being network architect, data architect, security architect, infrastructure architect, and DevOps architect.
You learned about solution architect responsibilities in great detail. Solution architects wear multiple hats; they work with stakeholders across the organization and analyze functional requirements and...