From af19dd7a7d4853507591a7dcc77b6f581580d0e6 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Tue, 29 Aug 2023 15:42:27 -0400 Subject: [PATCH] add videos from workshop Signed-off-by: Hannah Hunter --- .../building-blocks/actors/actors-overview.md | 10 +++++++++- .../building-blocks/bindings/bindings-overview.md | 10 +++++++++- .../building-blocks/pubsub/pubsub-overview.md | 12 +++++++----- .../building-blocks/secrets/secrets-overview.md | 4 ++++ .../service-invocation-overview.md | 11 +++++++---- .../state-management/state-management-overview.md | 6 +++++- .../content/en/operations/observability/_index.md | 4 ++++ 7 files changed, 45 insertions(+), 12 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/actors/actors-overview.md b/daprdocs/content/en/developing-applications/building-blocks/actors/actors-overview.md index ada5c602a..695d27033 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/actors/actors-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/actors/actors-overview.md @@ -20,7 +20,11 @@ Dapr includes a runtime that specifically implements the [Virtual Actor pattern] Every actor is defined as an instance of an actor type, identical to the way an object is an instance of a class. For example, there may be an actor type that implements the functionality of a calculator and there could be many actors of that type that are distributed on various nodes across a cluster. Each such actor is uniquely identified by an actor ID. - + + +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=dWNgtsp61f3Sjq0n&t=10797) demonstrates how actors in Dapr work. + + ## Dapr actors vs. Dapr Workflow @@ -98,6 +102,10 @@ The functionality of timers and reminders is very similar. The main difference i This distinction allows users to trade off between light-weight but stateless timers vs. more resource-demanding but stateful reminders. +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=2_xX6mkU3UCy2Plr&t=6607) demonstrates how actor timers and reminders work. + + + - [Learn more about actor timers.]({{< ref "actors-features-concepts.md#timers" >}}) - [Learn more about actor reminders.]({{< ref "actors-features-concepts.md#reminders" >}}) - [Learn more about timer and reminder error handling and failover.]({{< ref "actors-features-concepts.md#timers-and-reminders-error-handling" >}}) diff --git a/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md b/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md index 1b071bd30..980a39f79 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md @@ -20,7 +20,7 @@ For example, with bindings, your application can respond to incoming Twilio/SMS - Adding or configuring a third-party Twilio SDK - Worrying about polling from Twilio (or using WebSockets, etc.) -Diagram showing bindings +Diagram showing bindings In the above diagram: - The input binding triggers a method on your application. @@ -36,6 +36,10 @@ If you are using the HTTP Binding, then it is preferable to use [service invocat With input bindings, you can trigger your application when an event from an external resource occurs. An optional payload and metadata may be sent with the request. +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=wlmAi7BJBWS8KNK7&t=8261) demonstrates how Dapr input binding works. + + + To receive events from an input binding: 1. Define the component YAML that describes the binding type and its metadata (connection info, etc.). @@ -54,6 +58,10 @@ Read the [Create an event-driven app using input bindings guide]({{< ref howto-t With output bindings, you can invoke external resources. An optional payload and metadata can be sent with the invocation request. +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=PoA4NEqL5mqNj6Il&t=7668) demonstrates how Dapr output binding works. + + + To invoke an output binding: 1. Define the component YAML that describes the binding type and its metadata (connection info, etc.). diff --git a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md index 3b15d67de..41c9ac23b 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md @@ -13,7 +13,7 @@ Publish and subscribe (pub/sub) enables microservices to communicate with each o An intermediary message broker copies each message from a publisher's input channel to an output channel for all subscribers interested in that message. This pattern is especially useful when you need to decouple microservices from one another. - +

@@ -32,15 +32,17 @@ When using pub/sub in Dapr: 1. The pub/sub building block makes calls into a Dapr pub/sub component that encapsulates a specific message broker. 1. To receive messages on a topic, Dapr subscribes to the pub/sub component on behalf of your service with a topic and delivers the messages to an endpoint on your service when they arrive. +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=FMg2Y7bRuljKism-&t=5384) demonstrates how Dapr pub/sub works. + + + In the diagram below, a "shipping" service and an "email" service have both subscribed to topics published by a "cart" service. Each service loads pub/sub component configuration files that point to the same pub/sub message broker component; for example: Redis Streams, NATS Streaming, Azure Service Bus, or GCP pub/sub. - -

