Переклад Twitter-треда з цінними технічними рекомендаціями і інструментами, вкрай корисними при створенні SaaS додатку.
Цілі
- Чим менше розробки тим краще.
- Швидка розробка.
- Стійкість системи.
- Простота для одного розробника.
Використовуйте React або Vue
Користувачі очікують красивий і зручний інтерфейс, який простіше і швидше побудувати і підтримувати за допомогою React. Сьогодні це перевірена і нудна технологія, яка використовується скрізь - від корпорацій до стартапів. Якщо вам коли-небудь знадобляться мобільні додатки, можна використовувати React Native for Web, щоб запускати ваш код на всіх платформах.
Використовуйте мета-бібліотеки React або Vue
Next.js (React) або Nuxt.js (Vue) надають середовище для побудови призначених для користувача інтерфейсів. Немає необхідності лаятися на Webpack і кричати на Babel. Команда Chrome активно працює, щоб зробити те, що вже швидко працює в Next.js, ще швидше.
Використовуйте утилітарний (utility-first) CSS
Ви можете побудувати весь призначений для користувача інтерфейс без написання коду CSS, тому що він надає вам схожі на Lego блоки CSS, які ви можете скомпонувати в будь-якому вигляді. @tailwindcss або CSS-in-JS комбінація Emotion + Theme-UI робить використання CSS в вашому додатку дуже простим.
Використовуйте GraphQL
GraphQL - це сучасна заміна REST, яка спрощує розробку на всіх рівнях і дозволяє легко зв'язати всі джерела даних необхідних для вашого додатку. Він набагато краще ніж REST для партнерів і користувачів, тому GitHub, Shopify і багато інших стали використовувати його замість REST.
Використовуйте Low-Code GraphQL - сервер
Ці сервери автоматично генерують кожну CRUD-операцію для ваших даних, обробляють міграції і забезпечують тонке налаштування прав - все це без додаткового коду! Дні, коли треба було писати кожен REST-endpoint окремо, давно вже в минулому.
Варіанти: HasuraHQ, AWS AppSync, 8base
Використовуйте serverless functions для бізнес-логіки
Вони більш надійні, їх легше підтримувати, вони краще масштабуються, ніж образи EC2. Також GraphQL-сервери, згадані вище, спроектовані для роботи з serverless functions, тому робота з ними дуже проста.
Використовуйте Typescript для фронтенду і бекенду
Typescript - це статично типізований JavaScript, який зараз активно використовується. Його використання рівноцінно тисячі юніт-тестів. Ви зможете писати код швидше і впевненіше. А автодоповнення коду в IDE дозволить залишатися в «потоці» без необхідності шукати методи або атрибути.
Використовуйте генерацію коду
GraphQL і Typescript дозволяють автоматично генерувати код для отримання даних. Ви визначаєте, які дані вам необхідні, і вони генерують функцію для отримання, включаючи строго типізовані класи для автодоповнення і компіляції.
Базова модель даних
Вам будуть потрібні моделі для користувача, команди і аккаунта. Користувач може входити в систему. Аккаунт оплачує рахунок. Команда володіє ресурсами. На старті необов'язково надавати функціональність для команди, але вона точно буде потрібно в майбутньому.
Використовуйте середовища розгортання
Вам потрібне тестове середовище, максимально ідентичне середовищі експлуатації - за винятком іншої бази даних. Це дозволить тестувати зміни в ізольованому оточенні, не боячись щось зламати і втратити клієнтів.
Пишіть тести: не надто багато, здебільшого інтеграційні
Налаштуйте тестування з самого початку. Для кожної великої фічі напишіть хоча б один інтеграційний end-to-end-тест. Додайте git hook, щоб запускати тести при git push і відловлювати проблеми заздалегідь. Для JS використовуйте Jest для запуску тестів - і Cypress для end-to-end-тестів.
CI/CD
Вам потрібно, щоб кожен комміт в master запускав Автотест і, якщо вони успішні, запускалося автоматичне розгортання в продакшн. Аналогічно: налаштуйте гілку git для розробки (dev), з ввтотест з автоматичним розгортанням. Таким чином публікація в продакшн буде простою git merge з гілки dev в master
Обробляйте вебхуки асинхронно
Коли ви використовуєте вебхуки сторонніх сервісів, зберігайте їх у власну таблицю в базі даних і запускайте за подією асинхронно за допомогою serverless function. Це мінімізує шанс, що хтось зможе виконати успішну DoS-атаку на вашу програму.
Використання власної бази даних залишає можливість для DoS-атаки. Кращим варіантом буде використання черг.
Не робіть власну аутентифікацію
Для аутентифікації використовуйте сервіси типу auth0 або AWS Cognito. Такий підхід набагато безпечніше. Ці сервіси дозволяють моментально підключити двухфакторную аутентифікацію, вхід через соціальні мережі та багато іншого.
Не робіть власний білінг
Для білінгу використовуйте сторонні сервіси типу Chargebee або Outseta. Вам потрібні всі ті можливості, які недоступні в Stripe: візуальний інтерфейс білінгу, можливість оновити підключену карту і змінити тариф, але ви не повинні витрачати на це свій час. Зосередьтеся на продукті.
Використовуйте сторонній сервіс для зображень
Використовуйте Imgix або Cloudinary для завантаження зображень потрібного розміру і дозволу замість побудови власного обробника.
Для відео можна використовувати Cloudflare Stream. Він дозволяє завантажити відео, отримати тег <stream> і миттєво починає програвання на відміну від інших сервісів.
Вам потрібен інструмент для транзакційних електронних листів
@postmarkapp - один з кращих і досить недорогий. Використовуйте його для скидання паролів, звітності, навчальних листів, але не використовуйте для маркетингу.
Таож можна використовувати @mailgun для цих завдань. Одна з найбільш корисних функцій там - HTML-шаблони повідомлень, куди можна підставити свої дані і відправити їх користувачеві.
Вам потрібен інструмент для маркетингових електронних листів
Вам потрібен окремий сервіс для відправки листів і маркетингових компаній. @Mailchimp або @Userlist цілком підходять для цього.
Вам потрібен моніторинг серверів
Використовуйте @UptimeRobot для постійного пінгу ваших серверів і відправки повідомлення, якщо щось пішло не так. Додайте додатковий ендпоінт, наприклад / health, який перевіряє підключення до бази даних і повертає 200, якщо все добре.
Вам потрібна система відслідковування помилок
Користувачі ніколи не повідомлять вам про більшу частину виниклих у них проблем. Використовуйте сервіси @getsentry або @honeybadgerapp для відстеження фронтенд- і бекенд-помилок.
Вам потрібне логування
@papertrailapp збирає логи з кожного місця, де у вас запущений якийсь код. Подібні сервіси дозволять з легкістю знайти в логах проблемні моменти. Без цих сервісів налагодження продакшн-проблем стане серйозним головним болем.
Вам потрібна для користувача аналітика
Ви повинні розуміти, як користувачі використовують вашу програму. Хто робить це кожен день? Щотижня? Хто перестав заходити в додаток? Які покупці найбільш активні? Яку фічу слід покращувати далі? Використовуйте сервіси @Amplitude_HQ або @Outseta .
Вам потрібен публічний changelog
Ваші користувачі повинні знати, які можливості ви додаєте в додатки, щоб почати їх використовувати. Використовуйте такі сервіси, як Beamer, Headway або @changefeedapp .
0 комментариев
Добавить комментарий