Разоблачение тайны «облака»
Независимо от того, разбираетесь вы в IT или нет, облачные технологии, скорее всего, уже являются частью вашей повседневной жизни. Возможно, вы храните фотографии и видео в Google Фото? Недавно слушали вебинар в Zoom? Или, может быть, ваша компания использует Slack для обсуждения деловых вопросов? У всех этих примеров есть одна общая черта: хотя бы частично их данные хранятся и обрабатываются онлайн.
Возьмем Microsoft Office: помните, как изначально нужно было один раз купить лицензию и установить на ПК целую гору приложений? А теперь есть еще и Microsoft 365, который вообще не нужно скачивать. Кроме того, сервис работает по подписке, которую можно продлевать по мере необходимости, ежемесячно или ежегодно.
Первый пример — это то, что мы бы назвали традиционным приложением: вы устанавливаете весь пакет программного обеспечения, а ваше устройство затем обрабатывает соответствующие данные и логику. Второй пример — это облачное приложение, где все эти задачи выполняет удаленный сервер. Там же хранятся и данные.
Это и есть «облако» — удаленные сервера, размещенные на них базы данных и работающие там приложения. Кстати, у нас уже есть одна статья о разных видах облаков и их преимуществах. Так что если хотите еще больше подробностей — советуем обратить внимание.
Если вкратце, облака могут быть публичными или частными. Публичное облако доступно более чем одному клиенту. Это как раз та самая экономика совместного потребления в действии: компаниям больше не нужно оборудовать собственные серверные помещения, и они могут делить ресурсы облака с кем-то еще, чтобы минимизировать свои расходы. Конечно, если для приложения нужны дополнительные меры информационной безопасности, можно использовать частное облако, где вся инфраструктура будет закреплена за одним клиентом. Но этот клиент все равно арендует эту инфраструктуру, а не инвестирует в создание собственной.
IaaS, PaaS и SaaS: что это вообще такое?
Инфраструктура — не единственное, что можно взять в аренду. В контексте разработки облачных приложений вы, вероятно, встретите следующие три термина.
IaaS — это как раз аренда инфраструктуры. Поставщики IaaS-решений обслуживают серверы, сети и хранилища данных, а пользователи берут на себя ответственность за все остальное. Поставщики PaaS, в дополнение к инфраструктуре, предлагают все, что необходимо для разработки облачных приложений, включая вычислительное окружение, операционные системы и различные инструменты для разработки, тестирования и развертывания. А поставщики SaaS продают доступ к программному обеспечению, работающему на облачных серверах.
Сегодня многие провайдеры поставляют как IaaS, так и PaaS-решения, поэтому сложно найти примеры соответствующих компаний в чистом виде. Например, мы можем рассматривать Amazon Web Services с их облаком AWS Cloud как одного из поставщиков IaaS. Это действительно так, но компания предлагает также достаточно различных PaaS, например, AWS Elastic Beanstalk, AWS CodeDeploy, AWS Amplify. Есть у них и SaaS, например платформа машинного обучения StageMaker.
С точки зрения пользователя, основным отличием будет объем предоставляемых услуг. Пользователи IaaS получают только инфраструктуру, клиенты PaaS — инфраструктуру и инструменты для разработки приложений, а пользователи SaaS — полностью работающее приложение.
Неудивительно, что большинство облачных приложений — это SaaS, поэтому обычно именно их ассоциируют с облаками. В этой статье, когда мы говорим про «облачные приложения», мы также имеем в виду SaaS, а не другие две модели, которые, по сути, и используются в их разработке. Что же такого особенно в SaaS?
Как облачным приложениям удалось затмить все остальные
Давайте подробнее рассмотрим облачные приложения на примере знакомого всем стримингового сервиса.
Как вы знаете, Netflix — это видеосервис с миллионами подписчиков по всему миру. Подобно многим другим облачным приложениям, он «упакован» как классический SaaS, но сама платформа разработана с использованием комбинации IaaS и PaaS. Netflix является одним из основных клиентов AWS и использует их сервисы для хранения данных, перекодирования видео и даже для своего знаменитого алгоритма персонализированных рекомендаций. У них также есть собственная сеть доставки контента под названием Open Connect, которая, по сути, является примером IaaS.
Примечательно, что хотя SaaS изначально возникли как веб-приложения, в последнее время широкое распространение получили мобильные облачные сервисы. Это связано с тем, как люди сегодня предпочитают получать и потреблять информацию. Некоторыми программами (например, электронными таблицами) по-прежнему удобнее пользоваться с компьютера. Поэтому можно быть уверенными, что поставщики SaaS не откажутся от десктопных версий и, вероятно, будут разрабатывать приложения по крайней мере для двух платформ. Но можно и больше!
Например, в случае Netflix, интеграция платформ — это уже реальность. Сервис предоставляет доступ к своему контенту через приложения, специально разработанные для:
- веб-браузеров;
- ПК;
- мобильных устройств;
- Smart TV;
- игровых приставок;
- Blu-ray плееров.
Это одна из причин, по которой пользователи так любят облачные сервисы, ведь они способны обеспечить вот такой опыт целостного и непрерывного взаимодействия с экосистемой приложения. Давайте посмотрим на другие характеристики.
Характеристики облачных приложений | Как это работает в приложениях Netflix |
1. Более низкие требования к устройствам. Поскольку данные хранятся в облаке, нет необходимости в новейших моделях процессоров. | Существуют некоторые базовые требования к устройствам для приложений Netflix, но скорость Интернета — более важный фактор. |
2. Рациональное потребление. Подписочная модель — популярный способ монетизации таких приложений. Это означает, что пользователям не нужно платить за программное обеспечение, которое они не используют. | Можно отменить подписку на Netflix, если вам стало не до сериалов, или вы уже посмотрели все, что могло вам понравится. |
3. Онлайн и оффлайн синхронизация. Фактически вы можете хранить данные локально, и приложение будет работать в автономном режиме. Как только вы снова подключитесь к сети, приложение синхронизируется с облаком. | В Netflix также доступен оффлайн-просмотр, но вы должны заранее загрузить фильм или сериал на свое устройство. Поскольку вся информация синхронизируется с облаком, вы можете продолжить с того места, на котором остановились, на любом устройстве. |
Облачные приложения, очевидно, достойны любви пользователей. Это, среди прочего, делает разработку облачных приложений столь привлекательной для стартапов.
Что там еще есть хорошего для стартапов?
Помимо возможности быть в тренде и предложить действительное удобное для потенциальных клиентов решение, какие еще дополнительные выгоды несет облачная разработка?
💰 Сокращение затрат | 📈 Масштабируемость | 🌎 Более широкий рынок |
Ваши первоначальные вложения будут ниже, поскольку вам не нужно создавать физическую IT-инфраструктуру. Большинству стартапов все равно не понадобится вся ее мощность, а с облачными сервисами вы платите только за то, что фактически используете. | Вы можете брать в аренду место для хранения и дополнительные вычислительные мощности в соответствии с курсом развития вашего приложения или меняющимся спросом. Ваш проект набирает популярность? Его производительность можно регулировать! | Облачная разработка обеспечивает более высокую доступность приложения благодаря сниженным требованиям к устройствам и подписанной модели оплаты. |
Но не может же все быть так радужно?
Нет ничего идеального, и вам следует знать о некоторых потенциальных рисках и недостатках:
- Барьеры для смены поставщика достаточно высоки. Не выбирайте поставщика облачных услуг случайным образом, ведь сменить его потом может быть непросто. Обычно переход с одной платформы на другую — дорогостоящее мероприятие.
- Некоторые типы приложений не подходят для облачной разработки. Например, идея облачного ПО для некоторых государственных учреждений может быть просто несовместима с регламентами по информационной безопасности.
- Сложнее обеспечить безопасность данных. Присущая облачным приложениям уязвимость — популярный миф: можно с уверенностью сказать, что все приложения подвержены киберугрозам. Однако при облачной разработке со многими угрозами стартап справиться не сможет: если сама облачная платформа несовершенна с точки зрения безопасности, мало что можно сделать. Так что имейте это в виду при выборе поставщика услуг и отдавайте предпочтение надежным провайдерам. Также не лишним будет проконсультироваться с вашим партнером по разработке относительно новейших методов обеспечения безопасности, таких как облачные брандмауэры и шифрование данных.
- Разработка облачных приложений требует некоторых дополнительных навыков. Как минимум, разработчики должны иметь представление об архитектуре таких приложений, уметь выбрать подходящего поставщика облачных услуг и знать, как применить огромное множество новых возможностей, которое предоставляют облачные сервисы.
Как видите, большинство пунктов выше сводится к выбору подходящих инструментов, сервисов и, что неудивительно, опытной команды разработчиков. Ваш партнер по разработке сможет подробно рассказать, что лучше всего подойдет именно вам. А пока вы можете ознакомиться с нашим гайдом по разработке облачных приложений, чтобы получить некоторое общее представление о вопросе.
Ключевые этапы разработки облачных приложений
Допустим, вы хотите разработать мобильное приложение, которое должно свести вместе арендаторов и арендодателей. Арендаторы могли бы посмотреть, какие комнаты сдаются, пообщаться напрямую с арендодателями, уточнить необходимые детали, а затем уже встретиться вживую, чтобы подписать договор аренды. Такой проект как раз есть в нашем портфолио.
Post-a-Room примечателен тем, что его основатели также преследовали дополнительную цель — собрать данные, которые можно использовать в исследовательских целях. Например, определить самые популярные районы и здания, средние цены, которые люди готовы платить, и демографические портреты этих людей. А что, как не облачные сервисы лучше всего подойдет для передачи и хранения всех этих данных!
Шаг за шагом, мы проведем вас через все этапы разработки облачного приложения, обращая внимание на особые требования и, по возможности, на то, что было сделано в проекте Post-a-Room.
1. Изучите целевой рынок вашего приложения
Каждый проект по разработке должен начинаться с аналитики и предварительных исследований. Обычно изучают как конкурентов, так и потенциальных пользователей.
Конкуренты | Целевая аудитория |
✅ Рейтинг приложения | ✅ Демографические характеристики |
✅ Отзывы пользователей | ✅ Занятость и доход |
✅ Количество активных пользователей | ✅ Поведение и образ жизни |
✅ Ключевые слова | ✅ Мотивы и цели |
✅ Уникальное ценностное предложение | ✅ Болевые точки |
Что касается облачной разработки, мы рекомендуем уделить особое внимание следующим вопросам:
- Важно ли иметь доступ к этому приложению с нескольких устройств, и какие это должны быть устройства?
- Что влияет на желание пользователей скачать приложение?
- Возможно, они предпочтут вообще ничего не скачивать?
- Какой уровень информационной безопасности им нужен?
- Боятся ли они хранить свои личные данные в Интернете?
В сфере недвижимости популярны мобильные приложения, так как они существенно облегчают доступ к информации. Так что вопрос о том, должен ли Post-a-Room быть мобильным приложением, вообще не стоял. Также было особенно важно разработать именно простое в использовании приложение. Вы помните дополнительную задачу собственников? Если бы Post-a-Room никому не понравился, неоткуда было бы брать данные о предпочтениях пользователей. Поэтому команда аналитиков Purrweb не только изучила конкурентов, но и рассмотрела наши предыдущие проекты в сфере недвижимости, чтобы понять, какие элементы интерфейса были приняты пользователями на ура, а какие нет.
Чтобы лучше понять роль исследований в разработке мобильных приложений, можно ознакомиться с нашей статьей на эту тему.
2. Найдите профессиональную команду разработчиков
Существует несколько подходов к разработке приложений. Вы можете создать собственную команду, нанять фрилансеров или обратиться в компанию по разработке мобильных приложений. Мы всегда советуем стартапам выбирать последнее, так как стоимость внутренней разработки высока, а фрилансеры непредсказуемы. Если вы хотите уделить этой теме чуть больше внимания — вот наша статья о плюсах и минусах аутсорсинга.
Прежде всего, вы должны быть уверены, что нашли компанию по разработке мобильных приложений, у которой есть опыт работы с облачными технологиями:
- Взгляните на их портфолио. У них обязательно должны быть релевантные кейсы.
- Посмотрите отзывы от клиентов. Вы даже можете запросить контакты именно тех клиентов, чьи проекты были связаны с разработкой облачных приложений.
- Спросите об их разработчиках. Первый попавшийся инженер вам не подойдет: для облачной разработки требуются фундаментальное понимание облачной инфраструктуры, знания основных облачных решений и алгоритмов безопасности.
Также необходимо убедиться, что перед вами компания полного цикла. Такая команда пройдет с вами все важные этапы разработки — от проектирования пользовательского интерфейса до тестирования.
Прежде чем приступить непосредственно к разработке мобильного приложения, вы и ваша команда должны определиться с набором технологий и выбрать поставщика облачных услуг. Наверняка вы можете почувствовать себя не в своей тарелке, когда речь заходит о технических вопросах. Поэтому мы остановимся только на самых популярных вариантах.
3. Выберите облачную платформу
Выбор поставщика услуг является краеугольным камнем разработки облачных приложений. Давайте посмотрим на ведущие компании в этой отрасли.
- Amazon Web Services (AWS) — абсолютный лидер среди публичных облаков. Amazon предлагает более 200 продуктов и инструментов для облачной разработки и показывает наилучший результат с точки зрения глобального охвата.
- Microsoft Azure также является надежным вариантом. Это лучший выбор для тех, кому нужно интегрировать свое приложение с другими продуктами Microsoft. Данный провайдер также известен своими передовыми моделями машинного обучения и data science. Поэтому если ваше облачное приложение решает задачи, связанные с этими технологиями, вам определенно следует рассмотреть Azure.
- Google Cloud соперничает с AWS за любовь стартаперов, потому что их решения также очень эффективны с точки зрения затрат и легко адаптируются под нужды бизнеса. Однако у Google пока нет таких больших вычислительных мощностей, как у их конкурентов. Поэтому данный провайдер — идеальный вариант для более простых приложений.
- Яндекс.Облако — отличный пример локального поставщика облачных решений. Несмотря на то, что это относительно молодая платформа, она уже хорошо зарекомендовала себя. Кроме того, дата-центры Яндекса расположены на территории РФ, а значит их инфраструктура отвечает требованиям хранения персональных данных российских граждан. Так что если ваше приложение попадает под эти требования, Яндекс.Облако может стать неплохим решением.
Исходя из нашего опыта, AWS — отличный выбор для стартапов: этот провайдер надежен, предлагает доступные цены,и широкий выбор инструментов для разработки. Инженеры Purrweb — большие поклонники AWS, так что приложение Post-a-Room было размещено на облачном хостинге AWS и разрабатывалось с использованием нескольких из их сервисов и инструментов. Например, мы объединили возможности AWS Cognito и AWS Amplify для настройки кастомной авторизации.
4. Определитесь с технологиями
Помните, мы упоминали, что разработка облачных приложений движется в сторону интеграции платформ? Хороший способ обеспечить плавный переход — использовать React.js для интерфейса веб-приложения и разработать мобильное приложение с использованием фреймворка React Native. Между React Native и React.js достаточно общего, чтобы ускорить рабочий процесс. В Purrweb мы уже создали множество кроссплатформенных облачных приложений на React Native, включая Post-a-Room.
Выбор backend-технологий может быть мотивирован ключевым функционалом приложения. Мы не будем рассматривать все возможные сценарии, но вот один из примеров: многие современные облачные приложения, вероятнее всего, будут включать в себя функционал, интенсивно использующий данные в реальном времени. Сюда относятся чат, прямые трансляции и инструменты для совместной работы. Node.js — один из лучших языков программирования для обработки данных в реальном времени, поэтому мы использовали один из его фреймворков, NestJS, для разработки Post-a-Room. Другой фреймворк, на который стоит обратить внимание — ExpressJS.
Помимо таких гигантов, как Amazon, Microsoft, Google или Яндекс, есть много других компаний, которые предоставляют надежные облачные решения. Общепринятая практика — это аренда основной инфраструктуры у кого-то из «большой четверки» в сочетании с дополнительными сервисами там, где они необходимы. Например, в Post-a-Room мы использовали:
- Firebase — для отправки push-уведомлений.
- Pusher — для обеспечения возможности общения в режиме реального времени в чате.
- Apollo GraphQL — для передачи данных.
Не бойтесь обращаться к своему партнеру по разработке с любыми вопросами и постарайтесь выяснить, что лучше всего подойдет именно для вашего проекта
5. Спроектируйте и разработайте MVP
Разработка облачных приложений — непростая задача. Как обычно, мы рекомендуем начинать с создания минимально жизнеспособного продукта (minimum viable product — MVP). MVP позволит вам понять, что нравится, а что не нравится пользователям в приложении. Затем вы сможете проанализировать их отзывы и улучшить свой продукт. Поскольку облачные приложения по своей природе легко масштабируемы, дальнейшее расширение функционала — не проблема.
Post-a-Room не стал исключением. Мы разработали MVP, куда вошел только базовый функционал:
- Поиск с системой фильтров как у AirBnB.
- Поиск ближайших объектов на карте.
- Размещение объявлений арендодателями.
- Чат.
Если вы хотите узнать больше об MVP и о том, как это может помочь в разработке приложений — у нас есть еще одна отличная статья ⬇️
6. Не забудьте про DevOps и тестирование
Разработка облачных приложений должна включать этап тестирования: это необходимо, чтобы обеспечить безопасность данных и оптимальную производительность. Хорошо, когда компания по разработке мобильных приложений, с которой вы сотрудничаете, практикует DevOps-подход, в том числе непрерывную интеграцию и непрерывное развертывание (Continuous Integration and Continuous Delivery). CI/CD позволяет автоматизировать процесс разработки облачных приложений и гарантирует, что каждая новая единица кода будет протестирована перед развертыванием.
Поставщики облачных услуг предоставляют множество популярных DevOps сервисов. В Purrweb мы используем инструменты AWS DevOps, а также другое программное обеспечение, например Docker, GitLab CI/CD, AppCenter, Vercel и FastLine.
7. Опубликуйте ваше приложение
После завершения тестирования остается только добавить ваш продукт в магазины приложений. Лучше всего предоставить это вашему партнеру по разработке: его сотрудники будут в курсе актуальных требований маркетплейсов и избавят вас от лишних сложностей и риска, что публикацию отклонят.
Однако это не означает, что вы расстаетесь с компанией по разработке приложений навсегда. Например, наши клиенты из Post-a-Room все еще в поиске новых идей для своего проекта, а мы с нетерпением ждем развития событий.
И напоследок
В умелых руках облачная разработка становится инструментом создания полезных и удобных продуктов для ваших пользователей. Однако сегодня облачные технологии затрагивают уже практически все, что есть на наших смартфонах и компьютерах. Границы между локальными и облачными вычислениями стираются. Поэтому не беспокойтесь: даже если идея вашего проекта не вполне соответствует описанию SaaS, вы все равно можете извлечь пользу из инструментов и сервисов облачной разработки. Хотите узнать больше? Заполните форму ниже, и мы свяжемся с вами!