Больше не нужно искать работу мечты — присоединяйтесь к команде Клауда

Как ускорить разработку с помощью облачных технологий

Миша Курушин
Миша Курушин
Технический писатель
13 декабря 2023 г.
220
11 минут чтения
Средний рейтинг статьи: 5

С точки зрения компании-разработчика вычислительная инфраструктура, необходимая для разработки и поддержки ПО, может быть двух видов:

Серверы в собственности компании-разработчика

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

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

Плюсы:

  • Полный физический контроль над серверами

  • Высокая безопасность и конфиденциальность данных

Минусы:

  • Денежные расходы на серверное оборудование

  • Денежные расходы на обслуживание (специалисты, оборудование)

  • Необходимость опыта и компетенций для поддержки дата-центров

Серверами управляет другая организация

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

Плюсы:

  • Не требуется собственное оборудование

  • Объем задействованных вычислительные ресурсов гибко настраивается

  • Не нужны опыт и экспертность в области сетевых коммуникаций

Минусы:

  • За безопасность и конфиденциальность данных отвечает поставщик

  • Нет физического контроля над серверами

Что такое облачные технологии?

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

При этом облако принадлежит поставщику облачных ресурсов, который владеет физическими серверами, — «провайдеру».

Несмотря на то, что облака от разных провайдеров имеют свои уникальные особенности, как правило, они обладают одними из следующих базовых компонентов:

  • серверы

  • хранилища

  • базы данных

  • сетевая инфраструктура

  • программное обеспечение

  • средства тестирования и аналитики

Физический и логический уровень

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

Это значит, что обработка информации и сетевых взаимодействий существует поверх физической основы — серверных машин, размещенных в центрах обработки данных (ЦОД).

Именно поэтому с облаком можно гибко настраивать тот объем ресурсов, который необходим для работы конкретного приложения.

Такую архитектуру можно представить иерархически:

  • Логический уровень. Операционные системы, системы виртуализации, контейнеры, серверные приложения, прикладные сетевые протоколы, бизнес-логика, клиентские приложения

  • Физический уровень. Серверные машины, материнские платы, ASIC-контроллеры, низкоуровневые сетевые протоколы

Модели облака

Существует разные виды облака, которые отличаются степенью абстрагирования программного (логического) уровня.

IaaS (инфраструктура как услуга)

Предоставляются только вычислительные мощности без дополнительного ПО — только операционная система.

Примеры:

PaaS (платформа как услуга)

Вместе с вычислительными мощностями предоставляется некоторый набор инструментов для разработки и администрирования.

Примеры:

SaaS (сервис как услуга)

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

Примеры:

Типы облаков

Облака отличаются степенью изолированности — от полностью публичного до полностью приватного. Бывают также смешанные реализации.

Публичное (Public)

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

Частное (Private)

Облако полностью изолировано (иногда даже не подключено к глобальному интернету) и физически размещено на серверном оборудовании пользователя.

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

Гибридное (Hybrid)

Это сочетание частного облака с публичным. Как правило, реализация некой бизнес-логики, содержащей конфиденциальные данные, размещается в приватном облаке, а «периферические» вычисления выполняются в публичном облаке провайдера.

Преимущества облачных технологий

Упрощение разработки

Использование любой из существующих моделей облака однозначно упрощает процесс разработки.

Чем ближе выбранная модель к SaaS, тем проще взаимодействие с облаком, но тем более стандартизированным, общим и типовым является решение.

Чем ближе выбранная модель к IaaS, тем точнее можно сконфигурировать облако, но тем сложнее его будет поддерживать.

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

Например, использование облачных баз данных (DBaaS), которые предоставляет Timeweb Cloud, снимает с разработчика множество обязанностей по управлению собственным хранилищем.

В то время как развертывание кластера БД можно выполнить довольно быстро и просто, его грамотное использование «на длинной дистанции» требует определенных компетенций.

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

При этом важно помнить, что проекты, занимающиеся хранением и обработкой персональных данных, должны соблюдать закон РФ № 152-ФЗ «О персональных данных».

И если самостоятельное выстраивание защищенной инфраструктуры (и ее последующий аудит) может оказаться трудоемкой задачей, серверное оборудование Timeweb Cloud уже соответствует всем требования закона №152 — остается только подключить и использовать.

Оптимизация расходов

В облаке расходы пользователя соответствуют количеству ресурсов, которые используются в его рабочих задачах.

Такая модель оплаты называется «pay-as-you-go» или «pay-as-you-use» (оплата по мере использования) и является основной в облачных вычислениях — плата взимается только за использованные ресурсы.

Если в какой-то момент ресурсов требуется больше обычного, они выделяются в короткие сроки и увеличивают расходы. И наоборот, лишние ресурсы могут быть «возвращены» обратно провайдеру, тем самым снижая расходы.

Иными словами, денежные расходы пользователя коррелируют с количеством задействованных ресурсов. При этом выделение и освобождение ресурсов происходит незамедлительно.

Помимо этого, делегирование управления облачной инфраструктурой провайдеру избавляет разработчика от расходов, связанных с содержанием своего ЦОД:

  • Найм специалистов и администраторов

  • Покупка серверного оборудования

  • Аренда помещений

Ускорение развертывания

