[フレーム]

Scalability, Availability & Stability Patterns

This document provides an overview of patterns for scalability, availability, and stability in distributed systems. It discusses general recommendations like immutability and referential transparency. It covers scalability trade-offs around performance vs scalability, latency vs throughput, and availability vs consistency. It then describes various patterns for scalability including managing state through partitioning, caching, sharding databases, and using distributed caching. It also covers patterns for managing behavior through event-driven architecture, compute grids, load balancing, and parallel computing. Availability patterns like fail-over, replication, and fault tolerance are discussed. The document provides examples of popular technologies that implement many of these patterns.

Downloaded 12,779 times
Scalability, Availability & Stability Patterns Jonas Bonér CTO Typesafe twitter: @jboner
Outline
Outline
Outline
Outline
Outline
Introduction
Scalability Patterns
Managing Overload
Scale up vs Scale out?
General recommendations • Immutability as the default • Referential Transparency (FP) • Laziness • Think about your data: • Different data need different guarantees
Scalability Trade-offs
Trade-offs •Performance vs Scalability •Latency vs Throughput •Availability vs Consistency
Performance vs Scalability
How do I know if I have a performance problem?
How do I know if I have a performance problem? If your system is slow for a single user
How do I know if I have a scalability problem?
How do I know if I have a scalability problem? If your system is fast for a single user but slow under heavy load
Latency vs Throughput
You should strive for maximal throughput with acceptable latency
Availability vs Consistency
Brewer’s CAPtheorem
You can only pick 2 Consistency Availability Partition tolerance At a given point in time
Centralized system • In a centralized system (RDBMS etc.) we don’t have network partitions, e.g. P in CAP • So you get both: •Availability •Consistency
Atomic Consistent Isolated Durable
Distributed system • In a distributed system we (will) have network partitions, e.g. P in CAP • So you get to only pick one: •Availability •Consistency
CAP in practice: • ...there are only two types of systems: 1. CP 2. AP • ...there is only one choice to make. In case of a network partition, what do you sacrifice? 1. C: Consistency 2. A:Availability
Basically Available Soft state Eventually consistent
Eventual Consistency ...is an interesting trade-off
Eventual Consistency ...is an interesting trade-off But let’s get back to that later
Availability Patterns
•Fail-over •Replication • Master-Slave • Tree replication • Master-Master • Buddy Replication Availability Patterns
What do we mean with Availability?
Fail-over
Fail-over Copyright Michael Nygaard
Fail-over But fail-over is not always this simple Copyright Michael Nygaard
Fail-over Copyright Michael Nygaard
Fail-back Copyright Michael Nygaard
Network fail-over
Replication
• Active replication - Push • Passive replication - Pull • Data not available, read from peer, then store it locally • Works well with timeout-based caches Replication
• Master-Slave replication • Tree Replication • Master-Master replication • Buddy replication Replication
Master-Slave Replication
Master-Slave Replication
Tree Replication
Master-Master Replication
Buddy Replication
Buddy Replication
Scalability Patterns: State
•Partitioning •HTTP Caching •RDBMS Sharding •NOSQL •Distributed Caching •Data Grids •Concurrency Scalability Patterns: State
Partitioning
HTTP Caching Reverse Proxy • Varnish • Squid • rack-cache • Pound • Nginx • Apache mod_proxy • Traffic Server
HTTP Caching CDN,Akamai
Generate Static Content Precompute content • Homegrown + cron or Quartz • Spring Batch • Gearman • Hadoop • Google Data Protocol • Amazon Elastic MapReduce
HTTP Caching First request
HTTP Caching Subsequent request
Service of Record SoR
Service of Record •Relational Databases (RDBMS) •NOSQL Databases
How to scale out RDBMS?
Sharding •Partitioning •Replication
Sharding: Partitioning
Sharding: Replication
ORM + rich domain model anti-pattern •Attempt: • Read an object from DB •Result: • You sit with your whole database in your lap
Think about your data • When do you need ACID? • When is Eventually Consistent a better fit? • Different kinds of data has different needs Think again
When is a RDBMS not good enough?
Scaling reads to a RDBMS is hard
Scaling writes to a RDBMS is impossible
Do we really need a RDBMS?
Do we really need a RDBMS? Sometimes...
Do we really need a RDBMS?
Do we really need a RDBMS? But many times we don’t
NOSQL (Not Only SQL)
•Key-Value databases •Column databases •Document databases •Graph databases •Datastructure databases NOSQL
Who’s ACID? • Relational DBs (MySQL, Oracle, Postgres) • Object DBs (Gemstone, db4o) • Clustering products (Coherence, Terracotta) • Most caching products (ehcache)
Who’s BASE? Distributed databases • Cassandra • Riak • Voldemort • Dynomite, • SimpleDB • etc.
• Google: Bigtable • Amazon: Dynamo • Amazon: SimpleDB • Yahoo: HBase • Facebook: Cassandra • LinkedIn: Voldemort NOSQL in the wild
But first some background...
• Distributed Hash Tables (DHT) • Scalable • Partitioned • Fault-tolerant • Decentralized • Peer to peer • Popularized • Node ring • Consistent Hashing Chord & Pastry
Node ring with Consistent Hashing Find data in log(N) jumps
"How can we build a DB on top of Google File System?" • Paper: Bigtable:A distributed storage system for structured data, 2006 • Rich data-model, structured storage • Clones: HBase Hypertable Neptune Bigtable
"How can we build a distributed hash table for the data center?" • Paper: Dynamo:Amazon’s highly available key- value store, 2007 • Focus: partitioning, replication and availability • Eventually Consistent • Clones: Voldemort Dynomite Dynamo
Types of NOSQL stores • Key-Value databases (Voldemort, Dynomite) • Column databases (Cassandra,Vertica, Sybase IQ) • Document databases (MongoDB, CouchDB) • Graph databases (Neo4J,AllegroGraph) • Datastructure databases (Redis, Hazelcast)
Distributed Caching
•Write-through •Write-behind •Eviction Policies •Replication •Peer-To-Peer (P2P) Distributed Caching
Write-through
Write-behind
Eviction policies • TTL (time to live) • Bounded FIFO (first in first out) • Bounded LIFO (last in first out) • Explicit cache invalidation
Peer-To-Peer • Decentralized • No "special" or "blessed" nodes • Nodes can join and leave as they please
•EHCache •JBoss Cache •OSCache •memcached Distributed Caching Products
memcached • Very fast • Simple • Key-Value (string -­‐> binary) • Clients for most languages • Distributed • Not replicated - so 1/N chance for local access in cluster
Data Grids / Clustering
Data Grids/Clustering Parallel data storage • Data replication • Data partitioning • Continuous availability • Data invalidation • Fail-over • C + P in CAP
Data Grids/Clustering Products • Coherence • Terracotta • GigaSpaces • GemStone • Tibco Active Matrix • Hazelcast
Concurrency
•Shared-State Concurrency •Message-Passing Concurrency •Dataflow Concurrency •Software Transactional Memory Concurrency
Shared-State Concurrency
•Everyone can access anything anytime •Totally indeterministic •Introduce determinism at well-defined places... •...using locks Shared-State Concurrency
•Problems with locks: • Locks do not compose • Taking too few locks • Taking too many locks • Taking the wrong locks • Taking locks in the wrong order • Error recovery is hard Shared-State Concurrency
Please use java.util.concurrent.* • ConcurrentHashMap • BlockingQueue • ConcurrentQueue • ExecutorService • ReentrantReadWriteLock • CountDownLatch • ParallelArray • and much much more.. Shared-State Concurrency
Message-Passing Concurrency
•Originates in a 1973 paper by Carl Hewitt •Implemented in Erlang, Occam, Oz •Encapsulates state and behavior •Closer to the definition of OO than classes Actors
Actors • Share NOTHING • Isolated lightweight processes • Communicates through messages • Asynchronous and non-blocking • No shared state ... hence, nothing to synchronize. • Each actor has a mailbox (message queue)
• Easier to reason about • Raised abstraction level • Easier to avoid –Race conditions –Deadlocks –Starvation –Live locks Actors
• Akka (Java/Scala) • scalaz actors (Scala) • Lift Actors (Scala) • Scala Actors (Scala) • Kilim (Java) • Jetlang (Java) • Actor’s Guild (Java) • Actorom (Java) • FunctionalJava (Java) • GPars (Groovy) Actor libs for the JVM
Dataflow Concurrency
• Declarative • No observable non-determinism • Data-driven – threads block until data is available • On-demand, lazy • No difference between: • Concurrent & • Sequential code • Limitations: can’t have side-effects Dataflow Concurrency
STM: Software Transactional Memory
STM: overview • See the memory (heap and stack) as a transactional dataset • Similar to a database • begin • commit • abort/rollback •Transactions are retried automatically upon collision • Rolls back the memory on abort
• Transactions can nest • Transactions compose (yipee!!) atomic { ... atomic { ... } } STM: overview
All operations in scope of a transaction: l Need to be idempotent STM: restrictions
• Akka (Java/Scala) • Multiverse (Java) • Clojure STM (Clojure) • CCSTM (Scala) • Deuce STM (Java) STM libs for the JVM
Scalability Patterns: Behavior
•Event-Driven Architecture •Compute Grids •Load-balancing •Parallel Computing Scalability Patterns: Behavior
Event-Driven Architecture "Four years from now,‘mere mortals’ will begin to adopt an event-driven architecture (EDA) for the sort of complex event processing that has been attempted only by software gurus [until now]" --Roy Schulte (Gartner), 2003
• Domain Events • Event Sourcing • Command and Query Responsibility Segregation (CQRS) pattern • Event Stream Processing • Messaging • Enterprise Service Bus • Actors • Enterprise Integration Architecture (EIA) Event-Driven Architecture
Domain Events "It's really become clear to me in the last couple of years that we need a new building block and that is the Domain Events" -- Eric Evans, 2009
Domain Events "Domain Events represent the state of entities at a given time when an important event occurred and decouple subsystems with event streams. Domain Events give us clearer, more expressive models in those cases." -- Eric Evans, 2009
Domain Events "State transitions are an important part of our problem space and should be modeled within our domain." -- GregYoung, 2008
Event Sourcing • Every state change is materialized in an Event • All Events are sent to an EventProcessor • EventProcessor stores all events in an Event Log • System can be reset and Event Log replayed • No need for ORM, just persist the Events • Many different EventListeners can be added to EventProcessor (or listen directly on the Event log)
Event Sourcing
"A single model cannot be appropriate for reporting, searching and transactional behavior." -- GregYoung, 2008 Command and Query Responsibility Segregation (CQRS) pattern
Bidirectional Bidirectional
UnidirectionalUnidirectional Unidirectional
CQRS in a nutshell • All state changes are represented by Domain Events • Aggregate roots receive Commands and publish Events • Reporting (query database) is updated as a result of the published Events •All Queries from Presentation go directly to Reporting and the Domain is not involved
CQRS Copyright by Axis Framework
CQRS: Benefits • Fully encapsulated domain that only exposes behavior • Queries do not use the domain model • No object-relational impedance mismatch • Bullet-proof auditing and historical tracing • Easy integration with external systems • Performance and scalability
Event Stream Processing select * from Withdrawal(amount>=200).win:length(5)
Event Stream Processing Products • Esper (Open Source) • StreamBase • RuleCast
Messaging • Publish-Subscribe • Point-to-Point • Store-forward • Request-Reply
Publish-Subscribe
Point-to-Point
Store-Forward Durability, event log, auditing etc.
Request-Reply F.e.AMQP’s ‘replyTo’ header
Messaging • Standards: • AMQP • JMS • Products: • RabbitMQ (AMQP) • ActiveMQ (JMS) • Tibco • MQSeries • etc
ESB
ESB products • ServiceMix (Open Source) • Mule (Open Source) • Open ESB (Open Source) • Sonic ESB • WebSphere ESB • Oracle ESB • Tibco • BizTalk Server
Actors • Fire-forget • Async send • Fire-And-Receive-Eventually • Async send + wait on Future for reply
Enterprise Integration Patterns
Enterprise Integration Patterns Apache Camel • More than 80 endpoints • XML (Spring) DSL • Scala DSL
Compute Grids
Compute Grids Parallel execution • Divide and conquer 1. Split up job in independent tasks 2. Execute tasks in parallel 3. Aggregate and return result • MapReduce - Master/Worker
Compute Grids Parallel execution • Automatic provisioning • Load balancing • Fail-over • Topology resolution
Compute Grids Products • Platform • DataSynapse • Google MapReduce • Hadoop • GigaSpaces • GridGain
Load balancing
• Random allocation • Round robin allocation • Weighted allocation • Dynamic load balancing • Least connections • Least server CPU • etc. Load balancing
Load balancing • DNS Round Robin (simplest) • Ask DNS for IP for host • Get a new IP every time • Reverse Proxy (better) • Hardware Load Balancing
Load balancing products • Reverse Proxies: • Apache mod_proxy (OSS) • HAProxy (OSS) • Squid (OSS) • Nginx (OSS) • Hardware Load Balancers: • BIG-IP • Cisco
Parallel Computing
• UE: Unit of Execution • Process • Thread • Coroutine • Actor Parallel Computing • SPMD Pattern • Master/Worker Pattern • Loop Parallelism Pattern • Fork/Join Pattern • MapReduce Pattern
SPMD Pattern • Single Program Multiple Data • Very generic pattern, used in many other patterns • Use a single program for all the UEs • Use the UE’s ID to select different pathways through the program. F.e: • Branching on ID • Use ID in loop index to split loops • Keep interactions between UEs explicit
Master/Worker
Master/Worker • Good scalability • Automatic load-balancing • How to detect termination? • Bag of tasks is empty • Poison pill • If we bottleneck on single queue? • Use multiple work queues • Work stealing • What about fault tolerance? • Use "in-progress" queue
Loop Parallelism •Workflow 1.Find the loops that are bottlenecks 2.Eliminate coupling between loop iterations 3.Parallelize the loop •If too few iterations to pull its weight • Merge loops • Coalesce nested loops •OpenMP • omp parallel for
What if task creation can’t be handled by: • parallelizing loops (Loop Parallelism) • putting them on work queues (Master/Worker)
What if task creation can’t be handled by: • parallelizing loops (Loop Parallelism) • putting them on work queues (Master/Worker) Enter Fork/Join
•Use when relationship between tasks is simple •Good for recursive data processing •Can use work-stealing 1. Fork:Tasks are dynamically created 2. Join:Tasks are later terminated and data aggregated Fork/Join
Fork/Join •Direct task/UE mapping • 1-1 mapping between Task/UE • Problem: Dynamic UE creation is expensive •Indirect task/UE mapping • Pool the UE • Control (constrain) the resource allocation • Automatic load balancing
Java 7 ParallelArray (Fork/Join DSL) Fork/Join
Java 7 ParallelArray (Fork/Join DSL) ParallelArray students = new ParallelArray(fjPool, data); double bestGpa = students.withFilter(isSenior) .withMapping(selectGpa) .max(); Fork/Join
• Origin from Google paper 2004 • Used internally @ Google • Variation of Fork/Join • Work divided upfront not dynamically • Usually distributed • Normally used for massive data crunching MapReduce
• Hadoop (OSS), used @Yahoo • Amazon Elastic MapReduce • Many NOSQL DBs utilizes it for searching/querying MapReduce Products
MapReduce
Parallel Computing products • MPI • OpenMP • JSR166 Fork/Join • java.util.concurrent • ExecutorService, BlockingQueue etc. • ProActive Parallel Suite • CommonJ WorkManager (JEE)
Stability Patterns
•Timeouts •Circuit Breaker •Let-it-crash •Fail fast •Bulkheads •Steady State •Throttling Stability Patterns
Timeouts Always use timeouts (if possible): • Thread.wait(timeout) • reentrantLock.tryLock • blockingQueue.poll(timeout, timeUnit)/ offer(..) • futureTask.get(timeout, timeUnit) • socket.setSoTimeOut(timeout) • etc.
Circuit Breaker
Let it crash • Embrace failure as a natural state in the life-cycle of the application • Instead of trying to prevent it; manage it • Process supervision • Supervisor hierarchies (from Erlang)
Restart Strategy OneForOne
Restart Strategy OneForOne
Restart Strategy OneForOne
Restart Strategy AllForOne
Restart Strategy AllForOne
Restart Strategy AllForOne
Restart Strategy AllForOne
Supervisor Hierarchies
Supervisor Hierarchies
Supervisor Hierarchies
Supervisor Hierarchies
Fail fast • Avoid "slow responses" • Separate: • SystemError - resources not available • ApplicationError - bad user input etc • Verify resource availability before starting expensive task • Input validation immediately
Bulkheads
Bulkheads • Partition and tolerate failure in one part • Redundancy • Applies to threads as well: • One pool for admin tasks to be able to perform tasks even though all threads are blocked
Steady State • Clean up after you • Logging: • RollingFileAppender (log4j) • logrotate (Unix) • Scribe - server for aggregating streaming log data • Always put logs on separate disk
Throttling • Maintain a steady pace • Count requests • If limit reached, back-off (drop, raise error) • Queue requests • Used in for example Staged Event-Driven Architecture (SEDA)
?
thanks for listening
Extra material
Client-side consistency • Strong consistency • Weak consistency • Eventually consistent • Never consistent
Client-side Eventual Consistency levels • Casual consistency • Read-your-writes consistency (important) • Session consistency • Monotonic read consistency (important) • Monotonic write consistency
Server-side consistency N = the number of nodes that store replicas of the data W = the number of replicas that need to acknowledge the receipt of the update before the update completes R = the number of replicas that are contacted when a data object is accessed through a read operation
Server-side consistency W + R > N strong consistency W + R <= N eventual consistency

