KEMBAR78
"Як ми переписали Сільпо на Angular", Євген Русаков | PPTX
Як ми
переписали
н
а
Хто Я?
Привіт, мене звати Євген!
Займаюсь більше 10 років
фронтендом.
Працював на позиціях Tech Lead,
Front-end Lead, Staff Engineer
Над чим працював
Початок
Розділ перший
Сільпо 1.0
● React 16
● TFS замість Git
● Немає SSR
● Stylus
● Recompose
● Redux-thunk
● Formik
● Webpack
Час змін
Старий бекенд не
витримував
навантаження
Ми планували
повністю оновити
UI/UX
Новий Бек-енд
Редизайн
🎨
SPA не надто дружні
до SEO
SEO
�
�
Виникало багато
нюансів під час
оформлення
замовлення
Стабільність
Вибір стеку через досвід команди
➔ Швидкий старт. Команда не витрачає час на
вивчення нового фреймворку.
➔ Менше ризиків. Більше впевненості в
рішеннях завдяки вже наявному досвіду.
➔ Якість. Досвід дозволяє уникнути типових
помилок.
➔ Легше масштабувати. Наявність досвідченої
команди спрощує залучення нових
розробників.
Плюси Angular
Routing, DI,
Forms, HTTP,
SSR, Services,
Tests, etc.
Чітка і
організована
архітектура
для легшої
розробки і
масштабува
Все з коробки Структура
Angular
розроблений
з
використанн
ям TypeScript
з самого
TypeScript
�
�
�
�
️
Забудьте про модулі Це щось типу useState
LifeCycle
Angular стає ще зручнішим
Standalone Signals
Її майже видалили Тільки два
З Signals більше не треба
турбуватись про це
Тепер ще зручніще
@if, @else, @for
@switch etc.
Zone.js
Change Detection
Control Flow
🔗 ⚡ 🔄
🌐 🔁 ✅
Структура
Розділ другий
CI
Граф залежностей
Nx підтримує концепцію
доменів, зон доступу та
правил імпорту між ними.
Має велику бібліотеку CI
генераторів (Angular, React,
Vue, etc.)для створення
шаблонів в один рядок
команди.
Архітектура
Граф залежностей на рівні
файлів — точне визначення,
що треба перебудувати.
Кеш
Кешує результати задач
(build, test, lint), файли і дістає
з кеша ті, що не змінилися.
Monorepo
Сільпо
Онлайн
супермаркет
Back-office
Адмін-панель
для Сільпо, LOKO
LOKO
Додаток швидкої
доставки
Payments
Віджет оплат
Web apps
Micro-Frontend
Silpo
Checkout
Recipes
Proposals
Basket
Address
MVP
Розділ третій
🔄 Поступовий переїзд
Ми вирішили не переписувати весь продукт одразу, а рухатися поетапно:
✅ Визначили пріоритетні модулі
Зібрали аналітику, які компоненти й фічі використовуються найчастіше на старій
версії.
Відібрали ті, що критичні для старту MVP.
️
🗺️Склали карту міграції
Обрали, що переносимо в першу чергу, а що — пізніше.
Список товарів у
вибраному розділі
Вітрина з добірками
товарів у форматі
каруселей
Вибір адреси
Основні компоненти для переїзду
Каталог Головна
Фінальний етап, де
Гість підтверджує
замовлення, обирає
доставку та оплату
Інтерактивна карта з
адресами та
переліком типів
доставки
Вибрані товари перед
оформленням
замовлення
Сторінка з
результатами пошуку
за введеним запитом
Чекаут
Корзина
Пошук
1.Сторінка товару
Нова
Стара
2.Каталог
Новий
Стари
й
Базовий UI каталогу (версія MVP)
Картки товарів
Чіпси
Фільтр
и
Тайм-слоти
Сортуванн
я
Breadcrumb
s
Пагінація
Раніше
Нові фільтри
3.Головна сторінка
Стара
Нова
4.Кошик
Стари
й
Новий
5.Чекаут
Стари
й
Новий
Калітка
Розділ четвертий
Версія 1
Версія 2
Версія 3
SSR
Розділ п'ятий
Моніторінг SSR
Grafana SSR Board
Кешування SSR
Fallback на SPA
Сільпо в цифрах
➔ Приблизно 20 млрд грн виторгу за 3 роки
➔ 1 млн замовлень за цей період
➔ 6 млн унікальних Гостей
➔ Релізів: 26 тис.
➔ Більше 30 тис. merge requests (MR)
Дякую!
john.rusakov@gmail.com
threads.com/@eurusik
eurusik.medium.com

"Як ми переписали Сільпо на Angular", Євген Русаков