Showing posts with label Go Language. Show all posts
Showing posts with label Go Language. Show all posts

2021-07-23

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

[image source: Amazon.com]

 

 

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

My Book Review:

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.

2016-05-15

2016-05-15 Sunday - Oden Functional Language for the Go Ecosystem

This looks like an interesting talk scheduled for the Curry On conference in Rome (July 18-19, 2016), by Oskar Wickström, entitled: "Oden - A Functional Programming Language for the Go Ecosystem"

Abstract "..Oden, an experimental, statically typed, functional programming language being built for the Go ecosystem.. aims to leverage the great features of Go — static linking, cross-compilation, goroutines, channels and the great set of libraries and tools — and enable higher-level abstractions, generics and a safer yet more flexible type system."

http://www.curry-on.org/2016/sessions/oden-a-functional-programming-language-for-the-go-ecosystem.html

2015-11-27

2015-11-27 Friday - Go Conferences

This is a placeholder posting for Go Language Conferences...

Next year, The European Go Conference will be Oct 16th in Paris, at the Théâtre de Paris, 15, Rue Blanche

GopherCon
https://gophercon.com/
(was held in July in 2015 - in Denver, Colorado)





Copyright

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