IT-инфраструктура для бизнеса и творчества
Разработка
ITSumma

Про Kubernetes все уши прожужжали. А нужен ли он вашему проекту?

Недавно мы писали статью на VC про аудит Kubernetes. И получили несколько личных сообщений примерно такого характера: "А вы можете по-человечески объяснить, зачем и в каких случаях этот кубернетис нужен? А то все ставят, все хвалят, а понять, нужен ли он моему проекту, — не получается..."

Здесь я хочу рассказать, кому, когда и зачем может пригодиться Kubernetes. А кому он (пока?) не нужен.

Технически корректный ответ на вопрос «что такое Kubernetes?» — «система для оркестрации контейнезированных приложений» — не особо помогает понять, почему он так популярен в технологических компаниях. Поэтому давайте начнём с того, что попробуем разобраться, почему и для чего компании используют Kubernetes — при этом не прибегая к очевидной формулировке «чтобы управлять контейнерами, зачем же ещё...»

Основная причина использования Kubernetes в компаниях, зарабатывающих на производстве и применении ПО, заключается в том, что изменился подход к разработке. Подход в построении технологических архитектур сместился с больших единых приложений в сторону множества маленьких программ, которые взаимодействуют между собой. Грубо говоря, вместо Microsoft Word разработчики предпочитают делать набор сервисов, наделённых каждый своей функцией, от проверки орфографии до вставки маркированного списка, и объединённых в единую систему. Идея в том, чтобы помогать бизнесу легче внедрять изменения.

Давайте представим, что большое приложение — это дом. В нём нельзя просто убрать одну из стен, другую переместить, а третью переделать на лету из какого-то совершенно иного материала: дом станет неустойчивым или вообще рассыплется. А теперь представим, что приложение похоже на улей. В нём гораздо проще передвигать и изменять соты… Но когда в улье десятки тысяч компонентов, этих микросервисов, и все они работают сами по себе, появляется вопрос: как этим всем управлять? Как узнать, что все они правильно общаются между собой и что ничего не отвалилось? Как не сойти с ума, дирижируя этим оркестром?

Около шести лет назад для этих целей появились специальные системы. Так получилось, что Google и еще несколько компаний выпустили продукт под названием Kubernetes, который оказался гибче и мощнее остальных. Так как его функциональность для управления инфраструктурой различных приложений была шире, Kubernetes набрал большую популярность. Есть и другие решения, например, HashiCorp Nomad и Docker Swarm, но Kubernetes сейчас используется активнее прочих.

Однако бизнесу нужен не Kubernetes как таковой. На идеологическом уровне бизнесу нужна система, которая позволит микросервисной архитектуре не рассыпаться, чтобы бизнес мог постоянно меняться.

Евгений Потапов
CEO ITSumma

С точки зрения бизнеса будет правильнее сказать: «Мы решили быть гибкими, способными легко подстраиваться под запросы рынка и внедрять фичи быстрее конкурентов. И для этого используем подходящую из доступных технологий». А доступная технология, в свою очередь, сейчас это Kubernetes.

«Почему? — Говорят, он всё решит»

Чтобы найти ответ на вопрос "почему?" из заголовка, полезно понять, почему же другие компании стали использовать Kubernetes, какой в этом был бизнес-интерес. Примерить на себя, подходит ли компании переход к микросервисной архитектуре и DevOps. И если да, то имеет смысл внедрить Kubernetes. Но не «внедрить Kubernetes и всё», а изменить процесс разработки.

Исследование DORA's State of DevOps подсказывает, какие понадобятся изменения, и одно из самых существенных — это сокращение цикла разработки от идеи до доставки пользователю. Чем он короче, чем чаще разработчик выкладывает свой код в продакшен-окружение, тем ниже риск аварий и тем выше гибкость. Частые изменения позволяют быстро проверять гипотезы, но при этом, так как они малы, меньше вероятность серьезных аварий. А если всё же что-то пошло не так, изменения легче откатить и устранить последствия аварии.

