Развертывание рабочего приложения Node/Express Mongo на AWS — отображение

razvertyvanie rabochego prilozheniya nodeexpress mongo na aws — otobrazhenie

Уроки, полученные при развертывании рабочей веб-приложения в AWS

Фон

Это не учебник исходя из кода. Он состоит из всех вещей, которые я хотел бы знать, прежде чем начинать проект, и шагов, которые я сделал и которые сработали достаточно хорошо. Это следует за разработкой рабочей веб-приложения Node.js, созданной с помощью фреймворка Express, развернутой на Amazon Web Services (AWS).

Полномасштабное руководство доступно здесь.

Есть целые книги о разработке планов, поэтому я не собираюсь здесь подробно рассказывать об этом. Просто возьмите один, каким бы он ни был.

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

Что-то, что может помочь в этом, это установить реалистичный график, который дает вам достаточный буфер для корректировки, если это необходимо.

Есть старая поговорка разработчиков, которая звучит примерно так: «Всегда разрабатывайте среду, которая является такой же, как ваша среда развертывания». Вот почему существуют такие вещи, как виртуальные среды. Это мудрый совет.

Сейчас так легко просто взять генератор (например, экспресс-генератор или приложение create-react-app), yarn install и написать весь наш код локально. Это отлично для разработки, но то, что я узнал во время последнего проекта: если вы ждете развертывания до конца, вы будете удивлены количеством вещей, которые «имеют работать», но не работают.

Для этого проекта я решил поэтапно разворачивать программу при ее создании. Это гарантировало, что то, что я строю, будет работать на среде, в которой я буду ее разворачивать. Кроме того, это сэкономило массу времени, когда пришло время фактического развертывания.

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

Кроме того, мне повезло с ДЕЙСТВИТЕЛЬНО хорошим клиентом

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

Такие фразы, как «Нам это нужно как можно скорее», являются хорошим показателем того, что клиент недооценит вашу ценность.

1*CY8CSJcXBrmMZjuZ0SKU7w
Ошибки неизбежны

Мне кажется, иногда мы смотрим на известные приложения, такие как Facebook или Instagram, и стараемся достичь этой цели с помощью наших программ версии 1.0. Это невозможно по двум причинам:

  1. Должное развитие программы требует участия пользователя. Как вы думаете, планировал Instagram добавить истории в своей версии 1.0? Конечно, нет, они ждали, пока Snapchat сделает это сначала, а затем скопировали их. ?
  2. Если вы ждете, пока он станет идеальным, он никогда не будет окончен.

Я имею в виду: делайте все возможное, но не зацикливайтесь на написании идеальной функции. Сделайте так, чтобы это работало, и усовершенствуйтесь по ходу.

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

делать НЕТ отправьте клиенту ссылку и скажите: «Просмотрите это», если вы планируете в ближайшее время покинуть свой компьютер. Я совершил ошибку, сделав это, а потом меня засыпали сообщениями в течение часа, пока я пытался пообедать. Если, конечно, вам не нравятся проблемы с суши. Не всегда выход.

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

Сначала я выделил всего две недели на бета-тестирование. Один проверить, один поправить. Этому не хватит времени. В конце концов, у меня была неделя бета-тестирования, первая часть, неделя очищения, а потом еще неделя бета-тестирования, а потом еще неделя очищения.

Этот эталон обусловлен моим опытом графического дизайна. Если мы придерживаемся дизайна, потому что он нам действительно нравится, мы будем игнорировать все отзывы пользователей (то, что действительно важно) и никогда не будем менять. То же касается создания программы.

Создание чего-то из ничего, как следует из названия, есть творческий акт. Вы принимаете много решений о том, как, по вашему мнению, пользователь будет взаимодействовать с тем, что вы создаете. Не думайте, что вы знаете лучше пользователя – вы не знаете.

Нет причин, почему вы не можете получать удовольствие от того, что вы делаете. Это не означает, что это не будет невероятно разочаровывать, но попробуйте насладиться этим как можно больше.

Сроки есть термины, но если вы можете включить что-то новое в свой стек, сделайте это. Со временем вы станете гораздо лучшим разработчиком.

Моим самым большим вызовом для этого проекта был AWS. Я потратил массу часов на знакомство с AWS. Но теперь у меня есть эта насечка на поясе для последующей работы. Было бы так легко просто развернуть его в Heroku и закончить, но это не самый лучший вариант по нескольким причинам.

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

пример: Один из открытых вопросов, которые у меня есть, состоит в том, что отступления в навигации неправильны. Это неисправность? Нет. Можно ли подождать, пока все основные функции будут выполнены, чтобы исправить это? Да.

Итак, я еще не исправил этого. Однако я выразил это клиенту, и они согласились с этим.

Модульное тестирование

Я ничего не делал с тестированием в этот проект, поэтому я не проводил модульное тестирование для этого проекта. Огромная ошибка. В конце концов, мне пришлось интегрировать тесты после того, как я уже создал вещь.

Модульное тестирование помогает в следующем:

  1. Каждый раз, когда я добавлял новую функцию или что-то менял, мне приходилось все тестировать вручную. Не хорошо.
  2. Он поддерживает уровень функциональности и позволяет реализовать некоторые недостатки вашего кода. Намеренное написание тестов, терпящих неудачу, помогает решить проблемы идентификации в коде.

Я настоятельно предлагаю курс TDD от FunFunFunction для начала.

Небольшая сторона: Если вы используете экспресс-генератор, он не экспортирует сервер.

Если вы хотите проверить сервер с помощью Mocha, вы должны экспортировать его в конце bin/www file.module.exports = сервер;

Рассмотрите каждую функцию подробнее с самого начала

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

Вы можете получить доступ к камере с помощью ввода HTML — Добро пожаловать на 2018 год.

Однако это не работает на незащищенных страницах в iOS.

Загрузка и изменение размера файла – это боль

Учебник, который я прошел, показал метод локального хранения, однако я хотел использовать AWS S3. Честно говоря, метод, который я настроил, не идеален, поэтому, надеюсь, я смогу решить этот вопрос лучше в будущем.

AWS не позволяет создавать сертификаты SSL, если вы новый аккаунт

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

Дополнительное примечание: Если вы используете AWS для хостинга, их менеджер сертификатов очень прост.

Хостинг базы данных Mongo

Я выбрал mLab для размещения своей базы данных mongo по нескольким причинам:

  1. Мне нужны резервные копии без необходимости обрабатывать резервные копии. mLab сделает это для вас.
  2. Я не хотел тратить кучу денег (точнее я не хотел, чтобы мой клиент тратил кучу денег). Они стоят 10 долларов за гигабайт.
  3. Кроме того, они разрешают размещение на AWS. Поэтому, по-моему, это будет быстрее. Я сомневаюсь, но это мнение, что имеет значение, не правда ли?

красивее

Более красивый – это спасение жизни. Однако он часто борется с моим ESLint. Во-первых, он всегда удаляет мои скобки вокруг отдельных функций параметров. Значение: (var) => {}

против

var => {}

Illustrator постоянно создавал фавиконки размером 1000 x 1001 пикселей.

Оказывается, если вы не разместите художественные доски в соответствии с пиксельной сеткой, это выбросит ее. Эту проблему можно решить с помощью функции автоматического упорядочения художественных досок. Больше информации здесь.

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

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

пример: Я изменил способ хранения изображений. Это было в поле под названием «документация». Когда я изменил способ хранения, я также изменил его в представлении, но это нарушило более старые записи.

Я решил это, сначала проверив, есть ли что-нибудь вообще. А если и был, запустите какую-нибудь логику.

Это не все, о чем я узнал, но, надеюсь, кое-что из этого кому-нибудь пригодится. Если у вас есть вопросы, свяжитесь со мной.

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

Счастливого Кодинаg!

Добавить комментарий

Ваш адрес email не будет опубликован.