Architect high-quality software systems using modern C++ and architectural practices, with expanded coverage and practical new examples throughout the book. Free with your DRM-free PDF version + access to Packt's next-gen Reader* Key Features
Design modern C++ systems using features from C++11 through C++20 and beyond Explore distributed system design with observability, scalability, and maintainability in mind Manage and package C++ applications, and prepare them for deployment using CMake, Conan, and CI/CDBook Description Designing scalable and maintainable software requires more than language expertise—it demands strong architectural thinking. This practical guide explores software architecture through the lens of modern C++, equipping you with the skills to design and build robust, distributed systems. Starting with fundamental architectural principles and design philosophies, the book walks you through practical approaches to designing and deploying reliable systems. This edition contains significant updates across the book, including new chapters on observability, package management, and C++ modules to address real-world software challenges. You will explore software decomposition strategies, design and system patterns, fault tolerance, API management, and testability, with practical examples in modern C++. Additionally, the book covers modern CI/CD pipelines, cloud-native design, microservices, and modular development, helping developers navigate today's fast-evolving software landscape. With updated examples and a renewed emphasis on maintainable and observable architectures, this edition equips C++ professionals to architect modern systems. By the end of the book, you will be able to design, build, test, and deploy well-architected software solutions using modern C++ and proven architectural techniques. *Email sign-up and proof of purchase required What you will learn
Apply architectural fundamentals to design scalable software systems with C++ Use modern C++ features to create maintainable and secure applications Implement architectural and system design patterns Design testable code and automate quality checks via CI/CD pipelines Manage dependencies and build systems using CMake and Conan Explore microservices, containers, and cloud-native practices with C++ Improve observability with logging, tracing, and monitoring tools Build deployable C++ systems suited for modern development environmentsWho this book is for This book is intended for experienced C++ developers and software engineers aiming to expand their architectural knowledge, lead software projects, or build scalable systems. It assumes readers are comfortable with modern C++ (C++11 onwards) and familiar with basic design principles and patterns. Table of Contents Importance of Software Architecture and Principles of Great Design Architectural Styles Functional and Nonfunctional Requirements Architectural and System Design Patterns Leveraging C++ Language Features Design Patterns and C++ Idioms Building and Packaging Package Management The Future of C++ Code Using Modules Writing Testable Code Continuous Integration and Continuous Deployment Security in Code and Deployment Performance Architecture of Distributed Systems Interservice Communication Containers Observability Cloud-Native Design