- Артикул:00-01120626
- Автор: Huseyin Babal
- Обложка: Мягкая обложка
- Издательство: Manning Publications Co. (все книги издательства)
- Город: USA
- Страниц: 198
- Год: 2024
- Вес: 488 г
Издание на английском языке
This book is designed for developers seeking to master the creation of microservices using gRPC and Go. It thoroughly explains the fundamental concepts and tools needed to build efficient, scalable, and secure applications. A case study of an online store deployed on Kubernetes is used throughout, making the material practical and relevant. Particular attention is paid to important aspects such as error handling, testing, and security, which are essential for production-grade development. The author created this book to simplify the gRPC world and help developers implement modern microservices faster. This is a valuable guide for anyone looking to expand their knowledge and build reliable distributed systems in Go.
Content
Preface
Acknowledgments
About this book
About the author
About the cover illustration
Part 1. gRPC and microservices architecture
1. Introduction to Go gRPC microservices
1.1. Benefits of gRPC microservices
Performance
Code generation and interoperability
Fault tolerance
Security
Streaming
1.2. Rest vs. RPC 6
1.3. When to use gRPC
Who is this book for?
1.4. Production-grade use cases
Microservices
Container runtime
CI/CD pipeline
Monitoring and observability
Public access
2. gRPC meets microservices
2.1. Monolithic architecture
Development
Deployment
Scaling
2.2. Scale cube 16 X-axis scaling
Z-axis scaling
Y-axis scaling
2.3. Microservice architecture
Handling data consistency
Saga pattern
Choreography-based saga
Orchestrator-based saga
2.4. Service discovery
2.5. Using gRPC for interservice communication
Working with protocol buffers
Generating Go source code
Connecting wires
Part 2. Developing, testing, and deploying a gRPC microservice application
3. Getting up and running with gRPC and Golang
3.1. Protocol buffers
Defining message type
Protocol buffer encoding
3.2. Generating stubs
Protocol buffer compiler installation
Using the protocol buffer compiler
3.3. Maintaining .proto files
Proto project structure
Automation for source code generation
3.4. Backward and forward compatibility
Adding new fields
Upgrading the server but not the client
Upgrading the client but not the server
Adding/removing oneof fields
Moving fields out of or into oneof fields
4. Microservice project setup
4.1. Hexagonal architecture
Application
Actors
Ports
Adapters
4.2. Order service implementation
Project folders
Initializing a Go project
Implementing the application core
Implementing ports
Implementing adapters
Implementing a gRPC adapter
Dependency injection and running the application
Calling a gRPC endpoint
5. Interservice communication
5.1. gRPC service-to-service communication
Server-side load balancing
Client-side load balancing
5.2. Depending on a module and implementing ports and adapters
Payment port
Payment adapter
Implementing the payment port
Implementing the payment adapter
Client configuration for a payment stub
Using a payment adapter in gRPC
5.3. Error handling
Status codes
Returning an error code and message
Errors with details
Handling errors on the client side
Running the Payment service
6. Resilient communication
6.1. Resiliency patterns
Timeout pattern
Retry pattern
Circuit breaker pattern
6.2. Error handling
gRPC error model
gRPC error response
6.3. Securing gRPC communication
TLS handshake
Certificate generation
gRPC TLS credentials
7. Testing microservices
7.1. Testing pyramid
7.2. Testing with a unit test
System under test
Test workflow
Working with mocks
Implementing a mock
Automatic mock generation
7.3. Integration testing
Test suite preparation
Working with Testcontainers
7.4. End-to-end tests
Specifications
Understanding Docker Compose service definitions
End-to-end test folder structure
Database layer
The Payment service layer
The Order service layer
Running tests against the stack
7.5. Test coverage
Coverage information
Testing in a CI pipeline
8. Deployment
8.1. Docker
Building images
8.2. Kubernetes
Kubernetes architecture
Kubernetes resources
Eagle view of microservices deployment
Pod
Deployment
Service
NGINX Ingress controller
8.3. Certificate management
Installation
ClusterIssuer
Certificate usage in Ingress
Certificates on the client side
8.4. Deployment strategies
RollingUpdate
Blue-Green Deployment
Canary deployment
Final thoughts on deployment
Part 3. gRPC and microservices architecture
9. Observability
9.1. Observability
Traces
Metrics
Logs
9.2. OpenTelemetry
Instrumentation locations
Instrumentation
Metric backend
Service performance monitoring
9.3. Observability in Kubernetes
Jaeger All in One
OpenTelemetry Collector
Prometheus
Jaeger installation
OpenTelemetry interceptor for the Order service
Understanding the metrics of the Order service
Application logging
Logs collection
Elasticsearch as a logging backend
Kibana as a logging dashboard
index

