Как я бесплатно размещаю свое полнофункциональное приложение SaaS на AWS

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

Контекст

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

Все мое приложение размещено на AWS. Поскольку все централизовано на AWS, это облегчает управление инфраструктурой. Кроме того, для меня, как одиночного разработчика с ограниченным временем, инфраструктура на 100% бессерверная. Поэтому вам не нужно беспокоиться об управлении серверами, AWS все делает за вас. Они настраивают и обновляют сервер за вас. Благодаря централизации и бессерверности я могу сосредоточиться на своем бизнесе и продукте».

Вы можете ознакомиться с демонстрацией моего приложения в реальном времени на демонстрации полного стека React Boilerplate. Или, если вам нужно увидеть реальный SaaS-продукт, вы можете посмотреть приложение PostMage.

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

Давайте начнем с аутентификации, где я использую AWS Cognito для защиты моего полнофункционального приложения. Вся система аутентификации управляется и защищается AWS, поэтому мне не нужно беспокоиться об этом. С помощью Cognito очень легко реализовать аутентификацию по электронной почте и социальную аутентификацию с Google, Facebook, Amazon и Apple.

Хорошей новостью является то, что AWS Cognito имеет очень щедрую политику бесплатного уровня. Если у вас менее 50 000 ежемесячных активных пользователей, вы можете оставаться на бесплатном уровне без ограничения по времени (всегда бесплатно). Я думаю, что это одна из самых щедрых политик бесплатного уровня на рынке. Например, Auth0 предлагает только 7 000 ежемесячных активных пользователей.

Фронтенд

Опыт разработчиков недавно улучшился благодаря Netlify и Vercel. С помощью этих двух инструментов я могу создать и развернуть ваш фронтенд прямо из вашего репозитория GitHub. Знаете ли вы, что вы можете получить такой же опыт с AWS без каких-либо внешних сервисов? Да, с AWS Amplify Hosting вы можете разместить свой фронтенд на AWS без ущерба для работы разработчика.

AWS Amplify Hosting также предлагает бесплатный уровень, но он ограничен одним годом. Бесплатный тарифный план включает 1 000 минут сборки и 15 ГБ пропускной способности в месяц. По сравнению с Vercel и Netlify, вам не нужно оплачивать подписку за каждое место разработчика. С Amplify Hosting вам нужно платить только на основе вашего использования.

Бэкэнд

Для REST API я размещаю его на AWS Lambda, бессерверном компьютерном сервисе от AWS. Нет необходимости создавать экземпляр EC2 для размещения бэкенда. Поэтому не нужно обновлять сервер и управлять масштабированием. С AWS Lambda вам нужно только развернуть свой код, а обо всем остальном позаботится AWS.

Вы можете бесплатно вызывать свою AWS Lambda 1 миллион запросов в месяц. И это не ограничено по времени. Когда вы поднимаетесь выше бесплатного уровня, вам нужно платить только в зависимости от количества запросов. По сути, вам не нужно ничего платить, если у вас нет запросов.

В прошлом вам обычно требовался API-шлюз. Он необходим для маршрутизации запросов к нужной функции Lambda. Он также стоит недорого. Но, опять же, есть и бесплатный уровень 😉 Как и AWS Lambda, шлюз API может бесплатно обрабатывать 1 миллион запросов в месяц. Совсем недавно AWS выпустила URL-адреса функций AWS Lambda. Таким образом, вы можете напрямую вызывать свою функцию Lambda без API-шлюза. И, что самое приятное, URL-адреса AWS Lambda Function бесплатны вместе с Lambda.

База данных

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

И снова я вас не разочарую 😉 У DynamoDB очень щедрая политика всегда бесплатного уровня: 25 ГБ хранилища, 25 предоставленных мощностей для записи и чтения. Судя по официальному описанию, этого достаточно для обработки 200 миллионов запросов в месяц. Я не знаю, правда это или нет, но я думаю, что этого определенно достаточно для бесплатного обслуживания приложения среднего размера.

Мониторинг, логирование и наблюдаемость

Инфраструктура на 100% бессерверная и управляется AWS. Но мне все равно нужно следить за приложением, чтобы видеть, нет ли ошибок. Поэтому я использую CloudWatch для мониторинга приложения и инфраструктуры. Я также настроил несколько оповещений, чтобы получать уведомления, когда что-то идет не так.

Для CloudWatch AWS предлагает бесплатный уровень: 10 пользовательских метрик, 10 оповещений, 5 ГБ сбора журналов и т. д. Используя только то, что предлагает бесплатный уровень, вы можете получить лучшее представление о том, как ведет себя ваше приложение в производстве.

Пишите на

При использовании AWS Cognito для аутентификации, есть несколько этапов в процессе аутентификации, на которых Cognito будет отправлять электронное письмо с AWS SES. Например, если у вас есть форма регистрации, вы можете отправить пользователю письмо с подтверждением после того, как он зарегистрируется.

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

Вы не получите никакого сюрприза 😉 Но у AWS SES есть чрезвычайно щедрый бесплатный уровень: вы можете бесплатно отправлять 62 000 писем в месяц. Я думаю, что это один из самых щедрых бесплатных уровней на рынке услуг электронной почты.

Заключение

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

Если вам понравилась моя статья и мой стек, то вас точно должен заинтересовать мой Full-stack React Boilerplate, предварительно настроенный шаблон для быстрого запуска нового проекта. Это точно такой же стек, о котором говорится в статье: 100% serverless, размещенный на AWS.

Внутри шаблона вы найдете все, что настроено для вас. Он включает TypeScript, Tailwind CSS, Serverless framework, Linter, Code formatter, Jest, Cypress и конфигурацию VSCode. Таким образом, вам не придется терять время на борьбу с конфигурационными файлами.

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

Оцените статью
devanswers.ru
Добавить комментарий