Cloud-based applications

Cloud computing was first mentioned in 1996, but it was not until Amazon released its Elastic Compute Cloud in 2006 that it became widely popular. The idea behind cloud-based computing is to move away from the need to host your servers and other resources needed to run your project, and instead buy time from large data centers to use their computing power. There are many advantages to this. You don't have to make sure that your computers are up and running, that operating systems are updated, that you have implemented back-up solutions for your data, and so on. You can set up your server to be online, and then you can deploy your software on this server and run it from there.

The companies providing these services soon began to add other features that we can use as well. These are ready-made parts that we can use in our applications. What this means is that there will be parts of our application that we won't need to write ourselves. Instead, we can buy these ready-made parts from the provider and integrate them into our application that will run on a server, also provided by them.

There are many variations of this: we can buy a server, we might only buy storage, or we might buy one or more services that we will use, and these can then be combined in any way we want.

There are many reasons we would like to make our application using cloud-based resources. Let's look at some of them.

Advantages of adopting cloud-based applications

Here are a couple of reasons why using cloud-based applications is beneficial for us.

Reduced costs

By having our application on a cloud-based server, we will not need to buy a server computer, and we will not need to maintain this computer. We can pay for services so the cloud service provider will take care of ensuring that our server's operating system is updated and that security patches are installed as they are released.

If our application is storing data, we can let the provider take care of making backups, making sure we don't lose any data. We can also let these backups be stored at different locations in the world, so even if one of the data centers our provider is using gets destroyed or affected for some reason, our data will remain safe.

These are just two examples of how we can reduce our costs as the amount we pay to the cloud service provider will be drastically lower than if we had done all of this ourselves.

Scalability

Scalability is how we can adapt when the amount of work our application is doing changes. If we, for example, have a web application running and suddenly it gets very popular overnight, we might go from a couple of hundred users that are simultaneously connected to it to several thousand. If the hardware running our application is not capable of handling this growing popularity, our users will soon get tired of using it as they need to spend too much time waiting for a response from our application. If we manage the hardware ourselves, we will need to get more and better server computers, install our application on them, and make sure everything works. If the interest in our application then drops, we will now have invested in hardware we no longer need.

If we, on the other hand, are using a cloud-based solution, we could, with a few clicks, pay to get more power to our servers. And if the demand drops, we can downgrade again and only pay for what we use. This process can also be automated, so the server hardware adapts to the demand.

Cloud service models

Cloud computing providers offer different services according to three different models. These models define what parts the provider will handle and what is handled by us, the creators of the application. These different models can also be viewed as different layers, so when deciding what we need for our application, we can pick things from all three layers.

Let's look at these layers so that we understand what they can help us with.

Infrastructure as a Service (IaaS)

This is the layer that handles hardware resources such as servers, storage, firewalls, and so on. Investing in services on this layer means that you don't need to buy the hardware, you don't need to spend time on configuration, and space for data storage will be managed for you.

Some examples when IaaS is a good option for us are as follows:

  • Big data: More and more applications need a huge amount of data. This can, for example, be data used when training artificial intelligence (AI) applications or applications that rely on a significant amount of what is known as unstructured data (that is, images, email, or social media content, for example). These applications will need to handle large workloads that can change over time. IaaS gives us tools to add storage and processing power with a click of a button; in fact, this can even be automated to suit our needs.
  • Disaster recovery: The most valuable asset we have in software is data, and we should always ensure that we can recover from a disaster. If we store copies of our data in different geographical locations, we can rest assured that we can recover it even if the worst happens. IaaS makes it easy and affordable to do this.
  • Testing and development: When developing applications, we often want to test them on different hardware configurations running different operating systems. Setting up different IaaS solutions is a cheap and easy way to do this.
Platform as a Service (PaaS)

In this layer, you will, among other things, find applications that will act as servers. Some examples are web servers that will handle web resources so users can access your website, and database servers that will manage storage and retrieval of data. This layer can also contain readily configured environments that are targeted to a programming language.

This level builds upon the IaaS level, so usually, you get the benefits of that layer plus the things that are included in this layer.

Here's some examples of some benefits of using PaaS:

  • Faster time to market: Going from an idea to a product that we can start to earn money from is essential when developing software. Using PaaS will dramatically reduce the time for acquiring hardware and installing and configuring software. There are examples of start-up companies that had an idea on Friday and a product that could be used on the next Monday. This can be made possible with the help of PaaS.
  • Reduced costs: Without the need to invest time and money acquiring hardware, configuring it, installing software, and ensuring all software is updated, our costs will be greatly reduced. The time we save can instead be used to develop our product.
Software as a Service (SaaS)

This layer will provide you with everything—the hardware, the server software, as well as applications—and the only thing you need to do is to configure it to work the way you want it to. A well-known example of SaaS is the array of Google apps. These are the applications provided by Google, such as Docs, Sheets, and Calendar.

Here's some examples of why you may want to use SaaS:

  • Less maintenance of office software: When running a business, we need to provide email addresses to all our employees; we need to provide them with office applications such as word processors, spreadsheet applications, and presentation software. If we let someone else handle the installation, configuration, and updates, and reduce the time we spend on handling software licenses, we will free up resources and save money.
  • Sharing information: Using services such as cloud storage will make it easier to share files and documents between co-workers and customers.

This completes our coverage of all the pertinent cloud service models.

As a software developer, you will most likely work on the PaaS layer as it is the one providing the tools we need to develop our applications:

Figure 3.12 – What the different cloud system layers handle

Other advantages of cloud-based solutions

These are just some examples of the advantages we get from using cloud-based solutions. In a 2017 article, The Business Journal lists what they think are the five biggest benefits of cloud-based solutions. They are as follows:

  • Boost cost efficiency
  • Provide flexible pay options
  • Promote collaboration
  • Increase mobility
  • Aid in disaster recovery

If you search the web for the benefits of moving to the cloud, you will find similar lists. Some will also add environmental advantages.

We should also consider that there are risks of using cloud-based solutions. The major one is the security and personal integrity issues that can be hard to handle when you don't have full control over where and how the data is stored.

Next, let's look at some other types of applications.