Software Architecture Concepts: [ Part 3] Web Application Hosting

So you have developed your backend for your application that you want to serve multiple users. Users will send you requests using their front end applications that are either installed on their mobile phones or that is living in their browsers and your backend is expected to take this input, process it and produce useful outputs for the users.

You need a place for your backend to live in a place with a fixed access where it users will be able to access it. you also need computing resources (memory, storage etc..) to be able to serve the customer requests. you are now in need for Hosting.

you might be overwhelmed by the technologies that exist today, you have server-less hosting, you have infrastructure as a service (IaaS) , platform as a server (PaaS), you have managed hosts (Ec2 ... ) and you have some of the old models that are still alive today like Shared Hosting, VPS, dedicated servers etc ..

Lets start from the basics, you need computing power, so here are the options for you :

Shared Hosting

Shared hosting is the most basic and cheapest of the hosting options. It allows you to rent space on a shared hosting server. These servers host many other applications on the same server alongside your website. These plans are the cheapest solutions, as they provide the least performance, security, and flexibility. meaning if there is a bug in one of the other applications, yours will be in danger.

VPS Hosting

Virtual Private Server (VPS) Hosting is a cross between shared hosting and dedicated hosting. A physical server (also called the parent) runs several VPS instances, which are granted a strict portion of the parent server’s hardware resources. These instances are rented out and operate as independent servers from one another. So, it’s essentially renting part of a dedicated server. These plans vary in price and offer affordable scaling, better performance, and better security than shared hosting.

Dedicated Hosting

Dedicated Servers are precisely what the name implies: a single server dedicated to you. All the hardware that makes up the server is under your control. Bare metal servers often share network access with neighbouring dedicated servers in a data center, but they share no hardware. These hosting plans tend to be more expensive than shared or VPS but can give you better performance, security, and flexibility, especially for those requiring custom configurations or specific hardware.

With dedicated hosting, you own the machine and you are responsible for anything in it. You need to install an operating system. You need to setup dependencies that you need for your backend application and you need to make sure these are updated.

Serverless Hosting

In this model you don't need to worry about the infrastructure needed to run you application, you host is responsible of running it and allocating resources so that it is able to serve the customers that it needs. in this model if your application becomes popular and start receiving more and more traffic you don't need to worry if the machine you run on has 2gb or 4gb of ram. you don't worry about moving your application to a stronger machine. because all of this is abstracted away from you. When you are consuming computing power without worrying about underlying hardware you are now a user of the Cloud

What is Cloud computing

Cloud computing in a nutshell is the delivery of the computing power as a service , like electricity or water , you don't need to worry about the hardware behind it ( Nuclear power station - solar power station) You only pay for ( and benefit ) from the service that is delivered to you..

In the computer world , the service delivered to you is the computing power (storage - processing etc ).

image.png

In the cloud model you only care about and pay for resources you consume

Gartner Inc. one of the world's leading information technology research and advisory company. defines cloud computing as

Scalable, IT-related capabilities provided as a service on the Internet.

Mr. Schmidt is considered by many to be the first user of the term cloud computing in the context of its embodiment in 2008 and later, but the term didn’t reach the threshold for inclusion in Google’s Trends service until about September 2007

image.png

Mr. Schmidt makes the assumption in the preceding quotation that data services provided by the cloud-computing servers were defined by the organisations that owned the servers, specifically Google, Yahoo!, eBay, and Amazon.

Figure 1-1: Worldwide traffic for the terms cloud computing, Windows Azure, Amazon EC2, and Google App Engine for the years 2000 through 2008 as reported by the Google Trends service.

The Rules of the cloud

these are 3 rules that define the cloud , A cloud must

  1. Have infinite resources , that is you should never have a problem of limited resources for your type of application

  2. Scalable , you should be able to scale up and down the resources that you have access to easily and fast.

  3. Pay as you go , you only pay for the resources that you use.

In the next episodes we will start talking about scaling we will start with vertical scaling, horizontal scaling concepts etc and how to scale your application from serving a couple of users to becoming an application serving millions of users.