hello anons, going to introduce some basic cloud jargon, maybe even build on this document in the future
Elasticity - the ability to scale up or down based on demand (via automation)
this can be easily confused with scalability
Scalability - actual act of increasing or decreasing resources and HOW
Vertical Scaling - increasing power of an existing machine. Meaning we are making the existing machine more powerful
Horizontal Scaling - increasing the number of machines, think parallelization. Meaning we are adding machines
Availability - basically is the service ‘working’, which is expressed as a percentage of time. The desired classic metric is ‘5 nines’ or 99.999% which is 6 minutes or less of downtime a year. 4 nines is like 50 minutes or less a year, and is also common.
Turbo Note: High Availability is another buzzword. Pretty much always the goal with modern systems design.
Durability - refers to the ability of retain data. So if something is not durable, there is a high chance the data will be ‘lost’.
For example AWS S3 has 99.9999999% durability which means if you store 10,000 objects you could lose 1 object over 10,00,000 years. That is crazy.
Consistency - refers to the fact that data may not be available immediately after write.
you will see this word come up more for data intensive applications, but all companies are data companies now.
Serverless - means the customer is completely abstracted from infrastructure. The customer would give code or logic. Serverless is an abstraction layer above fully-managed. Another key difference is that serverless means you pay for only what you consume, meaning that you only incur expenses when you actually use the service.
these services are typically the most expensive. Why? because the provider is essentially managing everything except, the actual code or business logic.
Turbo note: most engineers dislike this phrase because its rooted in marketing. Does not matter, just understand obviously there is a ‘server’ involved somewhere.
Fully managed - typically means that the infrastructure is managed for you, but you still have an instance or machines. In this model you pay for idle time, as the machine is ‘yours’, key difference to serverless.
Containers - “Containers are packages of software that contain all of the necessary elements to run in any environment.” From: Google Cloud
Google has a very eloquent definition, and a great page all about containers. Worth a read.
Containers are not a technology specific to the cloud, but containers are one of the key technologies that enables microservice architecture, which very popular in the cloud
most popular container platform/engine is Docker (by a lot)
Notice below the general structure.
Microservice architecture - is a design paradigm in which business/tech capabilities are broken down into independent services
one key here is that each service is independent, which allows us to take advantage of the cloud and scale each independently.
Take a look at the graphic below for a high-level comparison and visualization
Key difference to the monolithic design paradigm that reined supreme for so long.
That is all for this time anons. Hopefully we got everyone started with the proper cloud nerd jargon. not very difficult, great to know though
-celt