Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 34

Ruangguru I/O 2021

How we build education superapps with effective


engineering

Speaker: Alvin Tamie

Thursday, Feb 4th 2021


Our Tech Team Challenges

Our current tech team size is ~160 people (Tech + Data).

We are serving our services across countries Indonesia, Vietnam and


Thailand.

We have distributed team across Jakarta, Bandung, Jogja and Malang.

We have rapid development more than 10 different education product services.

Wide spectrum of technological challenges from providing many media formats


of learnings: pre-recorded learnings, live teaching, gamification (learning through
games), recommendations, various questions type and more.
Our Approaches

Our Engineering OKR #2:

Objective: Accelerate the development team speed


● Reduce Development Overhead “Toil”, kind of work or task that tends to be manual,
repetitive, automatable, tactical, and devoid of long-term value.

In Ruangguru, we do have dedicated teams (Infra, Productivity, SEIT, Data Engineering, Data
Werehouse, Code Quality) to develop tools for our team members to keep reducing development
overhead.

"If a human operator needs to touch your system during normal operations, you have a bug. The definition of normal
changes as your systems grow." Carla Geisser, Google SRE

Reference: https://sre.google/sre-book/eliminating-toil/
Removing Toils

We will discuss our team platforms that helps us


to be productive!
Backend Engineering
Backend Engineer

Service-B

HTTP

Users
Morse

Data
Mesh
GQL Stitcher
GRPC

HTTP Morse

Microservice Service-A
Orchestrator
Productivity: Our In-house Tools & Platform

Documentation Preparation / Utility / Platform

Translation Platform: Platform to manage multiple


RG-Postman: Generating API Docs in postman autmatically
language / localization (including error response)
RG-Scheduler: Configurable scheduling service
RG-Stitcher: Tools to remove interdependency service

ROGU
(CLI to Run All of
Our
Deploy
Tools/Platforms) Coding Phase

