Hackernoon logo

Вот как я перешел с AWS на Heroku | Хакер полдень

Аватар профиля автора

@MichaelBМайкл

Я запускаю Dev Spotlight — мы создаем технический контент для таких технологических компаний, как Heroku, Rollbar и другие.

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

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

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

Вот скриншот исходного состояния, содержимое которого удалено из соображений безопасности:

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

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

Новое приложение Путешествие

Так как я хотел стать более знакомым с запуском приложения в Amazon Web Services (AWS), я решил использовать потребности моей свекрови, чтобы помочь с этими усилиями.

Моей целью было использовать следующие фреймворки:

  • Угловой / Угловой CLI.
  • нг-самозагрузка.
  • угловой шрифт удивительный.
  • JQuery.
  • Spring Boot (Java API).
  • База данных MySQL.
  • Okta.
  • GitLab.

В рамках бесплатной пробной версии я планировал использовать следующие компоненты AWS:

  • Elastic Beanstalk для API Java и базы данных MySQL.
  • Контейнер S3 для размещения статического углового клиента.
  • Менеджер сертификатов AWS и CloudFront.

За несколько часов, в течение нескольких недель, в течение которых я мог найти свободное время (имея дома малыша), я смог закончить разработку Java API и клиента Angular. Я обнаружил, что подключить Okta к решению было относительно просто. Когда-то у меня было понимание того, как работает решение.

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

Хотя можно использовать существующую базу данных, я не смог потратить много времени на ознакомление с концепциями безопасности и конфигурации в рамках набора сервисов AWS.

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

Обновленная основная форма приложения (с тестовыми данными) отображается ниже:

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

Жизнь после бесплатной пробной версии

AWS великолепен тем, что есть бесплатная пробная версия, которая длится целый год. Консоль AWS очень полезна для того, чтобы сообщить вам, что соответствует требованиям, а что нет, как «бесплатные» в течение этих первых 12 месяцев.

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

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

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

После окончания бесплатного ознакомительного периода я обнаружил, что трачу около 25 долларов в месяц на то, чтобы моя свекровь получила модернизированное приложение. Совсем неплохо, даже если я плачу за ее услуги.

История повторяется

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

Так как я не являюсь человеком DevOps по профессии, мои личные заметки чрезвычайно полезны для меня, поскольку, с моей личной точки зрения, не все так просто.

У меня есть шаги, которые мне нужно выполнить при обновлении клиента, как с помощью Angular Framework, так и с помощью сервиса AWS S3, который обслуживает статический контент веб-сайта.

С другой стороны, у меня есть шаги, которые необходимо выполнить при внесении изменений в Java API, работающий в Spring Boot. Если будут внесены изменения в уровень безопасности, у меня есть заметки о том, как эти обновления также интегрированы.

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

Обновленное приложение Journey

Инновации, безусловно, являются ключом к успеху на любом уровне жизни. Профессиональный спортсмен постоянно оттачивает свои навыки, чтобы оставаться конкурентоспособным.

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

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

  • Я полагаюсь на список шагов для выполнения обновлений — не идеальная ситуация.
  • Я не знаю, как мои текущие расходы сравниваются с другими вариантами.
  • Я хотел бы решение, которое требует меньше инвестиций DevOps.

Учитывая Героку

Проведя некоторый анализ, я смог найти некоторые альтернативы для моей ситуации. В то время как Microsoft Azure, Google Cloud и другие «облачные» варианты существуют, я хотел найти что-то, что было бы более чем заменой 1: 1.

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

Я действительно хотел рассмотреть варианты «Платформа как услуга» (Paas) на данном этапе моего проекта. Я решил сосредоточиться на Herokuнесмотря на некоторый интерес к CloudBees, Firebase и Engine Yard, потому что Heroku, похоже, является явным лидером в этом пространстве.

Честно говоря, это та же самая причина, по которой я решил использовать AWS в начале 2018 года.

Установка ожиданий

Из моих ранних исследований я смог заключить следующие различия между моим текущим прикладным пространством (AWS) и моим целевым пространством (Heroku):

Это упражнение позволило мне понять и установить ожидания для моего обновленного пути приложения.

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

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

Если ежемесячные расходы меньше или равны тому, что я привык платить, это только увеличит выгоду от перехода на Heroku.

Смотреть вперед

В следующих статьях этой серии я собираюсь начать свое обновленное путешествие по приложениям.

Первое, что я планирую понять, есть ли сценарий «Hotel California» для моего текущего приложения. Начать работу с AWS и Elastic Beanstalk легко, но насколько легко взять существующее приложение и перенести его в Heroku?

Оттуда я планирую создать новый контейнерный API для использования в Heroku. Есть некоторые аспекты (зарегистрированные как технический долг), которые я хотел бы провести рефакторингом в новом путешествии в Heroku только ради моего личного мнения.

В то же время я планирую внести некоторые коррективы и в клиента, основываясь на разговорах с моей свекровью.

Мне также необходимо выяснить, как статические файлы (в Angular) будут обрабатываться в Heroku, поскольку я хочу переместить все в целевой пункт назначения. Я ожидаю, что я также буду применять некоторые обновления безопасности.

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

В заключение я планирую привести сравнение этого нового приложения с тем, что, как я знаю, стало нормальным в использовании экосистемы AWS за последние 18 месяцев. Эта информация позволит принять решение, если Heroku является допустимым вариантом.

Хорошего дня!

Комментарии

Теги

Баннер Noonification

Подпишитесь, чтобы получать ежедневные обзоры лучших технических историй!





Источник: Вот как я перешел с AWS на Heroku | Хакер полдень


Обратная ссылка при копировании статьи: Вот как я перешел с AWS на Heroku | Хакер полдень

Leave a comment