$30 off During Our Annual Pro Sale. View Details »

Building intelligent apps and microservices with Azure Container Apps

Pamela Fox
September 11, 2023

Building intelligent apps and microservices with Azure Container Apps

Azure Container Apps is a service that allows you to run applications on a platform that's scalable, resilient, and cost-effective. You can focus on running apps, microservices, and background jobs without thinking about infrastructure. In this talk, you'll learn how to deploy Python apps on Azure Container Apps and use ChatGPT and other AI services to make your apps smarter. You'll also see real-world examples of Python apps running on Azure Container Apps and learn how to scale, monitor, and optimize them.

Pamela Fox

September 11, 2023
Tweet

More Decks by Pamela Fox

Other Decks in Technology

Transcript

  1. Building intelligent Python
    apps and microservices with
    Azure Container Apps
    Pamela Fox
    Anthony Chu

    View Slide

  2. Azure Developers | Python Day

    View Slide

  3. Azure Developers | Python Day
    Demo: "Chat with your data" app
    https://youtu.be/zPrwcrK3_9g

    View Slide

  4. Azure Developers | Python Day
    RAG (Retrieval Augmented Generation)
    Large Language Model
    Document Search
    User question
    Benefit_Options-2.pdf: The plans also
    cover preventive care services such as
    mammograms, colonoscopies, and
    other cancer screenings. Northwind
    Health Plus offers more
    comprehensive coverage than
    Northwind Standard. This plan offers
    coverage for emergency services, both
    in-network and out-of-network, as
    well as mental health and substance
    abuse coverage.
    ….
    The Northwind Health Plus plan
    includes coverage for emergency
    services, mental health and
    substance abuse, out-of-network
    services, and a wider range of
    prescription drug coverage
    compared to the Northwind
    Standard plan.
    [Benefit_Options-2.pdf]
    What is included in my
    Northwind Health Plus plan
    that is not in standard?

    View Slide

  5. Azure Developers | Python Day
    Azure Cognitive Search
    Azure architecture
    Azure OpenAI
    Azure Container Apps
    Azure Storage
    Azure Storage Form Recognizer
    Web Container
    Local Script Azure OpenAI Azure Cognitive Search
    Uploads PDF pages Extracts data from PDFs Computes embeddings Stores in index
    prepdocs.py

    View Slide

  6. Azure Developers | Python Day
    Deployment with the Azure Developer CLI
    name: azure-search-openai-demo
    services:
    web:
    project: ./app/backend
    language: py
    host: containerapp
    hooks:
    prepackage:
    posix:
    shell: sh
    run: cd ../frontend;npm install;npm run build
    interactive: true
    continueOnError: false
    hooks:
    postprovision:
    posix:
    shell: sh
    run: ./scripts/prepdocs.sh
    interactive: true
    continueOnError: false
    >>> azd up
    https://github.com/Azure-Samples/azure-search-openai-demo/tree/aca aka.ms/aca-rag

    View Slide

  7. Azure Developers | Python Day
    Why containerize?
    Dockerfile
    Create an environment that's replicable and
    portable (across local machine and prod,
    across clouds, across Azure services). FROM python:3.11-bullseye
    RUN python -m pip install --upgrade pip
    WORKDIR /demo-code
    COPY requirements.txt .
    RUN python -m pip install -r requirements.txt
    RUN python -m pip install gunicorn==21.2.0
    COPY entrypoint.sh .
    RUN chmod +x entrypoint.sh
    COPY . .
    CMD bash -c ". entrypoint.sh"
    App Container
    App Container
    Docker engine
    Operating system

    View Slide

  8. Azure Developers | Python Day
    Containers on Azure
    Azure
    Kubernetes
    Service
    Azure
    Container
    Apps
    Azure App
    Service
    BYOC
    Azure
    Functions
    (Preview)
    Flexibility PaaS features
    https://learn.microsoft.com/en-us/azure/container-apps/compare-options aka.ms/azure-containers

    View Slide

  9. Azure Developers | Python Day
    Azure Container Apps
    ACA allows you to run
    multiple containers within a
    shared network.
    Features:
    • Pull images from any
    container registry (ACR,
    DockerHub, private, etc)
    • Consumption-based pricing
    • Auto-scaling, including
    scale-to-zero
    Container app 1
    Revision 1 Revision 2
    Replica Replica
    Container(s) Container(s)
    Container app 2
    Revision 1 Revision 2
    Replica Replica
    Container(s) Container(s)
    Azure Container Apps Environment

    View Slide

  10. Azure Developers | Python Day
    Azure Container Apps: Auto-scaling
    Default scaling rule: When ACA detects
    ~10 concurrent requests per second, it
    creates a new instance.
    Or configure custom scale rules:
    Demo:
    https://youtu.be/N0QjLLQ8YWw

    View Slide

  11. AUTO-SCALE CRITERIA
    Scaling is determined
    by the number of
    concurrent HTTP requests
    Jobs can be triggered on
    demand or on schedule
    Individual microservices can
    scale independently using
    any KEDA scale triggers
    Scaling is determined
    by the number of
    concurrent HTTP requests
    Scaling is determined
    by the number of
    messages in the queue
    Public API
    endpoints
    Background
    processing
    Microservices
    Web
    Apps
    Event-driven
    processing
    E.g., API app with HTTP
    requests split between
    two revisions of the app
    E.g., on-demand job running
    background processing to
    transform data in a database
    Microservices architecture
    with the option to
    integrate with Dapr
    E.g., Web app with custom
    domain, TLS certificates, and
    integrated authentication
    HTTP TRAFFIC
    REVISION 2
    REVISION 1
    80% 20%
    MICROSERVICE B
    MICROSERVICE C
    MICROSERVICE A
    E.g., Queue reader apps
    or jobs that process
    messages as they arrive
    in a queue

    View Slide

  12. Azure Developers | Python Day
    Azure Cognitive Search
    Azure architecture for Uploader + Job
    Azure OpenAI
    Azure Container Apps
    Azure Storage
    Azure Storage Form Recognizer
    Web Container
    Local Script Azure OpenAI Azure Cognitive Search
    Uploads PDFs Extracts data from PDFs Computes embeddings Stores in index

    View Slide

  13. Azure Developers | Python Day
    Azure Cognitive Search
    Azure architecture for Uploader + Job
    Azure OpenAI
    Azure Container Apps
    Azure Storage
    Azure Storage Form Recognizer
    Web Container
    Job Azure OpenAI Azure Cognitive Search
    Uploads PDFs Extracts data from PDFs Computes embeddings Stores in index
    Uploader UI

    View Slide

  14. Azure Developers | Python Day
    Azure Container Apps — apps and jobs
    Apps
    Services that are continuously running, such
    as a web or API app, or app that
    constantly polls a queue for messages.
    Can receive HTTP or TCP connections
    Configure KEDA scale rules to add or
    remove replicas based on events.
    Jobs
    Tasks that run to completion, such as a data
    processing job or a job that processes a
    single message from a queue and exits.
    Trigger job executions
    manually/programmatically or on a
    schedule.
    Configure KEDA scale rules that are
    evaluated on regular intervals that trigger
    job executions. (event-driven jobs)
    Apps Jobs

    View Slide

  15. Azure Developers | Python Day

    View Slide

  16. Azure Developers | Python Day

    View Slide

  17. Azure Developers | Python Day

    View Slide

  18. Azure Developers | Python Day
    Learn more
    • Deploy a Flask/FastAPI to Azure Container Apps
    https://learn.microsoft.com/azure/developer/python/
    tutorial-containerize-simple-web-app
    • Azd templates for Python + ACA
    https://azure.github.io/awesome-
    azd/?operator=AND&tags=python&tags=aca
    • Deploy "Chat on your data" app to azd:
    https://github.com/Azure-Samples/azure-search-
    openai-demo/tree/aca
    aka.ms/container-apps/github
    Got feedback for ACA team?
    Any questions (that ChatGPT can't answer)?
    aka.ms/aca-python-tutorial
    aka.ms/aca-python-azd
    aka.ms/aca-rag

    View Slide