Going Strong With Go Language
What’s Going on?
At Oivan, we have been embracing Go for years, and now we want to tell you about our experience and forward plans with this unique technology.
Accompanying us on this journey will be Kasper Parviainen – once an entrepreneur and one-person solution factory – who today creates exceptional value with Go at Oivan to the benefit of our valued customers.
Catching him on the Go
Aki: Hello Kasper! I’ll lead with a question about your background – you used to have your own company?
Kasper: I’ve been a partner in several companies, all of them except Oivan sold now. Movila was actually founded before IWA – a predecessor of Oivan before the company merger. I joined Oivan 5 years ago when Oivan bought Movila’s business.
Aki: Much of your earlier work was done with PHP. How did you first discover Go, and when was that?
Kasper: PHP wasn’t any choice, just one language to get things done. We were at Boost VC in Silicon Valley with the Coinmotion team in 2014. There, very talented people were doing stuff with Go before it went mainstream or had the current feature set. I decided that there must be something in it.
Aki: Go was originally invented by Google’s developers, who wanted the
• Runtime efficiency of C
• Great networking performance
• Out-of-the-box multicore capabilities
That is quite a tall order. So, Kasper, what’s your take on this? How would you describe working with Go today?
Kasper: In software development, I’ve always kept in mind three simple steps: make it work, make it right, and fast. I think it was Kent Beck who created this famous concept. Go makes code refactoring fun. Too bad that the customer is often too satisfied with the first version.
We gave it a Go
At Oivan, we have built several highly technical solutions using the Go programming language, ranging from scalable communication gateways to enterprise systems to traditional web backends to crypto exchanges and tokenization engines. Let’s hear from Kasper about a few of those.
Aki: Kasper, what was the first significant project you worked on with Go with Oivan?
Kasper: I started learning Go in 2015 and did the first big project in 2016. The task was to replace a system made by a big vendor (massive) with state-of-the-art technologies. The original solution from this vendor had failed so badly that it didn’t see a single full day in production without crashing, despite costing several 100k€ for the customer.
The Go solution we built from scratch to replace the original failed one is still there and is nowadays developed actively by a dedicated in-house team. It currently handles several PBs (yes, Petas) of data.
What is the most important to note here is that the Go solution worked from the launch with a fraction of the budget compared to the previous solution. Of course, some existing design decisions of the prior solution cleared the path for the team, but at the same time, the whole tech stack was replaced by open-source technologies.
Aki: Once upon a time, you created a crypto exchange, which still lives on today under the brand Coinmotion. This year, you wrote a white-label Bitcoin trading and savings platform called Hatch for Oivan from scratch.
Can you tell me a bit about this project? How did you come up with this project, and did Go provide any specific advantages in creating this solution?
Kasper: Having done the exercise before, I decided to do something right with the latest technologies. I knew what could have been done differently and what I would change now if I could. Some of these visions were challenging concepts to develop, some not. Using Go made things so much easier. In Hatch I especially liked the security-first architecture way of thinking. The project started as a hobby and then continued as an Oivan project – I received tremendous support from Oivan to bring Hatch into a reality. I couldn’t possibly have done it right with any other tech stack.
Aki: Any other exciting Go projects you would like to mention here?
Kasper: There was a Hyperledger Fabric project with a big teleoperator from Southeast Asia. Hyperledger Fabric supports other programming languages, but I chose to use Go, since Fabric is internally implemented with the Go for most of the components. The experience gained from this project led us to create our own Tokenization engine, TokenIT, based on Hyperledger Fabric.
Should I stay, or should I Go?
In software development, innovation drives change, and some technologies eventually become outdated and fade out, while some old ones keep dominating the usage statistics due to the heavy legacy, they have imprinted among the existing IT infrastructure in the world.
Sometimes, it might be ten years too late when someone eventually admits that a system should have been rewritten a long time ago with a modern and vastly more versatile and efficient technology. Knowing when to move on is not always easy.
Aki: Kasper, you recently rewrote an old messaging gateway you had built yourself some 12 years ago, with PHP, now using Go. How would you describe the invested effort vs. the benefits?
Kasper: The very conservative estimation for the project was two months; in the end, it was done in two weeks. Of course, only the important features were included in the first version. It really helped that we had put some good thought into Hatch earlier. More than 90 % of the generic code from Hatch was reused here, which really made it months ahead of schedule. Later the generic parts were separated into a project of its own that can be used as a Go module in other future projects.
Aki: Moving to new technology also creates questions beyond the initial cost of development. These are questions like the availability of skilled professionals in the given technology.
Kasper, how difficult is it to learn Go? Based on your experience and observations?
Kasper: The best programmers will learn it in a couple of weeks, and they will love it. If one has been programming a while, it won’t be a significant change. Just start coding instead of reading about it. With Go, things only get easier with time. Give it a month or two for a mid-level developer, and he wouldn’t consider anything else anymore.
Aki: It is my personal observation that, increasingly, experienced senior developers are moving to Go and talking about it. Do you concur with this observation?
Kasper: That is very true. I cannot recommend anything else for the backend unless there is some legacy reason. Maybe Rust for 1-2 % of the cases, but that is another story.
At Oivan, we have witnessed Go to grow into adulthood in front of our eyes, and we are delighted about the satisfaction both our developers and customers are gaining from its adoption. It is hard to find another technology that increases developer and application performance – or developer and customer happiness – the way Go has been able to, all simultaneously.
Aki: Kasper, you mentioned something about a base project. What was that about?
Kasper: The base was created from experience gained from two projects already. It is a Go module that does the basic things you would need in any project in a secure and a couple-of-times refactored way. These “basic things” include things like a router, secure authentication methods, and using databases. It also supports building things with event-driven architecture. You’ll get your development environment up in a few seconds using Docker, and the first API method done in a few minutes.
The module approach means that any future application developers can keep improving the base project. When someone finds that the base module is missing something or a bug is discovered, the changes to the base can be cleanly submitted into the module’s repository. All the projects using the base module can then receive these improvements as well with the module version update.
Aki: Well, I think that wraps it up pretty much perfectly. Big thanks to you, Kasper!
For everyone else, please contact me at email@example.com if you want to learn more about our solutions and what we could create for you! Or, if you feel like Going places in your development career?
P.S. Image courtesy to DALL·E 2 , AI-based image creation tool. Go Gopher in the image.