The Greatness of Cloud Computing

06 Apr 2020

Cloud Computing

Cloud computing has been one of the most important tools in the information technology field over the past several decades. It will continue to thrive in the near future because it dynamically delivers on-demand services and many resources to whatever the application benefits and needs by sharing resources from multiple machines. The cloud-based delivery includes, but is not limited to, elastic computing, serverless computing, Infrastructure as a Service (IaaS), and Platform as a Service (PaaS).

Elastic Computing

One important concept of cloud computing is elastic computing, which means using the resources (such as memory and storage) without worrying about expanding or shrinking the demand’s capacity for a job workload by automatically monitoring the demand as closely as possible. Additionally, there are many other types of computing resources for elastic computing that are available through many providers and vendors, including but not limited to, compute optimization, memory optimization, storage optimization, and accelerated computing. For example, if a website has recently been created, it may only require one virtual machine. However, once the website has gained popularity, it requires many additional machines to use more resources. Once the website does not need additional machines, those machines are then released. This example is called “auto-scaling,” where it plays a critical role by detecting and providing additional (or reduced) machines through elastic computing.

Amazon Web Service (AWS), Microsoft Azure, and Google Cloud all have auto-scaling roles as one of their components, which monitors one’s applications and automatically adjusts the demands. For AWS, it lets customers build the scaling plans for many of its resources, including Amazon EC2. Additionally, customers can use predictive scaling to deliver “faster, simpler, and more accurate capacity provisioning, resulting in lower cost and more responsive applications” (AWS). The predictive scaling predicts the future patterns based on the need for changes in the daily and weekly traffic trends. For Microsoft Azure, it lets customers create alerts when something has changed based on a metric, such as CPU status or response time. Moreover, it has both horizontal and vertical scaling for customers to choose from for its scalability. Lastly, Google Cloud offers the benefit of routing the traffic to the closest virtual machine and automatically detecting, replacing, and removing bad instances if a machine fails the health check. Furthermore, Google Cloud offers “several different types of load balancing that differ in capabilities” (Google Cloud).

Elastic computing is expected to rise and is the key to the future of applications. Its auto-scaling allows applications to dynamically scale infrastructure resources up and down based on demand needs, while operating efficiently and cost-effectively, so the user pays only for what is being used. All of these are automated, so businesses don’t have to worry about manually adding more or removing fewer machines; this allows businesses to improve their productivity without focusing much of their effort and time on computing.

Serverless Computing

One major theme for elastic resources is serverless computing. It is a way where the computing code execution model is managed by the server, making developers’ lives easier by not having to worry about keeping up with and maintaining the servers when deploying the code, as well as allowing and opening up low-coding knowledge to build during the development. There are additional advantages when using serverless computing, one of which is elasticity. Developers do not have to spend their time setting up and operating the autoscale infrastructure because the cloud provider supplies flexible scaling for the application automatically. Secondly, the cost of serverless computing is more effective since consumers are only charged for the resources that they are using, rather than paying by the server unit (capacity) like with traditional virtual servers. Thirdly, serverless applications can adjust to high and low numbers of requests with the help of autoscale from elastic resources, whereas a traditional application can be overwhelmed by the sudden increase in usage because it only contains a fixed quantity of server space. Moreover, serverless computing gives developers high error/fault tolerance to reduce the time spent on the software and engineering complexity. All of the benefits listed above are designed for developers, and the effort required to design and maintain them is kept to a minimum.

Although there are many advantages to using serverless computing, there are many other disadvantages that come with it, such as security and privacy. One of the main concerns that many consumers are concerned about is vendor lock-in. Much serverless computing is provided as a third-party service, so one must be locked-in with a specific cloud vendor, which means that it is difficult to change to a different provider. In general, to fix this, one must recode all event-based functions. Another concern comes from monitoring and debugging processes because the error analysis cannot generally dive into more detail. Furthermore, serverless computing is only built for short-running tasks; therefore, the traditional app server, in turn, is better off with long-running tasks.