More Related Content

From cache to in-memory data grid. Introduction to Hazelcast.
PPTX
From cache to in-memory data grid. Introduction to Hazelcast.
Introduction to Redis
PDF
Introduction to Redis
Introduction to Apache ZooKeeper
PPTX
Introduction to Apache ZooKeeper
Introduction to memcached
KEY
Introduction to memcached
Stability Patterns for Microservices
PPTX
Stability Patterns for Microservices
Etsy Activity Feeds Architecture
PDF
Etsy Activity Feeds Architecture
Cassandra Introduction & Features
PDF
Cassandra Introduction & Features
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
PDF
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Introduction to Redis
Introduction to Redis
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Introduction to memcached
Introduction to memcached
Stability Patterns for Microservices
Stability Patterns for Microservices
Etsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
Cassandra Introduction & Features
Cassandra Introduction & Features
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013

What's hot

Under the Hood of a Shard-per-Core Database Architecture
PDF
Under the Hood of a Shard-per-Core Database Architecture
Designing a complete ci cd pipeline using argo events, workflow and cd products
PDF
Designing a complete ci cd pipeline using argo events, workflow and cd products
Monitoring With Prometheus
ODP
Monitoring With Prometheus
Apache Spark Architecture
PPTX
Apache Spark Architecture
Apache Kafka Architecture & Fundamentals Explained
PDF
Apache Kafka Architecture & Fundamentals Explained
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
PDF
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
Introduction to MongoDB
PDF
Introduction to MongoDB
Monoliths and Microservices
PPTX
Monoliths and Microservices
Implementing security requirements for banking API system using Open Source ...
PDF
Implementing security requirements for banking API system using Open Source ...
Introduction to Storm
PPTX
Introduction to Storm
Squirreling Away 640ドル Billion: How Stripe Leverages Flink for Change Data Cap...
PPTX
Squirreling Away 640ドル Billion: How Stripe Leverages Flink for Change Data Cap...
Databricks Fundamentals
PPTX
Databricks Fundamentals
Microservices, Containers, Kubernetes, Kafka, Kanban
PPSX
Microservices, Containers, Kubernetes, Kafka, Kanban
The Patterns of Distributed Logging and Containers
PDF
The Patterns of Distributed Logging and Containers
Flink powered stream processing platform at Pinterest
PDF
Flink powered stream processing platform at Pinterest
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
PDF
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Producer Performance Tuning for Apache Kafka
PDF
Producer Performance Tuning for Apache Kafka
Apache Kafka Best Practices
PPTX
Apache Kafka Best Practices
Building Reliable Lakehouses with Apache Flink and Delta Lake
PPTX
Building Reliable Lakehouses with Apache Flink and Delta Lake
Apache Flink and what it is used for
PPTX
Apache Flink and what it is used for
Under the Hood of a Shard-per-Core Database Architecture
Under the Hood of a Shard-per-Core Database Architecture
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd products
Monitoring With Prometheus
Monitoring With Prometheus
Apache Spark Architecture
Apache Spark Architecture
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
Introduction to MongoDB
Introduction to MongoDB
Monoliths and Microservices
Monoliths and Microservices
Implementing security requirements for banking API system using Open Source ...
Implementing security requirements for banking API system using Open Source ...
Introduction to Storm
Introduction to Storm
Squirreling Away 640ドル Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away 640ドル Billion: How Stripe Leverages Flink for Change Data Cap...
Databricks Fundamentals
Databricks Fundamentals
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and Containers
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at Pinterest
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
Apache Kafka Best Practices
Apache Kafka Best Practices
Building Reliable Lakehouses with Apache Flink and Delta Lake
Building Reliable Lakehouses with Apache Flink and Delta Lake
Apache Flink and what it is used for
Apache Flink and what it is used for

