A beginner-friendly journey from traditional programming to cloud-native development
Perfect if you are:
- A traditional programmer wanting to learn cloud development
- A student exploring serverless and containerized applications
- Someone transitioning from on-premise to cloud-native solutions
- New to AWS Lambda, Google Cloud Run, Docker, or Flask
No prior cloud experience required! We start from the basics and build up your knowledge step by step.
This training takes you on a progressive journey from traditional programming to modern cloud-native development. You'll start by learning how cloud functions work with AWS Lambda, where your code runs without managing servers. Then you'll discover how to build web services using Flask, creating APIs that can handle multiple requests simultaneously. Next, you'll explore containerization with Docker, learning how to package your applications so they run consistently anywhere. Finally, you'll deploy your containerized services to Google Cloud Run, experiencing the power of serverless container platforms that automatically scale based on demand.
| Concept | Traditional Approach | Cloud Approach | Benefits |
|---|---|---|---|
| Function Execution | Run on your server | AWS Lambda | No server management, pay per use |
| Web Services | Deploy to server | Google Cloud Run | Auto-scaling, containerized |
| Dependencies | Install on server | Docker containers | Consistent environments |
| Scaling | Manual server setup | Automatic | Handle traffic spikes effortlessly |
Lab 1: AWS Lambda Functions
What you'll build: A DNA sequence analyzer that counts nucleotides (A, C, G, T)
Technologies:
Key Learning:
- Serverless computing fundamentals
- Event-driven programming
- Testing strategies (pytest, IDE, SAM CLI)
- Understanding the
eventobject
Real-world analogy: Like having a specialist consultant who only works when you call them
π Location: Day 1/Lab 1 - AWS Lambda functions/
Lab 2: GCP Cloud Run Service
What you'll build: The same DNA analyzer, but as a web service accessible via HTTP
Technologies:
Key Learning:
- Web services vs functions
- REST API development with Flask
- Containerization with Docker
- Cloud deployment strategies
Real-world analogy: Like having a 24/7 customer service desk that's always ready to help
π Location: Day 1/Lab 2 - GCP Cloud Run Service/
Click to expand prerequisites checklist
- Python 3.12+ - Download here
- Git - Download here
- Code Editor - VS Code or PyCharm
- Docker Desktop - Download here
- AWS CLI - Installation guide
- Google Cloud CLI - Installation guide
# 1. Clone the repository
git clone https://github.com/gattil/Cloud-Computing-Training-Labs.git
cd Cloud-Computing-Training-Labs
# 2. Set up Python environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Start with Lab 1
cd "Day 1/Lab 1 - AWS Lambda functions"
pip install -r requirements.txt
pytest test_lambda_function.py -vIf you're new to cloud computing, start by reading the Lab 1 README to understand how serverless functions work, then run the local tests to get comfortable with the testing process. Once you grasp how the event object carries data into your function, experiment with different inputs to see how the system responds. After mastering the basics of serverless functions, move on to Lab 2's README to learn about web services and how they differ from functions. Run the Flask application locally on your machine to see how web services handle HTTP requests, then test it using tools like curl or Postman to understand API interactions. When you're comfortable with web services, try containerizing the application with Docker to see how it ensures consistent deployment environments. Finally, deploy your containerized service to Google Cloud Run to experience the full cloud-native development cycle.
If you already have programming experience, you can take a faster approach by comparing the architectural differences between AWS Lambda and Google Cloud Run to understand when each approach is most suitable. Analyze the code differences between the two implementations to see how the same functionality is expressed in different cloud paradigms. Test both approaches hands-on to get practical experience with serverless functions and containerized services. Deploy both solutions to their respective cloud platforms to understand real-world deployment processes, then explore monitoring and scaling options to see how these platforms handle production workloads.
| Scenario | π§ AWS Lambda | π Cloud Run | π‘ Recommendation |
|---|---|---|---|
| Simple data processing | β Perfect fit | Use Lambda | |
| Web API with multiple endpoints | β Single service | Use Cloud Run | |
| Event-driven processing | β Native integration | Use Lambda | |
| Existing web application | β Requires refactoring | β Containerize and deploy | Use Cloud Run |
| Long-running processes | β 15-minute limit | β Up to 60 minutes | Use Cloud Run |
Each lab provides multiple testing approaches designed to match your experience level and comfort with different tools. Beginners can start with local testing by running Python directly on their machine, use pytest for automated unit testing, and leverage IDE integration for visual debugging with breakpoints and step-through execution.
Intermediate users can advance to container testing with Docker to simulate production environments locally, learn API testing using command-line tools like curl or graphical tools like Postman, and explore local cloud simulation with AWS SAM CLI to test Lambda functions without deploying to the cloud.
Advanced practitioners can deploy directly to cloud platforms like AWS and Google Cloud Platform to test in real production environments, implement comprehensive integration testing with actual cloud services, and set up performance monitoring and optimization to understand how applications behave under load.
Our documentation is specifically designed for learning rather than just serving as a reference manual. We use visual learning techniques including ASCII diagrams to help you understand system architecture, step-by-step process flows to visualize how data moves through applications, and detailed code examples with thorough explanations of what each part does and why.
We provide deep explanations using real-world analogies to make complex cloud concepts more relatable and easier to understand. Every piece of code is broken down step-by-step so you can follow the logic, and we highlight common pitfalls that beginners often encounter along with practical advice on how to avoid them.
The hands-on approach includes multiple testing methods tailored to different skill levels, practical exercises with clear expected outputs so you know when you're on the right track, and comprehensive troubleshooting guides that help you resolve common issues independently. This approach ensures you're not just copying code, but actually understanding the underlying concepts and building practical skills.
We welcome contributions from the community! Here's how you can help:
Ways to Contribute
- Fix typos or unclear explanations
- Add more real-world examples
- Translate to other languages
- Add new labs or exercises
- Improve existing implementations
- Add support for other cloud providers
- Report bugs or unclear instructions
- Suggest improvements
- Share your learning experience
- Create video tutorials
- Write blog posts about your experience
- Share on social media
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-improvement) - Commit your changes (
git commit -m 'Add amazing improvement') - Push to the branch (
git push origin feature/amazing-improvement) - Open a Pull Request
- Each lab has comprehensive README files
- Code is heavily commented for learning
- Troubleshooting sections for common issues
- GitHub Issues for bugs and questions
- Discussions for general help
- Tag us on social media with
#CloudTrainingLabs
This project is licensed under the MIT License - see the LICENSE file for details.
Begin with Lab 1 | Jump to Lab 2 | View All Labs
β If this helped you, please star the repository to help others find it!