Availability
A System is said to be available if it is operational.
Reliability
The probability that a system will remain available for use during a period.
Scalability
The ability of a system to increase or decrease performance or cost depending on the demand. A system may need to scale when it needs more data storage or processing power.
Vertical Scaling
You add more storage, RAM, GPU power, CPU to an existing system.
Horizontal Scaling
You scale by adding more nodes/servers to tackle increased demands.
Redundancy & Replication
To increase the reliability of a system in case of failures, duplication of resources is performed; this is called achieving redundancy & replication.
Efficiency
Measures how a system performs with a given set of resources in a particular situation.
Distributed System
Multiple machines are involved and behave as a single computer, mainly to achieve a more excellent processing capability to achieve a common goal.
Load Balancing
Load balancing is balancing the network load from clients across multiple servers, increasing responsiveness, availability, maintaining less response time, and eliminating the single point of failure. Prevent a single point of failure by removing the unhealthy node from the working pool. Sits between the users and many redundant resources to direct a request to a healthy server with less load.
Proxies
access some resources that are unavailable in your locality, or you might want to hide your identity, VPNs are a kind of proxies. It is an intermediate server that requests resources from other servers on behalf of a client.
Caching
One or many nodes are stored between a client and the backend server to keep the copies of data (based on FIFO, LIFO, LRU, LFU, MRU) in temporary storage for faster access in future.
Content Delivery Network - CDN
A geographically distributed collection of servers, just like a cache, to serve static media (media that does not change, for example, images, homepage, etc.).
Data Partitioning
Dividing data into smaller chunks, spreads the load across various devices, increases availability, and is much more manageable.
Indexing
Reduce the access time by creating a separate table based on one or more database columns.
ACID Properties
- Atomicity: Entire transaction will occur at once or doesn't happen at all.
- Consistency: Integrity should be maintained so that the database is consistent before and after the transaction.
- Isolation: Multiple transactions can take place at once without affecting each other.
- Durability: Once a transaction is successful, all the updates and modifications persist in the database.
Sharding
A technique used to divide data into multiple smaller parts known as shards (Horizontal partitioning), which are smaller, faster, and more manageable.
Polling
Traditional Polling - client communicates with the server, server responds immediately based on data availability.
Long Polling - client does not need to wait, server accepts the request and lets the client know once the data is ready.
Websockets
Bi-directional communication or duplex between client and server (at first, client creates connection using WebSocket handshake).
Fault Tolerance
The ability of a system to perform well despite some failures in the system.
API - Application Programming Interface
Enables two software components to communicate with each other using a set of definitions and protocols.
No comments:
Post a Comment