A Review of 2023

Nino Ulsamer
StashAway Engineering
9 min readJan 10, 2024

In good old tradition, it’s the time of the year for reflection and to acknowledge and appreciate the hard effort put in by everybody at StashAway to continuously push for 💡 innovation and 🎁 customer excellence.

Company-wide offsite in 2023

One year ago we celebrated the first in-person off-sites (in each office individually) since the pandemic — well, this year, for the first time in the company’s history, we brought together all teams from our five country offices (+ additional fully-remote folks) into our Kuala Lumpur office in Malaysia for an amazing and memorable in-person group offsite. As part of that offsite we also ran an exciting AWS DeepRacer event.

Over the course of 2023 we remained laser-focused on delivering immediate value to our customers while not neglecting important investments into longer-term initiatives.

We’re excited for the new year and wish everybody a successful and prosperous 2024 🎉!

What follows is a summary of the most important product releases, technical improvements, and organizational insights of 2023.

Product Releases

Investment Products

Starting with the most obvious and important product launch that complements our StashAway Simple product suite: StashAway Simple™ Guaranteed

StashAway Simple Guaranteed

Simple™ Guaranteed gives access to underlying fixed deposits with MAS-regulated banks at varying tenors, featuring extremely competitive rates. The mechanisms of this product are quite a bit different from the existing product offering we had before, and thus pushed teams to come up with innovative ways of iteratively solving challenges while not compromising on the quality of the product.

Our customers can now also choose which Simple product suits their investment purpose best. We try to make it as clear as possible what the different features of the products are, and in which situation we recommend which product. This follows our philosophy of decreasing mental load for our customers, and presenting them with clear, unbiased advice.

Depositing Methods

To make it easier for our clients to follow our recommendation of regular investing (Dollar Cost Averaging) we launched direct debit methods in both Singapore (“eGIRO”) and Dubai (“FastTransfer”). Using those, our clients can setup a monthly recurring deposit into their portfolio(s), putting their investment plan entirely on auto-pilot.

FastTransfer with LEAN in Dubai

Usability Improvements

There have been countless small but important changes made to how the app works, how deposits that are still processing are being displayed, how we collect and maintain personal details and documents, which onboarding flow feels more natural to clients, and many more.

Improvements to the Transfer tab

We typically perform in-depth user testing or experiments (for example A/B tests) for those to really understand what works better and why.

The end result is a better overall experience for our clients which is a feedback we humbly receive on many occasions.

Spotlight

Last but not least, we tested a new way of introducing functionality in the app to our clients, with the spotlight feature you can see below. It neatly highlights and explains the new functionality, to draw attention to the constant improvements we’re delivering, and also to familiarize clients with the new feature.

Spotlight for performance chart improvements

This is only a small snippet of all the various improvements that have been added to the product over the last 12 months. But we don’t want to only focus on things that are visible to our clients, and also shine some light on the things that have been going on behind the scenes as part of this technical article.

Technical Refactoring

In last year’s review we described how we embarked on several larger technical refactorings that became necessary to address some of the tech debt that had been accumulating in some of the older systems that had been around since the early days.

We pointed out four systems that needed refactoring:

  • Trading System (event-based “heart” of all our trading operations, rebalancing, order generation, etc)
  • Appserver (Monolithic API backend)
  • Admin (internally used system for employees to manage customer accounts and operations)
  • Webapp (Outdated browser-based version of our app)

I am happy to report that we’ve made substantial progress on all of those systems. Starting with the most significant:

Trading System

Last year we re-launched three of our five regions on the second generation of our trading system. The new system is much more powerful, more resource-efficient, more resilient (leading to less operational and maintenance burden), and easier to develop new features for. When we embarked on this large rewrite, these were reasons we had in mind to justify this heavy investment into our core infrastructure. I am proud to say that this investment is paying off, and we are indeed already able to harness the benefits of the next generation system. We will complete the migration this year for the remaining two regions, and also retire more of the smaller modules of the old trading system.

A big shout-out here to the team that has been working tirelessly on this migration, it’s been a gigantic effort with a lot of complex engineering challenges to be solved.

Appserver

While we are taking a different approach to refactoring our “appserver”, we have also been able to pull out various modules from this monolith and launch them as separate services that adhere to our internal “Responsible Service Ownership” guidelines, leading to higher code-quality and better maintainability.

