Site icon Mismo

An Introduction to Cloud Services

Software development has undergone a significant transformation over the past few decades, becoming more accessible than ever before. In the early days, web pages and services were created exclusively by professional IT experts working in government agencies or prestigious universities. However, advancements in computing hardware and user-friendly development tools have democratized this process, enabling anyone with an interest in technology to get involved.

One of the most transformative advancements in this field is the rise of cloud services. These services simplify the complexities of managing physical computer hardware, offering a range of remote solutions to users worldwide. From an application standpoint, cloud services allow organizations and individuals to access powerful computing resources, store and analyze data, and deploy applications—all without the need to own or maintain physical servers. This accessibility and scalability have revolutionized the way we build and deliver modern software.

This post provides an easy-to-follow introduction to cloud services, designed for both technical and non-technical readers, highlighting their critical role in modern web architectures.

Before delving into cloud services, let’s revisit the foundational purpose of the web. Although the seamless experience of going online today may obscure this, the internet fundamentally serves to connect devices globally. At its core, the internet consists of numerous computers that either receive information requests and send responses, or initiate these requests and receive corresponding data. Here, the “server” functions as a repository of information—similar to a bank’s system that holds account balances. In contrast, the “client” refers to the device used to access this information, such as a personal computer, laptop, or smartphone (Kurose & Ross, 2017). Understanding these basic concepts can be enlightening, especially when considering terms like “The Cloud,” “Game Servers,” and “Netflix Servers,” which refer to these interconnected computers distributed worldwide.

Now that we have a basic understanding of the web’s structure, let’s explore how to deploy a webpage or web application. Hosting it from your own computer might seem like a viable option, but it presents significant challenges. Imagine launching your project and having your device handle incoming requests. Do you have enough storage to manage all your users’ data? If your project gains popularity, can your computer’s processing power handle the increased traffic? Moreover, your device would need to stay on 24/7—what happens during a power outage? In short, while it’s technically possible, using your personal computer to host a web service is far from ideal. This is where cloud services come in.

Rather than purchasing your own server, it is more practical to rent one with the specifications you need. This approach allows you to avoid dealing with hardware maintenance, upgrades, or replacements later. Cloud services essentially provide this by renting machines to run your code or perform specific software tasks (Kurose & Ross, 2017). Cloud providers simplify this process by abstracting away complex tasks and offering straightforward controls.

It’s important to note that while you can rent an entire computer to run your software, cloud providers typically rent you a “piece” of a computer remotely. This practice, known as virtualization, uses sophisticated software that enables a single physical machine to host multiple virtual instances of operating systems. Each instance operates independently, with the provider dynamically allocating the required storage, processing power, memory, and other resources to meet user needs.

This approach maximizes hardware efficiency by allowing multiple users to share the same physical machine without interfering with one another’s workloads. For example, a single server might run a lightweight web application for one user while simultaneously hosting a resource-intensive database for another. By dividing and managing resources in this way, cloud providers can offer flexible, scalable solutions that adapt to varying demands, all while remaining cost-effective.

Another advantage of cloud services is the wide range of server types optimized for different tasks. This flexibility enables you to modularize your project, assigning each component to a server type that ensures optimal performance and seamless integration. For example, one type of server might handle database queries, while another runs machine learning models, optimizing performance for each workload.

Let’s explore Amazon Web Services (AWS), one of the most popular cloud platforms. AWS holds the largest share of the global cloud infrastructure market and provides a comprehensive suite of tools for various use cases. However, other major providers such as Microsoft Azure and Google Cloud Platform (GCP) also offer robust solutions, allowing you to select the best fit for your needs.

The basic AWS instance is called EC2 (Elastic Cloud Computing). This service lets you rent a remote machine with the specifications you need to run any code you wish. It’s similar to using your personal computer, especially if you choose a Windows operating system (Amazon Web Services, n.d.).

If you’ve worked with databases, you’re familiar with setting up and connecting to them without needing to manage their files or run additional software. AWS offers RDS (Relational Database Service) to simplify this process. RDS lets you easily mount a database with the details you provide, optimizing it for fast data reading and writing (Amazon Web Services, n.d.).

For large files or high volumes of data, traditional databases may struggle, particularly with image storage. For these cases, Amazon S3 (Simple Storage Service) provides an efficient solution. S3 functions similarly to your computer’s file explorer, organizing files into folders for easy retrieval. It is designed to store a variety of file types, including images, PDFs, text files, and even large media files like videos and backups.

One of S3’s key advantages is its scalability and durability. Unlike traditional databases, which can be burdened by managing unstructured data, S3 ensures reliable storage and easy access. It’s particularly useful for projects requiring significant file storage. Integration with other AWS tools further enhances its versatility, making it easier to process and deliver data for applications.

To summarize, you could run your project on an EC2 instance with just enough power to meet your needs, store user data in an RDS database, and store images in an S3 bucket. This setup ensures smooth, efficient operation.

This overview of the cloud is relatively simple, but it hopefully helps demystify the concept. It’s natural to feel overwhelmed by the technicalities and the abundance of available services—AWS alone offers over 200. However, most people don’t need to know all of them. The key is to research and select the services that best fit your needs. Be adventurous and curious—explore forums or ask AI for advice. With so many options available, you’ll have your app up and running in no time.

References
Kurose, J. F., & Ross, K. W. (2017). Computer Networking: A Top-Down Approach (7th ed.). Pearson.
Amazon Web Services. (n.d.). Amazon EC2. Retrieved July 4, 2024, from https://aws.amazon.com/ec2/
Amazon Web Services. (n.d.). Amazon RDS. Retrieved July 4, 2024, from https://aws.amazon.com/rds/
Amazon Web Services. (n.d.). Amazon S3. Retrieved July 4, 2024, from https://aws.amazon.com/s3/

Written by:

Andrés Mena
FullStack Engineer
Country: Costa Rica

Exit mobile version