Viewers also liked

NoSQL HBase schema design and SQL with Apache Drill
PDF
NoSQL HBase schema design and SQL with Apache Drill
Big Data Standards - Workshop, ExpBio, Boston, 2015
PDF
Big Data Standards - Workshop, ExpBio, Boston, 2015
Cloudera Big Data Integration Speedpitch at TDWI Munich June 2017
PPTX
Cloudera Big Data Integration Speedpitch at TDWI Munich June 2017
Cloudera Impala: A modern SQL Query Engine for Hadoop
PDF
Cloudera Impala: A modern SQL Query Engine for Hadoop
A Beginners Guide to noSQL
PDF
A Beginners Guide to noSQL
mini MAXI art exhibition
PPTX
mini MAXI art exhibition
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
PDF
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to MongoDB
PPT
Introduction to MongoDB
Scale at Reddit: Triple Your Team Size Without Losing Control
PDF
Scale at Reddit: Triple Your Team Size Without Losing Control
Introduction to NoSQL Databases
PPTX
Introduction to NoSQL Databases
Enabling the Industry 4.0 vision: Hype? Real Opportunity!
PDF
Enabling the Industry 4.0 vision: Hype? Real Opportunity!
NoSQL HBase schema design and SQL with Apache Drill
NoSQL HBase schema design and SQL with Apache Drill
Big Data Standards - Workshop, ExpBio, Boston, 2015
Big Data Standards - Workshop, ExpBio, Boston, 2015
Cloudera Big Data Integration Speedpitch at TDWI Munich June 2017
Cloudera Big Data Integration Speedpitch at TDWI Munich June 2017
Cloudera Impala: A modern SQL Query Engine for Hadoop
Cloudera Impala: A modern SQL Query Engine for Hadoop
A Beginners Guide to noSQL
A Beginners Guide to noSQL
mini MAXI art exhibition
mini MAXI art exhibition
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to MongoDB
Introduction to MongoDB
Scale at Reddit: Triple Your Team Size Without Losing Control
Scale at Reddit: Triple Your Team Size Without Losing Control
Introduction to NoSQL Databases
Introduction to NoSQL Databases
Enabling the Industry 4.0 vision: Hype? Real Opportunity!
Enabling the Industry 4.0 vision: Hype? Real Opportunity!

Similar to Scalability, Availability & Stability Patterns

Writing Scalable Software in Java
KEY
Writing Scalable Software in Java
The Big Data Stack
PPTX
The Big Data Stack
Big Data Architecture Workshop - Vahid Amiri
PDF
Big Data Architecture Workshop - Vahid Amiri
Scalable and Available, Patterns for Success
PDF
Scalable and Available, Patterns for Success
SQL or NoSQL, that is the question!
PPT
SQL or NoSQL, that is the question!
Bhupeshbansal bigdata
PPT
Bhupeshbansal bigdata
NoSQL Introduction, Theory, Implementations
PPTX
NoSQL Introduction, Theory, Implementations
Software architecture for data applications
PPTX
Software architecture for data applications
Voldemort Nosql
PDF
Voldemort Nosql
Front Range PHP NoSQL Databases
ODP
Front Range PHP NoSQL Databases
Why Distributed Databases?
PDF
Why Distributed Databases?
Managing Big Data: An Introduction to Data Intensive Computing
PDF
Managing Big Data: An Introduction to Data Intensive Computing
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
PDF
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
What ya gonna do?
KEY
What ya gonna do?
byCQD
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
PDF
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Scaling data on public clouds
PDF
Scaling data on public clouds
UnConference for Georgia Southern Computer Science March 31, 2015
PPT
UnConference for Georgia Southern Computer Science March 31, 2015
Intro to Databases
PDF
Intro to Databases
No SQL Technologies
PDF
No SQL Technologies
NoSQL overview implementation free
PDF
NoSQL overview implementation free
Writing Scalable Software in Java
Writing Scalable Software in Java
The Big Data Stack
The Big Data Stack
Big Data Architecture Workshop - Vahid Amiri
Big Data Architecture Workshop - Vahid Amiri
Scalable and Available, Patterns for Success
Scalable and Available, Patterns for Success
SQL or NoSQL, that is the question!
SQL or NoSQL, that is the question!
Bhupeshbansal bigdata
Bhupeshbansal bigdata
NoSQL Introduction, Theory, Implementations
NoSQL Introduction, Theory, Implementations
Software architecture for data applications
Software architecture for data applications
Voldemort Nosql
Voldemort Nosql
Front Range PHP NoSQL Databases
Front Range PHP NoSQL Databases
Why Distributed Databases?
Why Distributed Databases?
Managing Big Data: An Introduction to Data Intensive Computing
Managing Big Data: An Introduction to Data Intensive Computing
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
What ya gonna do?
What ya gonna do?
byCQD
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Scaling data on public clouds
Scaling data on public clouds
UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015
Intro to Databases
Intro to Databases
No SQL Technologies
No SQL Technologies
NoSQL overview implementation free
NoSQL overview implementation free

