Как части приложения MERN работают вместе с сервером, базой данных и CDN? - PullRequest
0 голосов
/ 07 февраля 2020

A diagram of my MERN app to help try and form some sense of how the parts will work together

  1. Я создаю приложение для социальных сетей, в котором будет несколько сотен пользователей и много изображений. Это мой первый «настоящий» проект, поэтому мне нужна помощь в понимании того, как части будут работать вместе, чтобы создать быстрое и безопасное приложение с частными изображениями.
  2. Моя клиентская часть использует React с оболочкой Electron для настольного приложения. Это приложение предназначено только для веб-сайтов и настольных компьютеров, но позже я буду использовать Flutter для создания мобильных приложений.
  3. Итак, скажем, пользователь публикует изображение. Я понимаю, что сначала он проходит через сервер, так как сначала все должно проходить через сервер go. Это написано в Express и размещено на Heroku. Допустим, Express говорит, что сообщение пользователя является действительным. Затем он отправляет файлы изображений на S3. Он отправляет URL-адреса изображений вместе с другими данными (строки, даты ...) в MongoDB. Express затем получает 200 OK и передает их обратно в React.
  4. Скажем, пользователь возвращается на домашнюю страницу после публикации. Загрузка всех изображений от людей, за которыми они следят, представляет собой набор данных для чтения, поэтому мы используем CDN. Express извлекает из MongoDB данные, включая URL-адреса, связанные с каждым сообщением. URL-адреса указывают на изображения в CDN ... И здесь я теряю понимание, потому что в какой части процесса создаются URL-адреса изображений? Как программа узнает, какой сервер Cloudfront является ближайшим к пользователю, чтобы она могла сгенерировать соответствующий URL-адрес? Я, вероятно, смогу выяснить этот следующий вопрос позже, но будут ли в URL-адресах сгенерированные ключи - я не хочу, чтобы другие люди или приложения имели доступ к изображениям или серверу. CORS-блокировка может быть? HTTPS POST вместо данных GET? Все три этих метода объединены? Если вы читали это далеко, то я благодарю вас. Все, что мне нужно, это ресурсы.
...