Успешный бизнес отличают не конкретные технологические решения, а идеологические и процессные. Так, многие технологичные компании добиваются лидерства, внедряя методологию DevOps. DevOps и другие гибкие подходы к разработке позволяют эффективнее использовать ресурсы и не тратить годы на проект, который, неизвестно, выстрелит или прогорит. С помощью изменений, позволяющих проверить жизнеспособность гипотезы, компании, выбравшие такой путь, минимизируют риски. Но для того, чтобы разрабатывать приложения небольшими шагами, нужно подготовить команду разработки. А для этого, в свою очередь, организовать инфраструктуру: развернуть Kubernetes-кластеры или другую систему, которая будет управлять ульем приложений, и адаптироваться к частым изменениям кодовой базы.

Главное бизнес-преимущество DevOps — снижается количество инвестиций на проверку теорий и запуск новой функциональности.

Евгений Потапов
CEO ITSumma

Раньше, когда эксперимент оказывался неудачным и пользователи требовали «вернуть стену», нужно было откатывать всё приложение на предыдущую версию, разворачивать бэкапы, чтобы вернуть структуру данных, и грустить. Теперь же с современными технологиями можно сделать небольшой редизайн и проверить его на части аудитории (часто экспериментируют на отдельных странах, например, Турции), посмотреть на реакцию пользователей и дальше уже по ситуации, распространить на всех, либо немедленно откатить. К тому же в DevOps-идеологии и с использованием возможностей, которые дают Kubernetes и микросервисная архитектура, меньше ресурсов требуется на тестирование. Так как изменения маленькие, то в процессе разработки новой фичи тестирование и анализ занимают небольшое место. Потому что, если окажется, что есть проблема и она простая, — мы исправим её за несколько минут и выкатим новую версию. Если проблема серьезная — быстро откатимся к предыдущей версии и пользователи не пострадают. Если будет ошибка в тестировании — проверим на стране с маленьким трафиком, поймём, что нужно оптимизировать, и пустим больше трафика. Это всё также сокращает цену эксперимента.

В чём польза Kubernetes?

Kubernetes дает унификацию в способе обслуживания всего «улья приложений». Можно сказать, что это задача любой системы оркестрации, но Kubernetes здесь де-факто стандарт. С практической точки зрения распространённость Kubernetes означает уверенность в том, что это решение, которое:

  • стабильно работает;
  • проверено на большом количестве компаний;
  • на рынке труда есть кадры, умеющие с ним работать;
  • продукт поддерживает и развивает большая команда разработки.

Большое сообщество вокруг ПО — важный (если не решающий) момент. Например, вспомним ситуацию с операционными системами лет пятнадцать лет назад: кроме Linux, были ещё FreeBSD, SunOS и др. У них были свои преимущества, но так получилось, что Linux стал популярней. Во многом это произошло, потому что у Linux была большая группа поддержки, многие люди его использовали, работали над улучшениями и продолжают это делать. С технической точки зрения Kubernetes на своём сайте акцентирует внимание на трёх преимуществах. Попробуем объяснить, что все они значат на практике.

  • Масштабируемость любого уровня. С использованием технологий Kubernetes при правильной архитектуре масштабирование происходит автоматически. Если нагрузка выросла, просто добавляем новые узлы, новые серверы, и без проблем обслуживаем больше пользователей. В мире облаков, где добавить новый сервер предельно просто, это суперудобно.
  • Бесконечная гибкость. Неважно, насколько сложно написано приложение, — благодаря Kubernetes, будет легко подстроить структуру. Вся инфраструктура описывается в конфигурационных файлах, на понятном языке, который знает много людей. Это даёт унифицированный доступ к ресурсам кластера и тому, как запускаются и работают приложения. Вторая сторона — это гибкость управления самим приложением. В Kubernetes огромное количество работы сделано за нас, поэтому запуск приложения в продакшен или организация Blue-Green-тестирования не требует перестройки всех систем.
  • Может быть запущен где угодно. Kubernetes как язык эсперанто, на нём говорят все большие облачные провайдеры. Если потребуется сменить провайдера, это будет довольно просто сделать с помощью тех самых конфигурационных файлов. Можно без проблем поднять в AWS такой же кластер, как был в Google Cloud. Это снижает риски, связанные с провайдерами инфраструктуры.