More from Jonas Bonér

We are drowning in complexity—can we do better?
PDF
We are drowning in complexity—can we do better?
Kalix: Tackling the The Cloud to Edge Continuum
PDF
Kalix: Tackling the The Cloud to Edge Continuum
The Reactive Principles: Design Principles For Cloud Native Applications
PDF
The Reactive Principles: Design Principles For Cloud Native Applications
Cloudstate—Towards Stateful Serverless
PDF
Cloudstate—Towards Stateful Serverless
Designing Events-first Microservices
PDF
Designing Events-first Microservices
How Events Are Reshaping Modern Systems
PDF
How Events Are Reshaping Modern Systems
Reactive Microsystems: The Evolution of Microservices at Scale
PDF
Reactive Microsystems: The Evolution of Microservices at Scale
From Microliths To Microsystems
PDF
From Microliths To Microsystems
Without Resilience, Nothing Else Matters
PDF
Without Resilience, Nothing Else Matters
Life Beyond the Illusion of Present
PDF
Life Beyond the Illusion of Present
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
PDF
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Reactive Supply To Changing Demand
PDF
Reactive Supply To Changing Demand
Building Reactive Systems with Akka (in Java 8 or Scala)
PDF
Building Reactive Systems with Akka (in Java 8 or Scala)
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
PDF
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Introducing Akka
PDF
Introducing Akka
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
PDF
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
Event Driven-Architecture from a Scalability perspective
PDF
Event Driven-Architecture from a Scalability perspective
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
PDF
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
PDF
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
Pragmatic Real-World Scala (short version)
PDF
Pragmatic Real-World Scala (short version)
We are drowning in complexity—can we do better?
We are drowning in complexity—can we do better?
Kalix: Tackling the The Cloud to Edge Continuum
Kalix: Tackling the The Cloud to Edge Continuum
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native Applications
Cloudstate—Towards Stateful Serverless
Cloudstate—Towards Stateful Serverless
Designing Events-first Microservices
Designing Events-first Microservices
How Events Are Reshaping Modern Systems
How Events Are Reshaping Modern Systems
Reactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at Scale
From Microliths To Microsystems
From Microliths To Microsystems
Without Resilience, Nothing Else Matters
Without Resilience, Nothing Else Matters
Life Beyond the Illusion of Present
Life Beyond the Illusion of Present
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Reactive Supply To Changing Demand
Reactive Supply To Changing Demand
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Introducing Akka
Introducing Akka
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
Building Scalable, Highly Concurrent & Fault Tolerant Systems - Lessons Learned
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspective
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)

