При переходе к распределённым системам с большим количеством инстансов сервисов в полный рост встают проблемы их обнаружения (**service discovery**) и балансировки запросов (**load balancing**) между ними. Как правило, для их решения используются такие специализированные инструменты как [**Consul**][1], [**Eureka**][2] или старый добрый [**Zookeeper**][3], в сочетании с **Nginx**, **HAProxy** и некоторым мостом между ними (см. [**registrator**][4]).
Основная проблема в подобном подходе это большое количество интеграций, и, как следствие, точек где что-то может пойти не так. Ведь помимо вышеупомянутых решений наверняка будет использоваться локальный маленький **PaaS** (например [**Mesosphere Marathon**][5] или **Kubernetes**). Последние, к слову, уже хранят необходимую конфигурацию об окружении (ведь через них идёт весь деплоймент). И встаёт вопрос, а можем ли мы отказаться от специализированных инструментов для **service discovery** и переиспользовать тот же **Marathon** для этой задачи?
Краткий ответ — можем. Если интересно как — читайте дальше.
[Читать дальше →][6]
[1]:
https://www.consul.io/
[2]:
https://github.com/Netflix/eureka
[3]:
https://zookeeper.apache.org/
[4]:
https://github.com/gliderlabs/registrator
[5]:
https://mesosphere.github.io/marathon/
[6]:
https://habrahabr.ru/post/325714/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut