Создавая MVP, вы должны осознавать конечную цель, стоящую за ним. По словам Эрика Райса, автора книги Экономичный стартап: Цель MVP - начать процесс обучения. MVP должен быть не более чем первым шагом в проверке вашей идеи. Его основное использование - запуск цикла обратной связи Построить-Измерить-Изучить.

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

Аутентификация

Если вы можете избежать добавления аутентификации в свой MVP, сделайте это. Но если вы не можете, вам следует передать как можно больше этого на аутсорсинг.

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

Так почему бы не позволить кому-то другому сделать за вас тяжелую работу? Прежде всего, вместо предоставления традиционной аутентификации по имени пользователя и паролю, я предлагаю просто добавить SSO. Использование провайдеров социальных сетей, таких как Google или Facebook, для аутентификации потенциально может сэкономить вам дни разработки.

Но даже реализация SSO самостоятельно требует времени. Некоторые провайдеры выступают в роли посредников и берут на себя все основные проблемы аутентификации за вас. Основные преимущества их использования:

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

Мой обычный провайдер - Auth0, так как у них есть уровень бесплатного пользования до 7000 пользователей и широкий выбор SDK для разных языков. С учетом сказанного, их цены могут резко вырасти, если вы пройдете отметку 7K, о чем следует помнить.

Бэк-энд

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

Если вы используете GraphQL, вам больше не нужно создавать собственные конечные точки API для выборки и получения данных. Вы можете дать своему клиенту возможность напрямую запрашивать вашу базу данных. И таким образом вы гарантированно сэкономите время.

Существуют разные варианты настройки движка GraphQL. Вы можете разместить его самостоятельно или воспользоваться услугами облачного провайдера. Также существуют различные производители двигателей, такие как Prisma и Postgraphile.

Недавно я использовал Hasura для своих проектов, и это сэкономило мне дни, если не недели, работы. Вы можете развернуть Hasura на своем сервере, используя их шаблон докеров, но для экономии времени при создании MVP я использую Hasura Cloud. Hasura Cloud позволяет создать рабочий GraphQL API за пару минут.

Компоненты пользовательского интерфейса

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

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

Если вы используете React, Chakra-UI - хороший вариант. Я часто использую его из-за его гибкости и встроенной поддержки стилевой системы, которая помогает в быстром прототипировании. Если вы хотите узнать больше о Chakra-UI, прочтите мой пост здесь.

Если есть потребность в более сложных компонентах, таких как поле поиска с раскрывающимся списком или дерево вложенных папок, я часто использую Atlaskit от Atlassian. Самое замечательное в этой библиотеке компонентов то, что вам не нужно устанавливать всю библиотеку, чтобы использовать ее. У каждого компонента есть отдельный пакет npm, который вы можете установить индивидуально.

Сервисы AWS

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

В одном из проектов, в котором я участвовал, мы активно использовали лямбда-функции, экземпляры DynamoDB и сегменты S3. Использование Amplify помогло нам быстро протестировать, развернуть и отключить эти службы по мере необходимости.

Хостинг изображений / видео

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

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

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

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

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

Развертывание

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

Однако Vercel - не единственный сервис, который подключается к Github. Еще один хороший вариант, который стоит изучить - Netflify.

Бонус: шаблоны

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

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

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

Первоначально опубликовано на https://isamatov.com 14 марта 2021 г.