Recently uploaded

CIDT: Blockchain, DeFi & Product Engineering - MVPs in 4 Weeks with a Senior-...
PDF
CIDT: Blockchain, DeFi & Product Engineering - MVPs in 4 Weeks with a Senior-...
Meta and Apple close to settling EU cases.pdf
PDF
Meta and Apple close to settling EU cases.pdf
The Role of Human Experiences (HX) in GenAI Adoption
PDF
The Role of Human Experiences (HX) in GenAI Adoption
SIH Presentation praniawar2o25 cse.pptx
PPTX
SIH Presentation praniawar2o25 cse.pptx
Behind the Scenes at Netflix: Distributed Systems & NoSQL Architecture.
PPTX
Behind the Scenes at Netflix: Distributed Systems & NoSQL Architecture.
Session 1 - Agentic Automation Building the Enterprise Agent of Tomorrow
PDF
Session 1 - Agentic Automation Building the Enterprise Agent of Tomorrow
Web Mapping 101: Creating Dynamic Web Maps with Geospatial Data
PDF
Web Mapping 101: Creating Dynamic Web Maps with Geospatial Data
How to get started with Agentic Automation
PDF
How to get started with Agentic Automation
How computers tell who they are using TPM2.pdf
PDF
How computers tell who they are using TPM2.pdf
CLOUD STUDY JAM 2025 GOOGLE DEVELOPER GROUPS ON CAMPUS NSEC
PPTX
CLOUD STUDY JAM 2025 GOOGLE DEVELOPER GROUPS ON CAMPUS NSEC
This Could Have Been a Slack Message: Diagnosing and Treating Bad Meetings
PPTX
This Could Have Been a Slack Message: Diagnosing and Treating Bad Meetings
Ethical Initiatives in AI and accountability.pdf
PDF
Ethical Initiatives in AI and accountability.pdf
Ask Me Anything About AI Assist: Practical Answers for Real Workflows
PDF
Ask Me Anything About AI Assist: Practical Answers for Real Workflows
TechVerse Kent (Combining Tech, AI, Innovation and Creativity)
PPTX
TechVerse Kent (Combining Tech, AI, Innovation and Creativity)
Phishing for Answers: A Tech Filler Quiz.pdf
PDF
Phishing for Answers: A Tech Filler Quiz.pdf
Session 2 - Agentic Orchestration with UiPath Maestro
PDF
Session 2 - Agentic Orchestration with UiPath Maestro
Supercharge your JVM performance with Project Leyden and Spring Boot
PDF
Supercharge your JVM performance with Project Leyden and Spring Boot
A SEA of Energy Efficiency Opportunities!
PDF
A SEA of Energy Efficiency Opportunities!
Demystifying LLMs- How to Use GenAI Effectively.pdf
PDF
Demystifying LLMs- How to Use GenAI Effectively.pdf
NeuroXR: Current Research and Opportunities
PDF
NeuroXR: Current Research and Opportunities
CIDT: Blockchain, DeFi & Product Engineering - MVPs in 4 Weeks with a Senior-...
CIDT: Blockchain, DeFi & Product Engineering - MVPs in 4 Weeks with a Senior-...
Meta and Apple close to settling EU cases.pdf
Meta and Apple close to settling EU cases.pdf
The Role of Human Experiences (HX) in GenAI Adoption
The Role of Human Experiences (HX) in GenAI Adoption
SIH Presentation praniawar2o25 cse.pptx
SIH Presentation praniawar2o25 cse.pptx
Behind the Scenes at Netflix: Distributed Systems & NoSQL Architecture.
Behind the Scenes at Netflix: Distributed Systems & NoSQL Architecture.
Session 1 - Agentic Automation Building the Enterprise Agent of Tomorrow
Session 1 - Agentic Automation Building the Enterprise Agent of Tomorrow
Web Mapping 101: Creating Dynamic Web Maps with Geospatial Data
Web Mapping 101: Creating Dynamic Web Maps with Geospatial Data
How to get started with Agentic Automation
How to get started with Agentic Automation
How computers tell who they are using TPM2.pdf
How computers tell who they are using TPM2.pdf
CLOUD STUDY JAM 2025 GOOGLE DEVELOPER GROUPS ON CAMPUS NSEC
CLOUD STUDY JAM 2025 GOOGLE DEVELOPER GROUPS ON CAMPUS NSEC
This Could Have Been a Slack Message: Diagnosing and Treating Bad Meetings
This Could Have Been a Slack Message: Diagnosing and Treating Bad Meetings
Ethical Initiatives in AI and accountability.pdf
Ethical Initiatives in AI and accountability.pdf
Ask Me Anything About AI Assist: Practical Answers for Real Workflows
Ask Me Anything About AI Assist: Practical Answers for Real Workflows
TechVerse Kent (Combining Tech, AI, Innovation and Creativity)
TechVerse Kent (Combining Tech, AI, Innovation and Creativity)
Phishing for Answers: A Tech Filler Quiz.pdf
Phishing for Answers: A Tech Filler Quiz.pdf
Session 2 - Agentic Orchestration with UiPath Maestro
Session 2 - Agentic Orchestration with UiPath Maestro
Supercharge your JVM performance with Project Leyden and Spring Boot
Supercharge your JVM performance with Project Leyden and Spring Boot
A SEA of Energy Efficiency Opportunities!
A SEA of Energy Efficiency Opportunities!
Demystifying LLMs- How to Use GenAI Effectively.pdf
Demystifying LLMs- How to Use GenAI Effectively.pdf
NeuroXR: Current Research and Opportunities
NeuroXR: Current Research and Opportunities
In this document
Powered by AI

