Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ловушки микросервисной архитектуры

Ловушки микросервисной архитектуры

Nikita Galkin

October 14, 2017
Tweet

More Decks by Nikita Galkin

Other Decks in Programming

Transcript

  1. Никита Галкин GlobalLogic Ловушки микросервисной архитектуры

  2. Никита Галкин Верю, что: ▰ Любая проблема должна решаться на

    нужно уровне ▰ Сложности не в технологиях, сложности в людях ▰ Проблемы надо обсуждать, идеи – продавать, а решения – демонстрировать 2
  3. Никита Галкин 3

  4. 4 Всё уже написано

  5. Читайте! 5 ▰ Развертывание ▰ Тестирование ▰ Мониторинг ▰ Безопасность

    ▰ Масштабирование ▰ И т.д.
  6. Читайте! 6 ▰ martinfowler.com ▰ microserviceweekly.com ▰ Awesome microservices

  7. Используйте Awesome при поиске 7 Awesome ===

  8. Используйте Awesome при поиске 8 Awesome ===

  9. 9 Всё уже написано, но никто не читал

  10. 10

  11. 11 Вам не нужны микросервисы* * скорее всего

  12. 12 Технологический стэк

  13. 13 Набор инструментов, которые вы используете

  14. 14

  15. None
  16. Об ожиданиях 16

  17. Технологический стэк 17

  18. 18 Микросервисная архитектура это подход

  19. Технологический стэк 19 ▰ Сферы с подходами и инструментами ▻

    Architect, FE, BE, QA, DevOps, misc ▰ Подходы с описанием ▻ Микросервисы, Нагрузочное тестирование ▰ Инструменты с конкретными версиями ▻ Node.js 8.2.1, npm 5.3.0
  20. 20 Берите подходы и инструменты, которые знаете

  21. 21 Учитесь на одном микросервисе

  22. 22 Graceful Shutdown

  23. Graceful Shutdown 23

  24. Graceful Shutdown 24 For graceful shutdown application should: 1. Log

    start of graceful shutdown. 2. Close incoming business logic flow. For example: stop accepting new tasks for processing from queue, stop handling new incoming http requests, etc. 3. Set a forced timeout for completion current tasks or save them for future processing. Recommended value for this timeout is not more then 5 second. 4. Notify consumers about shutdown. For example: send heartbeat-shutdown. 5. Correctly disconnect from all connections. For example: database, RabbitMQ, Redis, etc. 6. Log finish of graceful shutdown and stop the process.
  25. 25 Где мои данные?

  26. 26 Выключатся? Не, не слышал.

  27. Интерфейс микросервиса 27 interface Microservice { public function start(); public

    function stop(); }
  28. 28 Микросервис будет выключаться/удаляться

  29. 29 Circular Dependency

  30. Типичная ситуация 30 Зависимостей много Всё зависит от всего Никто

    не помнит, а как архитектура должна была выглядеть
  31. 31

  32. А потом... 32 <Keitaro> [22:31] [Keitaro PING reply]: 4hrs 49mins

    24secs <Keitaro> HOW DO YOU LIKE THAT? <CaH4e3> пинг заблудился <CaH4e3> возвращение блудного пинга
  33. 33 Типичная архитектура

  34. 34 Обновляйте вашу архитектурную документацию

  35. 35 MICROSERVICES LEGO

  36. 36

  37. 37

  38. 38

  39. 39 Типовые задачи не требуют микросервисов, они требуют типовых решений

  40. 40 DevOps

  41. 41 Типичная архитектура

  42. 42 DevOps это процесс DevOps Engineer это человек

  43. 43 QA это процесс QA Engineer это человек

  44. 44 Микросервис требуют качественных процессов

  45. 45 Microservice design

  46. Типичная ситуация 46 4 команды Один язык программирования 15 микросервисов

    со старта
  47. Типичная ситуация 47 4 команды Один язык программирования 15 микросервисов

    со старта 15 различных вариантов архитектуры кода
  48. 48

  49. 49 Стандартизация это тоже процесс

  50. Наш подход 50 Linting кода BCE pattern для организации структуры

    Docker для доставки Обсуждение процессов на ретро
  51. Наш подход 51 Linting кода BCE pattern для организации структуры

    Docker для доставки Обсуждение процессов на ретро Monolith First
  52. 52 Сначала напишите Monolith

  53. 53 СПАСИБО! НЕ ИСПОЛЬЗУЙТЕ МИКРОСЕВИСЫ! Вы можете найти меня на

    твиттере @galk_in Слайды доступны speakerdeck.com/galkin Или на моем сайте galk.in
  54. Наш подход 54 Boundary - транспортный уровень Control - бизнес

    логика Entity - представления