Akka gRPC Overview gRPC Akka gRPC Project Information Project Status Why gRPC? gRPC vs REST gRPC vs SOAP gRPC vs Message Bus gRPC vs Akka Remoting Getting started Akka gRPC Quickstart Video Introduction Protobuf Service Descriptors Messages Services Code generation options Providing Services (Server) Walkthrough Setting up Dependencies Writing a service definition Generating interfaces and stubs Implementing the service Serving the service with Akka HTTP Serving multiple services Running the server Stateful services gRPC-Web Server Reflection Providing Consuming Akka HTTP interop Example: authentication/authorization Akka HTTP authentication route Akka gRPC route Securing the Akka gRPC route Tying it all together Example: logging, error handling, and passing request context Implementation Method to log, handle, and recover each RPC Custom error mapping Tying it all together Results Future work Details Accessing request metadata Status codes Rich error model Kubernetes LoadBalancer Service NGINX Ingress GCE Ingress Google Cloud Endpoints Consuming Services (Client) Walkthrough Setting up Dependencies Generating Service Stubs Writing a Client Program Configuration By Code By Configuration Using Akka Discovery for Endpoint Discovery Debug logging Details Client Lifecycle Shared Channels Load balancing Request Metadata Rich error model Build Tool Support sbt Configuring what to generate Configurations Generating server “power APIs” Passing parameters to the generators ScalaPB settings Using a local protoc command sbt-protoc settings Loading proto files from artifacts JDK 8 support Starting your Akka gRPC server from sbt Gradle Configuring plugin Installation Available plugin options Generating server “power APIs” Protoc version Proto source directory Loading proto files from artifacts JDK 8 support Starting your Akka gRPC server from gradle Maven Configuring what to generate Generating server “power APIs” Proto source directory Loading proto files from artifacts JDK 8 support Starting your Akka gRPC server from Maven Binary compatibility Limitations New features Deprecations Internal and ApiMayChange API’s Upstream libraries API Design Methods without request or response Declare and enforce constraints for your request and response payloads with protoc-gen-validate Java support Scala support Deployment Serve gRPC over HTTPS Example: Kubernetes Mutual authentication with TLS Setting the server up Setting the client up Troubleshooting Client Server