Title: Building Distributed Applications in Gin
Subtitle: A hands-on guide for Go developers to build and deploy distributed web apps with the Gin framework
- https://www.amazon.com/Building-Distributed-Applications-Gin-hands-ebook/dp/B091G3DBRT/
- https://www.packtpub.com/web-development/building-distributed-applications-in-gin
482 pages,Publication Date: 2021-07-23 Friday
Author: Mohamed Labouardy, CTO and cofounder of Crew.work, @mlabouardy
Full Disclosure: Pooja Yadav (Marketing Coordinator with Packt) graciously provided me with a copy of the book to review, prior to the publication date.
This is a non-nonsense book that is focused on building your skills – with immediacy: By page-21, the author has you writing Go code with the Gin framework.
From the very first chapter, the author is teaching enterprise-class software development techniques for building distributed applications.
What I Particularly Liked:
This book is eminently practical for the Go programmer interested in a well-organized approach to the practical steps of enterprise-class software design and development of distributed architectures - leveraging not just the Gin framework – but even at a more generalized pattern level.
The chapter lengths are very reasonable and appropriate. There is a clear goal for each chapter – and the writing is clear and concise. The pace of information delivered is optimal – and sustains the reader’s interest.
The book is well organized – and covers a significant amount of information, techniques, enterprise-class practices – and enterprise-class considerations, such as:
- GitFlow model,
- Project folder structure,
- Team development collaboration with GitHub,
- User Interface Design [CSS, Bootstrap, React.js, Single-Page Application (SPA]),
- Containerization [Docker, Kubernetes],
- Caching [Redis, Redis Insights, HTTP cache headers],
- Security [API Keys, JSON Web Tokens (JWTs), Auth0, OAuth 2, session management, RS256 signing, SSL/TLS encryption, role-based access control (RBAC), cross-origin resource sharing (CORS)],
- Logging [Elasticsearch, Logstash, and Kibana (ELK)],
- Monitoring/metrics [Prometheus, Grafana, Telegraf],
- Integration with a backend database [MongoDB, MongoDB Compass],
- REST APIs [OpenAPI Spec (OAS)],
- Testing [Postman REST client, vulnerability scanning tools such as Snyk, and Golang Security Checker – Gosec, writing unit tests, code coverage reports, integration tests, Postman Collection Runner, Newman],
- Performance benchmarking [Apache Benchmark],
- Messaging [RabbitMQ, AWS SQS],
- Horizontal scalability [Docker Compose, Nginx as reverse proxy for APIs],
- CI/CD pipeline [CircleCI],
- Cloud deployment [AWS: EC2, ECS, EKS],
- Semantic versioning
The setup instructions cover Linux, Windows, and MacOS
Coverage of the Golang extension for Visual Studio
The author’s careful step-by-step tutoring of Go command line utilities – focused on building core knowledge to accelerate your ability to build and ship software.
How to build a Module dependency graph – leveraging Graphviz (a favorite tool).
The Further Reading suggestions at the end of each chapter.
Notably, the author’s use of solid open source and commercial-grade tooling – in constructing a holistic and layered approach in the many examples.
The book’s github repository code examples – non-trivial, well-designed.
What could be improved in a future next edition?
- Use OpenAPI Specification (OAS) 3+, not Swagger/OAS 2.0, for the API examples.
- go-swagger, a GitHub project utilized in the book’s examples for OpenAPI Specification APIs – only supports Swagger / OAS 2.0. Suggest evaluating kin-openapi as a possible alternative.
- Consider adding a chapter to cover Event-Driven Architecture examples.
Conclusion:
There is much value in this book – and I recommend it.
I would really like to give this book five stars. But I won’t – since it is still promoting use of OAS 2.0 in the API examples – and supporting tooling. Note: OpenAPI Specification 3.0 was published on July 26th, 2017.
No comments:
Post a Comment