What you will learn in gRPC Microservices in Go
Chapter by chapter
Concepts explained in this book
- stubA client stub is a generated client-side proxy that exposes remote service operations as local callable methods.
- gRPCAn open-source framework for implementing remote procedure calls with generated service bindings and protocol-buffer serialization, commonly transported over HTTP/2.
- adapterAn adapter is a boundary component that transforms requests between an external actor or technology and an application's internal interfaces.
- protocprotoc is the Protocol Buffers compiler that translates schema definitions into generated source code and related artifacts.
- circuit breaker patternA circuit breaker is a fault-tolerance pattern that temporarily stops calls to a failing dependency to prevent cascading failures.
- portA network port is a numbered communication endpoint that identifies a service or process on a networked host.
- retryRetry is the repeated execution of a failed operation according to specified conditions or limits.
- microservice architectureMicroservice architecture is an architectural style that structures an application as loosely coupled, independently deployable, and independently scalable services.
- protocol bufferProtocol Buffers is a language- and platform-neutral mechanism for defining and serializing structured messages and service interfaces.
- timeoutA timeout is a maximum permitted duration after which an operation is treated as failed or cancelled.
- end-to-end testingEnd-to-end testing verifies a complete user or business workflow across all relevant application components and external dependencies.
- podA Kubernetes Pod is the smallest deployable unit in Kubernetes and encapsulates one or more containers that share network and storage resources.
- code generationCode generation is the automated production of source code from a higher-level specification.
- dependency injectionDependency injection is a design technique in which a component receives its required collaborators from outside rather than constructing them internally.
- contractAn API is an interface that exposes an application's core functionality to other software modules or external consumers.
- integration testAn integration test verifies interactions among multiple software components or with external systems.
- code coverageCode coverage is a metric indicating the proportion of source-code elements exercised by a set of tests.
- proto fileA Protocol Buffers file, or proto file, is a schema source file that declares Protocol Buffers message types and service interfaces.
- unit testA unit test verifies the behavior of an isolated unit of software, often across defined execution scenarios.
- container imageA Docker image is a packaged, immutable filesystem and metadata template used to create Docker containers.
- hexagonal architectureHexagonal architecture is an architectural pattern that isolates application business logic behind ports and connects external actors and dependencies through adapters.
- spanA span is a timed record of one operation within a distributed trace, including its metadata and relationships to other operations.
- service communicationService-to-service communication is the exchange of requests and responses between application services.
- JaegerJaeger is an open-source distributed tracing and telemetry backend for collecting, storing, querying, and visualizing observability data.
- TestcontainersTestcontainers is a library ecosystem for programmatically creating and managing disposable containerized dependencies during tests.
- logA log is a recorded event or message describing activity in a software system.
- deployment pipelineA CI/CD pipeline is an automated software-delivery workflow that integrates, tests, and prepares or deploys changes continuously.
- correlation idA trace ID is an identifier that correlates all operations belonging to one distributed request.
- field numberA field number is the numeric identifier assigned to a Protocol Buffers message field for its serialized wire representation.
- gRPC adapterA gRPC adapter is an application-layer component that translates between gRPC requests and responses and an application's domain or port interfaces.
- OpenTelemetryOpenTelemetry is an open-source observability framework for instrumenting applications and collecting, processing, and exporting traces, metrics, and logs.
- mockingA mock is a test double that implements an interface and provides programmable responses for controlling a dependency's behavior.
- metricA metric is a numerical measurement of a system or application property collected over time.
- contextA Go context is a request-scoped value that carries cancellation, deadlines, and other metadata across call boundaries.
- serviceA Kubernetes Service is an API resource that provides a stable network endpoint and routes traffic to selected backend Pods.
- ingress objectAn Ingress is a Kubernetes API resource that defines rules for routing external HTTP and HTTPS traffic to services in a cluster.
- TLSSSL/TLS is a family of cryptographic communication protocols that authenticates peers and encrypts data exchanged over a network.
- endpointA gRPC endpoint is a network-accessible interface through which a client communicates with a gRPC service.
- GitHub ActionsGitHub Actions is a GitHub automation platform for running workflows in response to repository and software-development events.
- gRPC status packageThe gRPC status package is a Go package that constructs, interprets, and converts RPC status errors containing codes, messages, and optional details.
- sagaA saga is a distributed transaction pattern that coordinates a sequence of local transactions and uses compensating transactions when a step fails.
- clientA gRPC client is a client-side component that invokes operations exposed by a gRPC service.
- KubernetesKubernetes is an open-source platform for orchestrating containerized applications across clusters of machines.
- error handlingError handling is the practice of detecting, representing, and responding to failures during software execution or communication.
- percentileP95 latency is the 95th-percentile response latency, below which 95 percent of observed latency values fall.
- containerA container is an isolated process environment that packages an application or dependency with its required runtime components.
- trajectoryTracing records and correlates the path and timing of requests as they propagate through distributed components.
- log backendA logging backend is a system that receives, stores, analyzes, or presents logs collected from applications and infrastructure.
- HTTP response codeA gRPC status code is a predefined code that identifies the outcome or error condition of an RPC.
- go moduleA Go module is a versioned unit of Go source code and dependency metadata managed as a cohesive module.
- DockerfileA Dockerfile is a text-based build specification containing instructions for creating a Docker image.
- deploymentDeployment is the process of releasing software artifacts into an environment where they can run.
- service methodA service method is a remotely callable operation declared by a service interface with specified input and output message types.
- mutual TLSmTLS, or mutual TLS, is a TLS communication mode in which both the client and server present certificates to authenticate each other.
- cert-managercert-manager is a Kubernetes add-on that automates obtaining, renewing, and deploying TLS certificates from certificate authorities and other issuers.
- OpenTelemetry CollectorThe OpenTelemetry Collector is a vendor-neutral service that receives, processes, and exports observability telemetry.
- system under testA system under test is the software element whose behavior is being evaluated, ranging from a class or layer to an entire application.
- Docker ComposeA Docker Compose file is a YAML configuration file that defines and configures multi-container Docker applications and their services.
- testing pyramidThe testing pyramid is a test-distribution model that places isolated unit tests below integration tests and end-to-end tests, with progressively fewer tests and greater execution cost at higher levels.
- bidirectional streamingBidirectional streaming is an RPC communication mode in which client and server exchange independent streams of messages.
- testTesting is the systematic evaluation of software behavior against expected results or properties.
- evaluation suiteA test suite is a collection of tests and associated lifecycle behavior organized to verify a set of requirements.
- backward compatibilityBackward compatibility is the ability of a changed system to continue supporting existing users, integrations, or clients without requiring them to upgrade.
- test containerA test container is a disposable containerized environment that provides an isolated real dependency for automated tests.
- FluentBitFluent Bit is a lightweight open-source agent for collecting, processing, and forwarding logs and other event data.
- interceptorA gRPC interceptor is middleware that runs around gRPC calls on the client or server to inspect, modify, or instrument them.
- client interceptorA client-side RPC component that modifies or enriches a request before it reaches the server.
- half-open stateA circuit-breaker operating state in which a limited number of requests are allowed to test whether a dependency has recovered.
- deadlineA deadline is a configured time limit by which an operation must complete.
- label selectorA Kubernetes selector is a field or matching expression that identifies resources, such as Pods, according to their labels or other selection criteria.
- cloud-native architectureA cloud-native application is an application designed to run using distributed, elastic, and container-oriented cloud infrastructure.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
