Skip to content

gattil/cloud-computing-training-labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Cloud Computing Training Labs

A beginner-friendly journey from traditional programming to cloud-native development

GitHub License Python AWS GCP

🎯 Who This Is For

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.


πŸ“š What You'll Learn

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.

Core Concepts Covered

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 Structure

Day 1: From Functions to Services

Lab 1: AWS Lambda Functions

What you'll build: A DNA sequence analyzer that counts nucleotides (A, C, G, T)

Technologies:

  • AWS Lambda
  • Python
  • pytest

Key Learning:

  • Serverless computing fundamentals
  • Event-driven programming
  • Testing strategies (pytest, IDE, SAM CLI)
  • Understanding the event object

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:

  • Google Cloud
  • Flask
  • Docker
  • Cloud Run

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/


πŸš€ Quick Start

Prerequisites

Click to expand prerequisites checklist

Required Software

Cloud Accounts (Free tiers available)

Optional but Recommended

Get Started in 3 Steps

# 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 -v

πŸŽ“ Learning Path

For Complete Beginners

If 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.

For Experienced Developers

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.


πŸ” Key Differences Explained

Lambda vs Cloud Run: When to Use What?

Scenario πŸ”§ AWS Lambda 🌐 Cloud Run πŸ’‘ Recommendation
Simple data processing βœ… Perfect fit ⚠️ Overkill Use Lambda
Web API with multiple endpoints ⚠️ Multiple functions needed βœ… Single service Use Cloud Run
Event-driven processing βœ… Native integration ⚠️ Requires setup 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

πŸ› οΈ Testing Strategies

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.


πŸ“– Documentation Features

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.


🀝 Contributing

We welcome contributions from the community! Here's how you can help:

Ways to Contribute

πŸ“ Documentation

  • Fix typos or unclear explanations
  • Add more real-world examples
  • Translate to other languages

πŸ’» Code

  • Add new labs or exercises
  • Improve existing implementations
  • Add support for other cloud providers

πŸ› Issues

  • Report bugs or unclear instructions
  • Suggest improvements
  • Share your learning experience

πŸ“š Educational Content

  • Create video tutorials
  • Write blog posts about your experience
  • Share on social media

Contribution Guidelines

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-improvement)
  3. Commit your changes (git commit -m 'Add amazing improvement')
  4. Push to the branch (git push origin feature/amazing-improvement)
  5. Open a Pull Request

πŸ†˜ Getting Help

Documentation

  • Each lab has comprehensive README files
  • Code is heavily commented for learning
  • Troubleshooting sections for common issues

Community Support

External Resources


License

This project is licensed under the MIT License - see the LICENSE file for details.


Ready to start your cloud journey? πŸš€

Begin with Lab 1 | Jump to Lab 2 | View All Labs


⭐ If this helped you, please star the repository to help others find it!

About

A beginner-friendly journey from traditional programming to cloud-native development

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published