This book is your first step in the solution architecture world. Throughout this book, you will learn all about solution architecture, and how to become a solution architect. In this first chapter, let's understand the meaning of solution architecture. Solution architecture is the building blocks of solution development in the organization. It helps to create a successful solution in a complex organization, where product development has dependencies on multiple groups.
For the success of application development, defining solution architecture should be the first step, which then lays out the foundations and the robust building block of implementation. Solution architecture not only considers the requirements of the business, but also handles critical, non-functional requirements such as scalability, high availability, maintainability, performance, security, and so on.
A solution architect is a person who is responsible for designing solution architecture by collaborating across stakeholders. The solution architect analyzes the functional requirement and defines a non-functional requirement in order to cover all aspects of the solution and avoid any surprises. Each solution has multiple constraints such as cost, budget, timeline, regulatory, and so on, and the solution architect considers them, while also creating the design and making technology selection.
The solution architect develops a proof of concept and prototype in order to evaluate various technology platforms, and then chooses the best strategy for solution implementation. They mentor the team throughout solution development and provide post-launch guidance to maintain and scale the final product.
In this chapter, you will learn about the following topics:
- What is solution architecture?
- Evolution for solution architecture
- Understanding the importance of solution architecture
- The benefits of solution architecture
- The workings of solution architecture in the public cloud
If you ask around, there may be 10 different answers for the definition of solution architecture, and they may all be correct, as per their organization's structure. Each organization may see solution architecture from a different perspective, based on their business needs, organizational hierarchy, and solution complexity.
In a nutshell, solution architecture defines and foresees multiple aspects of a business solution, at both the strategic and tactical perspectives. Solution architecture is not just about a software solution. It covers all aspects of a system, which will be included but not limited to, system infrastructure, networking, security, compliance requirement, system operation, cost, and reliability. As you can see, the following diagram provides a different aspect that a solution architect can address:
As shown in the preceding diagram, a good solution architect addresses the most common aspects of the solution in an organization:
- Globally distributed teams: In this age of globalization, almost every product has users distributed across the globe, and stakeholder's groups to take care of customer needs. Often, the software development team has an onshore–offshore model, where a team works across different time zones to increase productivity and optimize project cost. Solution design needs to consider a globally distributed team structure.
- Global compliance requirement: When you are deploying your solution globally, each country and region has its laws and compliance regime, which your solution needs to adhere. Some examples are as follows:
- The Federal Risk and Authorization Management Program (FedRAMP) and Department of Defense Cloud Computing Security Requirements Guide (DoD SRG) for the USA
- The General Data Protection Regulation (GDPR) for Europe
- The Information Security Registered Assessors Program (IRAP) for Australia
- The Center for Financial Industry Information Systems (FISC) for Japan
- The Multi-Tier Cloud Security (MTCS) standard for Singapore
- The G-Cloud for the UK
- The IT-Grundschutz for Germany
- The Multi-Level Protection Scheme (MLPS) Level 3 for China
Also, compliance requirements are different from industry to the industry, for example, the International Organization for Standardization (ISO) 9001 (which is primarily for healthcare, life sciences, medical devices, and the automotive and aerospace industries), the Payment Card Industry Data Security Standard (PCI-DSS) for finance, the Health Insurance Portability and Accountability Act (HIPPA) for healthcare, and so on. Solution architecture needs to consider that compliance in the design phase. You will learn more about compliance in Chapter 8, Security Considerations.
- Cost and budget: Solution architecture gives a good estimation of the overall cost of the project, which helps to define a budget. This includes capital expenditure (CapEx), which is the upfront cost and, operational expenditure (OpEx), which is an ongoing cost. It helps management to create an overall budget for human resources, infrastructure resources, and other licensing-related costs.
- Solution implementation component: Solution architecture provides a high-level overview of different implementation components of the product beforehand, which helps to plan execution.
- Business requirements: Solution architecture considers all business requirements, which includes both functional and non-functional requirements. It makes sure that business requirements are compatible, therefore allowing them to be converted into the technical implementation stage and strike a balance between stakeholders.
- IT infrastructure requirements: Solution architecture determines what kind of IT infrastructure is required to execute the project, which includes computing, storage, network, and so on. This helps to plan the IT resources more effectively.
- Technology selection: During solution design, a solution architect creates a proof of concept and prototype, which considers the corporate requirements, and then recommends the right technology and tools for implementation. Solution architecture aims to build in-house versus third-party tool sourcing and define software standards across the organization.
- End user requirements: Solution architecture pays special attention to the requirements of the end user, who will be the actual consumer of the product. It helps to discover the hidden requirements that a product owner may not be able to capture, due to a lack of technicality. During implementation and launch, solution architect provides a standard document and typical language structure in order to make sure that all of the requirements have been met to satisfy the user's needs.
- Solution maintenance: Solution architecture is not just about solution design and implementation, but it also takes care of post-launch activities, such as solution scalability, disaster recovery, operational excellence, and so on.
- Project timeline: Solution architecture designs the layout details of each component with their complexity, which further helps to define the project milestones and timeline by providing resource estimation and associated risks.
An industry-standard and well-defined solution architecture address all business requirements in a technical solution, and they make sure to deliver the desired result in order to satisfy the stakeholders, as per their expectations in terms of the quality, availability, maintainability, and scalability of the solution.
The initial design of a solution architecture may be conceived at a very early stage during the pre-sales cycle, such as the request for proposal (RFP) or the request for information (RFI) and is followed by the creation of a prototype or proof of concept, in order to discover any solution risk. Solution architect also identifies whether to build a solution or to source it. It helps to identify technology selection, while also keeping an organization's critical security and compliance requirements in mind.
There could be two primary situations for creating a solution architecture:
- First, enhancing technology for an existing application, which may include hardware refresh or software re-architecting
- Second, to create a new solution from scratch, where you get more flexibility to choose the best fit of technology to address a business requirement
However, while re-architecting the existing solution, you need to consider the minimal impact and create a solution that can best fit the current environment. Solution architects may decide to re-build if re-architecting the existing solution is not worth it, and a better solution can be provided by a re-build approach.
In a more simplified language, solution architecture is about looking at all the aspects of the system in order to generate a technical vision, which provides steps to implement the business requirements. Solution architecture can define an implementation for a project or a group of projects in a complex environment, by putting together all of the different pieces that are related to data, infrastructure, networking, and software application. A good solution architecture not only satisfies the functional and non-functional requirements, but also addresses system scalabilities and maintenance in the long run.
We have just learned about an overview of solution architecture and its different aspects. In the next section, we will look at the evolution of solution architecture.
Solution architecture has evolved with technological modernization. Today, solution architecture design has changed drastically compared to a couple of decades ago, due to the increasing use of the internet, the availability of high-bandwidth network, the low cost of storage, and computer availability.
Back in the days before the era of the internet, most solution designs focused on providing a thick desktop client, which was capable of operating with low bandwidth and working offline when a system could not connect to the internet.
This technology started evolving in the last decade. Service-oriented architecture (SOA) started taking shape for distributed design, and applications started moving from monolithic to modern n-tier architecture, where the frontend server, application server, and database were live in their computer and the storage layer. These SOAs are mostly achieved by an XML-based messaging protocol, called Simple Object Access Protocol (SOAP). This majorly follows a client–server model in order to create services.
The microservice architecture addresses the need for changing requirements in an agile environment, where any solution changes need to be accommodated and deployed rapidly. Organizations have to be agile to stay ahead of the competition. This forces solution architecture to be flexible, compared to the waterfall model, where you have a long cycle of project release.
The web-based microservice architecture is fueled by an almost unlimited resource capability, which is available from cloud providers and which can scale in minutes or seconds. It's becoming easier to innovate, experiment, and change as solution architects and developers can risk failing without harming anything.
Solution architecture is the building block for an overall enterprise software solution that addresses specific problems and requirements. As the project size increases, the team becomes distributed globally. It is required to have a solution architecture in place for long-term sustainability and a solid foundation.
Solution architecture addresses various solution needs, keeping the business context intact. It specifies and documents technology platforms, application components, data requirements, resource requirements, and many important non-functional requirements such as scalability, reliability, performance, throughput, availability, security, and maintainability.
Solution architecture is vital for any industry and its solution. In the absence of solution architecture, there is a chance that software development could fail; projects can get delayed, get over budget, and not deliver enough functionalities. This scenario can be drastically improved by creating a solution architecture and applying experience and knowledge; all of which are provided by a solution architect. It helps to keep stakeholders from all areas – from non-technical business functions to technical development – on the same page, which avoids confusion, keeps the project on track within schedule and time, and helps to derive maximum return on investment(ROI).
Often, the solution architect requires customer collaboration in order to understand specifications. In a solution architect's role, the architect needs multiple skillsets from technical leaders and experts, to business analysts and project management. We will learn more about the solution architect's role in Chapter 2, Solution Architects in an Organization.
A good solution architecture puts specifications in place with a well-defined solution, which helps us to deliver and accomplish the final product, along with smooth product operability after launch. A single problem can have multiple solutions, and each solution has its constraints. Solution architecture considers all the solutions, and finds the best way, by creating a hands-on proof of concept that accommodates all of the business and technical limitations.
The previous section sheds light on the importance of solution architecture. This section will further explore and provide more details on the benefits of solution architecture in various aspects of an organization, as shown in the following solution architecture benefits diagram:
The preceding diagram highlights the following attributes of a good solution architecture:
- Technology value and requirement: Solution architecture determines the return on investment, which solution can be obtained by a particular technology selection, and the market trend. The solution architect evaluates which technology an organization or project should adopt in order to achieve long-term sustainability, maintainability, and team comfort.
- Business goal: The primary responsibility of a solution architecture design is to accommodate the needs of the stakeholders and adapt change in their requirements. Solution architecture converts business goals into a technical vision by analyzing market trends and implementing the best practice. Solution architecture needs to be flexible enough to meet new, challenging, demanding, and rapidly changing business requirements.
- Target date: A solution architect continuously works with all stakeholders, including the business team, customer, and development team. A solution architect defines the process standard and provides guidelines for solution development. He/she makes sure that the overall solution is in alignment with the business objective and launch timeline, to ensure minimal chances of target date slippage.
- Increased Return on Investment (ROI): Solution architecture determines the ROI and help to measure the success of the project. Solution architecture forces businesses to think about how to reduce costs and remove waste in the process, in order to improve the overall ROI.
- Market opportunity: Solution architecture involves the process of analyzing and continuously evaluating the latest trends in the market. It also helps with backing up and promoting new products.
- Budget and resourcing: For a better budget, it is always recommended to invest well in estimation. A well-defined solution architecture helps to understand the number of resources that are required for project completion. This helps with a better budget forecast and resource planning.
- Project timeline: Defining an accurate project timeline is very critical for solution implementation. A solution architect determines the resources and effort that are required during the design phase, which should help define the schedule.
Now, you have had a high-level overview of solution architecture and its benefits. Let's dive deep into the everyday aspects of solution architecture.
In the life cycle of product development, the most challenging phase is to establish the nature of the requirements, especially when all the elements need to be addressed as high priority, and they keep changing rapidly. This challenge is even worse when there are different views of the same requirement from various stakeholders. For example, a business user analyzes the page design from a user point of view, while a developer is looking at it from implementation feasibility and load latency perspectives. This can cause conflicts and misunderstandings of requirements between functional and technical members. In such cases, solution architecture helps to bridge the gap, and define a standard that all members can understand.
Solution architecture defines standard documentation, which can explain the technical aspects to non-technical stakeholders and update them regularly. As a solution architecture's design spans across the organization and different teams, it can help to discover hidden requirements. The solution architect makes sure that the development team knows about the requirements, and also maintains the cycle of progress.
A good solution architecture defines not only the solution design, but also the success criteria in the form of qualitative and quantitative output, in order to ensure the quality of delivery. The qualitative output can be collected from user feedback, such as their sentiment analysis, while quantitative output may include latency, performance, load time at the technical side, and sales numbers at the business side. Taking continuous feedback and adapting to it is the key to high-quality delivery, which should adhere to all the phases of solution design and development.
In a rapid and competitive market, the biggest challenge is maintaining the use of the best technologies. Today, when you have multiple resources all around the world, then you have to choose a technology very carefully. The solution architecture design process can effectively tackle this problem.
The selection of the technology stack plays a significant role in efficient solution implementation by the team. In solution architecture, we should use different strategies to adopt various platforms, technologies, and tools. A solution architect should validate all of the needs carefully, and then evaluate and investigate the result with multiple parameters in order to find the best-fit solution for the product development, by creating a working model of the product as a prototype.
A good solution architecture addresses the depth of different tools and technologies by investigating all possible architectural strategies, based on the mixed-use case, techniques, tools, and code reuse, which comes from years of experience. The best platform simplifies the implementation process; however, the right technology selection is very critical. This can be achieved by building a prototype according to the business requirement assessment, and the agility, speed, and security of the application.
Any solution can be limited by various constraints and may encounter issues due to complexities or unforeseen risks. Solution architecture needs to balance multiple constraints, such as resources, technologies, cost, quality, time to market, frequently changing requirements, and so on.
Each project has its own specific goal, requirement, budget, and timeline. Solution architecture evaluates all of the possible critical paths and shares best practices to achieve a project goal in a given timeframe and budget. This is a systematic approach, where all tasks are interdependent of its prior task, and in order to achieve success in the project, all tasks need to execute in sequence. A delay in one task can impact the project timeline and can result in the organization losing the market window to launch the product.
If there is an issue in the project development process, the probability of a project getting delayed is higher. Sometimes, you encounter problems that are limitations of technology or of the solution environment. If you have a well-thought-out solution architecture, the most common issues are related to the non-functional requirements; resources and budgeting can mitigate for the product development life cycle.
A solution architect helps to drive the project by diving deep into each component of the project. They think of an out-of-the-box idea to save the project from the issues, and they will prepare a backup plan in the event that things do not work out as in the main plan. They evaluate the best possible way to execute the project by choosing the best practice and balancing constraints.
There are always risks and uncertainties involved during solution implementation. It's very tedious to understand how much time a developer will spend on fixing a bug. A good solution architecture controls the cost and budget and reduces uncertainty by providing developers with the required guidance in terms of priority, different communication services, and details of each component.
Solution architecture also creates documentation for keeping the system up to date, a deployment diagram, software patches, version; and enforces the runbook to solve frequent issues and business continuation processes. It also addresses the indirect impacts of the cost of building a solution by considering extensibility, scalability, and other external factors that matter to the development environment.
Lots of planning is involved in the inception stage of solution architecture. Solution architecture starts with a strategic view and provides more technical implementation input as you move forward with the solution implementation.
Solution architecture ensures an end-to-end solution delivery and impacts the overall project life cycle. It defines a process standard for different phases of the project life cycle and makes sure that it is applied across the organization so that other dependencies can be addressed as the implementation moves forward.
Solution architecture considers a holistic view of the project. It keeps syncing other dependent groups such as security, compliance, infrastructure, project management, and support, in order to keep them engaged in different phases of the project life cycle as required.
Often, you have to deal with the non-functional requirements (NFRs) in your application. For project success, it is highly essential to address them, as they have a broader impact on the overall project and solution. These NFRs can make or break your user base, and address very critical aspects of a solution such as security, availability, latency concerns, maintenance, logging, masking confidential information, performance concerns, reliability, maintainability, scalability, usability, and so on. If these are not considered on time, it can impact your project delivery.
The following diagram shows some of the most common NFRs:
As shown, NFRs include the following attributes of solution architecture. However, there can be more NFRs, depending upon the project:
- Disaster recovery: To make sure the solution is up and running in case of any unforeseen events.
- Security and compliance: Put a safety net in place for a solution to save it from an external attack, such as a virus, malware, and so on. Also make sure that the solution complies with local and industry laws, by meeting compliance requirements.
- High availability: To make sure the solution is always up and running.
- Scalability: To make sure the solution can handle the additional load in case of increasing demands.
- Application performance: To make sure the application is loading as per user expectation, and without much delay.
- Network request and response latency: Any activity performing on the application should be completed within the appropriate time and should not time out.
You will learn more details about the preceding attributes in Chapter 3, Attributes of the Solution Architecture. Solution architecture defines an initial framework for product development and the building blocks of the solution. While establishing a solution, architecture, quality, and customer satisfaction are always the main focus. Solution architecture needs to build continuously by working on a proof of concept and keep exploring and testing until the desired quality is reached.
Solution architecture in the cloud has become increasingly important these days, and it is the future of application solutions. The great thing about cloud computing architecture is that you have an end-to-end view of all architecture components, which include the frontend platforms, the application development platform, servers, storage, database, automation, delivery, and the networks that are required to manage the entire solution landscape.
Before jumping into solution architecture in the cloud, let's understand more about the public cloud, and how it is becoming a more essential and driving technology platform.
A public cloud is a base on the standard computing model in which a service provider makes resources such as virtual machines, applications, storage, and so on, available to their customers over the internet. Public cloud services offer a pay-as-you-go model.
In the cloud computing model, a public cloud vendor provides on-demand availability of IT resources such as the server, database, network, storage, and so on, which organizations can use with secure web-based interfaces, or through application programs over the internet. In most of the cases, the customer only pays for the services that they are applying for the duration of utilization, which saves costs for them by optimizing IT resources to reduce idle time.
You can annotate the public cloud with an electric power supply model, where you switch on the light and pay only for the amount of electricity you use in units. As soon as you switch off, you are not paying for it. It abstracts you from the complexity of power generation using turbines, resources to maintain the facility, a large infrastructure setup, and you use the entire service in a simplified way.
Here, you will learn about a high-level overview of the different types of cloud computing deployment models. You will learn more details in Chapter 5, Cloud Migration and Hybrid Cloud Architecture Design.
A private cloud, or on-premises, is registered to a single organization that owns and accesses it. Private clouds act as a replicate or extension of the company's existing data center. Often, a public cloud has shared tenancy, which means virtual servers from multiple customers share the same physical server; however, they offer dedicated physical servers to customers if the customer wants it for a license or compliance need. A public cloud such as Amazon Web Services (AWS), Microsoft Azure, or Google Cloud Platform (GCP) creates a massive IT infrastructure, which can be utilized over the internet with a pay-as-you-go model.
A third model is a hybrid cloud, used by large enterprises who are moving their workload from on-premises to a cloud, where they still have a legacy application that cannot move to the cloud directly, or maybe they have a licensed application that needs to stay on-premises, or sometimes due to compliance reasons, they need to secure data on-premises. In such a situation, the hybrid model helps, where the enterprise has to maintain a partial environment on-premises and move other applications to the public cloud. Sometimes an organization moves to test and develop the environment to the public cloud and keep production environments on-premises. A hybrid model can vary depending upon the organization's cloud strategy.
In a typical definition, the public cloud is a fully virtualized environment, which is accessible both over the internet or private network lines. However, in recent times, public cloud vendors also started offering an on-premises physical infrastructure for better hybrid cloud adoption. The public cloud provides a multi-tenancy model, where IT infrastructure such as storage and compute are shared between multiple customers; however, they are isolated at the software and logical network levels, and do not interfere with each other's workload. In the public cloud, by creating network-level isolation, organizations can have their virtual private cloud, which is equivalent to the logical data center.
Public cloud storage achieves high durability and availability, by creating a redundancy model using multiple data centers, and robust data replication. This makes them achieve architecture resiliency and easy scalability.
There are three major types of cloud computing model, as shown here:
As shown in the diagram, you can see a comparison between customer responsibilities in the on-premises environment with the cloud computing service model. In on-premises, the customer has to manage everything, while in the cloud computing model, customers can offload responsibilities to the vendor and focus on their business needs. The following points are high-level details of services that are provided under different cloud computing models:
- Infrastructure as a Service (IaaS): In the IaaS model, a vendor provides infrastructure resources such as a compute server, networking components, and data storage space as managed services. It helps customers to use IT resources without worrying about handling data center overheads such as heating and cooling, racking and stacking, physical security, and so on.
- Platform as a Service (PaaS): The PaaS model adds a layer of service, where the vendor takes care of the resources that are required for your development platform, such as the operating system, software maintenance, patching, and so on, along with infrastructure resources. The PaaS model facilitates your team's focus on writing business logic and handle data, by taking care of all of the platform maintenance burdens for you.
- Software as a Service (SaaS): The SaaS model adds one more layer of abstraction on top of the PaaS and IaaS models, where the vendor provides ready-to-use software, and you pay for the service. For example, you use email services such as Gmail, Yahoo! Mail, AOL, and so on, where you get your own space of email as a service, and you don't have to worry about underlying applications or infrastructures.
The fourth emerging model is the Function as a Service (FaaS) model, which is becoming popular in the building of serverless architecture using services including AWS Lambda. You will learn more details about serverless architecture in Chapter 6, Solution Architecture Design Patterns.
There are several public cloud providers in the IT industries; among them, key players are AWS, GCP, Microsoft Azure, and Alibaba Cloud. These providers offer an array of services, from computing, storage, networking, databases, and application development, to big data analytics and AI/ML, and so on.
In the following screenshot from the AWS console, you can see 100+ services that are offered in multiple areas. The highlighted EC2 service, known as Amazon Elastic Cloud Compute, allows you to spin-up the virtual machine in minutes in the AWS cloud:
Public cloud vendors not only provide infrastructure, but also facilitate an array of services in various areas such as analytics, big data, artificial intelligence, application development, email, security, monitoring, alert, and so on. With the public cloud, different technical capabilities become more accessible to the development team, which helps to drive innovation and reduce the time to market for the product launch.
In this chapter, you learned about the definition of solution architecture from both the industry standards and in a more simplified way. You learned the importance of solution architecture, and how it can help the organization to achieve a more significant result and maximize the return on its investments. This chapter helped you to understand the benefits of having a solution architecture, and how it helps in different aspects of solution design and implementation.
In summary, solution architecture is a building block in a complex organization and is used to address all stakeholder's needs and establish a standard in order to fill the gap between business requirements and technical solutions. A good solution architecture not only addresses functional requirements but also puts long-term thought into, and takes care of, non-functional requirements such as scalability, performance, resiliency, high availability, disaster recovery, and so on. Solution architecture finds an optimal solution to accommodate the constraints of cost, resources, timelines, security, and compliance.
Later in the chapter, you learned about the basics of cloud computing, solution architecture in the cloud environment, and about significant public cloud providers and their service offerings. This also helped you to gain a high-level overview of different cloud computing models, such as IaaS, PaaS, SaaS, and the cloud computing deployment models in the public cloud, private cloud, and hybrid cloud. Finally, this chapter sheld some light on the evolution of solution architecture design.
In the next chapter, you will learn all about the solution architecture role – the different types of solution architect, the role's responsibilities as regards solution architecture, and how they fit into an organizational structure and an agile environment.