- PVSM.RU - https://www.pvsm.ru -
Всем привет! Перевели для вас статью создателя сообщества AWS Эяля Эстрина о наболевшем — о неудачных решениях при миграции в облако. Стоит отметить, что Эяль описывает собственный профессиональный опыт, и некоторые его утверждения могут показаться вам спорными. Если так и случилось — давайте обсудим в комментариях.
Полезного чтения!

Когда компании только начинают рассматривать возможность переноса своих рабочих нагрузок в облако, они часто представляют его как идеальное решение, которое поможет решить все проблемы с масштабируемостью, доступностью и сокращением расходов на IT. Однако, иногда на пути к своей цели организации принимают неверные решения.
В этой статье мы обсудим наиболее распространённые ошибки в архитектуре при миграции в облако.
Подход Lift-and-Shift подразумевает ускоренный перенос приложения или инфраструктуры из локальной среды в облако без каких-то изменений в коде или архитектуре. Lift-and-Shift позволяет сохранить логику и данные, находящиеся в локальном оборудовании.
Если у вас нет лицензии или особых требований к оборудованию, то перенос легаси-монолита из локальной среды в публичное облако может сработать. Но результат вам, скорее всего, не понравится.
Хотя виртуальные машины и могут прекрасно работать в облаке, в большинстве случаев командам приходится следить за их производительностью и правильно подбирать размер инстансов, чтобы те соответствовали фактической рабочей нагрузке, а, следовательно, и требованиям клиентов.
Подход lift-and-shift хорош в качестве промежуточного решения, пока у компании нет времени и ресурсов на реорганизацию рабочей нагрузки и выбор другой архитектуры, например, микросервисной и бессервисной. Однако если взглянуть на эту стратегию с точки зрения долгосрочной перспективы, то мы увидим, что это довольно затратное решение, которое не позволит использовать все возможности облачных сервисов. К примеру, будут недоступны горизонтальное масштабирование, масштабирование до нуля, отказоустойчивость управляемых сервисов и многие другие).
При разработке современных приложений организации чаще всего стараются следовать тенденциям своей сферы. Один из самых ярких трендов — выбор контейнеров для развертывания различных компонентов приложений. И во многих случаях компании в качестве оркестратора контейнеров выбирают Kubernetes.
Несмотря на многочисленные преимущества Kubernetes и наличие сервисов для управления им у всех ведущих облачных провайдеров, с его использованием связано немало трудностей.
Чтобы полностью понять, как настраивать и обслуживать Kubernetes, требуется очень много времени. Для небольших или предсказуемых приложений, созданных из небольшого числа различных контейнеров, существуют более эффективные и простые в развертывании и обслуживании альтернативы, такие как Amazon ECS, Azure Container Apps или Google Cloud Run. Они проще в освоении и вполне могут справляться с небольшими рабочими нагрузками.
Когда организации начинают искать первые варианты использования публичного облака, они сразу же думают о нём как о месте резервного копирования или даже DR (Disaster Recovery (DR) — это стратегия быстрого восстановление инфраструктуры, приложений и данных после серьёзного сбоя). Эти варианты допустимы, но они не учитывают общую картину.
Если мы планируем использовать объектное хранилище или управляемые службы хранения NFS/CIFS для бэкапов, то мы должны задуматься об этапе восстановления. Перенос больших двоичных файлов резервных копий из облачной среды обратно в локальную будет занимать много времени, не говоря уже о стоимости данных на выходе, вызовов API для чтения объектов и многого другого.
То же самое касается и аварийного восстановления. Если мы создаем резервные копии наших локальных виртуальных машин или даже баз данных в облаке и при этом не имеем резервной площадки в виде аналогичной инфраструктуры в облаке, то как DR поможет нам восстановить работу в случае сбоя?
Большинство приложений разрабатываются на основе внешнего уровня приложения и внутреннего уровня постоянного хранилища данных. Унаследованной или тесно связанной архитектуре требуется низкая задержка между уровнем приложения и уровнем хранилища данных, особенно при чтении или записи в базу данных бэкенда.
Распространенной ошибкой является создание гибридной архитектуры, в которой фронтенд находится в облаке и получает данные из расположенной на локальных серверах базы данных. Ещё один ошибочный, хоть и редкий, сценарий — это архитектура, в которой легаси-приложение на локальных серверах подключается к управляемой службе базы данных в облаке.
За исключением случаев, когда целевое приложение не подвержено задержкам в сети, всегда рекомендуется проектировать все компоненты близко друг к другу, чтобы уменьшить задержку в сети между ними.
Многие компании рискуют оказаться в ситуации вендор локин (vendor lock-in), когда клиенты конкретного поставщика облачных услуг становятся привязаны к его экосистеме. Главная проблема вендор локин — это стоимость перехода от одного облачного провайдера к другому.
Мультиоблачность не устранит этот риск, а лишь создаст ещё дополнительные проблемы. Среди них — нехватка навыков команды работать с экосистемами разных облачных провайдеров, организация централизованного управления идентификацией и доступом, сложности с реагированием на инциденты в нескольких облачных средах, высокая стоимость трафика на выходе и многое другое.
Вместо того чтобы разрабатывать сложные архитектуры для снижения теоретических или потенциальных рисков, разрабатывайте решения для удовлетворения потребностей бизнеса. Ознакомьтесь с экосистемой одного провайдера публичного облака, а со временем, когда ваши команды получат достаточно знаний о более чем одном облачном провайдере, расширяйте свою архитектуру. Если коротко: не переходите на мультиоблачность с первого дня.
Конечно, стоимость — важный фактор при выборе региона. Но вы должны разработать архитектуру, в которой приложение и данные будут располагаться рядом с клиентами, чтобы снизить сетевые задержки.
Если ваше приложение обслуживает клиентов по всему миру или в нескольких регионах, рассмотрите возможность добавления CDN (Content Delivery Network — это географически распределённая сетевая инфраструктура, обеспечивающая быструю доставку контента пользователям веб-сервисов и сайтов) в сочетании с мультирегиональными решениями (например, межрегиональной репликацией, глобальными базами данных, глобальными балансировщиками нагрузки и т. д.), чтобы держать весь статический контент поближе к клиентам.
Если в традиционных центрах обработки данных мы проектировали архитектуру приложения и сохраняли ее статичной на протяжении всего жизненного цикла приложения, то при разработке современных приложений в облаке мы должны придерживаться динамического . Это значит, что нужно постоянно пересматривать архитектуру, анализировать прошлые решения и смотреть, могут ли новые технологии или новые сервисы предоставить более подходящие решения для работы приложения.
Динамичная природа облака в сочетании с развивающимися технологиями дает нам возможность вносить изменения и находить лучшие способы запускать приложения быстрее, устойчивее и экономичнее.
Это ловушка, в которую попадают многие архитекторы. Имея опыт работы с определенным облачным провайдером, они проектируют архитектуру на основе его экосистемы, таким образом принимая предвзятые решения, которые создают ограничения в дизайне архитектуры.
Вместо этого архитекторы должны полностью понимать потребности бизнеса, весь спектр on-cloud решений, траты на обслуживание и возможные ограничения. Только после этого они могут начать выбирать наиболее подходящие сервисы, которые станут частью архитектуры приложения.
Стоимость является важнейшим фактором при использовании облачных сервисов. Основное для пользователя возможность потреблять сервисы именно по требованию (и/или перестать платить за неиспользованные сервисы).
Каждое принимаемое вами решение влияет на стоимость. Вы сможете оценить потенциальные расходы только тогда, когда вы будете понимать модели ценообразования каждого сервиса и осознавать потенциальный рост вашей рабочей нагрузки.
Как мы упоминали ранее, динамичный характер облака может приводить к изменению затрат каждый месяц. Поэтому важно регулярно пересматривать стоимость, периодически заменять сервисы и корректировать их под конкретные рабочие нагрузки.
В публичном облаке существует множество проблем, связанных с выбором правильных сервисов и архитектур для удовлетворения конкретных требований к рабочим нагрузкам и сценариям использования.
Да, при проектировании архитектуры не существует единственно верного решения. Но в этой статье мы увидели множество «неудачных», которых можно избежать, если смотреть на картину в целом и проектировать на долгосрочную перспективу.
Рекомендация для читателей статьи: продолжайте расширять свои знания в области облачных технологий и архитектуры. Советуем регулярно пересматривать свои текущие решения, чтобы со временем выяснить, есть ли более подходящие для них альтернативы.
_____
Спасибо, что прочитали наш перевод! Вот ещё несколько полезных ссылок по теме:
Оптимизируем затраты на облако: 4 лучшие практики FinOps; [2]
Чек-лист по разработке облачных приложений (в двух частях); [3]
Видео: Облако vs on-premise: что выбрать для надёжного бизнеса? (YouTube [4], RuTube [5], VK Video [6])
Автор: SITibekin
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/riski/395124
Ссылки в тексте:
[1] мышления: http://www.braintools.ru
[2] Оптимизируем затраты на облако: 4 лучшие практики FinOps;: https://vc.ru/dev/1289882-optimiziruem-zatraty-na-oblako-4-luchshie-praktiki-finops
[3] Чек-лист по разработке облачных приложений (в двух частях);: https://habr.com/ru/companies/nixys/articles/813949/
[4] YouTube: https://youtu.be/SN1RZCqvtl8
[5] RuTube: https://rutube.ru/video/848d57db84b8c4dda3ebc530c5bf0284/?r=wd
[6] VK Video: https://vk.com/video582880826_456239032
[7] Источник: https://habr.com/ru/companies/nixys/articles/839834/?utm_campaign=839834&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.