How we tracked down (what seemed like) a memory leak in one of our Go microservices

The backend developer team at Detectify has been working with Go for some years now, and it’s the language chosen by us to power our microservices. We think Go is a fantastic language and it has proven to perform very well for our operations. It comes with a great tool-set, such as the tool we’ll touch on later on called pprof. However, even though Go performs very well, we noticed one of our microservices had a behavior very similar to that of a memory leak.


Good to Go: Getting Started with AWS Lambda and Go

Go is undoubtedly one of the fastest-growing languages today. Since its 1.0 release in March 2012, it has seen adoption in a vast number of industries, but particularly in the cloud computing space. From microservices to the tools and components that power some of the largest cloud infrastructures, it’s hard to ignore Go’s contribution.


Reproducing a Flaky Test in Go

Oftentimes, a test that occasionally fails in CI can be reproduced locally with a simple go test -count=N ./path/to/flaky/package… but once in a while, it just doesn’t repro locally. Or maybe the full test suite for that package takes too long, and the test fails so rarely, that you need a more precise way of zeroing in on the bad test. It’s much better to confidently fix the test failure, than to make a good guess and hope for the best.


Introducing: Sentry's Unified Go SDK

According to Stack Overflow’s Developer Survey 2019, Go is the third most wanted language to learn, as well as the third-best paid technology in the field. It is not a surprise, as it is one of the languages used for writing critical parts of a lot of large systems. The language design and syntax are simple, but developing in Go is far from easy.


Golang Ingestion Library for Unomaly's Ingest HTTP API

Logs are generated everywhere, ranging from the printer in the corner of your office to your new application architecture running docker containers on top of Kubernetes — Regardless, to analyze any of those logs, you need to send these logs over your network to Unomaly. Traditionally, shipping logs over the network involved using the syslog protocol. While syslog still is a great standard.


Developing a Go app with Docker Compose

Writing Go applications in an isolated environment with Docker comes with some great advantages. You get a clean GOPATH, the bare essentials for developing, and you can easily change which Go version you’re developing against. In this quick tutorial, we’re going to show you how to structure a Go application with Docker Compose as your development environment.


How to instrument your Go app with the Elastic APM Go agent

Elastic APM (application performance monitoring) provides rich insights into application performance and visibility for distributed workloads, with official support for a number of languages including Go, Java, Ruby, Python, and JavaScript (Node.js and real user monitoring (RUM) for the browser).


How to collect, standardize, and centralize Golang logs

Organizations that depend on distributed systems often write their applications in Go to take advantage of concurrency features like channels and goroutines (e.g., Heroku, Basecamp, Cockroach Labs, and Datadog). If you are responsible for building or supporting Go applications, a well-considered logging strategy can help you understand user behavior, localize errors, and monitor the performance of your applications.


Announcing OpenTracing Compatibility for Go Agent

Since its announcement by AWS Lambda, Golang has become a great alternative to the already existing runtimes. In addition to its rapid growth among the community, now Golang preserves this growth also in the serverless world. In the fight against the villain of the serverless applications, cold-starts; Golang seems to perform better than the other compiled languages available in AWS Lambda.