
// Мобильные приложения
// Мобильные приложения
Приложение Clubhouse по праву можно считать самым обсуждаемым проектом начала 2021 года. На момент написания статьи приложение скачано уже более 5 миллионов раз и с каждой минутой это число стремительно увеличивается.
Основной причиной популярности (приложение уже обогнало приложения как TikTok и Telegram) является надежда пользователей на общение со знаменитостями, своими кумирами в режиме онлайн. Данный экспириенс отличается от привычных разговорных подкастов на YouTube или стримов на Twitch тем, что Вы находитесь в одной комнате со спикером.
Так какой же функционал представляет данное приложение? Имеется комната, в которую могут зайти пользователи. У каждого присутствующего есть одна из трёх ролей: спикер, слушатель и модератор. Слушатели могут присоединиться к дискуссии после «поднятия руки» и одобрения модераторов и/или спикера. Стоит отметить, что в Clubhouse нет возможности общаться посредством обмена текстовыми сообщениями. Также еще одной особенностью приложения является то, что зарегистрироваться и начать общаться можно только после приглашения одного из зарегистрированных пользователей.
Возможно, у некоторых читателей после прочтения данного введения появилось желание написать нечто подобное. Тогда следует определиться с самым главным – архитектурой приложения. Следует отметить, что мы не ограничимся лишь созданием клиентской части (мобильное приложение). Для полного функционирования приложения, схожим с Clubhouse, нам понадобится и серверная часть, отвечающая за подключение пользователей и другие операции.
Что касается архитектуры нашего приложения, то я бы предложил использовать многоуровневую архитектуру клиент-сервер. Почему именно ее? Да потому, что данный подход дает нам большой выбор используемых инструментов (языки программирования, СУБД и прочее). С таким подходом можно спокойно разбить разрабатываемое мобильное приложение на три условных части: клиент (мобильное приложение), сервер (программа, которая будет содержать в себе бизнес-логику) и сервер баз данных (выполнение запросов, обработка транзакций и прочее).
К достоинствам данной структуры можно отнести высокую надежность и безопасность, масштабируемость и то, что приложение можно разбить на три отдельных проекта. Недостатками же будет являться то, что сервера должны обладать высокой производительностью, особенно скорость между сервером и сервером баз данных. Но если приложение создается для внутренних нужд и не ожидается большого количества клиентов, то это не должно стать проблемой.
Для начала следует определиться с языками программирования, с помощью которых будем создавать наше приложение. Нам нужно решить, на чем будет разрабатываться клиентская и серверная часть. Я советую использовать те инструменты, с которыми уже есть опыт. Если же опыта в построении приложений подобного плана нет, то можно обратиться к ресурсу tiobe.com. На нем размещены рейтинги по языкам программирования (если Вы вдруг хотите писать на самом популярном языке). Как видно, на момент написания статьи в 10 входят следующие языки программирования:
И в этом нет ничего удивительного – все эти языки проверены временем и имеет большое количество библиотек и фреймворков для решения различных задач.
Давайте начнем с клиентской части. Раз уж мы решили создавать приложение, схожее по функционалу с Clubhouse, то будем ориентироваться на мобильные платформы. В случае с оригиналом, приложение доступно только для устройств под управлением IOS. При таком раскладе клиентская часть будет писаться исключительно на языке Swift. Он является основным языком разработки под экосистему Apple. Этот язык хорошо документирован, синтаксис будет понятен новичку, разработка на нем займет гораздо меньше времени, чем на Objectvie-C, который теряет популярность на фоне Swift’а.
Если с определением языка программирования под IOS все достаточно просто, то с Android немного сложнее. Под эту мобильную операционную систему можно писать софт на трёх языках: C++, Java и Kotlin. Хоть первый и поддерживается Google в плане мобильной разработки, использование его в качестве создания приложений крайне не рекомендуется. Для наших целей лучше всего подойдет Java или Kotlin.
Java использовался с момента зарождения Android, большинство приложений написаны именно на нем (и продолжают создаваться новые). Язык очень хорошо документирован, в сети Вы сможете найти кучу уроков и статей по мобильной разработке. Kotlin – относительно новый язык программирования, который активно набирает популярность среди Android -разработчиков. Чего уж говорить, если Google в 2017 году назвали Kotlin основным языком в android-разработке.
По производительности эти языки программирования почти не отличаются, ведь они работают на одной виртуальной машине. Библиотеки и фрэймфорки совместимы для этих двух языков. Так что тут Вы вольны выбирать сами – популярный и обсуждаемый или отлаженный и надежный.
Прежде чем приступить к выбору языка программирования и технологий, нужно определиться, в какой среде будет крутиться наш серверный функционал. Под «средой» я подразумеваю Windows- и Linux-системы.
Если Вы готовы приобретать лицензию Windows-server и вам ближе стек технологий компании Microsoft, то, наверное, выбор очевиден. Это язык C#. Популярный язык программирования поддерживает большое количество инструментов для проектирования подобных приложений.
Если же Вы сторонник Linux-систем, то здесь в противовес C# выступает Java. Да, можно также использовать C#, но .NET Core под Linux не настолько крут, как под Windows. Оба эти языка хороши и зарекомендовали себя в создании серверных приложений. Они очень хорошо справляются с многопоточностью и обработкой большого числа пользователей. К тому же, в хороших руках они обеспечат достойную безопасность и надежность.
Также можно использовать и C/C++, но разработка и отладка займет гораздо больше времени и сил (по сравнению с C# или Java). Но в результате будет получена большая отдача по производительности в сравнении с описанными выше языками.
Вернемся к операционным системам нашего сервера. Windows вам обеспечит легкость администрирования, своевременную техподдержку и надежность при эксплуатации. Linux - дистрибутивы, которые предоставят возможность масштабировать архитектуру в будущем. Сервер под управлением Linux можно настроить один раз и «забыть» о нем на долгое время – при правильной настройке серверная часть будет обладать высокой надежностью.
И вот мы разобрались с клиентской и серверной частью, но нам нужно где-то хранить все данные о пользователях. За все это отвечают системы управления базами данных (СУБД).
Существует большое количество СУБД, которые используются при создании продуктов. Наиболее популярные для создания подобных нашему приложений – это PostgreSQL, MS SQL Server. Начнем с последнего. MS (Microsoft) SQL Server – это мощная СУБД с большим функционалом по администрированию не только базы данных, но и сервера базы данных. Но есть у этой системы два недостатка: данный пакет программного обеспечения платный, полный функционал будет доступен только на сервере под управлением Windows-системы.
PostgreSQL является бесплатной, быстрой и легковесной системой управления базами данных. Ее можно запустить как под windows, так и под Linux-системами. Доступ к ней может быть осуществлен с помощью большинства языков программирования. Так что при создании продукта не должно возникнуть особых трудностей как на этапе разработки, так и при эксплуатации.
Весь описанный выше материал можно отнести к кастомной разработке. Что же это такое? Кастомная разработка – это процесс создания приложения в отрыве от каких-либо корпоративных стандартов. Мы с вами не ограничены в выборе инструментов, подходов и чего-либо еще. Возможно в ходе разработки придется создать уникальные инструменты для каких-то определенных задач. Таким образом, будет придана уникальность проекту.
В нашем случае нужно будет создать приложение по обмену аудиоинформацией в поточном режиме. Задача не новая, но подход к каждому решению уникальный.
В чем заключается «кастомность» Clubhouse? Его главная особенность – возможность войти в приложение только по чьему-то приглашению (можно подать заявку, но процесс подтверждения очень долог). Эта задача для создания приложения – один из главных и «особенных» пунктов в ТЗ, ведь она выходит за рамки стандартного варианта подобного приложения, которое можно скачать и сразу же зарегистрироваться. Поэтому при создании клона приложения соблюдение такой нетривиальной задачи будет важно.
Формат приложения Clubhouse на данный момент уникален – больше нет социальных сетей, где общение происходит только голосом, а приложение доступно только пользователям iPhone, отчего интерес к соц.сети только растет. Такая проработка задала ритм разработчикам – пользователи Android уже требуют появления этого или подобного приложения для своей ОС, а все большее количество владельцев iPhone пытаются попасть в это уникальное приложение. Огромное количество программистов уже создают свои программы-клоны, которые будут доступны большему числу пользователей. А небольшую общую справку по их созданию я и изложил в этой статье.