Avoid all or nothing situations when releasing new code to production using a pattern to release updates to a shifting percentage of the total user base.
Deploying in modern days can be challenging, given the complexity of systems built in microservices structure. But thanks to some deployment strategies, you can do that with much more confidence.
In this article, I’ll show you how to use the canary deployment pattern. Despite the heartbreaking stories that made this little bird notorious for being a type of "informant", in software engineering, canary symbolizes substantial risk reduction. Let's find out why!
They are a…
Go is a modern programming language and as such was designed with incredible testing support out of the gate. Project and file organization combined with official tooling and a lean but powerful (and also official) testing library: that's all you need to know to get started.
Go’s standard library already has everything you need and there’s a go test command included in its binary that, by default, picks up all test files in a given path and executes all test cases.
Test files are expected to be located within the same package of the code they are testing. It doesn’t…
One of the most ubiquitous things in Go are functions with two, or more, return values, where most often than not, the last one is an error. There is a limited set of courses of action for these errors, and I’ll cover them in this article.
When an error occurs, a developer can:
The above alternatives are meant to be mutually exclusive, meaning that one should only handle an error once. …
I haven’t met a developer that purposefully builds non-performant software. On the contrary, premature optimization is one of the most common pitfalls we have to be aware of at all times.
If I’d have to pick just two of the possible undesired consequences of premature optimization I’d choose:
Acquired complexity that is hard to change later on
You’re building a brand new system and want it to behave incredibly well for your users when it hits production. Time to pick the database. …
At Wildlife, we have an incredible variety of backend systems with all sorts of complexities. We are also heavy users of Golang, and over time I had the chance to be exposed to brilliant ideas from several of my coworkers. What you’ll read in the following lines is a subset of the ones I like the most regarding project organization and code style.
The title of this post has the word “Go” inside parenthesis because most of these ideas are language agnostic.
When creating something new, the best thing to do is not get too concerned about almost all the…
Software Engineer at Wildlife Studios