-
Notifications
You must be signed in to change notification settings - Fork 27
Overview document for scalability #105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ssarmokadam
wants to merge
2
commits into
devonfw:master
Choose a base branch
from
ssarmokadam:autoscaling
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| //Category=Scaling | ||
| //Product=Scaling | ||
| //Maturity level=Initial | ||
|
|
||
| = Scalability in Cloud | ||
|
|
||
| == Scalability in cloud | ||
|
|
||
| Capacity planning is a challenge every engineering team faces when it comes to ensuring the right resources are in place to handle expected and unexpected traffic demands. You might end up investing too much for your infrastructure or it will be underrun which will affect your application performance. To avoid such problems, we should have scalable application. Cloud scalability makes it easy to handle this changing needs. | ||
|
|
||
| === What is scalability? | ||
|
|
||
| Cloud scalability in cloud computing refers to the ability to increase or decrease IT resources as needed to meet changing demand. Data storage capacity, processing power and networking can all be scaled using existing cloud computing infrastructure. Scalability is one of the biggest advantage of using cloud. | ||
|
|
||
| Scalable application can handle changing workload in pre-planned manner. | ||
|
|
||
| === Benefits of cloud computing: | ||
|
|
||
| * Convenience: | ||
| It was taking weeks to months to scale an application on premise environment but with cloud it has become easy. We can add more resources on few clicks. | ||
| * Cost saving: | ||
| This helped users to reduce capex and changed it to opex. | ||
| * Better user experience: | ||
| Scalable application gives better user experience and have increased performance. | ||
| * Disaster recovery: | ||
| With scalable cloud computing, you can reduce disaster recovery costs by eliminating the need for building and maintaining secondary data centres. | ||
|
|
||
| === Types of scalability: | ||
| There are two types of scalability: | ||
|
|
||
| * Vertical scaling | ||
| * Horizontal scaling | ||
|
|
||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we portray the differences b/w vertical and horizontal scaling in a tabular format? that way it makes it more readable. |
||
| **Vertical scaling:** | ||
|
|
||
| Adding a resources to existing server is referred as Vertical scaling. This can mean more memory (RAM), faster storage such as Solid State Drives (SSDs), or more powerful processors (CPUs). For vertical scaling, there is very little or no additional configuration you are required to do at the software level. But vertical scaling is limited to capacity of one machine beyond which you will get downtime. With vertical scaling we generally use the term such as “Scale up” if we added more resources or “scale down” if we reduce existing resources. | ||
|
|
||
| **Horizontal scaling:** | ||
|
|
||
| In Horizontal scaling you generally add more servers to spread the load across multiple machines. Horizontal scaling requires breaking a sequential piece of logic into smaller pieces so that they can be executed in parallel across multiple machines. Also, you might need to handle distribution of workload evenly by adding load balancer or managing software updates on multiple servers etc. With horizontal scaling we generally use terms such as “scale out” if we add more resources or “scale in” if we reduce some resources. | ||
|
|
||
| === What is Autoscaling? | ||
|
|
||
| Autoscaling (sometimes spelled auto scaling or auto-scaling) is the process of automatically increasing or decreasing the computational resources delivered to a cloud workload based on need. The primary benefit of autoscaling, when configured and managed properly, is that your workload gets exactly the cloud computational resources it requires (and no more or less) at any given time. You pay only for the server resources you need when you need them. | ||
| You can auto scale based on different factor like you can scale if demand increases or it can be scheduled or predictive scaling. | ||
|
|
||
| Major public cloud provider offers autoscaling as a feature: | ||
|
|
||
| * In AWS, feature is called Auto Scaling Group | ||
| * Microsoft Azure provides Virtual Machine Scale Sets | ||
| * GCP provide instance groups | ||
|
|
||
| Containers can be one of the option to scale your application in better way. Containers are small pieces of code that are meant to perform a specific function. In this way, a single machine can contain several apps used to perform a variety of functions: CPU, RAM, bandwidth, disk space, etc. | ||
| You can use docker containers with some orchestration tools like Kubernetes. Kubernetes also have auto-scaling feature to manage changing demand of workloads. | ||
|
|
||
| === More References: | ||
|
|
||
| https://docs.microsoft.com/en-us/azure/architecture/best-practices/auto-scaling | ||
|
|
||
| https://docs.aws.amazon.com/autoscaling/ | ||
|
|
||
| https://cloud.google.com/compute/docs/autoscaler | ||
|
|
||
| https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/scale-containers-serverless | ||
|
|
||
| https://medium.com/swlh/how-to-autoscale-your-application-with-aws-ec2-instances-and-docker-containers-975ab1263454 | ||
|
|
||
| https://enterprisersproject.com/article/2021/3/kubernetes-autoscaling-explanation#:~:text=%22Kubernetes%20autoscaling%20helps%20optimize%20resource,down%20in%20line%20with%20demand.%22&text=When%20load%20decreases%2C%20Kubernetes%20can,conserving%20on%20resources%20and%20spending.%E2%80%9D | ||
|
|
||
| https://spot.io/resources/kubernetes-autoscaling-3-methods-and-how-to-make-them-great/ | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please see if we can add any relevant image.