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

Микросервисы в контейнерах — опыт использования | Роман Моисеев | AzovDevMeetup 2018

Микросервисы в контейнерах — опыт использования | Роман Моисеев | AzovDevMeetup 2018

В последние годы микросервисная архетиктура набрала большую популярность. Во многом это связано с распространением контейнеризации. Де факто стандартом оркестрации контейнеров стал Kubernetes. Я расскажу о том, как Kubernetes помогает справляться с микросервисами нам, какие есть подводные камни и трюки применительно к микросервисам. В частности:
• Жизненный цикл микросервиса.
• Логи: что логировать, как собирать и анализировать логи.
• Мониторинг и сбор метрик.
• Отладка и troubleshooting.

JSC “Arcadia Inc.”

October 13, 2018
Tweet

More Decks by JSC “Arcadia Inc.”

Other Decks in Programming

Transcript

  1. 2018 О себе • DevOps Engineer c бэкграундом разработчика •

    Опыт коммерческой разработки с 2008 года • Опыт внедрения и поддержки Kubernetes
  2. 2018 Kubernetes • Система оркестрации и управления кластером • Первый

    релиз в 2014 году • Изначально разработан в Google • Ныне в составе CNCF
  3. 2018 Что нам дает Kubernetes • Абстрагирование от "железа", деплоить

    приложения могут разработчики • Абстрагирование от стораджа, он просто есть • Масштабирование • Балансировка нагрузки • Автомасштабирование на основе метрик
  4. 2018 Чем мы занимаемся • Новый проект. Микросервисы, event-driven •

    Несколько языков (NodeJS, C#, Python) • Задача: 100% автоматизация DevOps процессов • Запрет на использование PaaS • Kubernetes как основа инфраструктуры
  5. 2018 Общие требования • Stateless. Сервис, который хранит состояние, не

    масштабируется • Gracefull Shutdown. При убивании сервиса он не должен терять запросы
  6. 2018 Общие требования • Stateless. Сервис, который хранит состояние, не

    масштабируется • Gracefull Shutdown. При убивании сервиса он не должен терять запросы • Конфигурация как часть среды. Например через переменные среды
  7. 2018 Twelve Factor App • 12 факторов построения cloud-native приложения

    • Впервые опубликовано Heroku • Переведено на множество языков • https://12factor.net/ru/
  8. 2018 Логирование • Логируйте, чем больше, тем лучше • При

    этом четко разделяйте уровни (debug, info, notice... etc.)
  9. 2018 Логирование • Логируйте, чем больше, тем лучше • При

    этом четко разделяйте уровни (debug, info, notice... etc.) • Логируйте в stdout, сбор логов - задача среды
  10. 2018 Логирование • Логируйте, чем больше, тем лучше • При

    этом четко разделяйте уровни (debug, info, notice... etc.) • Логируйте в stdout, сбор логов - задача среды • JSON, как формат сообщения
  11. 2018 Логирование • Логируйте, чем больше, тем лучше • При

    этом четко разделяйте уровни (debug, info, notice... etc.) • Логируйте в stdout, сбор логов - задача среды • JSON, как формат сообщения • Разделяйте текст сообщения и контекст, делайте текст статическим.
  12. 2018 Логирование • Логируйте, чем больше, тем лучше • При

    этом четко разделяйте уровни (debug, info, notice... etc.) • Логируйте в stdout, сбор логов - задача среды • JSON, как формат сообщения • Разделяйте текст сообщения и контекст, делайте текст статическим. • Логируйте идентификатор запроса/команды/события
  13. 2018 Мониторинг • Healthcheck http endpoint • Мертвый сервис лучше,

    чем плохо работающий • Мeтрики сервиса - длительность запросов, отдельных функций, длинна очереди, etc.
  14. 2018 Мониторинг • Healthcheck http endpoint • Мертвый сервис лучше,

    чем плохо работающий • Метрики сервиса - длительность запросов, отдельных функций, длинна очереди, etc. • Prometheus exporter (есть на большинстве языков)
  15. 2018 Отладка • Работает локально не значит, что будет работать

    на проде =) • Проверяйте масштабирование
  16. 2018 Отладка • Работает локально не значит, что будет работать

    на проде =) • Проверяйте масштабирование • Minikube https://github.com/kubernetes/minikube
  17. 2018 Отладка • Работает локально не значит, что будет работать

    на проде =) • Проверяйте масштабирование • Minikube https://github.com/kubernetes/minikube • Долгий процесс: сборка образа, пуш, деплой, отладка, сборка, пуш, деплой...
  18. 2018 Отладка • Работает локально не значит, что будет работать

    на проде =) • Проверяйте масштабирование • Minikube https://github.com/kubernetes/minikube • Долгий процесс: сборка образа, пуш, деплой, отладка, сборка, пуш, деплой... • Telepresence https://www.telepresence.io/
  19. 2018 Где взять Kubernetes? • Google GKE https://cloud.google.com/kubernetes- engine/ •

    Amazon EKS https://aws.amazon.com/ru/eks/ • Azure AKS https://docs.microsoft.com/en- us/azure/aks/ • Kubespray https://github.com/kubernetes- incubator/kubespray • Bootkube https://github.com/kubernetes- incubator/bootkube
  20. 2018 Я разраб и я не хочу ничего настраивать •

    CoreOS Tectonic https://coreos.com/tectonic/ • RedHat OpenShift https://www.openshift.com/ • Canonical Kubernetes - https://www.ubuntu.com/kubernetes • IBM Cloud https://www.ibm.com/cloud/private