Hello!

I'm Muhamad Fariz Farhan

A Software Engineer specialized in microservice and data store based in Jakarta.

About

About Me

Hi! I’m Fariz, a passionate Software Engineer based in Jakarta, Indonesia. With a background in Software Engineering, I’ve dedicated my career to building a scalable and reliable microservices system.

Over the past 5 years, I’ve had the pleasure of working on a variety of projects that have allowed me to hone my engineering and problem solving skills in Software Engineering.

Resume

Resume

Driven by a relentless thirst for knowledge and a deep passion for my work, here is a glimpse into my professional journey and accomplishments.

August 2021 - Present

Tokopedia

Software Engineer - Backend

Assigned to the Purchase Platform Tribe, responsible for maintaining and enhancing the user order history, checkout service, cart service, and generic transaction platform. Key responsibilities include:

  • System Resiliency and Availability:

    Focus on improving system resiliency and ensuring high availability.

  • Performance Enhancement:

    Enhance overall feature performance to provide a better user experience.

  • Problem-Solving:

    Identify and address issues, transforming requirements into robust solution features.

  • Distributed Datastore Implementation:

    Play a key role in applying distributed datastore solutions to enhance service performance and scalability.

Projects
  • Data Store Redundancy for System Resiliency:

    Using multiple data store layer to provide a very high availability service in case one of the data store is down.

  • Generic Calculation System:

    Reducing development redundancy in many services that require a calculation system by introducing a centralized calculation system.

    Intellectual Property Publication: Handling General Calculation System Using Configurable Formula

  • Order Creation Buyer Experience Fail-over:

    Designed and implemented a fail-over system to improve the buyer experience during order creation failures. This system ensures that orders, even when stuck in the retry phase, are safely processed, providing assurance to buyers during system disruptions.

  • Data Store Improvement, Migrating 15 TB of Data to a Better Data Store Solution:

    As technology evolves rapidly, upgrading data store solutions becomes necessary. Designed and developed a data pipeline using Change Data Capture (CDC) and Kafka to safely and accurately migrate 15 TB of data from the source data store to the target data store.

    Result:

    Efficiently and effectively migrated the database with no downtime! Saved thousands of dollars per month by utilizing the new database, which offers significantly better performance in terms of latency and success rate.

  • Improving Rate Limit with a Request-Based Dynamic Key Constructor

    Designed and developed a dynamic rate limit key constructor that utilized values from requests, such as headers, query parameters, and request bodies.

    Result:

    Successfully managed unwanted burst traffic, enhancing system resilience and reliability. Reduced the need for code changes due to the configurable nature of the dynamic key constructor.

  • Distributed Database POC, Benchmarking a 300k RPS (up to 600k QPS) to a Database:

    A system required the capability to handle up to 300k RPS, potentially resulting in 600k QPS to the database. I was responsible for conducting a POC on one of the selected databases for this high-demand implementation. Given the high volume of requests, a comprehensive end-to-end design was necessary to prevent bottlenecks, covering application performance, load testing with Locust, monitoring with Grafana, and the database itself. My role was to design and plan the POC to ensure efficiency and accuracy in data collection.

    Challenges:
    1. 300 thousands RPS is a lot of RPS
    2. The load test scenario is a bit complex with a lot of variables. In total, there were 40 scenarios that needed to be tested in the POC.
    3. Strict timeline: The entire POC process, including kick-off, planning, designing, implementing, and reporting, was limited to one month. The execution phase, from design to reporting, was completed in under three weeks. Detailed execution and effective time management were crucial for success.

    Result:

    Successfully designed, planned, executed, and led the project, overcoming all challenges within the given timeframe. Created a custom Locust wrapper that can run automatically based on configurable config that reduce the man power required to run the POC.

  • Distributed Database POC, Upgrade OS Run Book

    Led the POC for upgrading the operating system of all distributed database VMs. The upgrade process involved spawning new VMs with the upgraded OS and migrating data from the old VMs to the new ones. My role was to ensure the smooth execution of VM spawning and data migration, preventing any regressions for database that in both AWS and GCP data centers. The outcome of this POC was a run book for the OS upgrade process.

    Result:

    Successfully designed a rolling replace mechanism to safely migrate data within the distributed database. The run book was validated and successfully implemented for the OS upgrade process across the company.

