Go Microservices: Monitoring, Logging, Debugging, Tracing, and Profiling
https://medium.com/@zakariasaif/demystifying-observability-in-go-microservices-monitoring-logging-debugging-tracing-and-c93435955300
https://medium.com/@zakariasaif/demystifying-observability-in-go-microservices-monitoring-logging-debugging-tracing-and-c93435955300
How to Effectively Scale Microservices Using Containers and Kubernetes on Go
https://blog.stackademic.com/how-to-effectively-scale-microservices-using-containers-and-kubernetes-on-go-1fb05fccb089
https://blog.stackademic.com/how-to-effectively-scale-microservices-using-containers-and-kubernetes-on-go-1fb05fccb089
hatchet
https://github.com/hatchet-dev/hatchet
Hatchet replaces difficult to manage legacy queues or pub/sub systems so you can design durable workloads that recover from failure and solve for problems like concurrency, fairness, and rate limiting. Instead of managing your own task queue or pub/sub system, you can use Hatchet to distribute your functions between a set of workers with minimal configuration or infrastructure.
https://github.com/hatchet-dev/hatchet
yokai
https://github.com/ankorstore/yokai
Simple, modular, and observable Go framework for backend applications.
https://github.com/ankorstore/yokai
mactop
https://github.com/context-labs/mactop
mactop - Apple Silicon Monitor Top written in pure Go Lang! Under 1,000 lines of code.
https://github.com/context-labs/mactop
ntcharts
https://github.com/NimbleMarkets/ntcharts
ntcharts is a Golang Terminal Charting library for the Bubble Tea Framework and other TUIs.
https://github.com/NimbleMarkets/ntcharts
Robust generic functions on slices
https://go.dev/blog/generic-slice-functions
The slices package provides functions that work for slices of any type. In this blog post we’ll discuss how you can use these functions more effectively by understanding how slices are represented in memory and how that affects the garbage collector, and we’ll cover how we recently adjusted these functions to make them less surprising.
https://go.dev/blog/generic-slice-functions
One Billion Rows Challenge in Golang
https://www.bytesizego.com/blog/one-billion-row-challenge-go
The One Billion Row Challenge (1BRC) is intended to be a fun exploration of how far modern Java can be pushed for aggregating one billion rows from a text file.
https://www.bytesizego.com/blog/one-billion-row-challenge-go
goquery
https://github.com/PuerkitoBio/goquery
goquery brings a syntax and a set of features similar to jQuery to the Go language. It is based on Go's net/html package and the CSS Selector library cascadia. Since the net/html parser returns nodes, and not a full-featured DOM tree, jQuery's stateful manipulation functions (like height(), css(), detach()) have been left off.
https://github.com/PuerkitoBio/goquery
gologin
https://github.com/dghubble/gologin
Package gologin provides chainable login http.Handler's for Google, GitHub, Twitter, Facebook, Bitbucket, Tumblr, or any OAuth1 or OAuth2 authentication providers.
https://github.com/dghubble/gologin
nilaway
https://github.com/uber-go/nilaway
NilAway is a static analysis tool that seeks to help developers avoid nil panics in production by catching them at compile time rather than runtime. NilAway is similar to the standard nilness analyzer, however, it employs much more sophisticated and powerful static analysis techniques to track nil flows within a package as well across packages, and report errors providing users with the nilness flows for easier debugging.
https://github.com/uber-go/nilaway
atomic
https://github.com/uber-go/atomic
Simple wrappers for primitive types to enforce atomic access.
https://github.com/uber-go/atomic
multierr
https://github.com/uber-go/multierr
multierr allows combining one or more Go errors together.
https://github.com/uber-go/multierr
air
https://github.com/cosmtrek/air
When I started developing websites in Go and using gin framework, it was a pity that gin lacked a live-reloading function. So I searched around and tried fresh, it seems not much flexible, so I intended to rewrite it better. Finally, Air's born. In addition, great thanks to pilu, no fresh, no air :)
Air is yet another live-reloading command line utility for developing Go applications. Run air in your project root directory, leave it alone, and focus on your code.
Note: This tool has nothing to do with hot-deploy for production.
https://github.com/cosmtrek/air
How I keep myself Alive using Golang
https://www.bytesizego.com/blog/keeping-alive-with-go
In this blog I explore how I use an incident management mindset to manage a complex medical condition. I hope you enjoy it!
https://www.bytesizego.com/blog/keeping-alive-with-go
The Impact of Pre-allocating Slice Memory on Performance in Golang
https://oilbeater.com/en/2024/03/04/golang-slice-performance
During my code reviews, I often focus on whether the slice initialization in the code has allocated the expected memory space, that is, I always request to change from var init []int64 to init := make([]int64, 0, length) format whenever possible. However, I had no quantitative concept of how much this improvement affects performance, and it was more of a dogmatic requirement. This blog will introduce the theoretical basis of how pre-allocating memory improves performance, quantitative measurements, and tools for automated detection.
https://oilbeater.com/en/2024/03/04/golang-slice-performance
When Kubernetes and Go don't work well together
https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together
Go is not aware of the limits set for its container, causing some issues not easy to track. This is a story about how I stumbled into one of them.
https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together