Hands-On System Design: Learn System Design, Scaling Applications, Software Development Design Patterns with Real Use-Cases
- Length: 220 pages
- Edition: 1
- Language: English
- Publisher: BPB Publications
- Publication Date: 2022-03-29
- ISBN-10: 9355512368
- ISBN-13: 9789355512369
- Sales Rank: #3691436 (See Top 100 Books)
The ultimate guide to ace your system designing interviews.
KEY FEATURES
- Provides step-by-step solutions to real-world problems related to system design and development.
- Includes detailed explanations of each OOPs idea and design pattern, along with code snippets in the C++ style.
- Contains illustrations and demonstrations that describe the technologies enabling modern scalable systems.
DESCRIPTION
Scaling software application is the focus of this book, which takes the reader on an in-depth journey. You’ll have a better understanding of how to create a scalable, enterprise-level application after reading this guide.
The book discusses system design principles, computer networks, major networking protocols, strategies for scaling data access, and various architectural styles for creating the system. A thorough examination of various technologies such as Cache Memory, CDN, Load Balancers, and Messaging Queues are conducted and their implementation. The book also demonstrates how you can use these combinations of technologies in the best way to build a scalable enterprise-level system. The examination of several architectural styles for system design assists you in choosing the best path for architecting your system. Additionally, the book explores object-oriented programming concepts and design patterns that facilitate the creation of clean, maintainable code. The reader will develop an intuitive knowledge of numerous tools and approaches for creating a scalable system by using several actual system design examples.
This book can tackle any system design problem you may meet in your current position or interviews. You’ll learn how to design a system from scratch, and the examples in the book will help you to improve your skills.
WHAT YOU WILL LEARN
- Acquaint yourself with the fundamentals of computer networks and major networking protocols.
- Gain an understanding of various technologies to develop a distributed scalable application.
- Develop the capacity to approach any system design problem with a unique perspective.
- Gain insight into programming design patterns and object-oriented principles.
- Investigate several methods for expanding data access.
- Discover many architectural styles for system design.
WHO THIS BOOK IS FOR
The book is intended for software developers, system design engineers, aspiring system architects, IT professionals and students who want to learn how to construct a scalable application or prepare for system design interviews. Basic knowledge of programming and computer architecture is recommended but not demanded to grasp the book.
Cover Page Title Page Copyright Page Dedication Page About the Author About the Reviewers Acknowledgement Preface Errata Table of Contents 1. Fundamentals of System Design Principles Introduction Structure Objectives Introduction to distributed scalable systems Bottlenecks in designing scalable systems Performance and scalability Principles of scaling data access Cache Local cache Global cache Distributed cache Proxy servers Data indexing Load balancers Types of load balancers Load balancer algorithms Asynchronism Content Delivery Network (CDN) CAP theorem Databases Relational and non-relational databases Some other important databases Spatial database Graph database Redundancy Conclusion Points to remember Multiple choice questions Answers Questions Key terms 2. Networking Basics Introduction Structure Objectives Introduction to network OSI model Physical layer Data-link layer Network layer Transport layer Session layer Presentation layer Application layer Hypertext Transfer Protocol (HTTP) Transmission Control Protocol User Datagram Protocol Introduction to REST architecture Conclusion Points to remember Multiple choice questions Answers Questions Key terms 3. Scaling Databases Introduction Structure Objectives Horizontal scaling Vertical scaling Database scaling methods Read replicas Multi-master replica Connection pooling Connection load balancing Conclusion Points to remember Multiple choice questions Answers Questions Key terms 4. System Architecture Introduction Structure Objectives Monolithic systems Service-oriented architecture SOA implementation approaches Microservices Microservices versus SOA Microservices versus monolithic systems CI/CD for microservices Conclusion Points to remember Multiple choice questions Answers Questions Key terms 5. Introduction to OOPs Introduction Structure Objectives Introduction to OOPs OOPs features Class Object Inheritance Single inheritance Multi-level inheritance Multiple inheritance Hierarchical inheritance Hybrid inheritance Polymorphism Abstraction Encapsulation Conclusion Points to remember Multiple choice questions Answers Questions Key terms 6. Design Patterns Introduction Structure Objectives Design patterns and their uses Types of design patterns Creational Object pool Prototype Singleton Behavioral Chain of responsibility Mediator Observer Structural Bridge Decorator Flyweight Proxy Conclusion Points to remember Multiple choice questions Answers Questions 7. Object-Oriented Design Methodology Introduction Structure Objectives Insight into object-oriented design methodology FURPS+ requirements Performing object-oriented analysis and design Defining system requirements Class diagrams Conclusion Points to remember Multiple choice questions Answers Questions Key terms 8. Approaching System Design Problems Introduction Structure Objectives Getting started Requirement gathering Back of the envelope calculations Scaling the design SQL versus NoSQL Identifying the algorithm Partitioning the data Cache Database cleanup Conclusion Points to remember Multiple choice questions Answers Questions Key terms 9. Design a Key-Value Data Store Introduction Structure Objectives Defining the system requirements Back-of-the-envelope calculations Creating a scalable system Consistency or availability High-level design Scaling the database Durability and consistency Re-defining the high-level design Conclusion Points to remember Multiple choice question Answer Questions Key term 10. Design a File Hosting Service Introduction Structure Objectives Defining system requirements Creating scalable system Conclusion Points to remember Multiple choice questions Answers Questions Key terms 11. Design a Business Communication Tool Introduction Structure Objectives Defining system requirements Back-of-the-envelope calculations Designing a scalable system Storing messages: SQL or NoSQL? Scaling data access Conclusion Points to remember Multiple choice question Answer Questions Key terms 12. Design a Card Authentication System Introduction Structure Objectives Defining system requirements Back-of-the-envelope calculations Creating scalable system design Scaling the design components Load balancer Cache Security Conclusion Points to remember Multiple choice questions Answers Questions Key terms 13. Design an Image Hosting Application Introduction Structure Objectives Defining system requirements Creating a scalable system Conclusion Points to remember Multiple choice question Answer Questions Key terms Index
Donate to keep this site alive
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.