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

What's hot (20)

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

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

PDF
Дмитрий Семенов "Архитектура Upwork"
Fwdays
 
PDF
Павел Брылов, Skype
Ontico
 
PPT
Использование Symfony
Media Gorod
 
PPT
[JAM 1.1] Symfony (Alexei Yanochkin)
Evgeny Kaziak
 
PDF
Symfony2 Best Practices
Mikhail Prosalov
 
PDF
Lviv PMDay 2016 S Микита Семенов: Як привести великий проект до успіху? Від і...
Lviv Startup Club
 
PPTX
1_symfony_introduction.pptx
rdninc
 
PDF
Микросервисный фронтенд
Viacheslav Slinko
 
PDF
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Ontico
 
PPTX
DersuDev #1 2015 - Continous Integration
Igor Karpovich
 
PPTX
Опыт построения микросервисной архитектуры в цифровом банке
CUSTIS
 
PDF
Python Development process in Yandex
aviatakz
 
PDF
Процессы разработки в Яндексе
Andrey Kazarinov
 
PDF
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
PDF
Continuous integration
Grigoriy Ostrovskiy
 
PDF
RESTful API development with Symfony2
Taras Omelianenko
 
PDF
Поддержка сайта Мегафон.ру
Михаил Горюнов
 
PDF
PUG #9 at OWOX: Symfony 4. Новый подход к созданию приложений
Анна Магас
 
PDF
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON
 
Дмитрий Семенов "Архитектура Upwork"
Fwdays
 
Павел Брылов, Skype
Ontico
 
Использование Symfony
Media Gorod
 
[JAM 1.1] Symfony (Alexei Yanochkin)
Evgeny Kaziak
 
Symfony2 Best Practices
Mikhail Prosalov
 
Lviv PMDay 2016 S Микита Семенов: Як привести великий проект до успіху? Від і...
Lviv Startup Club
 
1_symfony_introduction.pptx
rdninc
 
Микросервисный фронтенд
Viacheslav Slinko
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Ontico
 
DersuDev #1 2015 - Continous Integration
Igor Karpovich
 
Опыт построения микросервисной архитектуры в цифровом банке
CUSTIS
 
Python Development process in Yandex
aviatakz
 
Процессы разработки в Яндексе
Andrey Kazarinov
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Continuous integration
Grigoriy Ostrovskiy
 
RESTful API development with Symfony2
Taras Omelianenko
 
Поддержка сайта Мегафон.ру
Михаил Горюнов
 
PUG #9 at OWOX: Symfony 4. Новый подход к созданию приложений
Анна Магас
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON
 
Ad

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