
عنوان:
System Design Guide for Software Professionals
نویسنده:
Dhirendra Sinha , Tejas Chopra
انتشارات:
Packt Publishing Pvt Ltd
تاریخ انتشار:
2024
حجم:
5MB
معرفی کتاب:" طراحی سیستمهای نرمافزاری مقیاسپذیر"
ساخت سیستمهای نرمافزاری مقیاسپذیر بیش از همیشه حیاتی است. با این حال، بسیاری از متخصصان نرمافزار در مواجهه با پیچیدگیهای طراحی سیستم، به ویژه برای موقعیتهای شغلی در شرکتهای بزرگ، دچار مشکل میشوند.
این کتاب که توسط Dhirendra Sinha، رهبر مهندسی در Google با تجربه کار در شرکتهایی مانند Cisco، Oracle و Yahoo، و Tejas Chopra، مهندس ارشد نرمافزار در Netflix، سخنران TEDx و همبنیانگذار GoEB1 نوشته شده است، یک منبع جامع و معتبر در زمینه طراحی سیستم ارائه میدهد و بینشها و استراتژیهای ارزشمندی برای موفقیت در مصاحبههای شرکتهای بزرگ فناوری ارائه میکند.
این راهنما مبانی طراحی سیستم، شامل اصول و تکنیکهای سیستمهای توزیعشده، و اجزای اصلی مانند قضایای سیستمهای توزیعشده، ویژگیها و طراحی و پیادهسازی مؤلفههای سیستم را پوشش میدهد. با مثالهایی از برنامههای محبوب مانند Uber، Twitter، Instagram، Google Docs و Netflix، یاد میگیرید چگونه مفاهیم را در سناریوهای واقعی اعمال کنید. این کتاب همچنین نکات و استراتژیهای تخصصی برای آمادهسازی و موفقیت در مصاحبههای طراحی سیستم ارائه میدهد و شامل یک نقشه ذهنی / Cheat Sheet برای جمعبندی نکات کلیدی است.
ویژگیهای کلیدی:
- پوشش جامع مفاهیم سیستمهای توزیعشده و تکنیکهای عملی طراحی سیستم
- نکات داخلی و استراتژیهای اثباتشده از رهبران مهندسی در شرکتهای برتر فناوری
- مطالعه موردی دقیق از برنامههای پرکاربرد و معماری سیستمهای آنها
آنچه خواهید آموخت:
- طراحی برای مقیاسپذیری و کارآمدی با بینشهای تخصصی
- به کارگیری قضایای سیستمهای توزیعشده و ویژگیها
- پیادهسازی DNS، پایگاه دادهها، کشها، صفها و APIها
- تحلیل مطالعه موردی سیستمهای واقعی
- یادگیری نکات موفقیت در مصاحبههای طراحی سیستم
- بهکارگیری روشهای استاندارد صنعتی برای طراحی و ارزیابی سیستم
- بررسی معماری و عملکرد سیستمهای ابری
مخاطب کتاب:
این کتاب منبعی ضروری برای متخصصان نرمافزار با تجربه، به ویژه افرادی با ۵ تا ۱۵ سال تجربه در ساخت سیستمهای توزیعشده مقیاسپذیر، برنامههای وب و میکروسرویسهای بکاند است. چه توسعهدهنده باتجربه باشید یا معمار سیستم که میخواهد مهارتهای خود را در طراحی سیستم افزایش دهد، این کتاب بینش و دانش عملی لازم برای موفقیت در مصاحبههای فنی و پیشرفت شغلی را ارائه میدهد. داشتن پایه محکم در سیستمهای توزیعشده، ساختار دادهها/الگوریتمها و توسعه وب به شما کمک میکند بیشترین بهره را از این راهنمای جامع ببرید.
فهرست مطالب
- Contributors
- About the authors
- About the reviewers
- Preface
- Part 1: Foundations of System Design
- Chapter 1: Basics of System Design
- What is system design?
- What are the types of system design?
- Importance of system design in the industry
- Practical examples of the importance of system design
- Summary
- Chapter 2: Distributed System Attributes
- A hotel room booking example
- Consistency
- Availability
- Understanding partition tolerance
- Latency
- Durability
- Reliability
- Fault tolerance
- Scalability
- Summary
- Chapter 3: Distributed Systems Theorems and Data Structures
- CAP theorem
- PACELC theorem
- BGP
- FLP impossibility theorem
- Consistent hashing
- Bloom filters
- Count-min sketch
- HyperLogLog
- Summary
- Part 2: Core Components of Distributed Systems
- Chapter 4: Distributed Systems Building Blocks: DNS, Load Balancers, and Application Gateways
- Exploring DNS
- Scalability, reliability, and consistency in DNS
- Load balancers
- Application gateways
- Microservices architectures
- Cloud-native implementations
- On-premises options
- Summary
- Chapter 5: Design and Implementation of System Components – Databases and Storage
- Databases
- Key-value stores
- Enhancing scalability and data replication
- Implementing get and put functions
- Ensuring fault tolerance and identifying failures in a key-value store
- A system design interview – key value store design questions and strategies
- DynamoDB
- Column-family databases
- HBase
- Graph-based databases
- The Neo4j graph database
- Relational modeling versus graph modeling
- Summary
- References
- Chapter 6: Distributed Cache
- What is caching?
- Designing a distributed cache
- Popular distributed cache solutions
- Summary
- Chapter 7: Pub/Sub and Distributed Queues
- The evolution of distributed systems
- Designing a pub/sub system
- Kafka
- Kafka Streams
- Kinesis
- Summary
- Part 3: System Design in Practice
- Chapter 8: Design and Implementation of System Components: API, Security, and Metrics
- REST APIs
- gRPC APIs
- Comparing REST and gRPC
- API security
- Distributed systems logging
- Metrics in a distributed system
- Alerting in a distributed system
- Tracing in a distributed system
- Best practices
- Summary
- Chapter 9: System Design – URL Shortener
- Real-world use cases
- Client APIs needed
- Estimates and calculations
- System design
- Requirements verification
- Summary
- Chapter 10: System Design – Proximity Service
- Real-world use cases
- Functional requirements
- Non-functional requirements
- Client APIs needed
- Estimates and calculations
- System design
- Requirements verification
- Summary
- Chapter 11: Designing a Service Like Twitter
- Functional requirements
- Non-functional requirements
- Data model
- Scale calculations
- Exploring high-level design
- Designing Tweet Service
- Designing User Service
- Low-level design – Timeline Service
- Designing Search Service
- Additional considerations
- Summary
- Chapter 12: Designing a Service Like Instagram
- Functional requirements
- Non-functional requirements
- Designing the data model
- Scale calculations
- High-level design
- Low-level design
- Additional considerations
- Summary
- Chapter 13: Designing a Service Like Google Docs
- Functional requirements
- Non-functional requirements
- Data model
- Scale calculations
- High-level design
- Low-level design
- Additional considerations and best practices
- Summary
- Chapter 14: Designing a Service Like Netflix
- Functional requirements
- Non-functional requirements
- Designing the data model
- Scale calculations
- High-level design
- Low-level system design
- The CDN
- Summary
- Chapter 15: Tips for Interviewees
- Tips for preparation for system design interviews
- Tips for the interview session
- Summary
- Chapter 16: System Design Cheat Sheet
- Which data store should we use for a use case?
- Which data structures should we use for a use case?
- Which components should we use for which use case?
- What protocol should we use for which use case?
- Which solution should we use for which core challenge?
- Summary
- Index
مشخصات
نام کتاب
System Design Guide for Software Professionals
نویسنده
Dhirendra Sinha , Tejas Chopra
انتشارات
Packt Publishing Pvt Ltd
تاریخ انتشار
2024
ISBN
9781805124993
تعداد صفحات
389
زبان
انگلیسی
فرمت
حجم
5MB
موضوع
Algorithms and Data Structures