Tokopedia Android Engineering 2020 Review

Rico Harisin
Life at Tokopedia
Published in
5 min readJan 13, 2021

2020 is indeed a very challenging and tough year. We are in a situation where everyone is forced to stay at home due to pandemic, and working from home has become a norm.

At Tokopedia, especially on Android Engineering team, we have a lot of things that we need to do in order to strengthen our core, to become more mature in terms of technology and people.

Thus, our theme for 2020 was ‘Strengthening the Core’. We are blessed with so many talented engineers capable of delivering a lot of initiatives that make our core stronger, even though they are challenged with uncommon working from home situation.

Take a look at this year-end review for what we have done in 2020.

Performance

Tracking performance is actually something new for us. Previously, our performance tracking was only as simple as how much memory consumption for particular activity or page without universal, trackable metrics. However, in 2020, we finally developed our own metrics called PLT (Page Load Time) that is capable of tracking how long it takes for a user from opening the page until they see the very first information on the page. We also developed our own in-house performance tools:

  • Ch’en Performance Test Framework and Validator to detect performance regression or improvement in every version or in developer branch.
  • Sherlock Performance Insight Reporter. This tool will check for any performance issue and give meaningful insight about performance in particular pages.
  • RUM Performance Test Dashboard where all information related to performance trend for every version is displayed.

You can also check our story in building these tools through the links below:

A Saga of Improvement in Android App Performance

A Saga of Improvement in Android App Performance — Part 2

Release Governances

Having a strong release process can save us a ton of time, since we always have a release every week. Every single code that is being merged every week should be checked to ensure the quality and also ensure that is not breaking the production build. Broken release is expensive and can impact a lot of things.

On the pre-merge state, we also have developed several checkers to ensure the quality of the pull request and gain confidence for the team:

  • Unit Test Check: This is to make sure that every single unit test is passed on changed module.
  • Build Check: Sometimes, certain changes can break the compile on our main branch. To make it more complicated, we have 2 build flavors for our main app and seller app. This checker is necessary to ensure that the changes are not breaking the compile on either of the apps.
  • App Size Check: App Size is very important for us, and we always try to keep it as small as possible. This check is to ensure that our App Size does not pass certain thresholds. Check this story about how we reduce our app size and why it’s matter by our team: Modern Way to Reduce Your Android Apps Size With Dynamic Feature.
  • Risk Analysis: This checker helps us to identify which pull request is dangerous based on several criteria (e.g.: number of file changes, number of impacted modules etc.). Danger pull request can become a silent bomb and thus need to check more deeper.
  • Static Analysis: As the name suggest, this check will ensure that the code is following our standard and give suggestion for bad code.

Alerting and Monitoring

Alerting and Monitoring is a crucial part, either on development or production. We can easily track for any kind of issue or to get an insight. Other than existing Alerting and Monitoring that we had, in 2020 we also built some new Monitoring Tools:

  • Unit Test Dashboard: We use this monitoring tool to track and get an insight for Unit Test coverage for each squad. Unit Test is a crucial part for our development, and thus making sure we already covered every single module with it is a must.
  • Build Monitoring: Another area that is very important to be monitored is a build, especially on our CI/CD. With this tool, we can detect build regression over time, build failure rate, build machine utilizations, and find out which job is working smoothly and which job that needs more attention.
  • Deeplink Alert: Deeplink is widely use within our apps, but sometimes there is some misconfiguration that causes a Deeplink broke when opening on the app. This alert is very useful to detect this kind of issue and for us to take action immediately.

If you want to know more about our alerting and monitoring, check this story by our team!

Logging And Alerting in Android Tokopedia

Monitoring Android Codebase

Strengthening the Data Tracking

Data is very important, as data helps us make decisions and understand more about what our customer needs. Thus, having a data tracking testing platform will help us ensure that our data can always be consistent, since data incidents can impact a lot of our business processes.

  • Cassava Instrumentation Test: This test will make sure that every single data tracking implementation is working as expected by validating payload that our app sent to our data platform, and compare it with expected payload. This test is being executed regularly to ensure our changes during development are not breaking data tracking implementation.
  • TopAds Instrumentation Test: Since TopAds is costing the customer’s money, this TopAds data must be as accurate as possible. Same with Cassava, this test is also being executed regularly to prevent any incorrect implementation.

One of our Tokopedia DNA is #GrowthMindset, we will continue to push ourselves further and expand our knowledge for the better improvement of ourselves. There are a lot of areas that we haven’t explored or put more focus into it. Our journey is just getting started!

--

--

Rico Harisin
Life at Tokopedia

Tech leaders & enthusiast | newbie investor | love to read tech, people, leadership, and investment topic