Sign up
Forgot password?
FAQ: Login

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

  • zip file
  • size 1,40 MB
  • contains epub document(s)
  • added by
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 OOP 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 design. 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, and 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 practically. It contains three chapters and 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 into 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 required to grasp the book.
Fundamentals of System Design Principles
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.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Networking Basics
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.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Scaling Databases
Structure.
Objectives.
Horizontal scaling.
Vertical scaling.
Database scaling methods.
Read replicas.
Multi-master replica.
Connection pooling.
Connection load balancing.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
System Architecture
Structure.
Objectives.
Monolithic systems.
Service-oriented architecture.
SOA implementation approaches.
Microservices.
Microservices versus SOA.
Microservices versus monolithic systems.
CI/CD for microservices.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Introduction to OOPs
Structure.
Objectives.
Introduction to OOPs.
OOPs, features.
Class.
Object.
Inheritance.
Single inheritance.
Multi-level inheritance.
Multiple inheritance.
Hierarchical inheritance.
Hybrid inheritance.
Polymorphism.
Abstraction.
Encapsulation.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Design Patterns
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.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Object-Oriented Design Methodology
Structure.
Objectives.
Insight into object-oriented design methodology.
FURPS+ requirements.
Performing object-oriented analysis and design.
Defining system requirements.
Class diagrams.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Approaching System Design Problems
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.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Design a Key-Value Data Store
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.
Points to remember.
Multiple choice questions.
Answer.
Questions.
Key term.
Design a File Hosting Service
Structure.
Objectives.
Defining system requirements.
Creating a scalable system.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Design a Business Communication Tool
Structure.
Objectives.
Defining system requirements.
Back-of-the-envelope calculations.
Designing a scalable system.
Storing messages: SQL or NoSQL?
Scaling data access.
Points to remember.
Multiple choice questions.
Answer.
Questions.
Key terms.
Design a Card Authentication System
Structure.
Objectives.
Defining system requirements.
Back-of-the-envelope calculations.
Creating scalable system design.
Scaling the design components.
Load balancer.
Cache.
Security.
Points to remember.
Multiple choice questions.
Answers.
Questions.
Key terms.
Design an Image Hosting Application
Structure.
Objectives.
Defining system requirements.
Creating a scalable system.
Points to remember.
Multiple choice questions.
Answer.
Questions.
Key terms.
  • Sign up or login using form at top of the page to download this file.
  • Sign up
Up