Программное обеспечение как услуга означает, что одним продуктом пользуется много клиентов, у каждого - свои данные, пользователи и настройки. Некоторые решения, принятые в первые недели, потом сложно изменить, поэтому их стоит понимать, даже если вы не разработчик.
Разделение данных клиентов
Каждая компания, которая пользуется продуктом, - «арендатор» - должна видеть только свои данные. Добиться этого можно по-разному: общая база, где каждая запись принадлежит арендатору, отдельные схемы или даже отдельная база либо сервер для каждого клиента. Общее хранилище проще и дешевле в эксплуатации; более сильную изоляцию легче объяснить клиентам со строгими требованиями к безопасности. Что бы вы ни выбрали, разделение должно обеспечиваться на уровне данных, а не только в интерфейсе.
Роли и права
Внутри каждого клиента есть разные люди: владельцы, менеджеры, рядовые сотрудники, иногда внешние партнёры. Определите небольшой набор ролей с самого начала и проверяйте права на сервере для каждого действия. Добавить новую роль потом легко; исправлять систему, где кто угодно мог делать что угодно, - мучительно.
Подписки и оплата
Решите заранее, как клиенты платят: помесячные или годовые тарифы, оплата за пользователя, лимиты использования, бесплатный пробный период. Тарифы определяют, какие функции доступны, поэтому продукт должен знать, за что заплатил каждый клиент. Используйте проверенного платёжного провайдера, храните только ссылки на платежи, а не данные карт, и аккуратно обрабатывайте неудачные платежи, смену тарифа и отмену.
Подключение и настройки
Новый клиент должен суметь начать без вашей помощи: создать аккаунт, пригласить коллег, сделать базовые настройки. Каждый ручной шаг, который вы делаете за клиента, - это затраты, которые растут с каждым новым клиентом.
Подготовка к росту
Не нужно в первый же день строить систему на миллионы пользователей, но расти без переписывания всего должно быть возможно. Держите код разделённым на понятные модули, записывайте важные события в журнал, автоматизируйте выкладку и резервные копии, следите за производительностью. Эти привычки превращают масштабирование в постепенный процесс, а не в аврал.
Коротко
Надёжно разделяйте данные клиентов, определите роли и проверяйте права на сервере, заранее продумайте тарифы и оплату, сделайте подключение самостоятельным и держите систему готовой к росту. Именно эти основы решают, насколько легко продукт будет развиваться дальше.