همان طور که سازمانها از برنامههای یکپارچه (monolithic)، به سمت میکرو سرویسهای کوچکتر و مستقلتر حرکت میکنند، سیستمهای توزیع شده نیز ریز ساختارتر شده اند. اما توسعه این سیستمهای جدید، مشکلات زیاد خودشان را نیز به همراه دارند. کتاب Building Microservices, 2nd Edition (ساخت میکرو سرویس ها، ویرایش دوم)، یک دید کلی از موضوعاتی که هنگام ساخت، مدیریت و مقیاس پذیری معماری میکرو سرویسها باید در نظر بگیرید را ارائه میدهد.
میکرو سرویسها رویکردی برای سیستمهای توزیع شده هستند که استفاده از سرویسهای ریز ساختاری که میتوان به طور مستقل تغییر داد، مستقر و منتشر کرد را ترویج میدهند. برای سازمان هایی که به سمت سیستمهای سست اتصالتر (loosely coupled) و تیمهای خودمختاری که قابلیتهای در ارتباط با کاربر را ارائه بدهند حرکت میکنند، میکرو سرویسها فوق العاده خوب عمل میکنند. فراتر از این، میکرو سرویسها گزینههای بسیار زیادی را برای ایجاد سیستمها در اختیار ما قرار میدهند و به ما انعطاف پذیری زیادی میدهند تا مطمئن شویم که سیستم ما میتواند برای رفع نیازهای کاربران تغییر کند. هرچند، میکرو سرویسها هم نیز بدون معایب قابل توجهی نیستند. به عنوان یک سیستم توزیع شده، آنها پیچیدگیهای زیادی را به ارمغان میآورند، که بسیاری از آنها حتی برای توسعه دهندگان باتجربه نیز جدید هستند.
تجربیات افراد در سراسر جهان، همراه با ظهور فناوریهای جدید، تأثیر عمیقی بر نحوهی استفاده از میکرو سرویسها دارد. این کتاب این ایدهها را به همراه نمونههای عینی و واقعی در کنار هم قرار میدهد تا به شما در فهم اینکه آیا میکرو سرویسها برای شما مناسب هستند یا نه کمک کند.
چه کسانی باید این کتاب را بخوانند
حوزهی کتاب ساخت میکرو سرویسها وسیع است، زیرا مفاهیم معماری میکرو سرویسها نیز وسیع هستند. به این ترتیب، این کتاب باید برای افرادی که به جنبههای طراحی، توسعه، استقرار، آزمایش و نگهداری سیستمها علاقه مند هستند جذاب باشد. کسانی از شما که پیش از این سفر خود را به سمت معماریهای ریز ساختارتر آغاز کرده اند، چه برای برنامههای توسعه نیافته و چه به عنوان بخشی از تجزیه یک سیستم موجود یکپارچه، توصیههای کاربردی زیادی را پیدا خواهید کرد. این کتاب همچنین به کسانی از شما که میخواهند بدانند که این همه سر و صدا برای چیست کمک میکند تا بتوانید تعیین کنید که میکرو سرویسها برای شما مناسب هستند یا نه.
مطالبی که در کتاب «ساخت میکرو سرویس ها: طراحی سیستمهای ریز ساختار، ویرایش دوم» یاد خواهید گرفت:
- دریافت اطلاعات تازه درباره رابطهای کاربری، تنظیم کانتینر و serverless
- استفاده از میکرو سرویسها برای همسویی طراحی سیستم با اهداف سازمان خودتان
- بررسی گزینهها برای یکپارچه کردن یک سرویس با بقیه سیستم
- اتخاذ رویکردی افزایشی در هنگام جدا کردن کدهای یکپارچه
- استقرار جداگانه میکرو سرویسها از طریق یکپارچگی مداوم
- بررسی پیچیدگیهای آزمایش و نظارت بر سرویسهای توزیع شده
- مدیریت امنیت با محتوای گسترده در مورد مدلهای کاربر به سرویس و سرویس به سرویس
Table of Contents:
- I. Foundation
- 1. What Are Microservices?
- Microservices at a Glance
- Key Concepts of Microservices
- The Monolith
- Enabling Technology
- Advantages of Microservices
- Microservice Pain Points
- Should I Use Microservices?
- Summary
- 2. How to Model Microservices
- Introducing MusicCorp
- What Makes a Good Microservice Boundary?
- Types of Coupling
- Just Enough Domain-Driven Design
- The Case for Domain-Driven Design for Microservices
- Alternatives to Business Domain Boundaries
- Summary
- 3. Splitting the Monolith
- Have a Goal
- Incremental Migration
- The Monolith Is Rarely the Enemy
- What to Split First?
- Decomposition by Layer
- Useful Decompositional Patterns
- Data Decomposition Concerns
- Summary
- 4. Microservice Communication Styles
- From In-Process to Inter-Process
- Technology for Inter-Process Communication: So Many Choices
- Styles of Microservice Communication
- Pattern: Synchronous Blocking
- Pattern: Asynchronous Nonblocking
- Pattern: Communication Through Common Data
- Pattern: Event-Driven Communication
- Proceed with Caution
- Summary
- II. Implementation
- 5. Implementing Microservice Communication
- Looking for the Ideal Technology
- Technology Choices
- Serialization Formats
- Schemas
- Handling Change Between Microservices
- Avoiding Breaking Changes
- Managing Breaking Changes
- DRY and the Perils of Code Reuse in a Microservice World
- Service Discovery
- Service Meshes and API Gateways
- Documenting Services
- Summary
- 6. Workflow
- Database Transactions
- Distributed Transactions—Two-Phase Commits
- Distributed Transactions—Just Say No
- Sagas
- Summary
- 7. Build
- Summary
- 8. Deployment
- From Logical to Physical
- Principles of Microservice Deployment
- Deployment Options
- Which Deployment Option Is Right for You?
- Kubernetes and Container Orchestration
- Progressive Delivery
- Summary
- 9. Testing
- Types of Tests
- Test Scope
- Implementing Service Tests
- Implementing (Those Tricky) End-to-End Tests
- Should You Avoid End-to-End Tests?
- Developer Experience
- From Preproduction to In-Production Testing
- Cross-Functional Testing
- Summary
- 10. From Monitoring to Observability
- Disruption, Panic, and Confusion
- Single Microservice, Single Server
- Single Microservice, Multiple Servers
- Multiple Services, Multiple Servers
- Observability Versus Monitoring
- Building Blocks for Observability
- Standardization
- Selecting Tools
- The Expert in the Machine
- Getting Started
- Summary
- 11. Security
- Core Principles
- The Five Functions of Cybersecurity
- Foundations of Application Security
- Implicit Trust Versus Zero Trust
- Securing Data
- Authentication and Authorization
- Summary
- 12. Resiliency
- What Is Resiliency?
- Failure Is Everywhere
- How Much Is Too Much?
- Degrading Functionality
- Stability Patterns
- Spreading Your Risk
- CAP Theorem
- Chaos Engineering
- Blame
- Summary
- 13. Scaling
- The Four Axes of Scaling
- Combining Models
- Start Small
- Caching
- Autoscaling
- Starting Again
- Summary
- III. People
- 14. User Interfaces
- Toward Digital
- Ownership Models
- Toward Stream-Aligned Teams
- Pattern: Monolithic Frontend
- Pattern: Micro Frontends
- Pattern: Page-Based Decomposition
- Pattern: Widget-Based Decomposition
- Constraints
- Pattern: Central Aggregating Gateway
- Pattern: Backend for Frontend (BFF)
- GraphQL
- A Hybrid Approach
- Summary
- 15. Organizational Structures
- Loosely Coupled Organizations
- Conway’s Law
- Team Size
- Understanding Conway’s Law
- Small Teams, Large Organization
- On Autonomy
- Strong Versus Collective Ownership
- Enabling Teams
- Shared Microservices
- Internal Open Source
- Pluggable, Modular Microservices
- The Orphaned Service
- Case Study: realestate.com.au
- Geographical Distribution
- Conway’s Law in Reverse
- People
- Summary
- 16. The Evolutionary Architect
- What’s in a Name?
- What Is Software Architecture?
- Making Change Possible
- An Evolutionary Vision for the Architect
- Defining System Boundaries
- A Social Construct
- Habitability
- A Principled Approach
- Guiding an Evolutionary Architecture
- Architecture in a Stream-Aligned Organization
- Building a Team
- The Required Standard
- Governance and the Paved Road
- Technical Debt
- Exception Handling
- Summary
- Afterword: Bringing It All Together
- What Are Microservices?
- Moving to Microservices
- Communication Styles
- Workflow
- Build
- Deployment
- Testing
- Monitoring and Observability
- Security
- Resiliency
- Scaling
- User Interfaces
- Organization
- Architecture
- Further Reading
- Looking Forward
- Final Words