Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Backend Engineering in Ruangguru

Backend Engineering in Ruangguru

With Agung Wahyu Kurniawan, we share about our backend engineering practice in Ruangguru

More Decks by Harits Fahreza Christyonotoputra

Other Decks in Programming

Transcript

  1. Until ... • Our team is getting bigger • More

    complex • Not reliable • Scalability
  2. Is it hype technology? Well, not really... 2014 Martin Fowler

    He discussed microservices in his blog 2017 Ruangguru was infected Our first milestone to implement microservices 2011 “Microservice” discussed at a workshop of software architects near Venice 2012 “Microservices” same group decide `microservices` as the coolest name
  3. Pros • Reduce system complexity • Increase development speed on

    each domain • Improve fault isolation • Increase product ownership • Loosely coupled • Integration Testing • Deployment • Maintenance (Logging, Alerting, Auto Scaling) • Transactional Data Cons
  4. Why we REALLY needs microservices • We have a LOT

    of business domains • We have teams that works independently with their own tempo, target and problem • We don't want to disturb our colleagues if our service is broken
  5. Development Process Define Business Requirements Define business requirements with product

    team Design Architecture Design architecture written by software engineer What Technologies? Decide tech stack, what should we choose the technologies Let's code & deploy! What are you waiting for~ Write Docs We are human, btw 05 01 02 03 04
  6. Unit Test • Implementing unit test in each of the

    layer • Mock the dependencies (service unit test, mock the repo) • Why? To make sure our code is not break
  7. Introducing Morse • Go framework to run REST and GRPC

    concurrently • REST x GRPC Reverse Proxy • Why? ◦ Legacy service is still using REST ◦ All-in-one interceptor
  8. Rogu CLI • CCLI tools to speed up our development

    process • Why we need rogu? ◦ Deploy ◦ Generate proto file ◦ Deployment status ◦ Scaling ◦ And many more ...
  9. In the next few months, we want to ... •

    Implement Event Driven • Open Source • Automation Testing • Implement GraphQL, will improve 30% in client