Choosing a tech stack for a FinTech

Arjan van Eersel | Apr 3, 2021 min read

As Chief Technology Officer (CTO) of Plandail I’m responsible for selecting the technology stack for the company. This might sound trivial, but requires in reality proper thoughts and preparations. Let’s not forget that choosing the right technology stack is crucial for the success of any business.

A technology stack is a set of programming languages, tools, and frameworks that work together to build and deploy a software applications. In this article, I will share the considerations we made and why we concluded to go for Rust and Flutter.

Personal preference and experience

Choices are always influenced by personal preference and experience. I’m no exception to that. Of course having a lot of experience in a particular programming language helps to get faster results, but it’s not a guaranteed the best choice overall.

The MVP

For the company the MVP was developed by using Go for the backend and Flutter for the web and mobile clients. The main issue was time, because the MVP had to be done before a certain hard deadline. For this reason Go was chosen for the backend, since it’s the language I’m most experienced in. And for the MVP this was definetely the right choice, since the purpose of an MVP is to show functionality. It doesn’t have to be perfect yet.

Going from MVP to production

First, as always in software development new feature requests came in, due to adjustments to the business plan and product based on input from potential clients, as well as experienced with the MVP.

Also we are a FinTech company and will have to comply with strict regulations. Therefore, software mistakes could theoretically lead to heavy fines if it would negatively influence clients or fulfilling our regulatory obligations. This means that there has to be a very strong empasize on writing safe code.

Rust

Of course it’s possible to write safe code in any programming language, including Go, but it fully depends on the programmers. And let’s face it: Even the most experienced programmers can make mistakes. Many mistakes can be caught through proper testing, but even then things can slip through the net.

One of the reasons why Rust has gained popularity in recent years is the fact that Rust’s system of ownership and borrowing ensures that memory is managed efficiently and securely, but also that many potential mistakes will be caught at compile time intead of runtime. This is of course exactly what the backend of a FinTech company needs.

Rust is a systems programming language that has been gaining popularity in recent years, and for good reason. Rust is known for its strong memory safety guarantees, high performance, and low-level control, making it an excellent choice for building the backend of a FinTech application. Rust’s performance and security features make it ideal for handling financial transactions and data securely.

Additionally, Rust provides low-level control and excellent performance, allowing developers to build high-performance applications that can handle large volumes of data and transactions with ease. Rust’s ability to handle concurrency efficiently means that multiple tasks can be executed simultaneously without affecting performance. Go has good concurrency support, but Rust’s performance is generally better due to its more advanced memory management.

One argument against using Rust used to be the steeper learning curve and the lack of developers. The latter isn’t really valid anymore in 2023, because the amount of Rust developers has grown rapidly in the past years, especially since more and more companies are implementing this technology. I do agree that Rust requires more effort to learn, but I believe it’s worth the investment, because it will result in significantly safer code. And, as I said earlier, for us that’s crucial.

Flutter

Flutter is definetely to stay in our technology stack. There are many benefits of being able to serve web, ios and android through a common code base. Especially for a small startup it’s takes away a lot of complexity.

Flutter is a mobile app SDK that allows developers to build beautiful, high-performance, native mobile apps for iOS and Android, as well as web applications. Flutter’s hot-reload feature allows developers to make changes to the code and see the results instantly, making development faster and more efficient.

The widget-based architecture allows developers to create beautiful user interfaces quickly and easily, which is essential for FinTech applications that require a smooth and seamless user experience. Flutter’s support for reactive programming also makes it easy to handle data streams and keep the UI up-to-date.

When talking about mobile development there’s always the question whether to do native development or use a framework like Flutter. In our case, most of the heavy lifting is done on the backend and the app is relatively light, therefore our situation doesn’t require the potential performance benefit of native development and Flutter offers more than suitable performance for our needs.

Just two languages?

Although Rust and Flutter will be the backbone of our technology stack we will also use other technologies where needed or required. And that’s not an issue, since we’ll use a Service Oriented Architecture. This kind of architecture allows to pick the most appropriate language for each service, which is a very good thing, since each programming language has advantages and disadvantages.

Share your opinion

Let me know What you think. Have you been in the same position? What did you choose as the technology stack for your project and why?

comments powered by Disqus