Мгновенный доступ к облачным ресурсам и возможность их гибкой настройки позволяет существенно сократить время:

  • От старта разработки MVP нового продукта до его развертывания в рабочей среде

  • От старта разработки новых «фич» до их добавления в готовый продукт

Например, сценарий разработки нового сервиса может выглядеть примерно так:

  • Менеджеры формализуют требования к будущему продукту компании

  • Разработчики определяют технологический стек

  • Компания-разработчик арендует у облачного провайдера необходимые вычислительные ресурсы — облачные серверы, кластеры Kubernetes, объектные хранилища и т.д.

  • Разработчики пишут код, который автоматически «деплоится» в облачной среде провайдера

  • Проводится тестирование нового продукта, собирается обратная связь от пользователей

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

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

1. Выделенный сервер

Аренда выделенного сервера в Timeweb Cloud — наиболее быстрый способ получения облачных ресурсов провайдера.

Управление серверами происходит через терминал командной строки (например, по SSH-соединению) или графический интерфейс веб-сайта.

При этом Timeweb Cloud предоставляет возможность конфигурации ряда важных параметров:

  • Локация дата-центра (Санкт-Петербург, Москва, Польша)

  • Количество ядер

  • Оперативная память

  • Объем хранилища

  • Тип процессора

  • Срок аренды

Тем не менее, по сравнению с облачным сервером (о котором пойдет речь ниже), выделенный сервер является более консервативным вариантом. Тем не менее он дает больше контроля над арендованной машиной.

Балансировщики нагрузки

Для оптимизации нагрузок могут быть полезны сервисы, реализующие балансировку нагрузки — распределение пользовательских запросов между несколькими серверами.

Балансировщик регулярно опрашивает серверы, получая информацию об их состоянии. По этим данным он определяет, какие серверы наименее загружены и перенаправляет на них новые запросы.

Соответствие закону № 152-ФЗ

Для клиентов, которые хранят, собирают и обрабатывают персональные данные пользователей, Timeweb Cloud предлагает специальные условия работы серверов, соответствующие закону «О защите персональных данных» № 152-ФЗ.

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

2. Облачный сервер

Облачные серверы отличаются от выделенных тем, что «физическая» конфигурация настраивается в рамках определенного спектра.

Например, облачные серверы Timeweb Cloud можно параметризировать с помощью конфигуратора. В этом случае стоимость аренды будет соответствовать тем мощностям, которые были выбраны в личном кабинете.

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

3. Облачные базы данных

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

Timeweb Cloud предоставляет большинство популярных СУБД в виде отдельного облачного сервиса:

  • MySQL

  • PostgreSQL

  • Redis

  • MongoDB

Как и в случае с серверами, вычислительные ресурсы под базу данных можно сконфигурировать на основе ряда параметров:

  • Количество ядер

  • Оперативная память

  • Объем диска NVMe

  • Срок аренды

При аренде БД вам не нужно выполнять настройку оборудования, следить за новыми версиями ПО и всячески администрировать базу данных — поддержкой инфраструктуры занимается Timeweb Cloud.

4. Облачное хранилище

Отдельное облачное хранилище (например, «Объектное S3-хранилище» в Timeweb Cloud) может быть полезно для размещения бэкапов, архивов, медиа-файлов или любых других статических файлов.

Доступ к файлам осуществляется через высокоуровневый протокол (например, Amazon S3), основанный на REST API HTTP-соединении, либо через веб-интерфейс.

При этом для безопасности файлы хранятся сразу в нескольких экземплярах (в трех внутри хранилища Timeweb Cloud), чтобы исключить риск их потери.

Резервные копии и аварийное восстановление

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

Зачастую на основных серверах настраивают автоматическое копирование текущего состояния проекта в отдельное безопасное хранилище.

Хостинг статических файлов

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

5. Облачный Kubernetes

Важнейший компонент облачной разработки — автоматизация сборки, развертывания и тестирования на основе CI/CD-конвейеров.

CI/CD является основой методологии DevOps, задача которой автоматизировать внесение изменений в ПО.

Именно облачные сервисы предоставляют необходимые для этого возможности. Например, инфраструктура GitHub CI/CD и GitLab CI/CD обладает специальными облачными инструментами, которые упрощают создание CI/CD-пайплайнов. К их числу относятся среды тестирования, хранилища, функции уведомлений и базы данных.

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

Кластеры Kubernetes от Timeweb Cloud могут оказаться подходящим решением.

В этом случае разработчик избавиться от издержек, связанных с поддержкой собственной инфраструктуры — выполнение Kubernetes-приложения будет «на плечах» Timeweb Cloud.

Заключение

В этой статье мы рассмотрели, что из себя представляет эффективная разработка с использованием облачных сервисов, а также упомянули наиболее популярные инструменты разработчиков:

  • Выделенные серверы

  • Облачные серверы

  • Базы данных

  • Облачные хранилища

  • Инструменты мониторинга (CI/CD, Kubernetes)

В то время, как создание собственных дата-центров требует времени, компетенций и серьезных денежных вложений, облако предоставляется провайдером в уже отлаженном и безопасном виде.

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

Сегодня услуги публичного облака доступны и в тех областях, которые раньше были преимущественно необлачными. Облака внедряются даже в те предприятия, которые не связаны с IT.

Поэтому, облачные технологии не просто ускоряют разработку — они ускоряют цифровую трансформацию в целом.

13 декабря 2023 г.
220
11 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев