Summary
In this chapter, we covered unit and load testing. We saw that we can find bugs and performance issues by extensively testing different parts of our system. Then, we saw how to debug our application when we found a bug. We used server reflection and grpcurl to interact with our API from the terminal. Finally, we saw how we can containerize our services and deploy them on Kubernetes. We saw that we can create headless services to expose our microservices with a DNS A record per gRPC server, and we saw that we can put Envoy in front of them to do load balancing, rate limiting, authentication, and so on.