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.

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

245 views

Published on

Speech about Symfony in Upwork Enterprise

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Dmitry Semenov mxnr@upwork.com Symfony in Upwork Enterprise Architecture
  2. 2. - До мая 2015 oDesk и Elance - Крупнейшая в мире фриланс биржа - 14 миллионов фрилансеров - 7 миллионов клиентов - 5 миллиона постов с работой за последние полгода
  3. 3. @mxnr github.com/mxnr mxnr@upwork.com
  4. 4. Что такое Enterprice • Стартап внутри компании • Обслуживание корпоративных клиентов
  5. 5. Особые инструменты
  6. 6. • Помощь • Дополнительный контроль Что такое Enterprice
  7. 7. Архитектура • 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)
  8. 8. Java Backend • AS layer • Auth REST endpoints • DS layer • Inner REST API’s
  9. 9. Передача данных из Java - Apache Thrift - Open source проект компанией Apache Software Foundation. - Двоичный протокол связи
  10. 10. enum PhoneType { HOME, WORK, MOBILE, OTHER } struct Phone { 1: i32 id, 2: string number, 3: PhoneType type } Thrift Definition File и Types
  11. 11. Коммуникация между Backend и UI слоем - Phystrix • Паттерн Команда Доступен в опенсорсе github.com/upwork/phystrix
  12. 12. UI->backend communication: Consul & Prana • Consul - auto UI-service discovery • Prana proxy for Eureka - Netflix oss java service registry • Абстракция коммуникаций • Fallbackи
  13. 13. Prana + Phystrix
  14. 14. - 2.8 - Каждая страница - отдельное Agate приложение со своей инфраструктурой и командой -~120 бандлов на приложение - UI-Components
  15. 15. Бандлы, бандлы, бандлы
  16. 16. Как Enterprise команда делает интеграции в другие приложения • Бандл с внутренним вызовом AS • AngularJS модуль с /api вызовом
  17. 17. • Рефакторинг в контексте бандла который используется на множестве приложений и имеет кросс-функциональные зависимости • Множество мелких бандлов с целевой функциональность, гораздо лучше чем один большой Рефакторинг
  18. 18. Тестирование • Phpunit + Prophecy • Integration testing • Mocha, Chai, Sinon
  19. 19. You need it - you create it Хочешь чтобы твои интеграции не отваливались? Напиши юнит тест
  20. 20. • Круглосуточное дежурство • Менеджмент инцидентов и отчеты по каждому из них • DeepHealthCheck bundle Мониторинг доступности
  21. 21. Continuous Integration &Continuous Deployment - Запуск тестов - Сбор статистики по качеству кода - Деплой по расписанию - Компиляция серверного окружения
  22. 22. Whats next? JS -> AS -> DS ?
  23. 23. https://jamstack.org
  24. 24. 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.
  25. 25. А еще мы ищем Angular + Symfony девелоперов mxnr@upwork.com
  26. 26. Спасибо!:) Вопросы? @mxnr github.com/mxnr mxnr@upwork.com

×