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

Microservice's traps

Microservice's traps

Nikita Galkin

December 02, 2017
Tweet

More Decks by Nikita Galkin

Other Decks in Programming

Transcript

  1. Ловушки микросервисной архитектуры Dec 2, 2017

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

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

  4. 4 Что такое сервисы?

  5. 5 Безгрешные обезьяны

  6. 6 Не грешите, не пишите код* * его уже написали

    за вас
  7. Библиотеки 7 npm install express composer require "laravel/installer" ...

  8. Сервисы 8 brew install mongodb apt-get install postgresql-9.6 service nginx

    restart
  9. Сервисы VS Библиотеки 9 Библиотеки ▰ Куски кода ▰ Взаимодействие

    через языковые вызов ▰ Language specific Сервисы ▰ Исполняемый код ▰ Взаимодействие через процессные вызовы, порты, ... ▰ Language agnostic
  10. 10 Что такое микросервисы

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

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

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

  14. 14 Microservice VS Monolith

  15. 15

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

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

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

  20. 20

  21. 21

  22. Об ожиданиях 22

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

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

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

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

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

  28. 28 Graceful Shutdown

  29. Graceful Shutdown 29

  30. Graceful Shutdown 30 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.
  31. 31 Где мои данные?

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

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

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

  35. 35 Circular Dependency

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

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

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

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

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

  41. 41 MICROSERVICES LEGO

  42. 42

  43. 43

  44. 44

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

  46. 46 DevOps

  47. 47

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

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

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

  51. 51 Microservice design

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

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

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

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

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

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

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

  59. 59 Вам нужен работающий продуктом, с хорошей архитектура

  60. 60 Сначала напишите Monolith

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

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

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