Cloud Engineering: What’s that about?
Hello Dear Reader, I am back again and it is always a pleasure writing for you to read.
I am presently a cloud engineering student and looking back at my journey, I figured there were some things I wish that were simplified for me earlier so I would be able to grasp the concept and meaning of Cloud Engineering better. Now here, I do not want you to go through the same things I did so I would try explaining in simple terms, using different analogies, what cloud computing and engineering entails, what cloud engineers do, what the cloud itself is, what cloud service providers are, and some tools and services involved.
What is the Cloud?
“The cloud” can be defined as a network of servers that are accessed over the internet and the software and databases that run on those servers. Cloud servers are located in data centers all over the world. Cloud computing or engineering is made possible because of virtualization.
If you were in Europe and you needed to buy a piece of land in Africa, you could easily do so, right?… I mean, as long as you have access to a great housing company. Yes, that is exactly how it is with the cloud. The fact that you cannot physically see the piece of land while you are in Europe does not mean that your piece of land does not exist, it is the same way that when you save files and information in the cloud, you do not know specifically where they are, it is as if the servers you backed your information up on are in the sky and you accessing them from there, your files and information are backed up in servers anywhere possible in the world. (You do not send them to the literal cloud that pours down rain…lol). When you whip up a server, just know that you are basically setting up another computer from your personal computer, except that you cannot touch its hardware like you do your personal computer.
Again, in simple terms, if you use an iPhone, you would see pop-up messages from time to time asking whether you would like to save your pictures or information in the cloud, then you pay for your storage there. You pay for that service, if you pay, you are paying to get space on a virtual machine somewhere to have your files backed up. It’s the same with other phones and devices for Google drives, you see pictures from five years ago and you are not with the same memory card, you only see them cause you backed up your files…in the Cloud.
There are people that build, monitor and manage these servers/virtual machines and we are part of them. We are called Cloud Engineers.
Now I think you must have gotten this analogy perfectly, you may then decide what type of Cloud Engineer you want to be later and we have various types which I would mention a bit later in this article.
Even though there are only a few ways to distinguish cloud computing and cloud engineering, they are quite different.
What is Cloud Computing?
According to Wiki, Cloud computing refers to the delivery of computing services, including servers, storage, databases, networking, software, analytics, and intelligence, over the internet.
What is Cloud Engineering?
Cloud engineering is the practice of designing, developing, and maintaining cloud computing infrastructure and solutions.
While cloud computing is a broader term that refers to the delivery of computing services over the Internet, cloud engineering is a more specialized field that focuses on the design and management of cloud infrastructure. Cloud computing is the “what” of computing in the cloud, while cloud engineering is the “how” of building and managing cloud environments.
Cloud computing services are typically provided by cloud service providers (CSPs) such as Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform. These providers offer a range of services, including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), which enable customers to quickly and easily deploy applications and services in the cloud.
What do Cloud Engineers do and how do they work with other programmers?
Picture a house or mansion; with a front lawn or a little garden, a basketball court, a swimming pool, a small solar-powered plant, and maybe a garage. You have, right? Good.
Thinking of this house, you can figure out how many workers or skills went into bringing such to that level. In programming, we have different workers, skills, and frameworks and each of these has its own functions. I would try explaining what some professionals in the programming field do in relation to our imaginary mansion.
Say a UI /UX designer: A UI/UX designer is a professional into designing products that excite users based on their effectiveness or aesthetics, as the case may be. They can be likened to architects. They are behind drawing up beautiful designs of websites or apps for the user’s consumption. They make designs in ways that a user has comfortability operating or navigating software. A UI/UX designer gives everyone visual aid and plans to work on. Just the way a good architect would never design a toilet beside the kitchen compartment but put them far apart, a good UI/UX developer would also not draw up a design that is complicated for users.
Say a Frontend Developer: A front-end developer builds the front-end portion of websites and web applications, that is, the part users see and interact with. A front-end developer can be likened to a builder/ bricklayer/ mason or any other professional who builds up a house. They bring the designs to life, they are behind showing the world the entirety of what everyone works on. It is like noticing a house first before thinking of how things in the house were fixed. Frontend developers work with UI/UX designers. It is quite a common sight for a UI/UX designer to transition into frontend development or a company that hires one person to do the two jobs.
Say a Backend Developer: A back-end developer is one who is involved in data storage, security, and other server-side functions that you cannot see. A backend developer can be likened to a plumber or electrician. They connect the dots, they do things behind the scenes and they are mostly in charge of what users do not get to see. Let us enter our imaginary mansion and go to the kitchen, you see a sink there but you do not necessarily know where the water is coming from, what part of the building the pipes pass through, or where they go to, you just know there is water, there are professionals behind that. A developer that builds frontend and backend software is called a full-stack developer.
Now, a Cloud Engineer:
A cloud engineer, according to Google, is an IT professional responsible for any technological duties associated with cloud computing, including design, planning, management, maintenance, and support.
A cloud engineer can be likened to a house caretaker. The same way a house caretaker’s job is to be responsible for maintaining and ensuring the proper functioning of a house, a cloud engineer is also responsible for maintaining and ensuring the proper functioning of cloud infrastructure. Cloud engineers design, deploy, and maintain cloud infrastructure, thereby ensuring that it is running smoothly, securely, and efficiently. They also monitor the infrastructure for potential issues and troubleshoot problems as they arise, much like a caretaker would monitor a house for any issues and perform necessary repairs. Some of the key responsibilities of a cloud engineer may include designing and implementing cloud security measures, ensuring compliance with industry regulations, monitoring and optimizing cloud performance, and troubleshooting issues that arise in the cloud environment. Overall, cloud engineering is an important and growing field, as more and more organizations are moving their computing infrastructure to the cloud to take advantage of its benefits.
Backend developers transition very easily into being cloud engineers because they both work on the server side of applications.
Cloud Engineering Salaries
It is quite common knowledge that cloud engineers are paid very handsomely. Cloud engineers earn a very good salary, depending on their experience and level of expertise. There are so many cloud engineering roles, especially senior developer roles but there are only a few people that are experienced or knowledgeable enough to take them on so you definitely have a spot up there. On average, in the US, and at the moment this article is being written, a cloud engineer earns about $120,000 a year. This article extensively lists some cloud engineering roles and their salaries…click here.
In the cloud computing world, there are different skills and also different titles attached to each of them. We have cloud engineers, cloud developers, cloud architects, system administrators, cloud operations engineers, cloud support engineers, cloud automation engineers, and many others. Mostly, these roles are quite interwoven and professionals transition between them; it is just like a teacher teaching agricultural science could transition to specializing in animal husbandry. With time, you will get to know these roles better and find out which one suits you, but ultimately, we all start by learning the fundamentals of cloud engineering.
In general, cloud engineers tend to earn higher salaries on average than some other professionals in the programming field like frontend and backend developers. This is because cloud engineering is a specialized skillset that requires extensive knowledge of cloud platforms and services, as well as expertise in programming, security, and infrastructure. Cloud engineering roles are becoming increasingly important for modern businesses. Now you get me, yeah?… Lolll
However, front-end and back-end developers are also in-demand roles, but they tend to have more competition in the job market and may not require the same level of specialized knowledge as cloud engineers do. That being said, experienced frontend and backend developers can still earn high salaries depending on their skills, experience, and the demand for their particular expertise.
Cloud Service Providers
As I mentioned earlier, each time you set up a server and deploy, save, or manage data on it, you are literally setting up your own computer, just that you do not have access to its hardware. You may wonder though, where do those servers exist then?
Here is where the cloud service providers come in. Cloud service providers offer a range of computing services and solutions such as databases, analytics, machine learning, and Internet of Things (IoT) services that are delivered over the Internet. Their services typically include offering:
Infrastructure as a Service (IaaS): This service provides virtualized computing resources, such as virtual machines, storage, and networking, that can be accessed and managed through a web interface. Examples of IaaS providers include Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform.
Platform as a Service (PaaS): This service provides a platform for developers to build, run, and manage applications without having to manage the underlying infrastructure. Examples of PaaS providers include Heroku and Google App Engine.
Software as a Service (SaaS): This service provides applications that are accessed over the internet, typically through a web browser or mobile app. Examples of SaaS providers include Salesforce, Dropbox, and Microsoft Office 365.
What do you need to learn in Cloud engineering?
To learn cloud engineering, you need a strong will, tenacity, and a burning desire to know more. Cloud engineering is beautiful and its importance to the modern world cannot be overemphasized, you will never get bored being a cloud engineer because there are different mysteries to unravel and different problems to solve every day.
Then, you also need a good personal computer. You would need a computer that can run the required software and tools.
Here are some general recommendations:
Operating System: macOS, Linux, or Windows.
Processor: Your PC should have a modern multi-core processor, such as an Intel Core i5 or i7, or an AMD Ryzen 5 or 7.
RAM: At least 8 GB of RAM is recommended, but 16 GB or more would be better for running multiple applications or virtual machines simultaneously and effectively
Storage: A solid-state drive (SSD) is recommended for faster performance and reliability.
Graphics Card: A dedicated graphics card is not strictly necessary for most computer engineering tasks, but may be required for certain applications or games.
Programming and important topics in Cloud Engineering
Building, developing, and maintaining cloud infrastructure is very important and because of this, there are many tools and services involved. I would not be going too deep into the details as this article is only for you to grasp the concept of cloud engineering.
Very important note: Kindly discard any piece of information that reaches you about Cloud Engineers not needing to learn to code, it is so not so! Cloud engineers code, in fact, they are required to understand a sizeable amount of programming languages with which they deploy, configure, or manage servers.
Learning to understand the good use of the Linux Management system is of utmost importance in Cloud engineering, along with the concept of Networking. As a cloud engineer, you should have great knowledge of the following topics and understand how to utilize at least one tool or service under them. I would mention my personally preferred and more popular options first among the examples given on the right side of these topics, also note that these examples each have their strengths and use cases, it is advisable in this field to know at least a few services or tools very well and then know at least very little of everything else, yes, you should be a jack of all trades.
The following are great topics for you to research about:
- Version Control System: GitHub, GitLab, BitBucket (GitHub is the most popular and preferred here)
- Cloud Service Providers: AWS, DigitalOcean, Google Cloud, Provider, Microsoft Azure, IBM Cloud.
- Configuration file languages: YAML, JSON, HCL
- Programming Language: Python, GO Lang, PHP, Java, C#, Node JS, Ruby (Anyone of choice is okay here but I would recommend the first two)
- Infrastructure as Code (IaC): Terraform, Ansible, AWS CloudFormation, Azure Resource Manager.
- Framework: Laravel, Flask, ExpressJS, Ruby On Rails
- Containerization and Orchestration: Kubernetes, Docker, LXC
- CI/CD Tools: Jenkins, Circle CI (Both are just fine).
- Architectural Patterns: Microservices, Monolithic, Serverless, CQRS (Command Query Responsibility Segregation), SOA (Service-Oriented Architecture)
- Database: Relational database, Non-relational database ( There are many more examples of databases but these should do for now). For a relational database, you can try PostgreSQL or MySQL and for a non-relational database, you can go for MongoDB or DynamoDB.
- Testing: Integration Testing, Unit Testing, Functional Testing (All are very important).
Here, we have come to the end of the article, thank you for reading this far and I hope this answers your questions about cloud engineering, kindly let me know if you have more. I also hope this rekindles your passion for cloud engineering and software programming, you are just what the world needs, keep pushinggg!
Kindly clap and follow me for more updates and articles, thank you again, dear reader!
The Cloud Fairy 🌩️🧚♀️👩💻