SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Как мы экспериментируем в больших
микросервисных системах?
Alexandr Baranezky, PDFfiller
● Быстрая доставка фич и фиксов
● Экосистема A/B тестов
● Масштабирование микросервисов на
случай нагрузки
А нужны ли микросервисы?
31 мая 2018
The history of DevOps
PDFfiller’s TeamCity stats
Build Agents 20
Build configurations 1565
Active build configurations 1357 (86%)
Projects 1049
A/B тесты в PDFfiller
● Большое количество кода пишется в
соответствии с A/B тестами, а потом уже с
инженерными: SOLID, DRY, e.t.c.
● Каким бы ни было хорошим решение, если оно
проигрывает в A/B тесте, оно не будет
допущено на прод
● A/B тесты внедрены в 80% кода компании
Глобальный контекст
А - 90%
B - 10%
V 1.0
V 2.0
Обзор архитектуры системы PDFFiller
Client app
Web Sockets
AUTH LOGGER Rest API
CLIENT
WebSocket
Business
Logic
Platform
(PHP)
Worker
Сборка микросервиса
более
200
микросервисов
Кто работает с подобной системой?
Подход, который ускоряет разработку
Крутая фича
Разработчик
Как стартует микросервис
Как мы держим нагрузку?
Сервис 1
Сервис 2
Сервис 4
Сервис 5
Сервис 3
Am
azon
ECS
-
Наш
е
все
Фишки, которые мы используем в работе
Единая структура данных на всех уровнях (AST)
● В идеале — один код на клиенте и сервере
(NodeJS, JS)
● В дерево можно добавлять новые сущности
(поля), но не трогать старые
(backward compatibility)
● Огромные деревья (более 1 мегабайта)
передаются по частям командами,
изменяющими состояние
CQRS
Microservices at PDFfiller
Alex V. Baranezky
SE at PDFfiller.com
Q / A
PDFfiller’s TeamCity stats

Contenu connexe

Tendances

Автоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CАвтоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1C
Alexey Lustin
 
лустин статические анализаторы систем 1с ad2015
лустин   статические анализаторы систем 1с ad2015лустин   статические анализаторы систем 1с ad2015
лустин статические анализаторы систем 1с ad2015
Magneta AI
 
статические анализаторы кода за и против
статические анализаторы кода  за и противстатические анализаторы кода  за и против
статические анализаторы кода за и против
Roman Kalita
 
Организация процесса тестирования в Agile команде с помощью матрицы квадранто...
Организация процесса тестирования в Agile команде с помощью матрицы квадранто...Организация процесса тестирования в Agile команде с помощью матрицы квадранто...
Организация процесса тестирования в Agile команде с помощью матрицы квадранто...
Zestranec
 
Адаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктовАдаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктов
Alexey Lustin
 

Tendances (15)

Автоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CАвтоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1C
 
DevOps для Legacy-продуктов
DevOps для Legacy-продуктовDevOps для Legacy-продуктов
DevOps для Legacy-продуктов
 
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникСоздаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
 
Петр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRMПетр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRM
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Гибкое нагрузочное тестирование. Круковский
Гибкое нагрузочное тестирование. КруковскийГибкое нагрузочное тестирование. Круковский
Гибкое нагрузочное тестирование. Круковский
 
Имплементация инженерных практик для 1C
Имплементация инженерных практик для 1CИмплементация инженерных практик для 1C
Имплементация инженерных практик для 1C
 
Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проекте
 
лустин статические анализаторы систем 1с ad2015
лустин   статические анализаторы систем 1с ad2015лустин   статические анализаторы систем 1с ad2015
лустин статические анализаторы систем 1с ad2015
 
Адаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1сАдаптация Git flow при коллективной разработке на 1с
Адаптация Git flow при коллективной разработке на 1с
 
статические анализаторы кода за и против
статические анализаторы кода  за и противстатические анализаторы кода  за и против
статические анализаторы кода за и против
 
Организация процесса тестирования в Agile команде с помощью матрицы квадранто...
Организация процесса тестирования в Agile команде с помощью матрицы квадранто...Организация процесса тестирования в Agile команде с помощью матрицы квадранто...
Организация процесса тестирования в Agile команде с помощью матрицы квадранто...
 
Cтатические анализаторы систем 1с AgileDays 2015
Cтатические анализаторы систем 1с AgileDays 2015Cтатические анализаторы систем 1с AgileDays 2015
Cтатические анализаторы систем 1с AgileDays 2015
 
Адаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктовАдаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктов
 

Similaire à Как мы экспериментируем в больших микросервисных системах

Как капля здравого смысла может спасти проект внедрения СЭД?
Как капля здравого смысла может спасти проект внедрения СЭД?Как капля здравого смысла может спасти проект внедрения СЭД?
Как капля здравого смысла может спасти проект внедрения СЭД?
DocTrix Product Line
 
Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)
Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)
Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)
Iosif Itkin
 
CI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crm
Roman Savran
 

Similaire à Как мы экспериментируем в больших микросервисных системах (20)

TMPA-2015: Automated process of creating test scenarios for financial protoco...
TMPA-2015: Automated process of creating test scenarios for financial protoco...TMPA-2015: Automated process of creating test scenarios for financial protoco...
TMPA-2015: Automated process of creating test scenarios for financial protoco...
 
TMPA-2015 > Автомитизирование создание тест-кейсов для тестирования соединени...
TMPA-2015 > Автомитизирование создание тест-кейсов для тестирования соединени...TMPA-2015 > Автомитизирование создание тест-кейсов для тестирования соединени...
TMPA-2015 > Автомитизирование создание тест-кейсов для тестирования соединени...
 
Подходы к мониторингу информационных систем
Подходы к мониторингу информационных системПодходы к мониторингу информационных систем
Подходы к мониторингу информационных систем
 
Как капля здравого смысла может спасти проект внедрения СЭД?
Как капля здравого смысла может спасти проект внедрения СЭД?Как капля здравого смысла может спасти проект внедрения СЭД?
Как капля здравого смысла может спасти проект внедрения СЭД?
 
Tools to ensure quality of information system
Tools to ensure quality of information system Tools to ensure quality of information system
Tools to ensure quality of information system
 
AgileDays 2016. Внедрение Agile в Банке
AgileDays 2016. Внедрение Agile в БанкеAgileDays 2016. Внедрение Agile в Банке
AgileDays 2016. Внедрение Agile в Банке
 
Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)
Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)
Devexperts FIX Test Automation at TMPA-2014 (Trading Systems Testing)
 
MSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureMSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on Architecture
 
Презентация RPA
Презентация RPAПрезентация RPA
Презентация RPA
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
 
Средства автоматизации в процессе разработки
Средства автоматизации в процессе разработкиСредства автоматизации в процессе разработки
Средства автоматизации в процессе разработки
 
paper BPM on Rails4
paper BPM on Rails4paper BPM on Rails4
paper BPM on Rails4
 
«Облака» под контролем: как эффективно оценить производительность облачных т...
«Облака» под контролем:  как эффективно оценить производительность облачных т...«Облака» под контролем:  как эффективно оценить производительность облачных т...
«Облака» под контролем: как эффективно оценить производительность облачных т...
 
CI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crm
 
Обеспечение и контроль качества услуг
Обеспечение и контроль качества услугОбеспечение и контроль качества услуг
Обеспечение и контроль качества услуг
 
Freelance - система РСУ от компании АВВ
Freelance  - система РСУ от компании АВВFreelance  - система РСУ от компании АВВ
Freelance - система РСУ от компании АВВ
 
Ядро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуруЯдро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуру
 

Plus de EatDog

Plus de EatDog (20)

Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем?
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizons
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in Kotlin
 
Быстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKБыстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELK
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластер
 
Кодстайл и насилие.
Кодстайл и насилие. Кодстайл и насилие.
Кодстайл и насилие.
 
Refactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorRefactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project Reactor
 
GraphQL: APIs the New Way.
GraphQL: APIs the New Way.GraphQL: APIs the New Way.
GraphQL: APIs the New Way.
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.
 
Microservices in a Wild.
Microservices in a Wild.Microservices in a Wild.
Microservices in a Wild.
 
Dependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksDependency Rejection and TDD without Mocks
Dependency Rejection and TDD without Mocks
 
Стероиды для Дотнетчика
Стероиды для ДотнетчикаСтероиды для Дотнетчика
Стероиды для Дотнетчика
 
Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.
 
OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практике
 
Mapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыMapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные карты
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
 

Как мы экспериментируем в больших микросервисных системах