Behind the Innovator: Regimantas Snieška, Lead Software Engineer, MobilePay
Welcome to our new Q&A series: Behind the Innovator.
Behind the Innovator takes a peek behind the scenes with learnings and best practices from leading architects, operators, and developers building cloud-native, data-driven applications with Apache Cassandra™ and open source technologies in unprecedented times.
This week, we talked with Regimantas Snieška, a lead software engineer at MobilePay, a mobile payment application developed by Danske Bank, that’s used by upwards of 5.5 million customers across Denmark and Finland.
Here’s what he had to say.
1. Can you share your technical background to date? Key accomplishments, achievements, etc.
I am a tech lead and architect from Vilnius, Lithuania. I’ve been working at MobilePay for the last five years and have 15 years of IT experience.
The bulk of my experience is with Microsoft technologies, including .NET, C#, ASP.NET, and MSSQL. Since I’ve been with MobilePay, I’ve been diving more into event-based architecture, DDD, CQRS, and high-availability systems, which is where my journey with Cassandra began.
2. What is the mission of your team and/or project? What are you trying to achieve?
At MobilePay, our goal is to become a default day-to-day payment solution for private and business customers in the digital age.
Currently, we operate in Denmark and Finland, and we’ve just launched in Greenland, too. Our product portfolio includes:
- MyShop: a solution for small merchants to avoid using card payment terminals and use phones instead
- Point-of-Sale: a solution that lets users pay with their phones at terminals
- Online: a solution that enables you to buy things online
- Subscriptions: a solution that allows merchants to manage agreements with their customers.
As you may suspect, being in the payment business where real money is involved requires you to be a trustworthy partner, and our users have high quality and availability requirements. This is a very interesting challenge by itself.
3. In terms of your current project, what were some key learnings and challenges you experienced along the way?
The biggest challenge is learning how to design systems that are highly available, where you have many independent components interacting in a microservices architecture. These systems are inherently complex, so one of the challenges is figuring out how to simplify things and not drown in this complexity.
As usual, key learning is cliché in the sense that there is no silver bullet. For each design decision, there are pros and cons, and you need to choose what you value and what is more important to you in any given circumstance. The decisions might also differ on a microservice- or bounded-context basis. The important thing is to understand what you are sacrificing and what you stand to gain from each decision.
As usual, key learning is cliché in the sense that there is no silver bullet. For each design decision, there are pros and cons, and you need to choose what you value and what is more important to you in any given circumstance. The decisions might also differ on a microservice- or bounded-context basis. The important thing is to understand what you are sacrificing and what you stand to gain from each decision.
Regimantas Snieška, Lead Software Engineer at MobilePay
Another learning is that domain-driven design is a very handy tool and I would strongly recommend it. It’s a great way to ease communication across the team with other stakeholders. In my opinion, while it is hard to get it right, it simplifies system design considerably in the end.
Lastly, I’ve learned how important it is to have an extensive automated testing suite and what a great enabler it is. You save thousands of hours in manual testing, you can implement CI/CD pipelines and deploy to production whenever you want, and — most importantly — do it in a fast and reliable manner. And it also lets you sleep soundly at night!
4. Do you have any advice for enterprises or developers trying to navigate today's software landscape?
Try to design systems where it is easy to replace parts without too much cost. Since technology is advancing so quickly, you never know what tomorrow will bring and when you might need to overhaul something.
From a solution design perspective — I preach this mindset as well — don’t try to get it right from the get-go and get married to a particular solution. Instead, design it so that it is easy to change. A desire to make it perfect the first try is futile. It’s much more productive to have an agile mindset and focus on gradual refinement and improvement. It’s fine to have something working but not perfectly with room for improvement compared to having a mental freeze and wasting days before you (hopefully) get it closer to a perfect state.
As for technology choices, understand your needs and choose technology accordingly. Take my word for it: Misused technology causes endless pain.
5. What’s your vision for this project?
Looking ahead, we hope to become a major player in the European digital payment market and grow to tens of millions of users. We are currently at 5.5 million users, so we still have a way to go.
6. What has been your experience with Cassandra?
I would say it was quite a learning curve for us as an organization with regards to using Cassandra.
Usually you get taught SQL in university, and that’s where your main knowledge lies; you learn to model data and query in relational DB, SQL-manner. Now, with Cassandra, all of this goes out of the window since you need to be very precise how you will use data models, what your query patterns will be, and what consistency makes sense. It requires more thought and maybe even more forecasting of future needs. SQL is more forgiving in this regard.
Also, when you’re going through this learning curve, you fall into various pitfalls and need to learn a lot. I must admit we had our own share of those. But that comes with using any new-to-you technology.
For me, the highlight of using Cassandra is its high availability. You don’t have to bring the system down to patch a node, which is a huge benefit.
And the speed of reads and writes is also very nice, too.
7. Could you add any good recommended resources for getting your team up to speed on data modeling?
With regards to Cassandra, I think DataStax Academy is an excellent resource. For SQL, I would propose Pluralsight.