Мысль создать сервис для хранения данных с доступом через API возникла когда мне понадобилось создать простой каталог расширений для e-commerce движка Spree Commerce.
Представьте ситуацию — вам понадобилось или захотелось создать небольшой сайт, но не просто визитку, а например каталог, доску объявлений или форум. То есть не набор статических страниц, а сайт с данными которые меняются. Какие мысли возникают? Нужно завести:
- Виртуальный хостинг (Shared hosting)
- Виртуальный выделенный сервер (VPS)
Виртуальный хостинг
Вам предоставляется администранивная панель с помощью которой вы можете управлять базой данных (обычно MySQL через phpMyAdmin), загружать и редактировать скрипты (обычно PHP), следить за статистикой, оплачивать услуги хостинга.
Виртуальный хостинг не зря по английски называется "shared hosting" (общий хостинг). Принцип работы такой:
Хостер имеет 1 сервер, на котором запущем Apache. На нем хостятся сотни сайтов. У него есть 1 IP адрес на который указывают DNS записи всех сайтов которые хостятся на этом сервере.
Например, если IP адрес этого сервера 148.10.33.227, то все сайты которые хостятся на нем имеют IP адрес 148.10.33.227.
- valyapupkin.ru 148.10.33.227
- intershop-mgn.ru 148.10.33.227
- lerakudryavceva.com 148.10.33.227
- load100cpu.net 148.10.33.227
- shashlikmashlik.ru 148.10.33.227
Apache умеет по доменному имени определять какой скрипт выполнять.
Таже история с базай данных. Имеется 1 сервер MySQL с сотней баз данных, по одной на каждый сайт.
Что это значит для вас как пользователя виртуальным хостингом?
- Eсли кто-то (не вы) загрузит сервер на 100%, то ваш сайт просядет.
- Если какой-то сайт (не ваш) на том же сервере заблокируют, то ваш сайт тоже заблокируется.
Виртуальный выделенный сервер
Вам предоставляется виртуальный сервер с Linux/Windows. Вы сами устанавливаете на него все что нужно. Сами обслуживаете его и следите за его работоспособностью.
Как вы понимаете без навыков администрирования тут не справиться.
В любом случае
Чтобы вы не выбрали вам придется иметь дело с БД. А это значит что вам нужны навыки SQL, оптимизации запросов, создания индексов и др. Вам нужно понимать тонкости работы с БД которой вы пользуетесь.
Размышляя
Я пришёл к выводу что должен быть сервис который позволяет избежать всех этим сложностей. Если его нет, то его нужно создать.
Погуглив немного и не найдя такого сервиса, я начал его разрабатывать.
Закончив первую версию сервиса, я показал её товарищу. Вот так она выглядела:
Он сходу скинул ссылку на статью — Backend-as-a-Service.
Оказалось я сделал BaaS, коих существуют десятки. Самый популярный из них от гугл — Firebase уже вовсю интегрирован в Android.
Естественно, не было смысла делать еще один BaaS, но останавливаться тоже было поздно. Тогда и возникла идея которую мы развиваем до сих пор — сделать сервис бесплатным, а данные открытыми.