Introduction to scalability, availability, and stability patterns presented by Jonas Bonér.

Multiple outlines indicating the structure of the presentation's main topics.

Introduction to scalability patterns in systems.

Discussion on managing overload, exploring scaling up versus scaling out strategies.

Key recommendations for scalability: immutability, referential transparency, laziness, and data guarantees.

Examination of trade-offs in scalability including performance vs scalability, latency vs throughput, and availability vs consistency.

Guidance on identifying performance and scalability issues in systems based on user load and response times.

Discussion on maximizing throughput while maintaining acceptable latency in system performance.

Introduction to Brewer’s CAP theorem: choices between consistency, availability, and partition tolerance.

Differences between centralized and distributed systems in terms of CAP limitations.

Practical application of CAP in system design; focuses on consistency and availability.

Key availability patterns such as fail-over, replication, and their implementations.

Detailed exploration of fail-over mechanisms, challenges, and principles.

Various replication strategies including active, passive, master-slave, and buddy replication.

Introduction to state-related scalability patterns.

Discussion on partitioning, HTTP caching methods, and how they influence scalability.

Discussion on Service of Record, challenges in scaling RDBMS, and the concept of sharding.

Details on sharding methods in databases and the complexities they introduce.

Importance of understanding varying data needs when choosing consistency models like ACID and eventual consistency.

