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.
Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 36

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

1

Share

Download to read offline

Speech about Symfony in Upwork Enterprise

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

×