Mohit Kapadiya
GithubContact
  • About Mohit
  • Skills & Experience
  • 🐍 Python
    • Python Basics
    • Advanced Python
    • Object-Oriented Python
    • Data Science & Machine Learning
    • Web Development
    • DevOps & Automation
    • Python Testing
    • Blockchain Development in Python
    • Networking and Security
    • AI & NLP in Python
    • TensorFlow
    • Web3.py
    • FastAPI
    • OpenCV
    • Python with Servers
    • Pandas
    • SciPy
    • Django
    • Matplotlib
    • Python with DBs
    • NumPy
  • Javascript
    • Basics
    • Advance Javascript
    • Object Oriented Javascript
    • Design Patterns in JS
    • Frameworks & Libraries
    • Blockchain Development in JS
    • Web Frontend in JS
    • Performance Optimization
    • JavaScript Testing
    • Backend in JS
    • JavaScript Security
    • Modern Development (Tooling)
    • JS vs JQuery
    • JS Graphics
    • JS JSON
    • JS AJAX
    • JS with Servers
  • Solidity
    • Dapp Contracts
    • Gas Optimisation
    • Unit Testing
    • ERC 6551
    • ERC 4337
    • EOF
    • Staking Contracts
    • Swap Contracts
    • ERC 20, 721, 1155
  • Frontend
    • FastAPI
    • Web3.py
    • Django
    • Three.js
    • Web3.js
    • Flask
    • Magic-UI
    • Accernety-UI
    • Material-UI
    • ThreeJS
    • AngularJS
    • NextJS
    • Tailwind CSS & Shadcn & Chart JS
    • ReactJS
    • HTML & CSS
  • Backend
    • TensorFlow.js
    • Socket.io
    • Firebase SDK
    • C, C++ & C#
    • Laravel
    • Django & Python
    • NodeJS & ExpressJS
  • Database
    • MongoDB & Mongoose
    • PosgresSQL
    • Vector
    • MySQL
    • Multi DBs Inter-Connections
    • Encryption in DBs
  • Blockchains
    • Avalnche
    • Sui
    • Tron Chain
    • TON
    • Phantom
    • Degen
    • Coti
    • Conflux
    • IOTA
    • Stacks Chain
    • Kaspa
    • BlockDAG
    • ZkSync
    • Polkadot
    • Hyper Ledger
    • Sui
    • Solana
    • Bitcoin
    • XRP Ledger
    • Cardano
    • Quranium
    • Ethereum
    • Solana
    • Arbitrum One & Nova
    • Binance Smart Chain
    • Polygon & Zero Knowledge Proof
  • White Paper Understanding
    • Polkadot
    • Hyper Ledger
    • Sui
    • Solana
    • Bitcoin
    • XRP Ledger
    • Cardano
    • Quranium
    • Ethereum
    • Solana
    • Arbitrum One & Nova
    • Binance Smart Chain
    • Polygon & Zero Knowledge Proof
  • SDKs & API Providers
    • Software Developer Kits (SDKs)
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Server & Domains
    • Azure
    • Render
    • Heroku
    • Vercel
    • Google Cloud
    • AWS (Amazon Web Service)
    • Domain Name Service Providers
      • Godaddy
      • Copy of Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • DevOps
      • Ansible
      • Paramiko
      • Fabric
      • Thirdweb
  • Security Standards
    • Developer Kits
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Quantum Computer
    • Developer Kits
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • AI, ML & NLP
    • AI & NLP
      • NLTK
      • SpaCy
      • GPT-3
    • ML & Data Science
      • Scikit-learn
      • TensorFlow
      • Keras
      • PyTorch
      • NumPy
      • Panda
      • Seaborn
      • Matplotlib
  • Hardware Wallets & Nodes
    • Developer Kits
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Protocols
    • ERCs & EIPs
      • ERC 7702
      • ERC 4337
      • ERC 6551
      • ERC 721 & 1155
      • ERC 7560
    • Web 2.0 Protocols
      • ERC 7702
      • ERC 4337
      • ERC 6551
      • ERC 721 & 1155
      • ERC 7560
    • Web 3.0 Protocols
      • Infura
      • Moralis
      • Thirdweb
    • DEX, AMM, LPs
      • Ox Protocol
      • BullX
      • Cow Swap
      • MEVX
      • Photon
      • OKX
      • Pumpfun
      • Uniswap
      • Kyberswap
      • 1 Inch
      • Paraswap
      • Jupiter
      • Moonshot
      • GMGN
    • Cross-chain Swaps
      • Developer Kits
        • Zerodev
        • Safe Wallet SDKs
        • Web3 Auth SDKs
        • Pimlico
      • API Providers
        • Alchemy
        • Infura
        • Moralis
        • Thirdweb
    • Decentralised Wallets
      • Developer Kits
        • Zerodev
        • Safe Wallet SDKs
        • Web3 Auth SDKs
        • Pimlico
      • API Providers
        • Alchemy
        • Infura
        • Moralis
        • Thirdweb
      • Overview of wallets
    • Centralised Wallets
      • Developer Kits
        • Zerodev
        • Safe Wallet SDKs
        • Web3 Auth SDKs
        • Pimlico
      • API Providers
        • Alchemy
        • Infura
        • Moralis
        • Thirdweb
    • Trading On Chain Bots
      • Shuriken Bot
      • Magnum
      • Trojan
      • GMGN
      • Wave Bot
  • System Design
    • 🔀 Horizontal vs. Vertical Scaling
    • 📚Distributed Systems
    • 💾 Microservices
    • 🔒Hashing, Signatures, and Encryption in Microservices
  • Algorithms & Cryptography
    • MPC
      • Gap-Diffie-Hellman (GDH)
    • Sphinics+
    • Falcon Signature Scheme
    • ECC vs SLH DSA
    • Zero Knoledge Proof
    • Public - Private Key Cryptography
    • Hashing Algorithms
      • SHA 256
      • ERC 4337
      • ERC 6551
      • ERC 721 & 1155
      • ERC 7560
    • Signature Validation Algorithms
      • Threshold Signature Scheme(TSS)
      • RSA
      • ECDSA
      • EdDSA
      • SLHDSA (Sphinics+)
      • ECC
    • Encryption Algorithms
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Portfolio
    • Web 3.0 Projects
      • Frogpay
      • Tanthetaa
      • BLOK Capital
      • Quranium Blockchain
      • Promind
      • Pragmatic Play API Casino Game
    • Web 2.0 Projects
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Code Testing Toolkits
    • Foundry
    • Hardhat
    • Bouncy Castle
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
  • Tech Automation Approach
    • CI/CD
    • Hardhat
    • Bouncy Castle
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
  • Articles
    • Medium Articles
    • EOF New Solidity Smart Contract Format
  • PUBLICATIONS & RESEARCH PAPERS
    • Papers
    • Talks
    • Patents
    • Standards
  • My Adventure Travels
    • Tokyo for EDCON'24 (Eth Speaker)
    • Kovilpatty for Quantum secure Blockchain
    • Medium Articles
    • EOF New Solidity Smart Contract Format
  • My Book Reading Summaries
    • Experiments Of Truth
    • Kai Chand the sar-e-aasman
    • Fountainhead
    • Medium Articles
    • EOF New Solidity Smart Contract Format
  • 📞 CONTACT
