دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش:
نویسندگان: Vlad Khononov
سری:
ISBN (شابک) : 9781098100131
ناشر: O'Reilly Media, Inc.
سال نشر: 2021
تعداد صفحات:
زبان: English
فرمت فایل : EPUB (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 15 Mb
در صورت تبدیل فایل کتاب Learning Domain-Driven Design به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب آموزش طراحی دامنه محور نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
امروزه، بیش از هر زمان دیگری، ساختن نرم افزار سخت است. ما نه تنها باید روندهای تکنولوژیکی در حال تغییر را دنبال کنیم، بلکه باید حوزه های تجاری را نیز درک کنیم که نرم افزار را برای آنها می سازیم. مورد دوم اغلب تحت نظارت است و توضیح می دهد که چرا بسیاری از پروژه ها محکوم به شکست هستند. به هر حال، اگر مشکل را درک نکنید، چگونه می توانید یک راه حل بسازید؟ از طریق این کتاب، شما روش طراحی دامنه محور (DDD) را خواهید آموخت که مجموعه ای از الگوها، اصول و شیوه های اصلی را برای تجزیه و تحلیل حوزه های تجاری، درک استراتژی کسب و کار، و مهمتر از همه، همسویی طراحی نرم افزار با نیازهای تجاری آن ارائه می دهد. اینها عبارتند از زبان همه جا، زمینه های محدود، طوفان رویداد و غیره. خواهید دید که چگونه این شیوه ها نه تنها به اجرای قوی منطق کسب و کار منجر می شود، بلکه به طراحی و معماری نرم افزار اثبات شده در آینده نیز منجر می شود. شما همچنین رابطه بین DDD و سایر روشها را یاد خواهید گرفت تا اطمینان حاصل کنید که قادر به اتخاذ تصمیمات معماری هستید که نیازهای تجاری را برآورده میکند. بخش آخر همه اینها را با استفاده از یک داستان واقعی از پیادهسازی طراحی دامنه محور در یک شرکت استارتآپ به عمل میآورد. خواندن این کتاب به شما این امکان را میدهد که از DDD برای تجزیه و تحلیل حوزههای تجاری، همسوسازی نرمافزارها و استراتژیهای تجاری و تصمیمگیریهای طراحی اجتماعی و فنی استفاده کنید. در پایان این کتاب، شما قادر خواهید بود: - درک مشترکی از یک حوزه تجاری ایجاد کنید - دامنه تجاری و استراتژی رقابتی یک شرکت را تجزیه و تحلیل کنید - یک سیستم را به زمینه های محدود تجزیه کنید - کار تیم های متعدد را با هم هماهنگ کنید - به تدریج شروع کنید. پیاده سازی طراحی دامنه محور
Today, more than ever, building software is hard. Not only we have to chase ever-changing technological trends, but we also have to grasp business domains that we are building the software for. The latter is often overseen, and it explains why so many projects are doomed to fail. After all, how can you build a solution if you don't understand the problem? Through this book, you will learn the Domain-Driven Design (DDD) methodology which provides a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs. These include Ubiquitous Language, Bounded Contexts, Event Storming, and others. You will see how these practices not only lead to robust implementation of business logic, but also to future-proof software design and architecture. You will also learn the relationship between DDD and other methodologies to ensure that you are able to make architectural decisions that will meet the business needs. The final section puts all of this into practice using a real life story of implementing Domain-Driven Design in a startup company. Reading the book will allow you to use DDD for analyzing business domains, aligning software and business strategies, and making socio-technical design decisions. By the end of this book, you will be able to:-Build a shared understanding of a business domain-Analyze a company's business domain and competitive strategy-Decompose a system into bounded contexts-Coordinate the work of multiple teams working together-Gradually start implementing domain-driven design
Copyright Table of Contents Foreword Preface Why I Wrote This Book Who Should Read This Book Navigating the Book Example Domain: WolfDesk Conventions Used in This Book Using Code Examples O’Reilly Online Learning How to Contact Us Acknowledgments Introduction Part I. Strategic Design Chapter 1. Analyzing Business Domains What Is a Business Domain? What Is a Subdomain? Types of Subdomains Comparing Subdomains Identifying Subdomain Boundaries Domain Analysis Examples Gigmaster BusVNext Who Are the Domain Experts? Conclusion Exercises Chapter 2. Discovering Domain Knowledge Business Problems Knowledge Discovery Communication What Is a Ubiquitous Language? Language of the Business Scenarios Consistency Model of the Business Domain What Is a Model? Effective Modeling Modeling the Business Domain Continuous Effort Tools Challenges Conclusion Exercises Chapter 3. Managing Domain Complexity Inconsistent Models What Is a Bounded Context? Model Boundaries Ubiquitous Language Refined Scope of a Bounded Context Bounded Contexts Versus Subdomains Subdomains Bounded Contexts The Interplay Between Subdomains and Bounded Contexts Boundaries Physical Boundaries Ownership Boundaries Bounded Contexts in Real Life Semantic Domains Science Buying a Refrigerator Conclusion Exercises Chapter 4. Integrating Bounded Contexts Cooperation Partnership Shared Kernel Customer–Supplier Conformist Anticorruption Layer Open-Host Service Separate Ways Communication Issues Generic Subdomains Model Differences Context Map Maintenance Limitations Conclusion Exercises Part II. Tactical Design Chapter 5. Implementing Simple Business Logic Transaction Script Implementation It’s Not That Easy! When to Use Transaction Script Active Record Implementation When to Use Active Record Be Pragmatic Conclusion Exercises Chapter 6. Tackling Complex Business Logic History Domain Model Implementation Building Blocks Managing Complexity Conclusion Exercises Chapter 7. Modeling the Dimension of Time Event Sourcing Search Analysis Source of Truth Event Store Event-Sourced Domain Model Advantages Disadvantages Frequently Asked Questions Performance Deleting Data Why Can’t I Just…? Conclusion Exercises Chapter 8. Architectural Patterns Business Logic Versus Architectural Patterns Layered Architecture Presentation Layer Business Logic Layer Data Access Layer Communication Between Layers Variation When to Use Layered Architecture Ports & Adapters Terminology Dependency Inversion Principle Integration of Infrastructural Components Variants When to Use Ports & Adapters Command-Query Responsibility Segregation Polyglot Modeling Implementation Projecting Read Models Challenges Model Segregation When to Use CQRS Scope Conclusion Exercises Chapter 9. Communication Patterns Model Translation Stateless Model Translation Stateful Model Translation Integrating Aggregates Outbox Saga Process Manager Conclusion Exercises Part III. Applying Domain-Driven Design in Practice Chapter 10. Design Heuristics Heuristic Bounded Contexts Business Logic Implementation Patterns Architectural Patterns Testing Strategy Testing Pyramid Testing Diamond Reversed Testing Pyramid Tactical Design Decision Tree Conclusion Exercises Chapter 11. Evolving Design Decisions Changes in Domains Core to Generic Generic to Core Supporting to Generic Supporting to Core Core to Supporting Generic to Supporting Strategic Design Concerns Tactical Design Concerns Transaction Script to Active Record Active Record to Domain Model Domain Model to Event-Sourced Domain Model Generating Past Transitions Modeling Migration Events Organizational Changes Partnership to Customer–Supplier Customer–Supplier to Separate Ways Domain Knowledge Growth Subdomains Bounded Contexts Aggregates Conclusion Exercises Chapter 12. EventStorming What Is EventStorming? Who Should Participate in EventStorming? What Do You Need for EventStorming? The EventStorming Process Step 1: Unstructured Exploration Step 2: Timelines Step 3: Pain Points Step 4: Pivotal Events Step 5: Commands Step 6: Policies Step 7: Read Models Step 8: External Systems Step 9: Aggregates Step 10: Bounded Contexts Variants When to Use EventStorming Facilitation Tips Watch the Dynamics Remote EventStorming Conclusion Exercises Chapter 13. Domain-Driven Design in the Real World Strategic Analysis Understand the Business Domain Explore the Current Design Modernization Strategy Strategic Modernization Tactical Modernization Cultivate a Ubiquitous Language Pragmatic Domain-Driven Design Selling Domain-Driven Design Undercover Domain-Driven Design Conclusion Exercises Part IV. Relationships to Other Methodologies and Patterns Chapter 14. Microservices What Is a Service? What Is a Microservice? Method as a Service: Perfect Microservices? Design Goal System Complexity Microservices as Deep Services Microservices as Deep Modules Domain-Driven Design and Microservices’ Boundaries Bounded Contexts Aggregates Subdomains Compressing Microservices’ Public Interfaces Open-Host Service Anticorruption Layer Conclusion Exercises Chapter 15. Event-Driven Architecture Event-Driven Architecture Events Events, Commands, and Messages Structure Types of Events Designing Event-Driven Integration Distributed Big Ball of Mud Temporal Coupling Functional Coupling Implementation Coupling Refactoring the Event-Driven Integration Event-Driven Design Heuristics Conclusion Exercises Chapter 16. Data Mesh Analytical Data Model Versus Transactional Data Model Fact Table Dimension Table Analytical Models Analytical Data Management Platforms Data Warehouse Data Lake Challenges of Data Warehouse and Data Lake Architectures Data Mesh Decompose Data Around Domains Data as a Product Enable Autonomy Build an Ecosystem Combining Data Mesh and Domain-Driven Design Conclusion Exercises Closing Words Problem Solution Implementation Further Reading Advanced Domain-Driven Design Architectural and Integration Patterns Modernization of Legacy Systems EventStorming Conclusion Appendix A. Applying DDD: A Case Study Five Bounded Contexts Business Domain Bounded Context #1: Marketing Bounded Context #2: CRM Bounded Context #3: Event Crunchers Bounded Context #4: Bonuses Bounded Context #5: The Marketing Hub Discussion Ubiquitous Language Subdomains Boundaries of Bounded Contexts Conclusion Appendix B. Answers to Exercise Questions Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6 Chapter 7 Chapter 8 Chapter 9 Chapter 10 Chapter 11 Chapter 12 Chapter 13 Chapter 14 Chapter 15 Chapter 16 Bibliography Index About the Author Colophon