Book Image

Solutions Architect's Handbook

By : Saurabh Shrivastava, Neelanjali Srivastav
Book Image

Solutions Architect's Handbook

By: Saurabh Shrivastava, Neelanjali Srivastav

Overview of this book

Becoming a solutions architect gives you the flexibility to work with cutting-edge technologies and define product strategies. This handbook takes you through the essential concepts, design principles and patterns, architectural considerations, and all the latest technology that you need to know to become a successful solutions architect. This book starts with a quick introduction to the fundamentals of solution architecture design principles and attributes that will assist you in understanding how solution architecture benefits software projects across enterprises. You'll learn what a cloud migration and application modernization framework looks like, and will use microservices, event-driven, cache-based, and serverless patterns to design robust architectures. You'll then explore the main pillars of architecture design, including performance, scalability, cost optimization, security, operational excellence, and DevOps. Additionally, you'll also learn advanced concepts relating to big data, machine learning, and the Internet of Things (IoT). Finally, you'll get to grips with the documentation of architecture design and the soft skills that are necessary to become a better solutions architect. By the end of this book, you'll have learned techniques to create an efficient architecture design that meets your business requirements.
Table of Contents (18 chapters)

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:

NFRs in a solution design

The preceding diagram shows the following NFRs for consideration:

  • Performance:
    • 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?
  • Recoverability:
    • 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?
  • Maintainability:
    • How can we ensure application monitoring and alerts?
    • How can we ensure application support?
  • Reliability:
    • How can we make sure the application performs consistently?
    • How can we inspect and correct glitches?
  • Availability:
    • How can we ensure the high availability of an application?
    • How can we make an application fault-tolerant?
  • Scalability:
    • How can we meet the increasing demand for resources?
    • How can we achieve a good scale for a sudden spike in utilization?
  • Usability:
    • How can we simplify an application's use?
    • How can we achieve a seamless user experience?

However, depending on the nature of the project, there may be an NFR that is suitable for that project only (for example, voice clarity for a call center solution). You will learn more about these attributes in Chapter 3, Attributes of the Solution Architecture.

The solution architect becomes engaged in a project from a very early stage, which means they need to design a solution by gauging requirements across groups in an organization. The solution architect needs to ensure consistency in solution design across system components and requirements. The solution architect is responsible for defining NFR across groups and different components since they make sure that the desired usability of a solution is achieved across the board.

NFRs are an integral and essential aspect of solution design, which tends to slip when teams are too focused on business requirements, and this can impact the user experience. A good solution architect has the primary responsibility of conveying the importance of NFR and making sure they are implemented as part of solution delivery.