Powered by GitBook
On this page
  • Introduction 🚀
  • Horizontal Scaling (Scaling Out) 🔀
  • Vertical Scaling (Scaling Up) ⬆️
  • Comparison Table: Horizontal vs Vertical Scaling
  • Comparison Graph 📊
  • Technical Architecture Diagram 🏗️
  • User Flow Diagram 🔄
  • Code Snippet: Load Balancing Example (Node.js) 💻
  • Real-world Example: Netflix 🎬
  • Scaling Visualisation: API Request Handling 📊
  • Conclusion 🎯

Was this helpful?

  1. System Design

🔀 Horizontal vs. Vertical Scaling

In the world of system design, scaling is a crucial concept that determines how well an application can handle growth and increased load. There are two primary approaches to scaling.

Introduction 🚀

In the world of system design, scaling is a crucial concept that determines how well an application can handle growth and increased load. There are two primary approaches to scaling: Horizontal Scaling and Vertical Scaling. This page will explore both concepts, their advantages, disadvantages, and provide examples to illustrate their implementation I have executed in differen system designs.

Horizontal Scaling (Scaling Out) 🔀

Horizontal scaling, also known as scaling out, involves adding more machines to your pool of resources. This approach distributes the load across multiple servers.

Advantages:

  • Improved fault tolerance and reliability

  • Easier to scale on-demand

  • Theoretically unlimited scaling potential

