Написать нам
Категория: Мобильные приложения
25.02.2021

Как Создать Приложение-Клон, как Clubhouse?

Приложение Clubhouse по праву можно считать самым обсуждаемым проектом начала 2021 года. На момент написания статьи приложение скачано уже более 5 миллионов раз и с каждой минутой это число стремительно увеличивается.



Основной причиной популярности (приложение уже обогнало приложения как TikTok и Telegram) является надежда пользователей на общение со знаменитостями, своими кумирами в режиме онлайн. Данный экспириенс отличается от привычных разговорных подкастов на YouTube или стримов на Twitch тем, что Вы находитесь в одной комнате со спикером.

Функционал приложения Clubhouse



Так какой же функционал представляет данное приложение? Имеется комната, в которую могут зайти пользователи. У каждого присутствующего есть одна из трёх ролей: спикер, слушатель и модератор. Слушатели могут присоединиться к дискуссии после «поднятия руки» и одобрения модераторов и/или спикера. Стоит отметить, что в 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-системы.
Написать нам
Имя*:
Email*:
Сообщение: