Skip to content

rithinch/devops-workshop

Repository files navigation

DevOps Workshop — From Code to Cloud

Facilitated by: Rithin Chalumuri


🧑‍💼 About Me

Hi! I’m Rithin Chalumuri.

I enjoy building products from 0 to 1, and more importantly, I enjoy helping others build products from 0 to 1.

I've worked across startups and tech projects where I’ve experienced systems growing from a single machine to distributed cloud-scale architectures.

GitHub: github.com/rithinch


🕒 Agenda

Time Topic
9:30 - 10:00 Pre-requisites & Dev Environment Setup
10:00 - 10:30 Introduction to DevOps
10:30 - 11:30 Docker: Containers for Developers
11:30 - 12:15 Cloud Deployment & Hosting
12:15 - 1:00 CI/CD with GitHub Actions
1:00 - 2:00 Lunch 🍽️
2:00 - 3:30 Distributed Systems & Scaling Challenges
3:30 - 3:40 Break
3:40 - 4:40 Infrastructure as Code with .NET Aspire
4:40 - 4:50 Break
4:50 - 5:30 Observability & Monitoring Fundamentals
5:30 - 6:00 Real-world Q&A, Wrap-up

💡 Session: Introduction to DevOps (10:00 - 10:30)

Concepts:

  • DevOps = Developers + Operations.
  • Not a tool, not a job title, a culture.
  • Goal: Shorten time from "code complete" to "customer using it".
  • Emphasis on collaboration, automation, and reliability.

Analogy: Imagine you're trying to build a LEGO set with friends. Everyone's working on different pieces, but unless you communicate and share instructions, your house will collapse.

Group Activity: Form 2-3 person teams. Each team writes down:

  • A problem they've faced when "it worked locally but failed in production".
  • What helped resolve it? Share and discuss.

Learning Resource:


🐫 Session: Docker & Containers (10:30 - 11:30)

Why Containers?

  • "It works on my laptop" syndrome is a common pain.
  • Containers = Same environment, everywhere.

Analogy: Containers are like lunch boxes. Whether you're in Mumbai or New York, the food inside remains the same. The carrier standardizes transportation.

Dockerfile Breakdown:

FROM python:3.11-slim      # Base image
WORKDIR /app               # Working directory
COPY . .                   # Copy code into container
RUN pip install -r requirements.txt  # Install dependencies
EXPOSE 8501                # Application port
CMD ["streamlit", "run", "app.py"]   # Start command

Activity:

  • Given a basic Python or Streamlit app, write a Dockerfile.
  • Build and run the image locally.
  • Modify the CMD and EXPOSE lines and observe the behavior.

Learning Resource:


☁️ Session: Cloud Deployment & Hosting (11:30 - 12:30)

Concepts:

  • Cloud = Renting servers, storage, and networking on-demand.
  • Azure: Azure Container Apps simplifies container-based deployments.

Analogy: Imagine renting a bike instead of buying one. The cloud allows you to scale your fleet based on demand without owning every piece.

Mermaid Diagram:

graph LR
    Code-->|Docker Build|Image
    Image-->|Push|ContainerRegistry
    ContainerRegistry-->|Deploy|AzureContainerApps
Loading

Group Exercise:

  • Deploy your container from the previous exercise to Azure Container Apps.

Learning Resource:


🚀 Session: CI/CD with GitHub Actions (12:40 - 1:30)

Concepts:

  • Automated testing & deployment.
  • Reduces manual errors.
  • Faster feature shipping.

GitHub Actions Example:

name: Deploy App

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Code
      uses: actions/checkout@v4

    - name: Build Docker Image
      run: docker build -t my-app .

    - name: Push to Registry
      run: docker push myregistry.azurecr.io/my-app:latest

Exercise:

  • Create a GitHub Action to build and push your container image to Azure Container Registry.

Learning Resource:


🤔 Session: Distributed Systems & Scaling Challenges (2:30 - 3:30)

Why Break Down Systems?

  • Independent scaling.
  • Easier fault isolation.
  • Smaller, manageable codebases.

Analogy: Running one giant program is like having one massive power switch for your house. Microservices give you room-specific switches — isolate and fix issues independently.

Communication Patterns:

Pattern Example Pros Cons
Synchronous API Call Simple Tight coupling, latency
Asynchronous Message Queue Decoupled, resilient More complexity

Real-World Example: UPI

  • Distributed banking nodes.
  • Network delays, retries, and eventual consistency.

Group Activity: Design a simple Swiggy-like order flow:

  1. Order Service
  2. Restaurant Notification
  3. Delivery Partner Notification
  4. Payment Processing

Mermaid Diagram:

sequenceDiagram
    Customer->>OrderService: Place Order
    OrderService->>Restaurant: Notify Order
    Restaurant->>DeliveryPartner: Assign Delivery
    DeliveryPartner->>PaymentGateway: Collect Payment
    PaymentGateway->>Customer: Confirm Payment
Loading

Learning Resource:


🔧 Session: Infrastructure as Code (3:40 - 4:40)

Concepts:

  • Declarative templates for cloud infra.
  • Consistent, repeatable deployments.

Terraform Example:

resource "azurerm_container_group" "app" {
  name                = "my-app-container"
  location            = "East US"
  resource_group_name = "devops-workshop"
  os_type             = "Linux"

  container {
    name   = "app"
    image  = "myregistry.azurecr.io/my-app:latest"
    cpu    = "1"
    memory = "1.5"
    ports {
      port     = 8501
      protocol = "TCP"
    }
  }
}

.NET Aspire Example:

  • .NET Aspire allows you to define local cloud-like environments in code.

Group Activity:

  • Build an Azure Container Apps deployment using Terraform or .NET Aspire templates.

Learning Resource:


🚀 Session: Observability & Monitoring Fundamentals (4:50 - 5:30)

3 Pillars:

  • Logs: Text-based records.
  • Metrics: Quantitative data (e.g., CPU usage).
  • Traces: Journey of a request.

Analogy: Monitoring is like a health checkup. Logs = Symptoms, Metrics = Vitals, Traces = Pathology reports.

Exercise:

  • Emit logs from your containerized app.
  • Use Azure Monitor to view logs and traces.

Learning Resource:


🖊️ Final Wrap-up: The DevOps Loop (5:30 - 6:00)

Code ➔ Build ➔ Test ➔ Deploy ➔ Monitor ➔ Feedback ➔ Repeat

  • Build with iteration in mind.
  • Expect failure, design for recovery.
  • Automate everything.
  • Focus on team collaboration, not just tools.

Meme Reference:

"My code worked on Friday, what happened over the weekend?" — Production on Monday


🎉 Thank You!

This workshop was about:

  • Understanding core concepts, not just tech stacks.
  • Building mental models for modern distributed systems.
  • Becoming production-ready.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •