В докладе речь пойдет об архитектуре Upwork. Расскажу, как мы мигрировали с монолита на микросервисы. Какие библиотеки и приложения мы используем для взаимодействия между микросервисами. Как связываем и передаем данные между приложениями. Как логируем, мониторим доступность наших приложений и как реагируем на инциденты.
2. - До мая 2015 oDesk и Elance
- Крупнейшая в мире фриланс биржа
- 14 миллионов фрилансеров
- 7 миллионов клиентов
- 5 миллиона постов с работой за последние полгода
6. Причины миграции
- Solid архитектура
- Проблемы с релизами
- Блокер в одной части приложения блокирует все
остальные команды и срывает релиз
- Устаревший Zend фреймворк который тяжело
сапортить и обновлять
7. Требования к новой
архитектуре
- Изоляция рисков
- Разработка, тестирование и деплой независимы
- Доставка фич по мере готовности
- Canary, blue/green, автоматический деплой
8. Новая архитектура бекенда
Agora
- Замена слоя Perl ORPC Java микросервисами
- Использование опенсорс наработок Netflix
- Hystrix (Latency tolerance и Fault tolerance библиотека)
- изоляция и fallback для сервисов
- Eureka (Representational State Transfer) - AWS сервис
локатор и балансировщик
- Миграция на Amazon AWS
9. Новая архитектура UI Agate
- PHP и Symfony с множеством бандлов
- Bootstrap
- Angular (1 и 2)
10. - Миграция на 2.8
- Каждая страница - отдельное Agate приложение
со своей инфраструктурой
-~120 бандлов на приложение
- UI-Components
- Общий сервис навигации
14. Пример Phystrix команды
use OdeskPhystrixAbstractCommand;
class MyCommand extends AbstractCommand
{
protected $name;
public function __construct($name)
{
$this->name = $name;
}
protected function run()
{
return 'Hello ' . $this->name;
}
}