SlideShare a Scribd company logo
Dmitry Semenov
mxnr@upwork.com
Symfony in Upwork Enterprise
Architecture
- До мая 2015 oDesk и Elance
- Крупнейшая в мире фриланс биржа
- 14 миллионов фрилансеров
- 7 миллионов клиентов
- 5 миллиона постов с работой за последние полгода
@mxnr
github.com/mxnr
mxnr@upwork.com
Что такое Enterprice
• Стартап внутри компании
• Обслуживание корпоративных клиентов
Особые инструменты
• Помощь
• Дополнительный контроль
Что такое Enterprice
Symfony в архитектуре Upwork Enterprise
Архитектура
• AWS
• Java microservices on the backend(Agora)
• PHP 7.1 и Symfony microservices on the
middleware(Agate)
• Angular 1 (& Vue.js migration) on the front
• Custom Bootstrap (Air 2)
Java Backend
• AS layer
• Auth REST endpoints
• DS layer
• Inner REST API’s
Передача данных из Java -
Apache Thrift
- Open source проект компанией Apache Software
Foundation.
- Двоичный протокол связи
enum PhoneType {
HOME,
WORK,
MOBILE,
OTHER
}
struct Phone {
1: i32 id,
2: string number,
3: PhoneType type
}
Thrift Definition File и Types
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
Коммуникация между Backend и UI
слоем - Phystrix
• Паттерн Команда
Доступен в опенсорсе
github.com/upwork/phystrix
Symfony в архитектуре Upwork Enterprise
UI->backend communication:
Consul & Prana
• Consul - auto UI-service discovery
• Prana proxy for Eureka - Netflix oss java service
registry
• Абстракция коммуникаций
• Fallbackи
Symfony в архитектуре Upwork Enterprise
Prana + Phystrix
Symfony в архитектуре Upwork Enterprise
- 2.8
- Каждая страница - отдельное Agate приложение
со своей инфраструктурой и командой
-~120 бандлов на приложение
- UI-Components
Бандлы, бандлы, бандлы
Как Enterprise команда делает
интеграции в другие приложения
• Бандл с внутренним вызовом AS
• AngularJS модуль с /api вызовом
Symfony в архитектуре Upwork Enterprise
• Рефакторинг в контексте бандла который используется на
множестве приложений и имеет кросс-функциональные
зависимости
• Множество мелких бандлов с целевой функциональность,
гораздо лучше чем один большой
Рефакторинг
Symfony в архитектуре Upwork Enterprise
Тестирование
• Phpunit + Prophecy
• Integration testing
• Mocha, Chai, Sinon
You need it - you create it
Хочешь чтобы твои интеграции не отваливались?
Напиши юнит тест
• Круглосуточное дежурство
• Менеджмент инцидентов и отчеты по каждому из них
• DeepHealthCheck bundle
Мониторинг доступности
Continuous Integration
&Continuous Deployment
- Запуск тестов
- Сбор статистики по качеству кода
- Деплой по расписанию
- Компиляция серверного окружения
Symfony в архитектуре Upwork Enterprise
Whats next?
JS -> AS -> DS ?
https://jamstack.org
JavaScript
Any dynamic programming during the request/
response cycle is handled by JavaScript,
running entirely on the client. This could be any
frontend framework, library, or even vanilla
JavaScript.
APIs
All server-side processes or database actions
are abstracted into reusable APIs, accessed
over HTTP with JavaScript. These can be
custom-built or leverage third-party services.
Markup
Templated markup should be prebuilt at deploy
time, usually using a site generator for content
sites, or a build tool for web apps.
А еще мы ищем Angular +
Symfony девелоперов
mxnr@upwork.com
Спасибо!:)
Вопросы?
@mxnr
github.com/mxnr
mxnr@upwork.com

More Related Content

PPTX
Андрей Чебукин "Построение успешных API"
PPTX
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
PDF
Максим Пугачев
PPTX
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
PPTX
Самодиагностика сервисов на базе платформы .NET
PPTX
03 update of jira confluence
PPTX
Александр Белоцерковский
PPTX
Александр Афенов
Андрей Чебукин "Построение успешных API"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Максим Пугачев
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
Самодиагностика сервисов на базе платформы .NET
03 update of jira confluence
Александр Белоцерковский
Александр Афенов

What's hot (20)

PDF
Winium — это как Selenium, только под Windows
PPTX
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
PDF
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
PDF
Игорь Кашкута
PDF
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
PPTX
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
PPTX
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
PPTX
Интеграция TeamCity и сервера символов | Алексей Соловьев
PDF
Олег Савкин
PDF
Денис Чистяков: Workflow. Работа над проектом в Яндексе
PPTX
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
PPTX
Организация workflow в трекере TFS | Алексей Соловьев
PPT
Алексей Кабанов
PDF
Тестируем мобильное приложение в суровых реалиях Интернета
PDF
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
PDF
Денис Паясь
PPTX
2014 ALM Summit - ALM and 1C
PPTX
.NET Core в современных проектах
PPTX
QA Fest 2016. Татьяна Люлюченко. Немного о мобильных браузерах
PDF
«Тестируем веб приложения», Павел Сташевский
Winium — это как Selenium, только под Windows
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
Игорь Кашкута
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
Интеграция TeamCity и сервера символов | Алексей Соловьев
Олег Савкин
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Организация workflow в трекере TFS | Алексей Соловьев
Алексей Кабанов
Тестируем мобильное приложение в суровых реалиях Интернета
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Денис Паясь
2014 ALM Summit - ALM and 1C
.NET Core в современных проектах
QA Fest 2016. Татьяна Люлюченко. Немного о мобильных браузерах
«Тестируем веб приложения», Павел Сташевский
Ad

Similar to Symfony в архитектуре Upwork Enterprise (20)

PDF
Дмитрий Семенов "Архитектура Upwork"
PDF
Павел Брылов, Skype
PPT
Использование Symfony
PPT
[JAM 1.1] Symfony (Alexei Yanochkin)
PDF
Symfony2 Best Practices
PDF
Lviv PMDay 2016 S Микита Семенов: Як привести великий проект до успіху? Від і...
PPTX
1_symfony_introduction.pptx
PDF
Микросервисный фронтенд
PDF
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
PPTX
DersuDev #1 2015 - Continous Integration
PPTX
Опыт построения микросервисной архитектуры в цифровом банке
PDF
Python Development process in Yandex
PDF
Процессы разработки в Яндексе
PDF
"Девопс - это не только для программистов. Практические примеры из жизни одно...
PDF
Continuous integration
PDF
RESTful API development with Symfony2
PDF
Поддержка сайта Мегафон.ру
PDF
PUG #9 at OWOX: Symfony 4. Новый подход к созданию приложений
PDF
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
Дмитрий Семенов "Архитектура Upwork"
Павел Брылов, Skype
Использование Symfony
[JAM 1.1] Symfony (Alexei Yanochkin)
Symfony2 Best Practices
Lviv PMDay 2016 S Микита Семенов: Як привести великий проект до успіху? Від і...
1_symfony_introduction.pptx
Микросервисный фронтенд
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
DersuDev #1 2015 - Continous Integration
Опыт построения микросервисной архитектуры в цифровом банке
Python Development process in Yandex
Процессы разработки в Яндексе
"Девопс - это не только для программистов. Практические примеры из жизни одно...
Continuous integration
RESTful API development with Symfony2
Поддержка сайта Мегафон.ру
PUG #9 at OWOX: Symfony 4. Новый подход к созданию приложений
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
Ad

Symfony в архитектуре Upwork Enterprise