Rate this post

Несомненно, каждый разработчик мечтает об удобном построении инфраструктуры для продакшн, когда специалисты не мешают друг другу в работе. Как этого можно добиться с помощью Docker? Рассмотрим такой процесс построения самоорганизующейся инфраструктуры на примере интернет-магазина.n

Этап №1 – анализ сложившейся ситуации

Перед построением самоорганизующейся инфраструктуры следует реально оценить ситуацию, в которой оказалась компания. Например:n

  • наша компания входит в двадцатку топ интернет-магазинов страны;
  • группа разработчиков, в которой насчитывается 25 сотрудников, занимается in-house внутри;
  • единственный админ занимается организацией продакшна (сюда относится и Ansible);
  • используется Amazon, на AWS, на EC

В финале – кризис, Amazon дорожает (поэтому с него приходиться съехать), безответственный админ увольняется, а интернет-магазин продолжает функционировать.n

Этап №2 – постановка целей и определение путей их достижения

Чтобы выйти из создавшейся кризисной ситуации, нашей компании понадобиться определиться с задачами, ведущими к построению самоорганизующейся сервисной инфраструктуры. Хочется получить:n

    n

  1. SOA архитектуру;
  2. организованные небольшие отдельные продуктовые команды (сервисы) в одной большой команде;
  3. DevOps (без админа);
  4. автоматизацию.

nК тому же не помешает уменьшить накладные расходы на эксплуатацию.n

Этап №3 – решение

Остается сделать несколько шагов, и поставленные цели будут достигнуты! Первый шаг — Docker. С его помощью можно для имеющихся контейнеров обустроить внутреннюю сеть относительно дешево. Разъясняем: делая сеть внутри с помощью Docker, поднимая все контейнеры с сетевыми интерфейсами локалки, собираем их в один сетевой мост. При этом появляется возможность самостоятельно указывать:n

  • необходимый мост (на ваш выбор);
  • подсеть для выдачи контейнерам IP-адреса.

Второй шаг – арендовать железо (например, 10 серверов) и свести в локалку – единую сеть. При этом IP разлаживается вручную на действующих машинах с выделенной подсетью.nnТретий шаг – выбрать оптимальный вариант софта в качестве хранилища данных. Можно остановиться на Consul, так как мы самостоятельно занимаемся подъемом контейнеров, также опускаем их, при чем с разными IP. «Плюсы»: выбранный софт отвечает по DNS — Service Discovery, и имеет инструмент Health Checks.nnЧетвертый шаг – выполнить запуск не на одной машине, а сразу на всех. Можно воспользоваться Swarm, чтобы отследить в кластере необходимое число контейнеров.n

Итог

После проделанной работы можно сравнить результаты с поставленными целями. Получили одну большую внутреннюю сеть — локалку:n

  • хост,
  • Docker с контейнерами, видящими друг друга;
  • отдельный Consul с режимом сервера, который функционирует на машинах нашего хоста;
  • запущен агент для регистрации сервиса (Service Discovery+Health Checks).

При этом каждый из контейнеров работает внутри себя, и все функционирует в пределах одного кластера. Это очень удобно в плане мониторинга и отслеживания возможных сбоев. Но специалисты рекомендуют, все же, иметь некоторый запас железа, если случится форс-мажор.nnКак видим, технические решения просты, мир и согласие внутри команды специалистов достигнуты. Результат данной комбинации — удобный сервис для разработчиков. К тому же появляется возможность сэкономить на оплате услуг админа.n

Наша команда занимается внедрением docker и построением ит инфраструктуры любой сложности, обращайтесь [email protected]