А кроме того, Kubernetes — унифицированная технология, поэтому снижается порог входа новых сотрудников и нет рисков велосипедостроения. Kubernetes применяется в огромном количестве компаний, а значит, не окажется, что всё изначально было сделано неправильно, как может получиться с самописными решениями.

Когда Kubernetes не нужен?

Если вы не знаете, зачем вам Kubernetes, то, вполне возможно, он вам и незачем. Если вы слышите, что все Kubernetes применяют, и думаете, что наверное вам тоже нужно, но не понимаете точно, какую задачу с его помощью собираетесь решать, то Kubernetes вам не нужен. Вопрос, стоит ли применить Kubernetes как техническое решение, примерно такой же, как вопрос, стоит ли перейти с Linux CentOS (упокой господь его душу) на Linux Ubuntu. Фичи там, скорее всего, похожие, и важнее, есть ли в компании люди, которые к этому готовы и которым будет удобнее после перехода, есть ли процессы, которые станут эффективнее, и т.п. Техническое решение в данном случае очень тесно связано с организационными решениями.

Kubernetes не нужен:

  • если приложение хорошо работает, редко обновляется и нет необходимости и желания проводить эксперименты;
  • есть стабильная команда, которая комфортно живет с текущим технологическим стеком, ей неизвестен Kubernetes и нет планов по активному найму.

Но! Даже в этом случае есть два аргумента в пользу того, чтобы попробовать Kubernetes (точнее, попробовать изменить все свои технологические подходы и к администрированию, и к разработке) отчасти под влиянием популярности. Во-первых, технарям всегда хочется технически развиваться и пробовать что-то новое. Это большой вопрос для бизнеса, стоит ли идти на поводу у любопытства сотрудников, но если его игнорировать, то рано или поздно им станет скучно, и они уйдут. Во-вторых, если вы решитесь на внедрение Kubernetes, то расширить штат будет относительно просто. Всё-таки это самая популярная система оркестрации, и через найти в команду Kubernetes-инженера ощутимо проще, чем знатока того же HashiCorp.

Где разворачивать Kubernetes?

Если вы всё-таки берётесь за внедрение Kubernetes, то нужно решить ещё один вопрос: поднимать его на выделенных серверах или в облаке.

Вариант облака предпочтительнее, потому что Kubernetes изначально ориентирован на облачные хостинг-решения. В облаке легко добавлять узлы, изменять конфигурацию и создавать сущности буквально за минуту.

К тому же облачные провайдеры уже справились с болезнями стабильного дискового хранилища, с которыми придётся столкнуться при разворачивании кластера на собственных серверах. Нет смысла набивать собственные шишки, когда есть AWS, Google Cloud, Azure Cloud, DigitalOcean и российские Яндекс.Облако, Selectel, Mail.Ru Cloud Solutions и другие. С точки зрения гибкости, для которой, собственно, и применяется Kubernetes, правильно использовать их.

Какие затраты учесть, готовясь внедрять Kubernetes?

Для компаний разного размера на рентабельность решения будут влиять разные факторы.

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

Средние и крупные компании ждёт тяжелая работа и по подготовке инфраструктуры, и по организационным изменениям. Здесь трудно точно рассчитать все риски и потенциальную пользу и строго определить, при каких условиях начинать внедрение Kubernetes. Но похожая ситуация и с любыми элементами технологического стека, рано или поздно требующими изменений, например, старыми языками программирования. Pearl не то чтобы фундаментально плохой язык программирования, с ним возможно жить. Но ему на смену пришли другие языки, лучше подходящие под современные запросы.

Конечно, стоимость внедрения будет отличаться в зависимости от ситуации и сложности инфраструктуры. Но почти всегда её можно снизить, воспользовавшись облачным хостинг-провайдером, хотя бы за счет того, что не потребуется создавать саму базу инфраструктуры Kubernetes на железных серверах.

