Hosting and Scaling Systems
Tags: devops, aws, storage, servers
Published: 2021-12-06 13:43:06

Systems come in all shapes and sizes. A few years ago, a system would be some virtual machine or bare metal server. Now a system can be:

- Containers
- Orchestration
- Virtual machines
- Bare metal
- Virtualized bare metal
- Serverless

Because of the vast types of systems, scaling and hosting have become quite differentiated.

A few questions that occur due to the new complexity are:

1. Where can I host my systems?
2. How can I scale them?
3. How can I make my apps highly available?

In part five of "The DevOps/SRE" series, you'll learn about how to answer the above questions.

## Public Cloud

If you're a startup, going the public cloud route (AWS, Azure, GCP, etc.) for highly scalable systems will be the easiest route. Easiest route means:

- You don't have to worry about buying servers
- You don't have to worry about hosting the servers somewhere
- You don't have to buy data center space
- You don't have to worry about the overhead

if time means money, not having to worry about buying servers and data center space is crucial.  

If you're a medium-to-large or large enterprise, you probably already have a few servers and systems on-prem. Because of that, you'll want to look into other options (check out the upcoming section **Hybrid Cloud**).

When you're in the public cloud, hosting and scaling systems can be extremely straightforward. Let's take autoscaling groups as an example.

In AWS, you have the ability to set up autoscaling groups, which are 2 or more EC2 instances (virtualized servers). The autoscaling groups constantly check the current load of the EC2 instances. If the server load is scaling up, the autoscaling group will automatically add another EC2 instance. 

This is of course available on-prem and in virtualized environments, but it's far more complex than simply using a service like autoscaling groups in AWS.

## Virtual Private Servers (VPS)

The truth of the matter is that public clouds are expensive. For many startups, they could get a $10,000 dollar bill and be in a tough spot. The tough part is, the $10,000 dollar bill may be valid. It grew to that number simply because the startup needed to scale and host systems.

If an organization wants to scale and host systems, yet not have a crazy bill, what can it do?

One option is to look at a Virtual Private Server company, which is typically some type of independent cloud. 

A few examples of an independent cloud are Digital Ocean and Linode.

Although Digital Ocean and Linode may not have the vast amount of services that larger public clouds have, they still have some amazing core services that include:

- Virtual machines
- Networking
- Storage

If you, for example, have a bunch of workloads running on virtual machines in AWS (EC2 instances), you could take advantage of the cost savings using Digital Ocean or Linode and have them take on the role of being a secondary cloud.

## On-Prem and Virtualized On-Prem

If you're thinking about scaling on-prem, you'll have to think about a few different pieces to the puzzle that'll be needed:

- Do you have enough hardware (servers)?
- What's the lead time on buying new servers?
- Do you have enough engineers to work on and maintain the scalability?
- Are you using a virtualized infrastructure like ESXi or Hyper-V?

Another great option, if you don't want to have to worry about pure bare metal, is something like Equinix.

Equinix is a great alternative that definitely makes you feel like you're on-prem without having to worry about buying servers and replacing RAM.

## Hybrid Cloud

Putting together the on-prem model and the cloud model is great if you're interested in a hybrid model.

For example, let's say that you want to have Active Directory servers at each large location for login and security capabilities. Maybe at smaller satellite offices, you don't need an Active Directory server. Because of that, you use Azure Active Directory and connect your on-prem AD to Azure Active Directory.

Another example is you may have storage on-prem using some type of NetApp device, and also have storage in an AWS S3 bucket.

The hybrid approach is great for organizations that already have on-prem infrastructure.

Large public clouds are seeing the need as well, and they're answering the need. AWS just announced [Outposts](https://aws.amazon.com/outposts/), which is an AWS server in your data center.

When it comes to hybrid cloud, it's a great happy medium.