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

Remote work in the USA: Opportunities for Colombians with salaries of over $10 million COP

Bogotá (Colombia), March 2024. With the arrival of COVID-19, remote work has become one of the preferred options for numerous transnational companies. This trend, which has been gaining momentum in Colombia, responds to the desire of many people to work from home to ensure their safety and well-being and keep abreast of new trends. In addition, the savings in commuting time and associated costs, such as transportation, clothing, and food, are also significant advantages.

This new way of working has challenged the deeply-rooted belief that physical presence is indispensable for collaboration and productivity. As more workers experience the benefits of telecommuting, companies have begun to see the advantages of hiring people from other countries without the need for them to relocate. This dynamic has streamlined hiring processes and reduced costs associated with relocation. Similarly, it allows companies to access a wider range of international talent without having to worry about the logistical and legal issues that often arise when moving foreign employees. This contributes to greater diversity and innovation in the workplace, while also increasing the company’s competitiveness on a global level.

Currently, there are numerous job opportunities in areas such as engineering and software development that are seeking Colombian professionals, who are sought after by these companies for their solid academic background and their ability to adapt to new situations. These vacancies require a combination of technical and soft skills, as well as fluency in English, especially at the B2 level or higher according to the Common European Framework of Reference (CEFR). Candidates must have previous experience in the industry to meet the demands of these positions and contribute to innovation and technological development.

According to leading job portals like GlassDoor or El Empleo, salaries for positions such as FullStack Engineers (one of the most in demand) range between 8 and 10 million Colombian pesos per month. This level of remuneration is considered highly competitive, especially because many of these opportunities are paid in dollars. It is worth noting that this phenomenon of attractive salaries is not exclusive to Colombia, but is observed throughout Latin America, due to the strengthening of the dollar against the currencies of the region.

Companies like the Software consultancy Mismo actively seek professionals in specialized areas such as FullStack engineering and Cloud Computing. In fact, according to the previously mentioned job portals, specialties like Cloud Computing can offer monthly salaries of up to $15 million Colombian pesos. It is essential to highlight that these salaries depend on the company for which one works, which implies that they could be significantly higher.

“The positions offered to Colombian professionals in international companies provide a valuable space to experience a global work environment that fosters innovation, continuous learning, and exposure to diverse cultures and business practices. These types of jobs, with attractive salaries and growth alternatives, are an excellent option for those looking to expand their professional horizons and improve their career development without having to leave home,” indicates Diego Gamboa, Chief Technology Officer at Mismo.

The executive highlights the importance of using specific keywords such as ‘remote work’, ‘job opportunities abroad’ (or country of preference), ‘competitive salaries’, and ‘professional positions’ when searching for jobs online. These terms allow filtering the results to find vacancies that fit the candidate’s skills and experience.

“It is essential to identify the companies of our interest based on the benefits they offer, the technologies and industry in which they operate. Let us not forget that these companies frequently share job offers, information, articles, and community-oriented activities through their social networks, such as LinkedIn, Instagram, or Facebook,” says Gamboa.

The space Mismo Jobs hosts a wide variety of job vacancies for interested professionals. On this site, applicants can not only explore employment opportunities but also receive guidance and advice during their international job search.