Making technical decisions using RFCs

Teams need to make several important decisions in the software development process, from programming languages, architectures, processes, tools, etc. As the project and team grow, making these decisions becomes more complex and essential. In addition, how can you ensure that the decisions made at the beginning of the project are clear so that new people on the team understand the reasons and contexts that led the team to a particular conclusion?...

May 21, 2021 · Elton Minetto

Work-focused daily meeting

If you work as a software developer, you have probably participated in a daily meeting, daily scrum, or stand-up meeting (although this name lost sense during the pandemic since we’re all sitting in front of our computers). This meeting is one of the most common ceremonies of agile methodologies like Scrum and Kanban, and people usually answer these questions: What did you do yesterday? What are you going to do today?...

April 17, 2021 · Elton Minetto

Microservices in Go using the Go kit

In one of the chapters of the book Microservice Patterns: With examples in Java the author mentions the “Microservice chassis” pattern: Build your microservices using a microservice chassis framework, which handles cross-cutting concerns, such as exception tracking, logging, health checks, externalized configuration, and distributed tracing. He goes further and gives some examples of frameworks that implement these concepts in Java and Go: Gizmo Micro Go kit After some research I chose the Go kit as it is one of the most popular, it is being updated at a constant speed and I liked the architecture that it proposes....

February 16, 2021 · Elton Minetto

How We Measure Developer Experience at Trybe

You have probably heard the term UX (User Experience), which is defined as “the discipline responsible for designing enchanting user experiences to retain and win customers”. Analogous to this term there is a more recent one, but it has been gaining popularity in recent years. This is the DX (Developer Experience). As this is the topic of the post, I will explain it using excerpts from this great post:...

January 17, 2021 · Elton Minetto

Clean Architecture, 2 years later

In February 2018 I wrote what would become the most relevant text I have ever published: Clean Architecture using Golang. With more than 105k views, the post generated presentations at some Go and PHP events and allowed me to talk about software architecture with several people. Using this architecture for the development of Codenation’s products, we gained experience and solved problems. We wrote some posts reporting these experiences: Golang: using build tags to store configurations Continuous integration in projects using monorepo Monitoring a Golang application with Supervisor Data Migration with Golang and MongoDB Using Golang as a scripting language Creating test mocks using GoMock Using Prometheus to collect metrics from Golang applications Profiling Golang applications using pprof Testing APIs in Golang using apitest After this whole experience I can say::...

July 6, 2020 · Elton Minetto

Testing APIs in Golang using apitest

One advantage of the Go language is its standard library, which contains many useful features to develop modern applications, such as HTTP server and client, JSON parser, and tests. It is exactly this last point that I will talk about in this post. With the standard library it is possible to write tests for your API, as in the following example. API code In our main.go file, we will create a simple API:...

April 21, 2020 · Elton Minetto

Profiling Golang applications using pprof

In the last few weeks, Codenation has been experiencing very significant growth. Confirming the sentence of the great Bruno Ghisi who says that “on the scale everything breaks”, features that always worked perfectly become problematic. We noticed in the metrics of our Prometheus that one of the endpoints of our API was consuming a lot of resources. Talking to the team we came up with a suspicious reason, but before I refactored the code, I thought it would be better to do a more “scientific” analysis....

April 8, 2020 · Elton Minetto

Using Prometheus to collect metrics from Golang applications

This text is part of a series of posts I am doing with examples of applications using Clean Architecture. The other posts that are part of this series are: Clean Architecture using Golang Golang: using build tags to store configurations Continuous integration in projects using monorepo Data Migration with Golang and MongoDB Using Golang as a scripting language Creating test mocks using GoMock In this post, I will talk about a very important feature in the complex projects we work with daily: metrics....

March 13, 2020 · Elton Minetto

Creating test mocks using GoMock

Using mocks in test development is a concept used in the vast majority of programming languages. In this post, I will talk about one solution to implement mocks in Go: GoMock. To show GoMock functionality, I will use the tests created in my repository about Clean Architecture Clean Architecture encourages testing across all layers, so it’s easy to see where we can use mocks to make development easier. As we write unit tests for the UseCases layer we are sure that the logic in this layer is covered by testing....

December 20, 2019 · Elton Minetto

Processing parquet files in Golang

In this post, I will talk about a relatively new data file format, and how to use it in Go. The format is called Parquet and is currently a project supported by the Apache Foundation. It is a binary file format to store and facilitate data processing a columnar storage format. It supports different types of compression and is widely used in data science and big data environment, with tools like Hadoop....

December 10, 2019 · Elton Minetto