Solutions Architect's Handbook

Book description

From fundamentals and design patterns to the different strategies for creating secure and reliable architectures in AWS cloud, learn everything you need to become a successful solutions architect

Key Features

  • Create solutions and transform business requirements into technical architecture with this practical guide
  • Understand various challenges that you might come across while refactoring or modernizing legacy applications
  • Delve into security automation, DevOps, and validation of solution architecture

Book Description

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.

What you will learn

  • Explore the various roles of a solutions architect and their involvement in the enterprise landscape
  • Approach big data processing, machine learning, and IoT from an architect's perspective and understand how they fit into modern architecture
  • Discover different solution architecture patterns such as event-driven and microservice patterns
  • Find ways to keep yourself updated with new technologies and enhance your skills
  • Modernize legacy applications with the help of cloud integration
  • Get to grips with choosing an appropriate strategy to reduce cost

Who this book is for

This book is for software developers, system engineers, DevOps engineers, architects, and team leaders working in the information technology industry who aspire to become solutions architect professionals. A good understanding of the software development process and general programming experience with any language will be useful.

Table of contents

  1. Title Page
  2. Copyright and Credits
    1. Solutions Architect's Handbook
  3. Dedication
  4. About Packt
    1. Why subscribe?
  5. Foreword
  6. Contributors
    1. About the authors
    2. About the reviewer
    3. Packt is searching for authors like you
  7. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
    4. Download the color images
    5. Conventions used
    6. Get in touch
    7. Reviews
  8. The Meaning of Solution Architecture
    1. What is solution architecture?
    2. Evolution of solution architecture
    3. Why is solution architecture important?
    4. The benefits of solution architecture
    5. Addressing the business needs and quality of delivery
    6. Selecting the best technology platform
    7. Addressing solution constraints and issues
    8. Helping in resource and cost management
    9. Managing solution delivery and project life cycle
    10. Addressing non-functional requirements
    11. Solution architecture in the public cloud
    12. What is the public cloud?
    13. Public clouds, private clouds, and hybrid clouds
    14. The public cloud architecture
    15. Public cloud providers and cloud service offering
    16. Summary
  9. Solution Architects in an Organization
    1. Types of solution architect role
    2. Enterprise solution architect
    3. Solution architect
    4. Technical architect 
    5. Cloud architect 
    6. Architect evangelist
    7. Infrastructure architect
    8. Network architect
    9. Data architect
    10. Security architect
    11. DevOps architect
    12. Understanding a solution architect's responsibilities
    13. Analyzing user requirements
    14. Defining non-functional requirements
    15. Engaging and working with stakeholders
    16. Handling various architecture constraints
    17. Making technology selections
    18. Developing a proof of concept and a prototype
    19. Designing solutions and staying through delivery
    20. Ensuring post-launch operability and maintenance
    21. Working as a technology evangelist
    22. Solution architects in an agile organization
    23. Why the Agile methodology?
    24. Agile manifesto
    25. Agile process and terminology
    26. Sprint ceremonies
    27. Agile tools and terms
    28. Agile versus waterfall
    29. Agile architecture
    30. Summary
  10. Attributes of the Solution Architecture
    1. Scalability and elasticity
    2. The capacity dilemma in scaling
    3. Scaling your architecture
    4. Static content scaling
    5. Server fleet elasticity
    6. Database scaling
    7. High availability and resiliency
    8. Fault tolerance and redundancy
    9. Disaster recovery and business continuity
    10. Extensibility and reusability
    11. Usability and accessibility
    12. Portability and interoperability
    13. Operational excellence and maintainability
    14. Security and compliance
    15. Authentication and authorization
    16. Web security
    17. Network security
    18. Infrastructure security
    19. Data security
    20. Cost optimization and budget
    21. Summary
  11. Principles of Solution Architecture Design
    1. Scaling workload
    2. Predictive scaling
    3. Reactive scaling
    4. Building resilient architecture
    5. Design for performance
    6. Using replaceable resources
    7. Creating immutable infrastructure
    8. Canary testing
    9. Think loose coupling
    10. Think service not server
    11. Using the right storage for the right need
    12. Think data-driven design
    13. Overcoming constraints
    14. Adding security everywhere
    15. Automating everything
    16. Summary
  12. Cloud Migration and Hybrid Cloud Architecture Design
    1. Benefits of cloud-native architecture
    2. Creating a cloud migration strategy
    3. Lift and Shift migration 
    4. Rehost
    5. Replatform
    6. Relocate
    7. Cloud-native approach
    8. Refactor
    9. Repurchase
    10. Retain or retire
    11. Retain
    12. Retire
    13. Steps for cloud migration 
    14. Discovering your workload
    15. Analyzing the information
    16. Creating migration plan
    17. Designing the application
    18. Performing application migration to the cloud
    19. Data migration
    20. Server migration
    21. Integration, validation, and cutover
    22. Live migration cutover
    23. Operating cloud application
    24. Application optimization in the cloud
    25. Creating a hybrid cloud architecture
    26. Designing a cloud-native architecture
    27. Popular public cloud choices
    28. Summary
    29. Further reading
  13. Solution Architecture Design Patterns
    1. Building an n-tier layered architecture
    2. The web layer
    3. The application layer
    4. The database layer
    5. Creating multi-tenant SaaS-based architecture
    6. Building stateless and stateful architecture designs
    7. Understanding SOA
    8. SOAP web service architecture
    9. RESTful web service architecture
    10. Building an SOA-based e-commerce website architecture
    11. Building a serverless architecture
    12. Creating a microservice architecture
    13. Real-time voting application reference architecture
    14. Building queue-based architecture
    15. Queuing chain pattern
    16. Job observer pattern
    17. Creating event-driven architecture
    18. Publisher/subscriber model
    19. Event stream model
    20. Building cache-based architecture
    21. Cache distribution pattern in a three-tier web architecture
    22. Rename distribution pattern
    23. Cache proxy pattern
    24. Rewrite proxy pattern
    25. App caching pattern
    26. Memcached versus Redis
    27. Understanding the circuit breaker pattern
    28. Implementing the bulkheads pattern
    29. Creating a floating IP pattern
    30. Deploying an application with a container
    31. The benefit of containers
    32. Container deployment
    33. Database handling in application architecture
    34. High-availability database pattern
    35. Avoiding anti-patterns in solution architecture
    36. Summary
  14. Performance Considerations
    1. Design principles for architecture performance
    2. Reducing latency
    3. Improving throughput
    4. Handling concurrency
    5. Apply caching
    6. Technology selection for performance optimization
    7. Making a computational choice
    8. Selecting the server instance
    9. Working with containers
    10. Docker
    11. Kubernetes
    12. Going serverless
    13. Choosing storage
    14. Working with block storage and storage area network
    15. Working with file storage and network area storage (NAS)
    16. Working with object storage and the cloud data storage
    17. Choosing the database
    18. Online transactional processing (OLTP)
    19. Nonrelational databases (NoSQL)
    20. Online analytical processing (OLAP)
    21. Building a data search functionality
    22. Making the networking choice
    23. Defining a DNS routing strategy
    24. Implementing a load balancer
    25. Applying autoscaling
    26. Managing performance monitoring
    27. Summary
  15. Security Considerations
    1. Designing principles for architectural security
    2. Implementing authentication and authorization control
    3. Applying security everywhere
    4. Reducing blast radius
    5. Monitoring and auditing everything all the time
    6. Automating everything
    7. Protecting data
    8. Preparing a response
    9. Selecting technology for architectural security
    10. User identity and access management
    11. FIM and SSO
    12. Kerberos
    13. AD
    14. Amazon Web Services (AWS) Directory Service
    15. Security Assertion Markup Language (SAML)
    16. OAuth and OpenID Connect (OIDC)
    17. Handling web security
    18. Web app security vulnerabilities
    19. Denial of Service (DoS) and Distributed Denial of Service (DDoS) attacks
    20. SQLi attacks
    21. XSS attacks
    22. Cross-Site Request Forgery (CSRF) attacks
    23. Buffer overflow and memory corruption attacks
    24. Web security mitigation
    25. Web Application Firewall (WAF)
    26. DDoS mitigation
    27. Securing an application and its infrastructure
    28. Application and operating system hardening
    29. Software vulnerabilities and secure code
    30. Network, firewall, and trusted boundary
    31. IDS/IPS
    32. Host-based IDS
    33. Network-based IDS
    34. Data security
    35. Data classification
    36. Data encryption
    37. Encryption key management
    38. Envelope encryption
    39. AWS Key Management Service (KMS)
    40. HSM
    41. Data encryption at rest and in transit
    42. Security and compliance certifications
    43. The cloud's shared security responsibility model
    44. Summary
  16. Architectural Reliability Considerations
    1. Design principles for architectural reliability
    2. Making systems self-healing
    3. Applying automation
    4. Creating a distributed system
    5. Monitoring capacity
    6. Performing recovery validation
    7. Technology selection for architecture reliability
    8. Planning the RTO and RPO
    9. Replicating data
    10. Synchronous versus asynchronous replication
    11. Replication methods
    12. Planning disaster recovery
    13. Backup and restore
    14. Pilot light
    15. Warm standby
    16. Multi-site
    17. Applying best practices for disaster recovery
    18. Improving reliability with the cloud
    19. Summary
  17. Operational Excellence Considerations
    1. Designing principles for operational excellence
    2. Automating the operation
    3. Making incremental and reversible changes
    4. Predicting failures and responding
    5. Learning from the mistake and refining
    6. Keeping operation's runbook updated
    7. Selecting technologies for operational excellence
    8. Planning for operational excellence
    9. IT Asset Management (ITAM)
    10. Configuration management
    11. The functioning of operational excellence
    12. Monitoring system health
    13. Infrastructure monitoring
    14. Application monitoring
    15. Platform monitoring
    16. Log monitoring
    17. Security monitoring
    18. Handling alerts and incident response
    19. Improving operational excellence
    20. ITOA
    21. RCA
    22. Auditing and reporting
    23. Achieving operational excellence in the public cloud
    24. Summary
  18. Cost Considerations
    1. Design principles for cost optimization
    2. Calculating the total cost of ownership
    3. Planning the budget and forecast
    4. Managing demand and service catalogs
    5. Keeping track of expenditure
    6. Continuous cost optimization
    7. Techniques for cost optimization
    8. Reducing architectural complexity
    9. Increasing IT efficiency
    10. Applying standardization and governance
    11. Monitoring cost usage and report
    12. Cost optimization in the public cloud
    13. Summary
  19. DevOps and Solution Architecture Framework
    1. Introducing DevOps
    2. Understanding the benefits of DevOps
    3. Understanding the components of DevOps
    4. CI/CD
    5. Continuous monitoring and improvement
    6. IaC
    7. Configuration management (CM)
    8. Introducing DevSecOps
    9. Combining DevSecOps and CI/CD
    10. Implementing a CD strategy
    11. In-place deployment
    12. Rolling deployment
    13. Blue-green deployment
    14. Red-black deployment
    15. Immutable deployment
    16. Implementing continuous testing in the CI/CD pipeline
    17. A/B testing
    18. Using DevOps tools for CI/CD
    19. Code editor
    20. Source code management
    21. CI server
    22. Code deployment
    23. Code pipeline
    24. Implementing DevOps best practices
    25. Summary
  20. Data Engineering and Machine Learning
    1. What is big data architecture?
    2. Designing big data processing pipelines
    3. Data ingestion
    4. Technology choices for data ingestion
    5. Ingesting data to the cloud
    6. Storing data
    7. Technology choices for data storage
    8. Structured data stores
    9. Relational databases
    10. Data warehousing
    11. NoSQL databases
    12. SQL versus NoSQL databases
    13. Types of NoSQL data store
    14. Search data stores
    15. Unstructured data stores
    16. Data lakes
    17. Processing data and performing analytics
    18. Technology choices for data processing and analysis
    19. Visualizing data
    20. Technology choices for data visualization
    21. Understanding IoT
    22. What is ML?
    23. Working with data science and ML
    24. Evaluating ML models – overfitting versus underfitting
    25. Understanding supervised and unsupervised ML
    26. Summary
  21. Architecting Legacy Systems
    1. Learning the challenges of legacy systems
    2. Difficulty in keeping up with user demand
    3. Higher cost of maintenance and update
    4. Shortage of skills and documentation
    5. Vulnerable to corporate security issues
    6. Incompatibility with other systems
    7. Defining a strategy for system modernization
    8. Benefits of system modernization
    9. Assessment of a legacy application
    10. Defining the modernization approach
    11. Documentation and support
    12. Looking at legacy system modernization techniques
    13. Encapsulation, rehosting, and re-platforming
    14. Refactoring and rearchitecting
    15. Redesigning and replacing
    16. Defining a cloud migration strategy for legacy systems
    17. Summary
  22. Solution Architecture Document
    1. Purpose of the SAD
    2. Views of the SAD
    3. Structure of the SAD
    4. Solution overview
    5. Business context
    6. Conceptual solution overview
    7. Solution architecture 
    8. Solution delivery
    9. Solution management
    10. Appendix section of SAD
    11. IT procurement documentation for a solution architecture 
    12. Summary
  23. Learning Soft Skills to Become a Better Solution Architect
    1. Acquiring pre-sales skills
    2. Presenting to C-level executives
    3. Taking ownership and accountability
    4. Defining strategy execution and OKRs
    5. Thinking big
    6. Being flexible and adaptable
    7. Design thinking
    8. Being a builder by engaging in coding hands-on
    9. Becoming better with continuous learning
    10. Being a mentor to others
    11. Becoming a technology evangelist and thought leader
    12. Summary
  24. Other Books You May Enjoy
    1. Leave a review - let other readers know what you think

Product information

  • Title: Solutions Architect's Handbook
  • Author(s): Saurabh Shrivastava, Neelanjali Srivastav, Kamal Arora
  • Release date: March 2020
  • Publisher(s): Packt Publishing
  • ISBN: 9781838645649