When Does AWS Make Sense for a Business
-
@BBigford said in Moving education services to the cloud:
Not sure how to fork this conversation cause this is the turning point as I have a question. I'm reading your smbitjournal article on private cloud, but in short where does AWS really become viable for businesses?
Full on cloud computing becomes viable for business when you need elastic scalability (automatically generating or destroying workloads without human intervention.) AWS is built solely around this need. If you need VPS, it makes little sense to pay for elasticity and not be able to use it.
Systems like Vultr are built to address that need to allow for smaller scale, less automated systems to be built use a VPS style tool set rather than a standard cloud one.
AWS has little applicability to "normal" business workloads, especially for the SMB.
-
AWS' selling point is elasticity. Your systems should be designed to grow and shrink on demand based on workload conditions. So if your database suddenly became busy it might grow from three small nodes to twenty in a matter of minutes and only keep as many instances around as are needed to meet demand. As demand shrinks, the system would automatically back off the resources used.
You can do this manually without cloud computing, but adding hardware resources can take days or weeks and there is no reasonable way to shrink once the purchases have been made. Systems like AWS scale in seconds or minutes at worst and can easily scale by thousands of percentages and can fluctuate indefinitely as needed with whatever granularity is useful - perhaps checking every few minutes to see if resources are still needed. This is programatically determined.
When dealing with physical resources we think in terms of weeks or months. But with cloud computing it is seconds and minutes. Additional resources might cost far more per minute but instead of investing in a server that you have to maintain for five to ten years, you might only have the AWS resource for ten minutes or two days. Paying a premium per minute doesn't matter when only use a few minutes.
-
I was just going to spin up a few items in AWS in a lab scenario to test out the functionality. The timing of this post is perfect. Main takeaway for me is "AWS is for elastic workloads." I'll still spin up some workloads in AWS in a lab capacity to get more familiar with is, but this is good insight, thanks.
-
@fuznutz04 said in When Does AWS Make Sense for a Business:
I was just going to spin up a few items in AWS in a lab scenario to test out the functionality. The timing of this post is perfect. Main takeaway for me is "AWS is for elastic workloads." I'll still spin up some workloads in AWS in a lab capacity to get more familiar with is, but this is good insight, thanks.
Yup, AWS is ideal for learning about AWS itself or for learning about DevOps and elastic workload growth.
DO and Vultr are ideal for normal OS learning.
-
@scottalanmiller said in When Does AWS Make Sense for a Business:
@fuznutz04 said in When Does AWS Make Sense for a Business:
I was just going to spin up a few items in AWS in a lab scenario to test out the functionality. The timing of this post is perfect. Main takeaway for me is "AWS is for elastic workloads." I'll still spin up some workloads in AWS in a lab capacity to get more familiar with is, but this is good insight, thanks.
Yup, AWS is ideal for learning about AWS itself or for learning about DevOps and elastic workload growth.
DO and Vultr are ideal for normal OS learning.
Yep, Agreed.
Not to go off topic too much, but in your opinion, where would you put Azure in this picture? Same as AWS, or not nearly as flexible as AWS.
-
Cloud computing scales through scaling out and in. That is, by adding and removing compute nodes to groups. In some cases, clouds may allow scaling up or down individual nodes, but this is not universal and not part of cloud computing itself. What makes cloud computing what it is, among other things, is APIs for automated system provisioning - allowing software to create and destroy resources (VMs) as needed based on current demand.
So, for example, you have a MongoDB database cluster. The cluster has three base nodes that never go away, they are the minimum resource group. If the database gets busy and some monitored metric decides that more resources are needed, the API is called on the cloud and a new database cluster node is spun up, normally taking only a few seconds. Almost immediately you have four nodes instead of three. If capacity is still not handled, a fifth and a sixth or possible a thousandth additional node is created to handle the load.
When the load drops, the same API is used to remove unneeded nodes (but not removing the final three) to allow for dynamic growth and making it easy to pay only for the resources needed, when they are needed.
-
Common workloads that leverage this would include things like...
- NoSQL Databases
- Proxy Servers (Squid)
- Load Balancers (HA-Proxy)
- Web Servers (Apache, NGinx, IIS)
- Application Servers (Tomcat, Node.js)
- Decision Clusters (Hadoop, Spark)
- Month end financial processing systems
- Simulation systems (Monte Carlo, etc.)
- Business Intelligence processing
-
Places where you rarely will see this used but people suspect that it will be would be like video processing. This rarely makes sense because the time and cost of moving data up to the render farm and back down are too great.
But a good place for it is month end payroll processing. This is very "bursty" processing that does a lot of calculations on a small amount of data and traditionally is done in mainframes. Moving this to cloud computing allows for massive compute capacity in a small window of time that does not need to be paid for when not in use. So companies can pay for a very fast system that is used for just one or two days per month, instead of paying for a system that has to sit idle for 25+ days a month.
-
Nearly any workload that is extremely erratic or bursty in nature that can withstand a small amount of expansion latency that does not need to relocate massive data sets for processing (like video rendering) is ideal for cloud computing.
Modern applications built with a standard web framework are ideal for cloud computing as all of their layers can scale out independently and fluidly. Web based interfaces work well in this model.