Зарегистрироваться
Восстановить пароль
FAQ по входу

Ramchandani H.K. Hands-On System Design: Learn System Design, Scaling Applications, Software Development Design Patterns with Real Use-Cases

  • Файл формата zip
  • размером 1,40 МБ
  • содержит документ формата epub
  • Добавлен пользователем
  • Описание отредактировано
Ramchandani H.K. Hands-On System Design: Learn System Design, Scaling Applications, Software Development Design Patterns with Real Use-Cases
BPB Publications, 2022. — 228 p.
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.
The book is primarily divided into three parts. The first part of the book contains five chapters that explain the fundamentals of system designing. It discusses various technologies like Cache memory, Messaging queues, Databases, etc. which are used to build modern-day scalable distributed systems. It also touches on some core networking concepts like the OSI model, important protocols like HTTP and REST architecture. Furthermore, different strategies to scale databases horizontally and vertically are also covered. In addition, an emphasis on different architectural styles – monolithic, service-oriented, and microservices is put to help a user understand the pros and cons of each one. Also, Object-oriented principles are discussed and explained with C++-style code snippets.
The second part of the book takes the responsibility of explaining – how to start the system design in a practical way. It contains three chapters where the first chapter explains the various design patterns used in the industry with C++ style code snippets. It explains different behavioral, creational, and structural design patterns. The next chapter describes the basic tools and techniques to design a system in an object-oriented way. It describes how to define system requirements and how to use tools like class diagrams to depict important objects of the system. Finally, the tools and techniques discussed are used to design a system so that readers can understand how to put in use everything they just learned.
The final part of the book contains five chapters and each chapter contains a dedicated system design problem. In each chapter, a feasible solution to the system design problem is discussed using the techniques and technologies learned in the previous two sections.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.
  • Регистрация