As with most innovations, there can be advantages and disadvantages to keep in mind across all of serverless computing. AWS Lambda Functions notes that “you can run code for virtually any type of application or backend service - all with zero administration” (AWS Lambda). This means that running the code is completely automated. A downside to this is that developers are unable to use any custom packages. With Azure Functions, developers can write and build applications in many supported languages, with real-time file processing and automation of scheduled tasks. A drawback is that moving the code from Azure is difficult due to vendor lock-in. Lastly, Google Cloud Functions are used to “create real-time data processing and serverless application backends.” It allows developers to trigger the code from Google Cloud Provider, Firebase, and Google Assistant. A disadvantage of using Google Cloud Functions is that it only supports Python and JavaScript.

With the lower cost of elastic computing, automated high availability, improved security, and the current trends of serverless computing, developers are paying more and more attention to it for the present and into the future. Serverless computing makes the developer or business less complicated, more structured, and helps based on the user’s needs.

IaaS vs. PaaS

Infrastructure as a Service (IaaS) is a form of cloud computing that gives customers the on-demand and cloud-based resources and services that they need from the underlying cloud infrastructure, such as customer processing, storage, networks, and many other computing resources needed to deploy and run arbitrary software. IaaS provides customers with the ability to manage applications, data, runtime, middleware, and operating systems. It is also highly flexible and scalable, allowing customers to scale up and down based on demand and pay only for what they use. With IaaS storage, it “provides massively scalable storage capacity that can be used for applications, backups, archiving, file storage, and more” (Stallings).

On the other hand, Platform as a Service (PaaS) is a form of cloud computing service/platform made up of hardware and software tools that allows users to develop, run, and manage applications with minimal configuration options; it also “provides many useful software building blocks, plus a number of development tools, such as programming language tools, runtime environments, and other tools that assist in deploying new applications” (Stallings). It is primarily used by developers who are building software. Similarly to IaaS, PaaS also allows scaling up and down based on demand, allowing the customer to pay for what they use. However, PaaS customers can manage only the applications and the data.

With Infrastructure as a Service and Platform as a Service, Amazon offers the Elastic Compute Cloud (Amazon EC2) as an IaaS while Relational Database Service (RDS) as a PaaS. Some similarities between these two platforms are that they let the user build the database in a secure environment, they are highly scalable, and they support high-performance applications.

What I noticed about EC2 from RDS is that for EC2, you, as the user, must manually install MariaDB as well as MySQL on the command prompt for the database to work. Whereas for RDS, you must select one of the database options that you want to use, like MariaDB, on a web service, and RDS automatically installs and creates a MariaDB instance for you. Furthermore, EC2 offers the user complete control and flexibility over the system, which means that the user is responsible as the administrator to provision and configure the database for the highest performance. Amazon RDS is best for a company when you’re looking for flexibility and control over the database, or looking for a lower cost.

Amazon RDS offers you the options to check the connectivity and security, see logs and events, monitor and configure the instance, and get automatic backups. However, these responsibilities are automated by Amazon, meaning that it is in control of the user’s database. Fortunately, RDS gives “fast performance, high availability, security, and compatibility” (Amazon RDS). Amazon RDS is best for a company when you’re looking for an easy database setup where you don’t have to worry about database disasters and which lets you focus more on other major tasks.

Conclusion

With elastic computing, serverless computing, Infrastructure as a Service, and Platform as a Service, cloud computing has been one of the critical tools in the information technology field for many past decades and will continue to thrive in future decades as well. Elastic computing from Amazon Web Service, Microsoft Azure, and Google Cloud offers the ability to watch very closely the app’s demands to adjust and autoscale the application automatically. Additionally, each service management company offers different types of elasticity to fit the customer’s needs, allowing businesses to increase their productivity without paying much attention to the effort and time put into computing. Serverless computing uses elastic computing as one of its themes in order to be more effective when it comes to elasticity and paying for the resources that businesses are using rather than paying by the server unit like traditional servers. IaaS offers the flexibility and massively scalable storage that can be used for applications, backups, and archiving. It also offers complete control and configuration over the system. On the other hand, PaaS provides powerful software and hardware tools that enable developers to create, run, backup, and manage applications with minimal configuration options. All of these forms of cloud computing: elastic computing, serverless computing, Iaas, and Paas are the keys to improving the efficiency and effectiveness of designing and maintaining servers. Choosing the right form of cloud computing will help your company in both the short-run as well as the long-run, making both your life and the company a whole lot better. The future is here!