Также снизить расходы могут готовые решения. Компании, предоставляющие такие решения, и мы в ITSumma в частности, уже набили шишки, которые не понадобится набивать заново в поисках верного пути. Мы можем проанализировать процессы разработки и найти наиболее удачный канал доставки программного обеспечения в каждом конкретном случае.

Вместо вывода

Если ваша компания до сих пор не перешла к гибким процессам, у вас длинный цикл разработки и вам кажется, что новые фичи слишком медленно доходят до пользователей, то скорее всего пора что-то менять. И прежде всего менять нужно мышление. Наш совет не в том, чтобы использовать Kubernetes, а в том, чтобы изменится так, чтобы вам потребовался Kubernetes или то, что придёт ему на смену.

Если вы по-прежнему не понимаете, почему все вокруг говорят Kubernetes и зачем он конкретно вам — то и нафиг он вам нужен. Серьёзно.

А если не хотите отставать от лидеров, но вам нужна помощь с адаптацией инфраструктуры под работу с контейнеризированными приложениями или с тем, как, собственно, измениться, — вы знаете, как её найти :-)

(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
0 комментариев
Популярные
По порядку
Читать все 0 комментариев
Откуда берут взрослые деревья для парков и улиц

А также сколько они стоят и почему выращивать их — неплохой бизнес.

re:Store продал Macbook Pro с раскладкой azerty и серийный номер ноутбка не совпадает с серийным номером на коробке
И сотрудников тоже касается: кибербуллинг на рабочем месте
Design vector created by pikisuperstar - www.freepik.com
Доказал, что миллиардеры не видят разницы между вином за $500 и $10 тысяч: история Руди Курниавана Статьи редакции

Курниаван продавал подделки под видом редких вин предпринимателям, генеральным директорам и голливудским продюсерам и обманул их более чем на $35 млн.

Руди Курниаван LA Times
Продавец eBay из Кургана стала победителем в финале Всероссийского конкурса «Молодой предприниматель России 2021»

27 ноября в Москве состоялся финал ежегодного конкурса «Молодой предприниматель России 2021». В нём приняли участие предприниматели и самозанятые в возрасте до 35 лет. Всего было подано более 300 заявок из 43 регионов страны.

«Неслучайная случайность», или как рождаются крипто стартапы на примере Freya

Статья носит сугубо ознакомительный характер и не призывает к инвестированию в какие либо активы.

Глава американской компании Better.com уволил 900 сотрудников одним видеозвонком Статьи редакции

«Если вы сейчас смотрите это, значит вы в той невезучей группе, которую увольняют», — сказал работникам директор.

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

Вишал Гарг
Доколе? Уже 3 года ссылки с VC.RU на Facebook никуда не ведут

Если привязать аккаунт Facebook к VC.RU, то в профиле появляется ссылка на эту соцсеть, но она никуда не ведёт. Разработчики VC.RU уже 3 года не могут поправить этот баг, зато выпустили корпоративную звонилку.

Как обманывает Учи.ру, пытаясь заработать больше денег

Сказ о том, как Учи.ру пытается в информационной рассылке под соусом щедрого предложения продать то, что можно на самом сайте купить в два раза дешевле.

SkillFactory раздает подарки: повышенная ставка и новогодний марафон для вебмастеров

В преддверии Нового года мы решили порадовать своих настоящих и будущих партнеров — участников партнерской программы школ Skillfactory, Contented и Product LIVE. Это возможность получить денежный бонус и заодно увеличить прибыль от продажи наших курсов.

Дайджест новостей Сбера: сайт Digital Пётр, сценарии для умного дома и платина от Forbes

Прошлый дайджест мы целиком посвятили 180-летию Сбера, поэтому новостей накопилось много. Среди них — запуск сайта по распознаванию рукописей Петра I, большое обновление на платформе умного дома Sber и другие. Рассказываем всё самое интересное.

Картинка, сгенерированная ruDALL-E по запросу «рыжий котик»
null