I agree with Brandon's answers given that new engineers out of school that wish to work on services that run in the cloud will be trained on the job. That said, I can give you some additional context on what it is like. The primary difference between cloud services and programs that run on devices like Android phones is the sheer volume of requests that is made to the code that provides a service (such as Google search, YouTube, Instagram, Facebook, etc.). In order to handle large volumes of requests, the code is distributed across many computers so that each computer is handling some of the requests. When the number of requests increase, the number of computers are also increased in order to handle the load. So, the skills that engineers have to develop to build and maintain services in the cloud include the following:
1) Build high quality modular code that incorporates logging
2) Ability to write services that can scale out by adding/removing more machines when needed
3) Ability to rapidly troubleshoot issues with services by reading logs
4) Ability to add good metrics to service code so that it can be monitored for issues (such as the number of requests/second that the service is handling)
5) Ability to write code that can be shipped incrementally and continuously
So, in addition to learning how to code and work with algorithms and data structures, the above is also needed. Many many tools are being developed to make the above easier, so becoming familiar with tools and what they do helps (such as Docker, Kubernetes, Grafana, ...). Finally, larger companies such as Google, Facebook, Amazon, and Microsoft have their own infrastructures that engineers have to learn. That said, becoming familiar with concepts such as micro services, monitoring, logging, scaling out, deployment, devops, continuous integration, and continuous delivery will give you a leg up. Here are some articles to get you started.
- High availabilty, Scalibility, Agility, Disaster Recovery, etc related to cloud computing
- Difference between IaaS, PaaS, SaaS
- Difference between Public Cloud, Private Cloud, Hybrid Cloud
2. Virtualization :
Provisioning virtual machines, understanding of virtualization and serverless computing lessens hardware dependencies and improves scalibility
3. API and Web Services :
Web services and API help us to integrate web applications on internet. XML,SOAP are some open standars used to tag and transfer data.
Example : For Microsoft Azure, we can use REST APIs to start batch jobs where we can send multiple operations in single request and get the
result in single response.
4. Containers: Containers are packaging mechanisms that can decouple cloud applications from their target environment.
Such application are easier to deploy. Example - Kubernetes, Docker
5. Storage : Here it means that large amount of data is stored online in cloud. It is easier to manage and access such data than in normal filesystem.
It is necessary to understand what data is to be stored where and which type of storage in cloud.
Example : In AWS - S3, Glacier. Microsoft Azure - Storage tables, Azure SQL (Relational Database), Blob storage. Data stored in cloud
has high availabilty and can be restored easily.
6. Networking : Good understanding of networking and virtual networks is required because data has to be accessed over them. Cloud engineers provide efficient
system so that fewer customer devices are needed to manage the system.
scripts used in cloud computing. C#/.Net framework, PowerShell Scripts especially for Microsoft Azure.
We can take subscription of any of such Cloud Service Providers (AWS/ Azure) to get hands-on with them and refer links below for certificate preparation:
AWS certified Cloud Practictioner : https://aws.amazon.com/certification/certified-cloud-practitioner/
AWS certified Developer : https://aws.amazon.com/certification/certified-developer-associate/
Azure (AZ-900) Fundamentals : https://docs.microsoft.com/en-us/learn/certifications/exams/az-900
Azure (AZ-203) Developer Asscociate : https://docs.microsoft.com/en-us/learn/certifications/exams/az-203"
1. Cloud Computing Terminology - https://solutionsreview.com/cloud-platforms/glossary/
2. SaaS - https://en.wikipedia.org/wiki/Software_as_a_service
3. PaaS - https://en.wikipedia.org/wiki/Platform_as_a_service
4. IaaS - https://en.wikipedia.org/wiki/Infrastructure_as_a_service
5. Cloud Native Application - https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/introduction
Cloud Engineer need to be specialized in the tools and technologies supporting the following roles:
1. Developer, with experience in one or two programming languages and understand cloud native application design and development concept.
2. DevOps Engineer, with experience using DevOps Toolchain.
3. Site Reliability Engineer, with experience in one or more cloud service providers (AWS, Azure, GCP)
Sri recommends the following next steps:
Technical Skills: Knowledge of HTML and computing fundamentals
Financial skills: Awareness of financial terminologies like ROI and business concepts like online marketing strategies
Data analysis: Expertise in data mining and handling ERP systems
Project Management Skills: Experience in dealing with risk analytics, service agreements etc.
Security Skills: Working knowledge of concepts related to network security, including encryptions, authorization, and protocols
Keeping the above-mentioned skills in mind, aspiring cloud engineers can choose from a range of different credentials. Cloud computing training and certifications differentiate one’s profile in a highly competitive job landscape. Here are some of the major certifications:
Amazon Web Services (AWS) Certification
Google Cloud Associate and Professional Certifications
IBM Certified Solution Architect
HP ExpertOne Cloud Certification
EMC Cloud Architect
VMware Cloud Certification
To become a cloud engineer it is going to be necessary to familiarize yourself with the core concepts of software development, the tools that you have available to you from the various cloud providers, and some understanding of the business that you work for in order to understand why your lead decided on a particular infrastructure to tackle a problem.
Brandon recommends the following next steps:
- systematic in the way you approach your problem
- be able to breakdown large tasks into multiple manageable tasks.
- there are multiple different coding languages that are commonly practiced
- time management
- be able to identify creative solutions.
I hope this helps. Good luck.