Почему приложение 12 Factor должно быть автономным?

В статье 12 Factor о привязке портов http://12factor.net/port-binding есть требование чтобы каждое приложение было автономным и не вводило среду выполнения, например. Кот. По какой причине это рекомендуется... каковы преимущества автономных приложений для микросервисов?


person WilliamMartin    schedule 21.10.2014    source источник


Ответы (2)


Чтобы понять правила, касающиеся привязки портов и автономных приложений, полезно взглянуть на вещи с точки зрения платформ, предназначенных для запуска 12-факторных приложений, таких как Heroku или Deis.

Эти платформы масштабируют приложения на уровне процессов. Когда процессы масштабируются, платформа пытается разместить этих дополнительных рабочих за сеткой маршрутизации, чтобы они могли начать обслуживать трафик. Если приложение не является автономным и, например, тесно связано с интерфейсным сервером Apache с помощью mod_jk, его невозможно масштабировать, запуская более изолированные рабочие процессы.

Привязка портов существует для решения проблемы «посредника портов» на уровне платформы. Если бы каждый рабочий приложения прослушивал порт 80, были бы конфликты. Чтобы решить эту проблему, привязка порта — это соглашение, в соответствии с которым приложение прослушивает порт, выделенный платформой, и который передается как переменная среды $PORT. Это гарантирует: а) рабочий процесс приложения прослушивает правильный порт и б) платформа знает, куда направить трафик, предназначенный для этого рабочего процесса.

person gabrtv    schedule 26.11.2014

Я думаю, потому что это дает вам большую гибкость, когда приходит время масштабировать ваше приложение. Если вы используете tomcat, вам придется скопировать свой .war и поместить его в другой tomcat, а затем сбалансировать ваши запросы к любому из них.

Вместо этого, если ваше приложение имеет автономный http-сервер, вы можете просто запустить другой экземпляр в другом порту и забыть обо всех этих вещах tomcat. Вам все равно придется сбалансировать запросы к любому из экземпляров вашего приложения, но это выглядит более прямолинейно.

person danielrvt    schedule 22.10.2014
comment
Вы можете использовать встроенный tomcat или встроенный причал, чтобы раскрыть свой сервис. - person Aravind Yarram; 03.11.2014