هیچ تصمیم آسانی در معماری نرم افزار وجود ندارد. در عوض، بخشهای سخت بسیاری وجود دارد؛ مشکلات یا مسائل دشواری که بهترین شیوه ای برای انجام ندارند و شما را مجبور میکنند تا با انجام سبک سنگینهای مختلف، یکی را برای موفقیت انتخاب کنید. با کمک کتاب Software Architecture: The Hard Parts (معماری نرم افزار: قسمتهای سخت)، شما یاد خواهید گرفت که چگونه به طور انتقادی در مورد سبک سنگینهای مربوط به معماریهای توزیع شده فکر کنید.
پیشکسوتان معماری و مشاوران مجرب، نیل فورد، مارک ریچاردز، پرامود سادالاژ و ژامک دهقانی، درباره راهبردهای انتخاب یک معماری مناسب بحث میکنند. نویسندگان با سر هم کردن داستانی درباره یک گروه خیالی از متخصصان فناوری - جوخه Sysops - همه چیز را از نحوه تعیین جزئیات سرویس، مدیریت گردش کار و هماهنگ سازی، مدیریت و جداسازی قراردادها و مدیریت تراکنشهای توزیع شده تا نحوه بهینه سازی ویژگیهای عملیاتی، مانند مقیاس پذیری، کشش و عملکرد را مورد بررسی قرار میدهند.
این کتاب با تمرکز بر سوالات متداول، تکنیکهایی را ارائه میکند که به شما کمک میکند تا هنگام مواجهه با مسائلی که به عنوان یک معمار با آن مواجه هستید، سبک سنگینها را انجام دهید و بررسی کنید.
مطالبی که در کتاب Software Architecture: The Hard Parts: Modern Trade-Off Analysis for Distributed Architectures (معماری نرم افزار: قسمتهای سخت: تحلیل سبک سنگینهای مدرن برای معماریهای توزیع شده) خواهید آموخت:
- تحلیل سبک سنگینها و مستند سازی موثر تصمیماتان
- تصمیم گیریهای بهتر با توجه به جزئیات سرویس
- درک پیچیدگیهای جداسازی برنامههای یکپارچه
- مدیریت و جداسازی قراردادهای بین خدمات
- مدیریت دادهها در یک معماری بسیار توزیع شده
- یادگیری الگو هایی برای مدیریت گردش کار و تراکنشها در هنگام شکستن برنامه ها
Table of Contents:
- 1. What Happens When There Are No “Best Practices”?
- Why “The Hard Parts”?
- Giving Timeless Advice About Software Architecture
- The Importance of Data in Architecture
- Architectural Decision Records
- Architecture Fitness Functions
- Architecture Versus Design: Keeping Definitions Simple
- Introducing the Sysops Squad Saga
- I. Pulling Things Apart
- 2. Discerning Coupling in Software Architecture
- Architecture (Quantum | Quanta)
- Sysops Squad Saga: Understanding Quanta
- 3. Architectural Modularity
- Modularity Drivers
- Sysops Squad Saga: Creating a Business Case
- 4. Architectural Decomposition
- Is the Codebase Decomposable?
- Component-Based Decomposition
- Tactical Forking
- Sysops Squad Saga: Choosing a Decomposition Approach
- 5. Component-Based Decomposition Patterns
- Identify and Size Components Patterns
- Gather Common Domain Components Pattern
- Flatten Components Pattern
- Determine Component Dependencies Pattern
- Create Component Domains Pattern
- Create Domain Services Pattern
- Summary
- 6. Pulling Apart Operational Data
- Data Decomposition Drivers
- Decomposing Monolithic Data
- Selecting a Database Type
- Sysops Squad Saga: Polyglot Databases
- 7. Service Granularity
- Granularity Disintegrators
- Granularity Integrators
- Finding the Right Balance
- Sysops Squad Saga: Ticket Assignment Granularity
- Sysops Squad Saga: Customer Registration Granularity
- II. Putting Things Back Together
- 8. Reuse Patterns
- Code Replication
- Shared Library
- Shared Service
- Sidecars and Service Mesh
- Sysops Squad Saga: Common Infrastructure Logic
- Code Reuse: When Does It Add Value?
- Sysops Squad Saga: Shared Domain Functionality
- 9. Data Ownership and Distributed Transactions
- Assigning Data Ownership
- Single Ownership Scenario
- Common Ownership Scenario
- Joint Ownership Scenario
- Service Consolidation Technique
- Data Ownership Summary
- Distributed Transactions
- Eventual Consistency Patterns
- Sysops Squad Saga: Data Ownership for Ticket Processing
- 10. Distributed Data Access
- Interservice Communication Pattern
- Column Schema Replication Pattern
- Replicated Caching Pattern
- Data Domain Pattern
- Sysops Squad Saga: Data Access for Ticket Assignment
- 11. Managing Distributed Workflows
- Orchestration Communication Style
- Choreography Communication Style
- Trade-Offs Between Orchestration and Choreography
- Sysops Squad Saga: Managing Workflows
- 12. Transactional Sagas
- Transactional Saga Patterns
- State Management and Eventual Consistency
- Techniques for Managing Sagas
- Sysops Squad Saga: Atomic Transactions and Compensating Updates
- 13. Contracts
- Strict Versus Loose Contracts
- Stamp Coupling
- Sysops Squad Saga: Managing Ticketing Contracts
- 14. Managing Analytical Data
- Previous Approaches
- The Data Mesh
- Sysops Squad Saga: Data Mesh
- 15. Build Your Own Trade-Off Analysis
- Finding Entangled Dimensions
- Trade-Off Techniques
- Sysops Squad Saga: Epilogue
- A. Concept and Term References
- B. Architecture Decision Record References
- C. Trade-Off References