+ In the diagram below, the Dapr API posts an "order" topic from the publishing "cart" service to "order" endpoints on the "shipping" and "email" subscribing services. - -

+ [View the complete list of pub/sub components that Dapr supports]({{< ref supported-pubsub >}}). diff --git a/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-overview.md b/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-overview.md index 856634f21..717a250e3 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-overview.md @@ -18,6 +18,10 @@ Dapr's dedicated secrets building block API makes it easier for developers to co 1. Retrieve secrets using the Dapr secrets API in the application code. 1. Optionally, reference secrets in Dapr component files. +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=3bmNSSyIEIVSF-Ej&t=9931) demonstrates how Dapr secrets management works. + + + ## Features The secrets management API building block brings several features to your application. diff --git a/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md b/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md index 64fb025e0..edd542ef9 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md @@ -8,7 +8,7 @@ description: "Overview of the service invocation API building block" Using service invocation, your application can reliably and securely communicate with other applications using the standard [gRPC](https://grpc.io) or [HTTP](https://www.w3.org/Protocols/) protocols. -In many microservice-based applications multiple services need the ability to communicate with one another. This inter-service communication requires that application developers handle problems like: +In many microservice-based applications, multiple services need the ability to communicate with one another. This inter-service communication requires that application developers handle problems like: - **Service discovery.** How do I discover my different services? - **Standardizing API calls between services.** How do I invoke methods between services? @@ -25,6 +25,10 @@ Dapr uses a sidecar architecture. To invoke an application using Dapr: - Each application communicates with its own instance of Dapr. - The Dapr instances discover and communicate with each other. +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=mtLMrajE5wVXJYz8&t=3598) demonstrates how Dapr service invocation works. + + + The diagram below is an overview of how Dapr's service invocation works between two Dapr-ized applications. Diagram showing the steps of service invocation @@ -61,7 +65,6 @@ In the event of call failures and transient errors, service invocation provides By default, all calls between applications are traced and metrics are gathered to provide insights and diagnostics for applications. This is especially important in production scenarios, providing call graphs and metrics on the calls between your services. For more information read about [observability]({{< ref observability-concept.md >}}). - ### Access control With access policies, applications can control: @@ -83,7 +86,7 @@ Dapr provides round robin load balancing of service invocation requests with the The diagram below shows an example of how this works. If you have 1 instance of an application with app ID `FrontEnd` and 3 instances of application with app ID `Cart` and you call from `FrontEnd` app to `Cart` app, Dapr round robins' between the 3 instances. These instance can be on the same machine or on different machines. . -Diagram showing the steps of service invocation +Diagram showing the steps of service invocation **Note**: App ID is unique per _application_, not application instance. Regardless how many instances of that application exist (due to scaling), all of them will share the same app ID. @@ -97,7 +100,7 @@ Following the above call sequence, suppose you have the applications as describe The diagram below shows sequence 1-7 again on a local machine showing the API calls: - + 1. The Node.js app has a Dapr app ID of `nodeapp`. The python app invokes the Node.js app's `neworder` method by POSTing `http://localhost:3500/v1.0/invoke/nodeapp/method/neworder`, which first goes to the python app's local Dapr sidecar. 2. Dapr discovers the Node.js app's location using name resolution component (in this case mDNS while self-hosted) which runs on your local machine. diff --git a/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md b/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md index a7dacc361..afc6bd5f1 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md @@ -11,7 +11,11 @@ Your application can use Dapr's state management API to save, read, and query ke - Use **HTTP POST** to save or query key/value pairs. - Use **HTTP GET** to read a specific key and have its value returned. - + + +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=2_xX6mkU3UCy2Plr&t=6607) demonstrates how Dapr state management works. + + ## Features diff --git a/daprdocs/content/en/operations/observability/_index.md b/daprdocs/content/en/operations/observability/_index.md index 26d1771d7..f2e94d1df 100644 --- a/daprdocs/content/en/operations/observability/_index.md +++ b/daprdocs/content/en/operations/observability/_index.md @@ -6,6 +6,10 @@ weight: 60 description: See and measure the message calls to components and between networked services --- +[The following overview video and demo](https://www.youtube.com/live/0y7ne6teHT4?si=3bmNSSyIEIVSF-Ej&t=9931) demonstrates how observability in Dapr works. + + + {{% alert title="More about Dapr Observability" color="primary" %}} Learn more about how to use Dapr Observability Lock: - Explore observability via any of the supporting [Dapr SDKs]({{< ref sdks >}}).