# Hello World Example This is the simplest Dynamo example demonstrating a basic service using Dynamo's distributed runtime. It showcases the fundamental concepts of creating endpoints and workers in the Dynamo runtime system. ## Architecture ```text Client (dynamo_worker) │ ▼ ┌─────────────┐ │ Backend │ Dynamo endpoint (/generate) └─────────────┘ ``` ## Components - **Backend**: A Dynamo service with an endpoint that receives text input and streams back greetings for each comma-separated word - **Client**: A Dynamo worker that connects to and sends requests to the backend service, then prints out the response ## Implementation Details The example demonstrates: - **Endpoint Definition**: Using the `@dynamo_endpoint` decorator to create streaming endpoints - **Worker Setup**: Using the `@dynamo_worker()` decorator to create distributed runtime workers - **Service Creation**: Creating services and endpoints using the distributed runtime API - **Streaming Responses**: Yielding data for real-time streaming - **Client Integration**: Connecting to services and processing streams - **Logging**: Basic logging configuration with `configure_dynamo_logging` ## Getting Started ## Prerequisites Before running this example, ensure you have the following services running: - **etcd**: A distributed key-value store used for service discovery and metadata storage - **NATS**: A high-performance message broker for inter-component communication You can start these services using Docker Compose: ```bash # clone the dynamo repository if necessary # git clone https://github.com/ai-dynamo/dynamo.git cd dynamo docker compose -f deploy/docker-compose.yml up -d ``` ### Running the Example First, start the backend service: ```bash cd examples/runtime/hello_world python hello_world.py ``` Second, in a separate terminal, run the client: ```bash cd examples/runtime/hello_world python client.py ``` The client will connect to the backend service and print the streaming results. ### Expected Output When running the client, you should see streaming output like: ```text Hello world! Hello sun! Hello moon! Hello star! ``` ## Code Structure ### Backend Service (`hello_world.py`) - **`content_generator`**: A dynamo endpoint that processes text input and yields greetings - **`worker`**: A dynamo worker that sets up the service, creates the endpoint, and serves it ### Client (`client.py`) - **`worker`**: A dynamo worker that connects to the backend service and processes the streaming response ## Deployment to Kubernetes Follow the [Quickstart Guide](../../../docs/guides/dynamo_deploy/quickstart.md) to install Dynamo Cloud. Then deploy to kubernetes using ```bash export NAMESPACE= cd dynamo kubectl apply -f examples/runtime/hello_world/deploy/hello_world.yaml -n ${NAMESPACE} ``` to delete your deployment: ```bash kubectl delete dynamographdeployment hello-world -n ${NAMESPACE} ```