Software Architecture for Busy Developers

Book description

A quick start guide to learning essential software architecture tools, frameworks, design patterns, and best practices

Key Features

  • Apply critical thinking to your software development and architecture practices and bring structure to your approach using well-known IT standards
  • Understand the impact of cloud-native approaches on software architecture
  • Integrate the latest technology trends into your architectural designs

Book Description

Are you a seasoned developer who likes to add value to a project beyond just writing code? Have you realized that good development practices are not enough to make a project successful, and you now want to embrace the bigger picture in the IT landscape? If so, you're ready to become a software architect; someone who can deal with any IT stakeholder as well as add value to the numerous dimensions of software development.

The sheer volume of content on software architecture can be overwhelming, however. Software Architecture for Busy Developers is here to help. Written by Stephane Eyskens, author of The Azure Cloud Native Mapbook, this book guides you through your software architecture journey in a pragmatic way using real-world scenarios. By drawing on over 20 years of consulting experience, Stephane will help you understand the role of a software architect, without the fluff or unnecessarily complex theory.

You'll begin by understanding what non-functional requirements mean and how they concretely impact target architecture. The book then covers different frameworks used across the entire enterprise landscape with the help of use cases and examples. Finally, you'll discover ways in which the cloud is becoming a game changer in the world of software architecture.

By the end of this book, you'll have gained a holistic understanding of the architectural landscape, as well as more specific software architecture skills. You'll also be ready to pursue your software architecture journey on your own - and in just one weekend!

What you will learn

  • Understand the roles and responsibilities of a software architect
  • Explore enterprise architecture tools and frameworks such as The Open Group Architecture Framework (TOGAF) and ArchiMate
  • Get to grips with key design patterns used in software development
  • Explore the widely adopted Architecture Tradeoff Analysis Method (ATAM)
  • Discover the benefits and drawbacks of monoliths, service-oriented architecture (SOA), and microservices
  • Stay on top of trending architectures such as API-driven, serverless, and cloud native

Who this book is for

This book is for developers who want to move up the organizational ladder and become software architects by understanding the broader application landscape and discovering how large enterprises deal with software architecture practices. Prior knowledge of software development is required to get the most out of this book.

Table of contents

  1. Software Architecture for Busy Developers
  2. Contributors
  3. About the author
  4. About the reviewers
  5. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
    4. Download the example code files
    5. Download the color images
    6. Conventions used
    7. Get in touch
    8. Share Your Thoughts
  6. Section 1: Introduction
  7. Chapter 1: Introducing Software Architecture
    1. Software architecture in a nutshell
    2. A software architect's duties
    3. Introducing the different architecture disciplines
      1. EA
    4. Positioning software architecture within the global architecture landscape
    5. Summary
  8. Section 2: The Broader Architecture Landscape
  9. Chapter 2: Exploring Architecture Frameworks and Methodologies
    1. Introducing frameworks and methodologies
    2. Delving into TOGAF, ArchiMate, and related tools – EA
      1. Introducing TOGAF's ADM
      2. Building blocks
      3. Architecture patterns
      4. EA wrap-up
    3. Introducing security frameworks
      1. COBIT for risk
      2. NIST
    4. ITIL in a nutshell
    5. Summary
  10. Chapter 3: Understanding ATAM and the Software Quality Attributes
    1. Introducing ATAM
    2. Understanding sensitivity points, trade-off points, risks, and non-risks
    3. Exploring quality attributes
    4. Getting started with quality-attribute scenarios
    5. Practical use case
      1. Utility trees
      2. Quality-attribute scenarios
      3. Identified sensitivity points
      4. Architectural approaches
    6. ATAM and agile at scale
    7. Summary
  11. Section 3: Software Design Patterns and Architecture Models
  12. Chapter 4: Reviewing the Historical Architecture Styles
    1. Introducing architecture styles
    2. Starting with monoliths
      1. Benefits of monoliths
      2. Challenges of monoliths
    3. Continuing with service-oriented architecture (SOA)
      1. Benefits of SOA
      2. Challenges of SOA
    4. Microservices
      1. Benefits of microservices
      2. Challenges of microservices
      3. Hosting microservices
      4. Microservices in action
    5. Summary
  13. Chapter 5: Design Patterns and Clean Architecture
    1. Technical requirements
    2. Understanding design patterns and their purpose
    3. Reviewing the GoF
    4. Delving into the most recurrent patterns and applying them to a use-case scenario
      1. Understanding the DI pattern
      2. Exploring the singleton design pattern
      3. Factory method
      4. Lazy loading/initialization pattern
      5. Strategy pattern
      6. Mediator pattern
      7. Facade design pattern
      8. Repository design pattern
      9. Design patterns use case
    5. Looking at clean architecture
    6. My top 10 code smells
    7. Summary
  14. Section 4: Impact of the Cloud on Software Architecture Practices
  15. Chapter 6: Impact of the Cloud on the Software Architecture Practice
    1. Technical requirements
    2. Introducing cloud service models, the cloud, and cloud-native systems
      1. Software as a Service (SaaS)
      2. Function as a Service (FaaS)
      3. Platform as a Service (PaaS)
      4. Containers as a Service (CaaS)
      5. Infrastructure as a Service (IaaS)
      6. Anything as a Service (XaaS or *aaS)
      7. Service models and software quality attributes
      8. Cloud versus cloud native
    3. Mapping cloud services to architecture styles and patterns
    4. Reviewing cloud and cloud-native patterns
      1. The Cache-Aside pattern
      2. Understanding the SAGA pattern
      3. Command Query Request Segregation (CQRS)
      4. Event sourcing
    5. Summary
  16. Section 5: Architectural Trends and Summary
  17. Chapter 7: Trendy Architectures and Global Summary
    1. Technical requirements
    2. API-driven architectures
    3. Hands-on with a microservice architecture example
      1. Service discovery and communication
      2. Exploring the essential parts of the code
      3. Deploying the application
      4. Testing the application
    4. Hands-on with a serverless architecture example
      1. Event publisher code
      2. Deploying the required infrastructure
      3. Testing the application
    5. Summary
    6. Postface
    7. Why subscribe?
  18. Other Books You May Enjoy
    1. Packt is searching for authors like you
    2. Share Your Thoughts

Product information

  • Title: Software Architecture for Busy Developers
  • Author(s): Stéphane Eyskens
  • Release date: October 2021
  • Publisher(s): Packt Publishing
  • ISBN: 9781801071598