Achievements
  • Improved the template replacer algorithm, reducing CPU utilization by up to 10% and increasing process speed by 16 times compared to the previous algorithm, by implementing a string index-based template replacer.
  • Received "Exceeds Expectations" performance appraisal twice for outstanding contributions and exceptional performance for team and company.
  • Achieved a 4.6/5 Net Promoter Score (NPS) as a company-wide speaker on the topic of Distributed Databases, attended by over 300 participants.
  • Selected as a participant in the prestigious Global Business Skills course by HARDSKILLS, sponsored by the company. Graduated with distinction, achieving an 85% final score.
June 2020 - February 2021

Markt.inc Agency, Software House Agency

Lead Programmer

As the Lead Programmer, I managed an engineering team of over three members, successfully increasing daily productivity and enhancing the value of our delivered projects. I worked closely with the Project Manager to plan and execute optimal outcomes for our team. Our projects primarily focused on developing in-house e-commerce websites for brands, company profile sites, and personal websites. Additionally, I led the effort to build and refine a reusable Content Management System (CMS) boilerplate and a Headless E-commerce System for each project we undertook.

February 2020 - June 2020

Coal Quality Management System Project at PT Superintending Company of Indonesia (Sucofindo)

Lead Programmer

As the Lead Programmer for a project under the Information System Development Project course, I spearheaded the development of a Coal Quality Management System for our client, PT Superintending Company of Indonesia (Sucofindo BUMN). This system was designed to enhance the quality control processes of coal for Sucofindo's operations.

Responsibilities:
  • Led the system implementation phase, ensuring successful deployment.
  • Directed the programming team, overseeing all coding activities.
  • Created comprehensive documentation and tutorials for system management and maintenance.
  • Ensured alignment of the implementation phase with deliverables from the Planning, Analysis, and Design stages.
  • Organized and monitored team members' work to maintain coding standards and project timelines.

Speaker Experience

Speaker Experience

26th September 2023

Yugabyte Community: Stepping Into the Realm of Yugabyte

People x Nakama | @Tokopedia Tower

Presentation Overview:

  • Brief Introduction to Distributed Databases:
    • Distributed Scale
    • Network Partition
    • CAP Theorem
  • Yugabyte Features:
    • PostgreSQL Compatibility in Yugabyte YSQL
    • Horizontal Scale for Massive Write Scalability
    • All Active-Active Node Configuration
    • High Availability and Fault Tolerance
    • Fully ACID Compliant
  • Yugabyte APIs:
    • YSQL a fully-relational SQL
    • YCQL a semi-relational SQL
5th June 2023

Automation Testing

General Transaction Platform Sharing Session | @Tokopedia Tower

In this sharing session, I share some of my knowledge in testing. I share with my team any type of testing that they should have know and what tools that might help them in running that test.

Presentation Overview:

  • Type of testing
  • Locust
  • Using Locust API to create in-house automation testing
22nd May 2023

Distributed Database

General Transaction Platform Sharing Session | @Tokopedia Tower

Sharing insights on the topic of distributed databases, I begin by explaining the differences between conventional SQL databases and NoSQL databases. I introduce the concept of NewSQL, a modern term in the database landscape. Additionally, I cover key aspects of distributed databases such as replication factor, sharding, CAP theorem, and fault tolerance.

Presentation Overview:

  • SQL vs NoSQL
  • NewSQL
  • Explanation of Distributed Database
  • Replication Factor and Fault Tolerance
28th October 2022

Advance Golang 101 Part 2

Order Management Platform Sharing Session | @Tokopedia Tower

In this sharing session, I share some of the advanced golang features that might help my team in understanding golang furthermore. This session mostly discusses golang binary failure and how to avoid them and recover from them.

Presentation Overview:

  • Panic and Recover
  • Fatal
  • Mutex
7th October 2022

Advance Golang 101

Order Management Platform Sharing Session | @Tokopedia Tower

In this sharing session, I share some of the advanced golang features that might help my team in understanding golang furthermore. This session discusses threading in golang and how to correctly use them. I also share about context that is really useful in golang to handle many things in our golang program.

Presentation Overview:

  • Go Routine
  • Context and How to Utilize them

Blog

Our Blog

Dive into my world of experiences, insights, and thoughts, just a click away!

Blog is Coming Soon!

I'm Available for freelancing tech consultant

Step up your microservices and data store game! Contact me for further discussion.

Contact me

Contact

Contact Me