Skip to content

Patrones de escalabilidad, disponibilidad y estabilidad

Disponibilidad:

  • Replication:
    • Primary-Replica replication / Leader-Follower architecture / Active-Passive replication
    • Multi-Primary
    • Buddy Replication
  • Fail-over

Estabilidad:

  • Circuit Breaker
  • Timeouts
  • Let it Crash/Supervisors
  • Crash Early (o Fail Fast)
  • Bulkheads
  • Steady State (clean up resources)
  • SEDA (Staged Event-Driven Architecture)
  • Throttling (o Rate Limiting)

Escalabilidad:

  • Estado:

    • Distributed Caching (Cache Distribuido):

      • Write-behind
      • Write-through
      • TTL (Time To Live)
      • Eviction policies (FIFO, LIFO)
      • Peer-To-Peer
    • Los Data Grids (Cuadrículas de Datos):

      • In-memory storage
      • Durable storage
    • Constancia (Service record)

      • NOSQL:

        • Key Value databases
        • Document databases
        • Graph databases
        • Datastructure databases
      • RDBMS:

        • Sharding
          • Partitioning
          • Replication
        • Denormalization
        • ORM + Rich domain model antipattern
      • HTTP caching

        • Reverse Proxy
        • CDN (Content Delivery Network)
      • Conjetura de Brewer (CAP theorem):

        • Consistent/Atomic data
        • Eventually Consistent data
      • Concurrency

        • Message-Passing Concurrency
        • Software Transactional Memory
        • Dataflow Concurrency
        • Shared-State Concurrency
      • Partition

      • Replication

  • Behavior:

    • Computer grids

    • Event-Driven Architecture

      • Messaging:

        • Publish-Subscribe
        • Point-to-Point
        • Store-Forward
        • Request-Reply
      • Actors:

        • Fire-forget
        • Fire-Receive-Eventually
      • Enterprise Service Bus

      • Domain Events

      • Event Stream Processing

      • Event Sourcing

      • Command & Query Responsibility Segregation (CQRS)

    • Load Balancing

      • Round robin allocation

      • Random allocation

      • Weighted allocation

      • Dynamic load balancing

        • Work stealing
        • Work donating
        • Qeue depth querying
    • Parallel Computing

    • SPMD pattern

    • Master / Worker pattern

    • Loop Parallelism pattern

    • Fork / Join pattern

    • MapReduce pattern