Introduction to NoSQL databases, types, and their characteristics.

Foundational concepts in distributed storage, particularly regarding DHT and systems like Bigtable and Dynamo.

Techniques and products for distributed caching designed for performance improvement.

Introduction to data grids, clustering methods, and their applications in maintaining system performance.

Different concurrency models including shared-state and message-passing concurrency.

Challenges associated with shared-state concurrency and recommended solutions.

Explains message-passing concurrency through actors to avoid common concurrency issues.

Concepts of dataflow concurrency and an overview of Software Transactional Memory (STM) models.

Introduction to behavioral scalability patterns.

Discussion on event-driven architecture and its components like domain events and event sourcing.

Explanation of CQRS principles, benefits, and overall architecture.

Overview of messaging styles, their applications, and Enterprise Service Bus (ESB) products.

Techniques for parallel execution through compute grids and methodologies for load balancing.

Exploration of various parallel computing patterns and their implementations.

Introduction to key stability patterns such as timeouts, circuit breakers, and fail-fast principles.

Managing system failures through bulkheads and strategies to isolate parts of a system.

Techniques for managing and maintaining steady system performance through throttling. Details on various types of consistency models applicable to client-side and server-side systems.

Scalability, Availability & Stability Patterns

AltStyle によって変換されたページ (->オリジナル) /