Овладейте искусством создания масштабируемого проекта в реальном мире, используя MERN Stack для нового стартапа, который будет бесконечно масштабироваться. Я покажу, как вы могли бы запустить проект, который будет иметь устойчивую архитектуру, которая будет расти в будущем, чтобы ее могли использовать миллионы пользователей.
Технический стек
Мы будем использовать React и NextJS (React Framework) на стороне клиента.
Мы создадим API / сервер, используя Node Express MongoDB.
Мы будем использовать сервисы AWS, такие как S3 для хранения файлов, SES для отправки электронной почты и EC2 для облачного хостинга IAM для идентификации и управления доступом. Route 53 для управления доменом наряду с пользовательскими правилами / политикой.
Мы будем использовать Mongo Atlas в качестве службы управляемых баз данных в облаке.
Что мы будем строить?
Создайте стартап-проект, вдохновленный успешным приложением реального мира (более подробно обсуждается в лекциях), где несколько пользователей могут войти в систему и публиковать / управлять контентом, который они отправляют.
При создании аналогичного проекта мы добавим несколько улучшений, чтобы сделать его бесконечно масштабируемым и проще в обслуживании.
Стремитесь к низкой стоимости эксплуатации и реализуйте некоторые функциональные возможности, чтобы сделать их намного проще, увлекательнее и интереснее для пользователей.
Цель проекта
Нацеливание на миллионы потенциальных пользователей для использования и взаимодействия с нашим приложением
Пользователи могут быть кем угодно ... кто найдет курс, видео или статьи в сети ... любит это и хочет поделиться
Ссылки, которыми они делятся, также будут доступны на их панели управления для обновления / удаления.
Пользователь может быть тем, кто является создателем контента, таким как я ... инструкторы, ютуберы, авторы блогов и учебников, авторы книг и т. д.
Пользователи будут регистрироваться / входить в наше приложение, чтобы публиковать / делиться / и тд.
Обзор проекта
Вход / Регистрация
Нужна MongoDB, которая масштабируется бесконечно. Мы будем использовать Mongo Atlas для этого требования.
Нужна огромная система хранения, которая масштабируется бесконечно, чтобы хранить загруженные пользователем файлы изображений. Мы будем использовать AWS S3 (Simple Storage Service) для этого требования.
Вам никогда не придется беспокоиться о том, как управлять миллионами загруженных пользователями файлов ... пусть об этом позаботится AWS! Цены S3 являются самыми низкими на рынке для хранения бесконечного количества данных, которые легко доступны во всем мире в центрах обработки данных AWS по всему миру.
Нужен надежный почтовый сервис для отправки писем сотням тысяч пользователей. Мы будем использовать AWS SES (Simple Email Service) для этого требования.
Вам никогда не придется беспокоиться о том, как отправить электронное письмо миллионам и не заплатить более высокую цену ... пусть об этом позаботится AWS! их показатель SES является самым низким на рынке.
Мы будем использовать AWS EC2 (Elastic Compute Cloud) для размещения нашего внутреннего NodeJS API и внешнего интерфейса React / Next JS в одном экземпляре.
Сохраняйте стоимость как можно ниже, используя сервисы AWS для хранения, электронной почты и хостинга.
Самыми большими проблемами масштабирования веб-приложений являются масштабирование хранилища и базы данных. Эта часть будет обрабатываться AWS. Поэтому нам, как разработчику, не нужно беспокоиться.
Наша цель - дать возможность одному или двум разработчикам поддерживать весь проект и постоянно расти в будущем.
Чистая и простая в обслуживании архитектура проекта
Чрезвычайно простая архитектура, которую легко поддерживать и масштабировать
Отдельный бэкэнд-API и интерфейс, построенный с React/ Next, для легкой разработки, сопровождения и развертывания кода
Сделайте интерфейс максимально простым
Сценарий 1> Вы создаете страницу, реагирующую на выполнение определенной задачи. Например, он извлекает данные с вашего API / сервера и размещает эти данные на веб-странице, чтобы пользователь мог их увидеть. Работа сделана.
Сценарий 2> Вы создаете страницу администратора для создания нового сообщения. Например, чтобы опубликовать данные на вашем API / сервере и показать возвращенный ответ об успехе или ошибке. Работа сделана.
Сделайте бэкэнд API максимально простым
Сценарий 1> У вас есть маршрут GET. Например, «/ api / posts». Вы получите запрос от activ / frontend для получения всех сообщений из базы данных.
Вы передаете этот запрос методу контроллера. Метод / функция контроллера выполнит запрос к базе данных, получит все сообщения и вернется к React / интерфейсу. Работа сделана.
Сценарий 2> У вас есть маршрут POST. Например, «/ api / create / post». Вы получите данные от React / внешнего интерфейса для создания нового сообщения. Вы передаете эти данные в метод контроллера.
Метод / функция контроллера сохранит эти данные в базе данных и вернет ответ об успешном завершении, который будет отправлен обратно для реакции. Работа сделана.
Это логика нашего приложения или любого другого веб-приложения. Цикл запросов / ответов. Запрос от внешнего интерфейса, Ответ от сервера.
Вы готовы к этому курсу?
Если вы хотите использовать имеющиеся у вас знания о React и Node для создания реального масштабируемого приложения, тогда этот курс для вас.
Основываясь на этом проекте, вы можете построить следующую большую вещь, о которой вы всегда мечтали. Или вы могли бы использовать эти знания, чтобы помочь стартапам реализовать свои успешные бизнес-идеи. Возможности безграничны.
Мечта есть мечта, если вы не приложите усилий, чтобы сделать ее реальностью. Приложите усилия, пройдя этот курс. Я помогу вам превратить вашу мечту в реальность. Присоединяйтесь ко мне в этом курсе и сделайте это!
Посмотреть больше
Урок 1.00:10:22
What we will build
Урок 2.00:04:14
Aim of the project
Урок 3.00:14:46
Application workflow
Урок 4.00:14:48
Finished project demo
Урок 5.00:07:49
Setup react nextjs client
Урок 6.00:07:38
Layout component
Урок 7.00:05:16
Head section
Урок 8.00:05:52
Link component
Урок 9.00:08:37
Nav progress bar
Урок 10.00:09:13
Loading css
Урок 11.00:25:28
Register page
Урок 12.00:04:38
Client folder setup and next steps
Урок 13.00:12:41
Server setup
Урок 14.00:06:16
Routes
Урок 15.00:04:51
Controllers
Урок 16.00:15:58
User schema
Урок 17.00:16:43
Virtual field and methods
Урок 18.00:15:56
More NPM packages
Урок 19.00:10:24
Axios post request
Урок 20.00:17:06
Validation
Урок 21.00:12:28
Mongo atlas
Урок 22.00:15:16
AWS signup
Урок 23.00:19:35
AWS SES for sending email
Урок 24.00:20:41
Register activation email
Урок 25.00:08:14
Register email params
Урок 26.00:13:31
Success and error messages
Урок 27.00:06:23
Async await
Урок 28.00:09:01
Environment variables with nextjs
Урок 29.00:21:57
Activate account - client
Урок 30.00:20:27
Activate account - server
Урок 31.00:19:31
Login - server
Урок 32.00:12:36
Login - client
Урок 33.00:18:57
Local storage and cookie helpers
Урок 34.00:08:07
Save user token in browser cookie
Урок 35.00:11:54
Redirect based on role
Урок 36.00:13:29
Logout and conditional rendering
Урок 37.00:16:15
Express JWT middleware
Урок 38.00:08:11
Auth and admin middleware
Урок 39.00:16:03
User profile - server
Урок 40.00:20:06
SSR and getInitialProps
Урок 41.00:19:31
Auth routes server side
Урок 42.00:19:01
withUser and withAdmin HOC
Урок 43.00:04:15
What's next?
Урок 44.00:21:58
Forgot password - server
Урок 45.00:13:31
Reset password - server
Урок 46.00:19:31
Forgot password - client
Урок 47.00:21:33
Reset password - client
Урок 48.00:08:17
Category schema
Урок 49.00:13:29
Category routes and controllers setup
Урок 50.00:15:44
Trying create category with postman
Урок 51.00:20:43
AWS S3
Урок 52.00:36:42
Uploading images to S3 using form data
Урок 53.00:38:55
Create category - client
Урок 54.00:20:20
Show all categories
Урок 55.00:14:07
Uploading base64 image to S3
Урок 56.00:23:10
Image resize client side and upload
Урок 57.00:15:06
Rich text editor
Урок 58.00:10:59
Link schema
Урок 59.00:14:04
Link validators routes and controllers
Урок 60.00:10:30
Link create and read - server
Урок 61.00:06:06
Steps to create/submit link - client
Урок 62.00:12:37
Submit link page part 1
Урок 63.00:10:12
Submit link page part 2
Урок 64.00:17:06
Submit link page part 3
Урок 65.00:15:20
Submit link page part 4
Урок 66.00:15:36
Submit link page part 5
Урок 67.00:22:19
Single category with links - server
Урок 68.00:19:49
Single category page with links part 1
Урок 69.00:24:02
Single category page with links part 2
Урок 70.00:10:59
Load more
Урок 71.00:12:54
Click count - server
Урок 72.00:09:30
Click count - client
Урок 73.00:07:51
Infinite scrolling
Урок 74.00:04:05
Next steps
Урок 75.00:14:19
Categories read - admin
Урок 76.00:13:43
Update delete buttons and warnings
Урок 77.00:13:53
Update category - server
Урок 78.00:03:27
Delete category - server
Урок 79.00:09:51
Delete category - client
Урок 80.00:12:57
Reset mongo atlas database and AWS S3
Урок 81.00:29:43
Update category - client
Урок 82.00:20:12
All links by user
Урок 83.00:16:05
User dashboard part 1
Урок 84.00:13:05
User dashboard part 2
Урок 85.00:06:58
Update delete link - server
Урок 86.00:19:25
Update link - client
Урок 87.00:08:00
All links for admin - server
Урок 88.00:13:32
All links for admin - client
Урок 89.00:13:29
canUpdateDeleteLink middleware
Урок 90.00:14:05
Delete any link by admin
Урок 91.00:12:05
Update any link by admin
Урок 92.00:08:42
Choose favourite category on user registration - client
Урок 93.00:07:54
Choose favourite category on user registration - server
Udemy - одна из самых больших площадок в мире по доставке обучающего контента от разных авторов всего мира. Присутсвуют курсы практически на любую тему.