Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Дмитрий Семёнов
Upwork
Архитектура Upwork
- До мая 2015 oDesk и Elance
- Крупнейшая в мире фриланс биржа
- 14 миллионов фрилансеров
- 7 миллионов клиентов
- 5 милли...
@mxnr
github.com/mxnr
mxnr@upwork.com
Legacy Stack
- Perl O(desk)RPC
- Zend on PHP 5.5
- JQuery
- Кастомные css библиотеки
- Деплой на кластер app серверов в да...
Причины миграции
Причины миграции
- Solid архитектура
- Проблемы с релизами
- Блокер в одной части приложения блокирует все
остальные коман...
Требования к новой
архитектуре
- Изоляция рисков
- Разработка, тестирование и деплой независимы
- Доставка фич по мере гот...
Новая архитектура бекенда
Agora
- Замена слоя Perl ORPC Java микросервисами
- Использование опенсорс наработок Netflix
- Hy...
Новая архитектура UI Agate
- PHP и Symfony с множеством бандлов
- Bootstrap
- Angular (1 и 2)
- Миграция на 2.8
- Каждая страница - отдельное Agate приложение
со своей инфраструктурой
-~120 бандлов на приложение
- UI...
Коммуникация между Backend и UI
слоем - Phystrix
- Основан на Netflix Hystrix
Коммуникация между Backend и UI
слоем - Phystrix
- Паттерн Команда
Коммуникация между Backend и UI
слоем - Phystrix
- Паттерн Circuit breaker
- Fallback
Пример Phystrix команды
use OdeskPhystrixAbstractCommand;
class MyCommand extends AbstractCommand
{
protected $name;
publi...
Вызов команды
$myCommand = $phystrix->getCommand('MyCommand', 'Dima');
$result = $myCommand->execute();
Коммуникация между Backend и UI
слоем - Phystrix
Доступен в опенсорсе
github.com/upwork/phystrix
UI: Prana и Consul
- Prana = Eureka для UI
- Абстракция коммуникаций
- Fallbackи
Prana + Phystrix
[TalentCloud]+url /get/cloud/{id}
Передача данных из Agora
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 Definit...
Тестирование
- PHPUnit
- Mocha&Karma
- Protractor+Selenium
Логирование
Логирование
- Graphite
- Grafana
- NewRelic
- Круглосуточное дежурство
- Менеджмент инцидентов и отчеты по каждому из них
- DeepHealthCheck bundle
Мониторинг доступно...
Continuous Integration
&Continuous Deployment
- Запуск тестов
- Сбор статистики по качеству кода
- Деплой по расписанию
- ...
On the Road 2017
On the Road 2017
А еще мы ищем Angular +
Symfony девелоперов
mxnr@upwork.com
Спасибо!:)
Вопросы?
@mxnr
github.com/mxnr
mxnr@upwork.com
Дмитрий Семенов "Архитектура Upwork"
Дмитрий Семенов "Архитектура Upwork"
Дмитрий Семенов "Архитектура Upwork"
Upcoming SlideShare
Loading in …5
×

Дмитрий Семенов "Архитектура Upwork"

351 views

Published on

В докладе речь пойдет об архитектуре Upwork. Расскажу, как мы мигрировали с монолита на микросервисы. Какие библиотеки и приложения мы используем для взаимодействия между микросервисами. Как связываем и передаем данные между приложениями. Как логируем, мониторим доступность наших приложений и как реагируем на инциденты.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Дмитрий Семенов "Архитектура Upwork"

  1. 1. Дмитрий Семёнов Upwork Архитектура Upwork
  2. 2. - До мая 2015 oDesk и Elance - Крупнейшая в мире фриланс биржа - 14 миллионов фрилансеров - 7 миллионов клиентов - 5 миллиона постов с работой за последние полгода
  3. 3. @mxnr github.com/mxnr mxnr@upwork.com
  4. 4. Legacy Stack - Perl O(desk)RPC - Zend on PHP 5.5 - JQuery - Кастомные css библиотеки - Деплой на кластер app серверов в датацентре
  5. 5. Причины миграции
  6. 6. Причины миграции - Solid архитектура - Проблемы с релизами - Блокер в одной части приложения блокирует все остальные команды и срывает релиз - Устаревший Zend фреймворк который тяжело сапортить и обновлять
  7. 7. Требования к новой архитектуре - Изоляция рисков - Разработка, тестирование и деплой независимы - Доставка фич по мере готовности - Canary, blue/green, автоматический деплой
  8. 8. Новая архитектура бекенда Agora - Замена слоя Perl ORPC Java микросервисами - Использование опенсорс наработок Netflix - Hystrix (Latency tolerance и Fault tolerance библиотека) - изоляция и fallback для сервисов - Eureka (Representational State Transfer) - AWS сервис локатор и балансировщик - Миграция на Amazon AWS
  9. 9. Новая архитектура UI Agate - PHP и Symfony с множеством бандлов - Bootstrap - Angular (1 и 2)
  10. 10. - Миграция на 2.8 - Каждая страница - отдельное Agate приложение со своей инфраструктурой -~120 бандлов на приложение - UI-Components - Общий сервис навигации
  11. 11. Коммуникация между Backend и UI слоем - Phystrix - Основан на Netflix Hystrix
  12. 12. Коммуникация между Backend и UI слоем - Phystrix - Паттерн Команда
  13. 13. Коммуникация между Backend и UI слоем - Phystrix - Паттерн Circuit breaker - Fallback
  14. 14. Пример Phystrix команды use OdeskPhystrixAbstractCommand; class MyCommand extends AbstractCommand { protected $name; public function __construct($name) { $this->name = $name; } protected function run() { return 'Hello ' . $this->name; } }
  15. 15. Вызов команды $myCommand = $phystrix->getCommand('MyCommand', 'Dima'); $result = $myCommand->execute();
  16. 16. Коммуникация между Backend и UI слоем - Phystrix Доступен в опенсорсе github.com/upwork/phystrix
  17. 17. UI: Prana и Consul - Prana = Eureka для UI - Абстракция коммуникаций - Fallbackи
  18. 18. Prana + Phystrix [TalentCloud]+url /get/cloud/{id}
  19. 19. Передача данных из Agora Apache Thrift - Open source проект компанией Apache Software Foundation. - Двоичный протокол связи
  20. 20. enum PhoneType { HOME, WORK, MOBILE, OTHER } struct Phone { 1: i32 id, 2: string number, 3: PhoneType type } Thrift Definition File и Types
  21. 21. Тестирование - PHPUnit - Mocha&Karma - Protractor+Selenium
  22. 22. Логирование
  23. 23. Логирование - Graphite - Grafana - NewRelic
  24. 24. - Круглосуточное дежурство - Менеджмент инцидентов и отчеты по каждому из них - DeepHealthCheck bundle Мониторинг доступности
  25. 25. Continuous Integration &Continuous Deployment - Запуск тестов - Сбор статистики по качеству кода - Деплой по расписанию - Компиляция серверного окружения
  26. 26. On the Road 2017
  27. 27. On the Road 2017
  28. 28. А еще мы ищем Angular + Symfony девелоперов mxnr@upwork.com
  29. 29. Спасибо!:) Вопросы? @mxnr github.com/mxnr mxnr@upwork.com

×