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.

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

1,982 views

Published on

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

  • Login to see the comments

Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, 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()? • Решает проблему скорости • Проще в реализации • Нет проблем со связностью • Не решает проблему деплоя • Не дает остальных преимуществ микросервисов

×