O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015

Презентация с доклада Руслана Каримова "Минисервисы или микросервисы в условиях цейтнота"
Конференция UWDC 2015
Секция "Разработка"

  • Entre para ver os comentários

Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015

  1. 1. Микросервисы в условиях цейтнота Минисервисы или микросервисы в условиях цейтнота 2015, Руслан Каримов
  2. 2. Микросервисы в условиях цейтнота • Полмиллиона посещений в месяц • Несколько тысяч заказов в день (десятки тысяч в пике) • Тесная интеграция со сторонними сервисами • Останавливать разработку фич можно, но ненадолго — цейтнот Проект
  3. 3. Микросервисы в условиях цейтнота Вводные данные • LAMP-стек • Yii v.1 • Redis как кэш Технологии:
  4. 4. Микросервисы в условиях цейтнота WTF микросервисы?
  5. 5. Микросервисы в условиях цейтнота Основные фичи заключаются
 в следующем • Устойчивость системы 
 к падениям и ошибкам • Проще поддерживать • Проще деплоить • Проще выкинуть • Проще масштабировать
  6. 6. Микросервисы в условиях цейтнота Причины перехода:
 скорость • Тесная интеграция с другими сервисами • Некоторые очень долгие • Типичные delayed jobs
  7. 7. Микросервисы в условиях цейтнота Причины перехода: 
 деплой 
 и тестирование • Деплой — сложный процесс • Долгий QA • Долгий деплой В Вилларибо: В Виллабаджо: • Легче тестировать • Проще деплоить • Чаще обновления
  8. 8. Микросервисы в условиях цейтнота • Модно • Проще для использования • Сложнее в разработке • Транспорт только HTTP REST: RPC: • Проще в разработке • Сложнее для использования • Сложнее избежать связывания Протокол
  9. 9. Микросервисы в условиях цейтнота JSON-RPC • Прост в работе • Много реализаций
 и библиотек Выглядит примерно так: A light weight remote procedure call protocol. It is designed to be simple!
  10. 10. Микросервисы в условиях цейтнота Транспорт • Уже есть как кэш • Простой • Быстрый
  11. 11. Микросервисы в условиях цейтнота Транспорт. Альтернативы: • HTTP/WebSockets • RabbitMQ • ZeroMQ/Gearman etc.
  12. 12. Микросервисы в условиях цейтнота Общие принципы разделения • Рефакторинг приложения – ослабление связей • Запускайтесь в контексте приложения • Выносите наиболее простые части • Не забудьте про метрики/аналитики
  13. 13. Микросервисы в условиях цейтнота Пишем код • Реализация очередей
 на Redis (RPUSH, 
 BLPOP) • Predis падает • Первая версия 
 – за 15 мин try { $rpcCall = $this->connection-> blPop([$this->queue], 0)[1]; ! echo $rpcCall . PHP_EOL; return $rpcCall; } catch (ConnectionException $e) { $this->resetConnection(); }
  14. 14. Микросервисы в условиях цейтнота Устойчивость к ошибкам. 
 Что делать? • Не париться • Cron • Supervisor • Web-сервер • Другие решения
  15. 15. Микросервисы в условиях цейтнота Тестирование • Специфики нет • Это RPC, обычные Unit-тесты • E2E, функциональные тесты для приложения
  16. 16. Микросервисы в условиях цейтнота Деплой проекта • Куда угодно с общим Redis • Сколько угодно воркеров • Не теряйте данные при рестарте • Надежная очередь • Перехват сигналов • Версионирование • Промежуточные сервисы
  17. 17. Микросервисы в условиях цейтнота Логирование • Раздельные логи средствами приложения • FluentD • ELK
  18. 18. Микросервисы в условиях цейтнота Проблемы:
 порог входа • DevOpsам надо изучать новое • Тестировщикам нужно понимать, что они тестируют • У новых разработчиков нет опыта в работе с микросервисами
  19. 19. Микросервисы в условиях цейтнота Проблемы:
 деплой легче, но сложнее • Нужно думать о взаимодействии сервисов • Решение: При небольшом количестве сервисов это не проблема • Решение: Можно ввести версионность • Решение: Можно писать промежуточные сервисы
  20. 20. Микросервисы в условиях цейтнота Проблемы:
 скрытые связи • Сбор статистики и отчеты • Решение: делаем отдельный микросервис • Решение: делаем интерфейсы
  21. 21. Микросервисы в условиях цейтнота Выводы • Можно запустить микросервисы быстро • Микросервисы приносят с собой проблемы • У этих проблем есть сравнительно простые решения
  22. 22. Микросервисы в условиях цейтнота Руслан Каримов elnoro@jetstyle.ru
  23. 23. Микросервисы в условиях цейтнота Building Microservices http://shop.oreilly.com/product/0636920033158.do
  24. 24. Микросервисы в условиях цейтнота Почему не fastcgi_finish_request()? • Решает проблему скорости • Проще в реализации • Нет проблем со связностью • Не решает проблему деплоя • Не дает остальных преимуществ микросервисов

×