2021-07-23

2021-07-23 Friday - Book Review: Building Distributed Applications in Gin

Building Distributed Applications in Gin

 

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

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?

  • 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:

Copyright

© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.