Disadvantages:

  • More complex architecture

  • Increased networking overhead

  • Data consistency challenges

Vertical Scaling (Scaling Up) ⬆️

Vertical scaling, or scaling up, involves adding more power (CPU, RAM, Storage, etc.) to an existing machine.

Advantages:

  • Simpler to implement

  • Less complex architecture

  • Reduced software licensing costs

Disadvantages:

  • Limited by hardware capabilities

  • Potential for longer downtimes during upgrades

  • Higher risk of single point of failure

Comparison Table: Horizontal vs Vertical Scaling

Aspect
Horizontal Scaling
Vertical Scaling

Definition

Adding more machines to the resource pool

Adding more power to existing machines

Scalability

Theoretically unlimited

Limited by hardware capabilities

Complexity

More complex architecture

Simpler to implement

Fault Tolerance

Higher (distributed system)

Lower (single point of failure)

Performance

Can handle more concurrent operations

Better for handling large, complex operations

Cost

Can be more cost-effective for large-scale operations

Can be expensive for high-end hardware

Flexibility

Easier to scale on-demand

Less flexible, may require downtime for upgrades

Data Consistency

More challenging to maintain

Easier to maintain

Example Use Case

Web servers, distributed databases

CPU-intensive applications, large in-memory databases

This comparison table summarises the key differences between horizontal and vertical scaling, highlighting their respective strengths and weaknesses across various aspects of system design and performance.

Comparison Graph 📊

Technical Architecture Diagram 🏗️

User Flow Diagram 🔄

Code Snippet: Load Balancing Example (Node.js) 💻

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Fork workers.
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  // Workers can share any TCP connection
  // In this case it is an HTTP server
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hello World\\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}

Real-world Example: Netflix 🎬

Netflix is a prime example of a company that effectively uses both horizontal and vertical scaling:

Horizontal Scaling:

  • Content Delivery Network (CDN): Netflix uses multiple servers worldwide to distribute content, reducing latency and improving user experience.

  • Microservices Architecture: Netflix's system is broken down into small, independent services that can be scaled individually based on demand.

Vertical Scaling:

  • High-performance Servers: For certain critical components, Netflix uses powerful servers to handle complex operations like video encoding.

Scaling Visualisation: API Request Handling 📊

This diagram illustrates how horizontal and vertical scaling affect a server's ability to handle API requests:

In this visualisation:

  • Horizontal Scaling: Multiple smaller servers each handle a portion of the total requests, distributed by a load balancer.

  • Vertical Scaling: A single, more powerful server handles all requests directly.

Both approaches result in the same total capacity (300 requests/second in this example), but with different architectures and trade-offs as discussed earlier.

Conclusion 🎯

Both horizontal and vertical scaling have their place in modern system design. The choice between the two (or a combination of both) depends on factors such as the nature of the application, budget constraints, and scalability requirements. A well-designed system often incorporates elements of both scaling strategies to achieve optimal performance and reliability.

PreviousWave BotNext📚Distributed Systems

Last updated 9 months ago

Was this helpful?