For example, we have launched a notifications service, that can be used whenever we need to send any form of communication to our customers, extracting and centralizing this functionality from a number of other services.

Admin

A large chunk of functionality has been ported over to our new admin platform, which provides a better developer experience and more fine-granular management of access rights, alongside better usability for our employees who are users of the platform.

Webapp

After the re-platforming that had already been done in the beginning of the year, over 2023 we migrated almost all of the functionality of the old webapp into the new platform. We now have a very solid foundation to build future features for this product.

Somewhat related, we have also invested into a more powerful internal CMS (Strapi), that we can now use for any content that we want employees to be able to update themselves. This is used primarily for the administration of our marketing website, but we are also exploring other use-cases.

Technical Innovations

Apart from technical refactorings mentioned above, we have also managed to deliver significant improvements to our infrastructure and technical platforms as well as developer experience.

Autoscaling

Throughout 2023 we have maintained a very strong focus on cost control, and as such we’ve been putting in efforts to right-size cloud resources to our workloads, and optimize those workloads to run more efficiently.

The key elements at play to achieve this are:

  • Karpenter: Can be plugged into Kubernetes to select and manage appropriate cloud resources according to the requirements of the services that are running (or attempting to run).
  • Keda: Allows us to define for each service how we expect it to scale up or down depending on the workloads is needs to perform. For example, the Kafka consumer lag (count of messages yet to be consumed/processed) can be used to increase the number of pods for a service to speed up processing. Vice-versa, when there is nothing to be processed, the pods can be shut down.

This is a powerful combination that lets us achieve a wide number of use-cases to optimize resource utilization.

We are now also auto-scaling our staging environments “on-demand”, such that they are only running when integration tests are being run, or whenever someone is testing a new feature on them. Which means they can be switched off most of the time, resulting in significant cost savings.

Developer Experience

Speaking of staging environments, one of the challenges of testing features on staging is to have test data available. For example, you may want to simulate a customer deposit to test a new functionality. However, the actual processing of a deposit is rather complex and requires many steps to be performed. We have therefore built a deposit simulation workflow, that allows the developer to specify the parameters of the deposit and takes care of the rest. This results in productivity gains and faster onboarding of developers who are not familiar with the details of operational processes.

Along the same lines we’ve also put in efforts to simplify cross-service communications, by building an internal SDK based on the OpenAPI specs that each service is required to expose. This SDK can be included in other services and offers a type-safe way of calling other service endpoints. This reduces communication overhead and avoids mistakes during the sending or receiving of data to/from internal REST endpoints.

Mobile App

Also our Android, iOS, and Huawei app platform have undergone constant improvements. Some of the more visible things were the reduction in code-push bundle size (resulting in faster updates of the app), as well as a significant reduction in the startup time of the app itself.

Process Improvements

Last but not least we want to also share two improvements we’ve delivered to our internal processes.

Incidents Bot

While we all wish for a life without “incidents”, the reality is that sometimes things do go wrong, and we need to quickly assemble team members and coordinate the resolution of an incident.

For this reason we have launched an internal Slack-bot that can create incidents by creating a temporary “incident channel” in Slack, pulling in required team members, and alerting those members via OpsGenie. The channel is then used to coordinate the resolution of the incident.

Sample incident

Chapter Days

A while ago we introduced “Chapters” to our engineering org structure. Chapters are dedicated to a particular technology platform, with the goal of anchoring initiatives to improve those platforms. For example, we have a “Mobile Chapter”, a “Workflow Chapter” (working with Temporal), and so on. Developers are assigned to a chapter in a part-time capacity, because we want the resulting cross-pollination in both directions: from their “day job” towards the chapters, and bringing back chapter experience to their “squads”.

To coordinate efforts across teams and chapters, we introduced so-called “chapter days” in 2023. Each 2-week sprint has two chapter-days at its end, meaning all developers work on chapter-initiatives during those days. To coordinate those days across all teams is useful, so that there are fewer blockers introduced for certain teams while a developer is working for their chapter. On the flip-side, it also allows the chapter team to focus as a group on their initiatives during those days.

We like experimenting with organizational innovations such as this one, and the chapter-days are one of the more successful ones so far. We intend to keep them going until we come up with an even better way of managing technical initiatives.

As mentioned initially, we are very excited to continue down our path of improving not only the product but also the way we deliver our improvements and work as a team.

If you are interested in joining our team, please check out our careers page!

--

--