Как мне создать частную и публичную архитектуру API

Мне назначен проект, в котором у нас уже есть работающий веб-сайт, и один из наших клиентов хочет иметь возможность отслеживать статистику с веб-сайта. Мы хотим сделать это доступным для всех наших клиентов, как только мы закончим разработку. Обратите внимание, что каждый "клиент" имеет свой собственный "поддомен", чтобы сказать это. Например. www.website.com/client1, www.website.com/client2 и т. д. И мы хотим отслеживать использование отдельно для каждого из этих клиентов.

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

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

В последнее время начал читать о частном и публичном API.

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

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

Является ли Private & Public API правильным способом?

Один из вопросов, с которыми я застрял, заключается в том, как выглядит архитектура этих API. В основном, сейчас у нас уже есть публичный API для данных о вакансиях. Этот "API" - это просто PHP-класс (контроллер) внутри нашего решения CodeIgniter. Он вызывается через URL и возвращает объект JSON с результатами. (например, www.website.com/api/vacancy/xxx)

Для того чтобы создать (правильное) частное и общедоступное API-решение / архитектуру. Должен ли API быть освобожден от веб-сайта (CodeIgniter)? Каковы общие решения для этого? Или это хорошо, чтобы сохранить его в нашей нынешней платформе, как это сейчас? (а люди называют API статистики через www.website.com/api/stats/xxx, например?)

2 ответа

Решение

Почти всегда правильно использовать микросервисы, такие как архитектура, поэтому ваши первоначальные мысли звучат разумно. Подобные действия дадут вам возможность независимо масштабировать и развертывать ваш API, а также помогут избежать побочных эффектов производительности вашего сайта (и наоборот). Обратите внимание, как вы получаете доступ к данным основного сайта из нового API, если вы не хотите заканчивать монолитное приложение. Что касается API, я бы предложил вам реализовать протокол, подобный oauth2, для достижения гибкости, которая вам может понадобиться. Также вы можете использовать Swagger для документирования и тестирования вашего API. Все, что я сказал, может вам очень помочь, но сначала вы должны ответить себе, действительно ли вам нужно идти так глубоко или вам просто нужно простое решение.

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

Другие вопросы по тегам