Что означает для разработчика приложения запуск приложения в Kubernetes?
Как правило, разработчики приложений, например J2EE, не уделяют приоритетного внимания вопросам инфраструктуры при разработке приложения. Трудно взаимодействовать с традиционной непрограммируемой инфраструктурой. Традиционный подход заключается в создании файла.war, который затем можно запустить на сервере приложений, таком как JBoss. Традиционные фреймворки, такие как Spring (за исключением нового варианта Spring Cloud), принимают это за предпосылку. Теперь, если имеется отказоустойчивое, эластичное время выполнения развертывания, которое предоставляется, например, Kubernetes, создается впечатление, что при написании бизнес-приложения таким же образом игнорируются такие возможности, как планирование, которые предоставляются средой выполнения. Конкретный вопрос: типично ли для приложений говорить (и извлекать выгоду) из API среды выполнения (т. Е. Kubernetes, Mesos и т. Д.)? Если да, не могли бы вы указать хороший пример. Большинство ресурсов, которые я нашел, сосредоточены на стороне Ops больше, чем на Dev.
1 ответ
Нет, смысл Kubernetes в том, что ваше приложение не должно "знать" об этом. (У Mesos больше философии "приложения должны знать о нас".)
В Kubernetes каждый модуль просто запускается и слушает порт. Приложение не регистрирует свое присутствие и даже не сообщает, какая у него версия. Когда ему необходимо связаться с другой службой, он использует DNS (или даже фиксированный IP-адрес службы), чтобы найти LB для этой нисходящей службы.
Обычно разработчики приложений не уделяют приоритетного внимания проблемам инфраструктуры при разработке приложения.
В общем, есть только две вещи, о которых нужно беспокоиться:
1) Сделайте ваш сервис без сохранения состояния, чтобы вы выдвигали состояние до краев (базы данных и / или клиенты). Это позволяет Kubernetes "масштабировать" ваше приложение, запуская больше копий. Государственные услуги практически невозможно масштабировать.
2) Разбейте ваше приложение на несколько "микросервисов", чтобы вы могли масштабировать функцию "просмотр продукта" без масштабирования функции "вход в систему".
3) Опционально: направляйтесь в сторону 12факторных приложений.