High scalability

Loc 2695

Obsticles:

Instruments to solve:

Load

Checking what happens when increasing load:

Describing performance:

CPU

Many applications today are data-intensive. Raw CPU power is rarely a limiting factor.

Queues

Help to handle spikes, scale horizintally and make system more reliable.

See Feeds.

Big data?

Big data - if amount of data or resources to process it is the current system limit.

Throughput:

Numbers:

High Scalability: Building bigger, faster, more reliable websites
Data Pipeline Architect - Resources to help you with data planning and plumbing
Why You Shouldn’t Build Your Own Data Pipeline
Spark talk on PyCon Ukraine 2017 by Taras Lehinevych

Vocabulary

Data-intensive applications

Limiting factors are the amount of data, the complexity of data, the speed at which it is changing.

Data warehouse

Late 1980s and early 1990s there was a trend to use a separate database for analytics.
Safe ti run queries those often harm performance of concurrently executing transactions in the main database if running there.

There is also Data Lake.

Compute-intensive application

Where CPU cycles are the bottleneck.

Stream processing

Send a message to another process, to be handled asynchronously.

Batch processing

Periodically crunch a large amount of accumulated data.

ETL

Extract-Transform-Load - a process of getting data into a data warehouse.

Reliability

The system should continue to work correctly even in the face of adversity (hardware or software faults).

Scalability

As the system grows, there should be reasonable ways of dealing with that growth.

Vertical scaling (scaling up) - moving to a more powerful machine.
Horizontal scaling (scaling out) - distributing the load across multiple machines.

Be pragmatic

Using several fairly powerful machines can still be simpler and cheaper than a large number of small virtual machines.

Maintainability

Over time, many different people will work on the system, and they should be able to work on it productively.

Latency vs response time

Response time - what a client sees (includes network and queuing delays).

Latency - is the time a request is waiting to be handled (during this period the request is latent).

MapReduce

MapReduce is a programming model for processing large amounts of data in bulk across many machines.

MapReduce is neither a declarative query language nor a fully imperative query API, but somewhere in between.

High Scalability: Building bigger, faster, more reliable websites by Todd Hoff
Apache Kafka talk on Pycon Ukraine 2017 by Taras Voinarovskyy

Licensed under CC BY-SA 3.0