Newton: Kubernetes abstraction Contract Framework - Code Generator (No Need to


RG-OSC: Engineers can change db schema Code)
independently, seamless + safe BE: Morse Boilerplate (Combining HTTP - GRPC in
Kong Gateway Generator: Engineers can change kong single handler, Declarative Error, Declarative Cache, etc.
config independently FE, IOS, Android: Network Transport Layer

Testing Phase

Goku: Vegeta orchestrator. Load Test Platform.


Automation Device Farm (Grace): Spawn Virtual Android Device On Demand with
Automation Test Worker
She-Mock: Front end conotract mock test.,Enabling FE testing their service without
waiting BE done their works
Productivity: Contract Framework

Declarative Authentication
Middleware

Will generated to kong config

Automatic Response Caching

HTTP + GRPC Handler

Declarative Errors (with Auto


Localization Language)

Automatically Validate Request


Param
Productivity: Why our engineers productive?

● Our engineers should be able to do it their-self


○ Deploying service. (rogu deploy + newton)
○ Configure service resources & envar. (rogu scaling &
rogu config)
○ Load Test (rogu loadtest + goku). And many more!
● Our engineers shouldn’t work what not necessary (DRY)
○ Boilerplate: Contract Code Generator (rogu gen-proto
+ protoc-gen-rg + morse + contract descriptor)
○ Write multiple job code (microservice orchestrator)
○ Create API Documentation (postman integration)
● We care about standardization and conventions
○ We do platform meeting every month
Frontend Engineering

Will discuss further in next session! Frontend Engineering


Mobile Engineering

Mobile Engineering

● Modularity is in our DNA.


● Single codebase to serve millions of
students from Indonesia, Vietnam
and Thailand
● Feature Flagging.
● State-of-the-art translation platform.
● Bi-weekly release cadence.
Infrastructure Engineering
Infrastructure Engineering

● Focus on developing tools and


automation.
● Caps the operational work to a
maximum of 40% from daily task.
● Runs Multiple GKE clusters.
● Manage thousands of VMs.
● Monitoring hundreds of thousands
of containers.
● Serving traffics of millions of
students across Indonesia,
Vietnam, and Thailand.
● All done by just 4 Infra engineers
Infrastructure Engineering

Declarative Gateway Config Predictive Workload Scaling Tool

Centralized Alert Configs

And more...
Content Delivery Engineering
Content Delivery

● Deliver contents such as


Videos, Images, Interactive
games, live streaming and
Conferencing
● Developed player for Video and
Interactive game.
● Build video on demand
transcoding pipeline.
● In house Webrtc infrastructure
solution for conferencing.
Content Delivery Pipeline
Game Tooling

Game Template Game Packaging

Provide Collection of Handle assets


reusable template to packaging and optimize
support Fast Development its compression

Rapid and Scalable

- Fast onboarding for Game Layouter


- Reusable Component
- Runtime Delivery
Software Engineering In Test
Software Engineering In Test

● Hopper, automated test


framework on top of
robotframework.
● Grace, highly scalable test
runner orchestrated Mobile
Emulators, Browsers and API
tests.
● In-house CLI interface to
interact will all testing
ecosystem.
● Consistently maintained a >
95% of test success rate for
all our testing coverage, keep
our hands clean from flaky
tests.
Data Science Team
Data Science Team

Data science: product (deliver value to user),


business (reduce cost and improve profit), or
automation (precision, resource allocation).

Product Highlights:
● Roboguru
● Smart Recommendation
● Knowledge Graph
● TV Rating Prediction
● Review Clustering
● Audio Noise Filtering
● etc.
Data Science Team

Data science in RG have opportunity to solve the


problem end-to-end. Starting from business problem
definition, formalize problem, develop model, designing the
system, until deploying the model on Kubernetes cluster.

We use MLFlow for repeatable experiments. We are also


working on using Seldon for our Model Serving to achieve
model deployment productivity, easy to version and ab test,
with help from Data Eng.
Data Engineering Team
Data Engineering Team

Data engineering: data pipeline, ML serving


infrastructure, analytics tooling. Done just by 2
eng supporting the whole company.

● Realtime and Batch data pipeline


architecture for analytics & data
warehouse
● ETL config friendly for non-engineers
● AB Test platform (using Flagr), support
quick experimentation and post analysis
● Data mesh, enable each product engineer
to provide real time data
Data Warehouse Team
Data Warehouse Team

Data Warehouse: Reusable, clean and easy to


use data. Small team supporting various business
x countries possible due to toolings we develop.

● Dimensional Modeling for ease of analysis,


previously it was so many tables duplicated
● Reusable Customer summary data,
segmentation can be done quickly and easily
● ETL config generator using chrome extension
to improve analytics productivity
● Configurable Sales Agent Assignment rules,
20x faster for ops to create assignment
Data Warehouse Team

Example of ETL configuration in YAML.


● The tool will automatically resolve
dependencies so that ETL creator
doesn’t have to define dependencies
● Description on schema will automatically
go to data catalog
● Owner on the schema will get alerted
when things happen
● Checker SQL as unit test for the ETL
Our Cultures
Our Cultures (Principles)

1. Psychological Safety 3. Devops as a Culture


Obsessed with developer experience and improve it
Anybody can raise an idea, concerns, issues. We valued your
Understand process at any level, iterate and improve it.
opinions Don't block yourself, always find way to make your impact.
No Blaming, fix the problem instead. If your work depended on others you can help to fix it.
Retrospective and iterate Don't only know your dependencies, help others who
needed.

4. Being Nice is Nice


2. Engineering Excellence
Give people the benefit of the doubt and always assume
Always have a mindset to achieve best quality you can deliver. positive intent.
Technology choices should strive to be "optimal" while avoid Take the time to understand why they made a decision
over-engineering. before making assumptions.
Be Technology agnostic, always open to new technology, deeply There's always a nice way to handle a situation, and we
understand pro and cons (ROI) and always try to choose best strive for that
ROI solutions when making technical decisions.
Our Cultures (What we do to enable our principles)

1 Public Design Challenge:


All teams encourage to have
public technical discussions for
new/project. Anybody could join
if they interested to learn & give
feedbacks.
Our Cultures (What we do to enable our principles)

Clear separation between planning and execution phase!


2 Product Development
Workflows S1 - S6 (WIP) We try to not rushed and do the planning phase well. This
is crucial to enabling our Principles 1 & 2.
Our Cultures (What we do to enable our principles)

3
Contributor Day:
Once every quarter, 2 days
allocated time for Contributor
Day.
34

You might also like