Создание Course Assist, часть 8. Развертывание серверной части Course Assist в AWS

Теперь, когда активная разработка Course Assist завершена, я начал процесс развертывания, первым шагом которого является развертывание серверной части в Amazon Web Services (AWS)😁. Серверная часть была построена на Python с использованием Django и остального фреймворка Django для API с базой данных PostgreSQL. Я начал с серверной части, чтобы запустить несколько тестов и посмотреть, как приложение работает с развернутым сервером, а не с сервером, работающим на моей локальной машине. Итак, без лишних слов, давайте сразу к делу.🤸‍♀️

Почему я выбрал AWS🤔

Честно говоря, мне было трудно решить, на какой платформе развернуть бэкенд🥲. Я потратил много времени на проверку различных сервисов, пока не остановился на AWS. Из сервисов, которые я проверил, было 3, которые выделялись. Это были PythonAnywhere, Heroku и AWS. Теперь они выделялись в основном потому, что у меня есть с ними какая-то история😂. Позвольте мне разбить его:

PythonAnywhere: PythonAnywhere был моим хостинговым сервисом в течение некоторого времени, потому что развертывание очень просто для бэкэндов Python, а также у него действительно хороший бесплатный уровень для небольших проектов😏. Все мои проекты, созданные на Django, были развернуты на PythonAnywhere, поэтому возникает вопрос, почему я не использовал его на этот раз? Ну, две основные причины этого были: во-первых, я мало что понимал в пакетах хостинга, которые они предлагали, кроме бесплатного для небольших проектов😂. Поскольку Course Assist является приложением, которое потенциально могут использовать многие люди, я не хотел платить за пакет хостинга, который не соответствовал бы потребностям приложения, и опять же, я не хотел платить много за ресурсы, которые использовать полностью🙄. Во-вторых, поскольку я использовал PythonAnywhere в течение некоторого времени, мне хотелось получить новый опыт, что-то, что немного бросит мне вызов. Поэтому по этим двум причинам я решил не использовать PythonAnywhere.

Heroku: Пару месяцев назад Heroku был моим первым выбором, я даже развернул серверную часть Course Assist в Heroku на бесплатном уровне, который они предлагали, но затем, когда Salesforce решил отказаться от бесплатного уровня🙄, я также просто решил двигаться дальше, потому что я был Пока не совсем готов заплатить полную цену.

Amazon Web Services (AWS): я впервые познакомился с AWS, когда в прошлом году проходил курс по основам AWS на последнем курсе университета. Несмотря на то, что я нашел это довольно сложным из-за крутой кривой обучения, чем больше я знакомился с ним, тем больше он мне нравился. Перенесемся в наши дни: на моей работе мне недавно пришлось развернуть приложение Laravel на AWS EC2, и это еще больше укрепило мой интерес и знания об AWS, поэтому я решил пойти на это. Я не на 100% хорошо разбираюсь в AWS, есть еще много вещей, которых я не понимаю, которым еще предстоит научиться, и я также немного боюсь, что могу найти 1000-долларовую купюру в конце месяца. 😅 но я все равно считаю, что это лучший вариант для меня на данный момент.

Хотя я остановился на AWS. Все упомянутые выше варианты очень хороши, и я настоятельно рекомендую их всем, кто хочет развернуть приложение Python Django.

Развертывание в AWS EC2

Я решил развернуть на AWS где-то в январе, но тогда планировалось использовать Elastic Beanstalk, но это была плохая идея😂. Не хочу, чтобы это выглядело так, как будто я бросаю тень, но я нашел процесс развертывания в Elastic Beanstalk очень сложным, и я, честно говоря, никогда не хочу делать это снова 🙅‍♂️, и именно так я наткнулся на EC2. Так что же такое EC2? Согласно официальной документации, EC2 — это Amazon Elastic Compute Cloud, сервис AWS, предоставляющий масштабируемые вычислительные мощности в облаке Amazon Web Services (AWS).

Как упоминалось выше, я недавно работал с AWS EC2 на своей работе, чтобы развернуть проект Laravel. Благодаря этому я хорошо познакомился с EC2 и с тем, как он работает, а также его намного проще настроить по сравнению с Elastic Beanstalk. Несмотря на то, что у меня есть довольно приличное понимание EC2, все еще есть много вещей, которые я не мог понять при развертывании бэкэнда Course Assist. Мне также нужно было решить, буду ли я использовать EC2 для размещения сервера базы данных или использовать для этого Amazon Relational Database Service (RDS). Но после целых 2 дней исследований😅 я остановился на EC2 для всего, а затем успешно развернул бэкэнд Course Assist на AWS EC2 без особого сопротивления. С помощью REST API Django теперь я могу перемещать данные между двумя приложениями Course Assist и развернутой серверной частью.

Далее я хочу запустить несколько тестов и посмотреть, как приложения Course Assist работают при общении с развернутым сервером. Завершив этот важный шаг, я стал на шаг ближе к официальному запуску Course Assist, но перед этим мне также нужно развернуть сервер NodeJs Socket, что вы не захотите пропустить, так что следите за обновлениями блога. Спасибо за прочтение и увидимся в следующем.🙏