Read our leading and best-selling books on advanced software design and development techniques.
Implementing Domain-Driven Design
Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations.
Building on Eric Evans’ seminal book, Domain-Driven Design, Vaughn presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic Java examples—all applicable to C# developers—and all content is tied together by a single case study: the delivery of a large-scale Scrum-based SaaS system for a multitenant environment.
Vaughn Vernon, the author, takes you far beyond “DDD-lite” approaches that embrace DDD solely as a technical toolset, and shows you how to fully leverage DDD’s “strategic design patterns” using Bounded Context, Context Maps, and the Ubiquitous Language. Using these techniques and examples, you can reduce time to market and improve quality, as you build software that is more flexible, more scalable, and more tightly aligned to business goals.
Available in these languages
Domain-Driven Design Distilled
Domain-Driven Design (DDD) software modeling delivers powerful results in practice, not just in theory, which is why developers worldwide are rapidly moving to adopt it. Now, for the first time, there’s an accessible guide to the basics of DDD: What it is, what problems it solves, how it works, and how to quickly gain value from it.
Concise, readable, and actionable, Domain-Driven Design Distilled never buries you in detail–it focuses on what you need to know to get results. Vaughn Vernon, author of the best-selling Implementing Domain-Driven Design, draws on his twenty years of experience applying DDD principles to real-world situations. He is uniquely well-qualified to demystify its complexities, illuminate its subtleties, and help you solve the problems you might encounter.
Vernon guides you through each core DDD technique for building better software. You’ll learn how to segregate domain models using the powerful Bounded Contexts pattern, to develop a Ubiquitous Language within an explicitly bounded context, and to help domain experts and developers work together to create that language. Vernon shows how to use Subdomains to handle legacy systems and to integrate multiple Bounded Contexts to define both team relationships and technical mechanisms.
Domain-Driven Design Distilled brings DDD to life. Whether you’re a developer, architect, analyst, consultant, or customer, Vernon helps you truly understand it so you can benefit from its remarkable power.
Available in these languages
Reactive Messaging Patterns with the Actor Model
Reactive Messaging Patterns with the Actor Model enables enterprise developers to solve complex application and integration problems that were nearly impossible to address before. Developers can build multi-core, multi-threaded, highly-scalable, high performance, low-latency systems, and write composable software that is event-driven, scalable under load, responsive, and highly resilient. Developers are increasingly recognizing the potential of these technologies, and companies including Lightbend, VMware, and SpringSource have recently released new tools for using them. Now, there’s a start-to-finish guide to using reactive programming and the Actor model with Scala and Akka: Reactive Messaging Patterns with the Actor Model.
The book begins with a concise, usable review of programming with the Actor model and the Scala language and the Akka toolkit. Next, Vaughn presents a guide to achieving high performance using the threading model supplied with actor systems. Following this is an easy-to-adapt cookbook of solutions for message-based applications and integration. The detailed solutions address messaging systems, channels, construction, routing, transportation, endpoints, and system management. Each follows the proven format introduced by Gregor Hohpe and Bobby Woolf in their popular Enterprise Integration Patterns, while offering advanced solutions based on Scala and Akka. Using this guide’s insights and examples, you can take Scala programming to the next level, applying Scala with the Akka toolkit to achieve maximum organizational value.
The Addison-Wesley Signature Series: Vaughn Vernon
Vaughn Vernon is a champion of simplifying software architecture and development, with an emphasis on reactive methods. He has a unique ability to teach and lead with Domain-Driven Design using lightweight tools to unveil unimagined value. He helps organizations achieve competitive advantages using enduring tools such as architectures, patterns, and approaches, and through partnerships between business stakeholders and software developers.
Vaughn’s Signature Series guides readers toward advances in software development maturity and greater success with business-centric practices. The series emphasizes organic refinement with a variety of approaches—reactive, object, and functional architecture and programming; domain modeling; right sized services; patterns; and APIs—and covers best uses of the associated underlying technologies.
Strategic Monoliths and Microservices
Driving Change with Purposeful Architecture
Continuous Architecture in Practice
Software Architecture in the Age of Agility and DevOps
Authors Murat Erder, Pierre Pureur, and Eoin Woods have taken their extensive software architecture experience and applied it to the practical aspects of software architecture in real-world environments. Continuous Architecture in Practice provides hands-on advice for leveraging the continuous architecture approach in real-world environments and illuminates architectures changing role in the age of Agile, DevOps, and cloud platforms. This guide will help technologists update their architecture practice for new software challenges.
As part of the Vaughn Vernon Signature Series, this title was hand-selected for the practical, delivery-oriented knowledge that architects and software engineers can quickly apply. It includes in-depth guidance for addressing today’s key quality attributes and cross-cutting concerns such as security, performance, scalability, resilience, data, and emerging technologies. Each key technique is demonstrated through a start-to-finish case study reflecting the author’s deep experience with complex software environments. Key topics include:
- Creating sustainable, coherent systems that meet functional requirements and the quality attributes stakeholders care about
- Understanding team-based software architecture and architecture as a “flow of decisions”
- Understanding crucial issues of data management, integration, and change, and the impact of varied data technologies on architecture
- Architecting for security, including continuous threat modeling and mitigation
- Architecting for scalability and resilience, including scaling microservices and serverless environments
- Using architecture to improve performance in continuous delivery environments
- Using architecture to apply emerging technologies successfully
A Collaborative, Visual, and Agile Way to Build Domain-Driven Software
Storytelling is at the heart of human communication—why not use it to overcome costly misunderstandings when designing software? By telling and visualizing stories, domain experts and team members make business processes and domain knowledge tangible. Domain Storytelling enables everyone to understand the relevant people, activities, and work items. With this guide, the method’s inventors explain how domain experts and teams can work together to capture insights with simple pictographs, show their work, solicit feedback, and get everyone on the same page.
Stefan Hofer and Henning Schwentner introduce the methods easy pictographic language, scenario-based modeling techniques, workshop format, and relationship to other modeling methods. Using step-by-step case studies, they guide you through solving many common problems:
- Fully align all project participants and stakeholders, both technical and business-focused
- Master a simple set of symbols and rules for modeling any process or workflow
- Use workshop-based collaborative modeling to find better solutions faster
- Draw clear boundaries to organize your domain, software, and teams
- Transform domain knowledge into requirements, embedded naturally into an agile process
- Move your models from diagrams and sticky notes to code
- Gain better visibility into your IT landscape so you can consolidate or optimize it
This guide is for everyone who wants more effective software—from developers, architects, and team leads to the domain experts, product owners, and executives who rely on it every day.
Principles of WEB API Design
Delivering Value with APIs and Microservices
The Full-Lifecycle Guide to API Design
Principles of Web API Design brings together principles and processes to help you succeed across the entire API design lifecycle. Drawing on extensive in-the-trenches experience, leading consultant James Higginbotham helps you align every stakeholder on specific outcomes, design APIs that deliver value, and scale the design process from small teams to the entire organization.
Higginbotham helps you bring an “outside-in” perspective to API design to reflect the voices of customers and product teams, map requirements to specific and well-organized APIs, and choose the right API style for writing them. He walks through a real-world example from the ground up, offering guidance for anyone designing new APIs or extending existing APIs.
- Deliver great APIs by getting your design processes right
- Gain agreement on specific outcomes from design teams, customers, and other stakeholders
- Craft job stories, conduct EventStorming, and model capabilities
- Identify the right APIs, and organize operations into coherent API profiles
- Choose the best styles for each project: REST, gRPC, GraphQL, or event-based async APIs
- Refine designs based on feedback from documenters, testers, and customers
- Decompose APIs into microservices
- Mature your API program, implementing design and management processes that scale
This guide is invaluable for anyone involved in planning or building APIs–architects, developers, team leaders, managers in single and multi-team environments, and any technical or business professional delivering “API-as-a-product” offerings.
Adaptive Systems with Domain-Driven Design, Wardley Mapping, and Team Topologies
Architecture for FlowComing Soon
Balancing Coupling in Software Design
Successful Software Architecture in General and Distributed Systems