Skip to content
ArchDays 2019 logo
ArchDays · November 22, 2019

“Dividing an Orange” Evolution

How the public-web architecture of a large fintech evolved from 2016 to 2019

/ Web Evolution · ArchDays 2019

Slide contents

  1. 1. “Dividing an Orange” Evolution

    How the public-web architecture of a large fintech evolved from 2016 to 2019

  2. 2. What we'll cover

    Acquisition Department and the process

    Frontend: monolith → micro-frontends

    CMS: templates → block editor

    Personalization: A/B → ML, and lessons

  3. 3. 01. Acquisition Department

    What's under the hood

  4. 4. Inside acquisition

    Public web and surrounding systems · ~60 engineers

    Unauthenticated flagship web

    Release-less CMS for web and mobile

    Personalization and A/B testing

    Acquisition channel automation

  5. 5. 02. Rendering Process

    What happens between the user request and the rendered page

  6. 6. End-to-end pipeline

    User → LB → Frontend → CMS → Personalization → DataStore

  7. 7. Three systems changed the most

    That's where we'll focus

  8. 8. 03. Frontend Story

    Story #1 — from monolith to micro-frontends

  9. 9. Frontend in 2016

    Starting point of the story

  10. 10. Step #0 — get up to speed

    Before changing anything — understand

    Meet the team

    Dip into the dev process

    Understand team and stakeholder pains

    Form a tactical plan

  11. 11. Step #1 — extract components

    From a monolith to a component model

    Split responsibilities

    Minimize coupling

    An ownership area per team

    Agree on contracts

  12. 12. Step #2 — build a platform

    So components can ship independently

  13. 13. Step #3 — scale teams

    With platform ready — grow teams

    Our own framework — tramvai

    Main components moved into it

    First micro-frontend app in one team

    Validated with an A/B test

  14. 14. 04. CMS Story

    Story #2 — from a monolith to microservices and cloud native

  15. 15. Two releases a year

  16. 16. Microservices without a platform stalled

    We stabilized the legacy system and formed an architecture team

    Stabilize the legacy system

    Arch team and a default stack

    Dozens of services from product teams

    Nowhere to deploy them

  17. 17. Cloud native instead of an arch team

    A platform instead of a central approval body

    The arch team was disbanded

    12-factor and k8s primitives

    Frameworks for backend and frontend

    Almost all prod on k8s

  18. 18. 05. Personalization Story

    Story #3 — from A/B tests to ML predictors

  19. 19. One customer and a boxed product

    The starting point of the third story

    One main customer

    A boxed product in production

    A self-made C++ solution in alpha

    One developer on the project

  20. 20. Our MVP replaced the boxed product

    The team grew and the MVP shipped

    Extended the team

    Finished the MVP

    Replaced the boxed product

    Business is happy and wants more

  21. 21. An MVP does not grow into a platform

  22. 22. 06. Lessons from 3 Years

    What we learned about evolving architecture

  23. 23. Strategy follows system size

    Three systems, three paths

    Small codebase or MVP — drop-in replacement

    Medium codebase — parallel work and a painful swap

    Large codebase and team — long evolution

    evolution beats revolution — migrate in steps

  24. 24. References and Materials

    Building Microservices — Sam Newman (2015)

    Building Evolutionary Architectures — Ford, Parsons, Kua (2017)

    The Twelve-Factor App — 12factor.net

    Frontend Architecture for Design Systems — Micah Godbolt (2016)

  25. 25. Thank you!

    polomodov.tech

    All slides and links — in the Telegram channel

    Alexander Polomodov, Engineering manager, Tinkoff.ru acquisition

    @book_cube