Эта статья о развитии и запуске нью-лондонской Школы Маркетинга и ее онлайн-платформы.
Это был один из первых главных моих проектов, с которым я продолжительно работал после церемонии вручения дипломов. Я много слышал о Node.js и о том, как он изменяет мир, таким образом я был очень взволнован, когда узнал, что я буду работать с ним в этом проекте.
Должен признать, что я чувствовал себя немного обескураженным, когда читал спецификацию (спекуляцию) проекта. Новая система должна была быть построена в Node.js, которую я должен был изучить с нуля. У проекта был трудный, 12-недельный период времени. Проектная группа была разбросана по 6 странам. Руководителем проекта был ‘архитектор доставки’, инновационное понятие nearForm, который заменял традиционного менеджера проектов. Только для того, чтобы сделать коммуникации немного сложнее, на связи было также третье лицо: InterLink, компания, которая ранее обслуживала систему клиента.Давайте сначала посмотрим на клиента, на их существующую систему и что они требовали от работы nearForm.
Клиент и его Система
Лондонская Школа Маркетинга (LSM) является ведущим учебным заведением, базируемым в Лондоне и во всей Великобритании, которое предлагает аккредитованный маркетинг и деловые квалификации. Они уже создали фундамент дистанционного обучения для своих собственных студентов. Теперь клиент требовал, чтобы nearForm развил эту платформу, чтобы сделать ее полностью универсальным и применимым для любого колледжа и университета в мире.
Эта платформа включала в себя несколько систем:
- Академическая система управления
- Платформа для обучения
- Контент платформа
- Система онлайн-поступления
- Система подачи заявлений
Некоторые из систем особенно важны для любой образовательной онлайн-платформы, особенно платформа для обучения, которая делает возможным динамическую подачу конента.
Крутая линия обучения
Я собирался узнать о Node.js и я сделал то, что намного больше.
Node.js
Первоначально, все, что я знал о Node.js, было то, что он написан на JavaScript и обладает многими исполнительными преимуществами. Я быстро изучил эти преимущества, показал их, и должен был предложить ее, работая над LSM (Лондонской Школой Маркетинга).
Сначала, Node.js показался трудным для меня. Были некоторые понятия, которые какое-то время сильно схватили меня. Спустя некоторое время я увидел образец того, как работают эти вещи. Когда дело доходит до разработки программного обеспечения, я нахожу, что лучший способ учиться – это практика, так я взял многие обучающие программы в nodeschool.io. Они улучшили мое понимание относительно того, какой на самом деле сильный Node.js.
Одна из вещей, которые удивили меня больше всего с самого начала, было то, как Node.js позволяет тебе настраивать веб-сервер приблизительно с 10 линиями кодекса. Мне также нравилось сообщество Node.js где я заметил пакет, доступный для почти всего через npm. Работа над проектом LSM помогла мне узнавать об особенностях, которые предлагал Node.js, поскольку проект был полностью поддержан платформой Node.js.
Микросерверы (Микрослужбы)
В nearForm микрослужбы идут рука об руку с Node.js. Я изучил, как разработать микрослужбы, используя платформу Сенеки. В то время как проект прогрессировал, я замечал непосредственно преимущество использования микрослужб в противоположность одной большой службе, которая обрабатывает все. А также простое обслуживание и простое развертывание, эти преимущества также включают системную целостность — т.е. если одна микрослужба повреждается, это не приводит в нерабочее состояние все приложение. Микрослужбы (микросерверы), которые я записал – просто включенные, создают, читают и обновляют различные методы, в то время как другие, такие как поиск, являются более сложными.
AngularJS
Я усердно работал над академической системой управления (AMS). AMS – приложение в одну страницу, созданное при использовании AngularJS (см. ‘Инфраструктуру’ ниже для детальной информации о AMS).
Я узнал много о AngularJS и его функциях, включая и то, как могут использоваться директивы посредством нескольких страниц в приложении, как контроллеры обрабатывают логическое представление и как службы взаимодействуют с API, которое представляет Seneca. Я нашел, что AngularJS упростил быстрое создание веб-страницы, использовав существующие директивы и службы в приложении.
Обзор кода
Этот проект использовал формальный процесс рассмотрения кода. Это позволило мне улучшить качество моих запросов, получая обратную связь от других членов команды. На предоставленной работе один из членов команды рассмотрел и оставил комментарии, как можно улучшить определенный код. И как только обзор был завершен, код был объединен в ведущее устройство и живо запущен во время следующего развертывания.
Инфраструктура
Я также узнал о навыках разработки и о стороне инфраструктуры к проекту. Для этого проекта мы использовали Amazon Web Services (AWS). Мы использовали три различные группы серверов: один для непрерывной интеграции (CI), один для подготовки и другой для производства. А также использовали Дженкинса Jenkins , чтобы развернуться к серверам AWS, и мы также использовали nScale nearForm, чтобы позволить быстрое развертывание и простой откат. С помощью других членов команды я сконфигурировал nScale, чтобы развернуться к серверу CI.
Структура проекта
Наконец-то, я получил знание о структуре проекта; т.е. о том, где должны быть сохранены серверные службы и файлы фронтэнда. Это важно, поскольку не дозволяется противоречие в том, как хранятся файлы. Непротиворечивость в хранилище файлов упрощает поддержку проект и также позволяет другим разработчикам понимать архитектуру приложения.
Методология разработки
Данный проект был разработан при использовании быстрого и гибкого подхода. Этот подход был выбран по причине большого количества систем, которые должны были быть разработаны. Методология разработки была следующей:
Клиент предоставлял nearForm макеты и конструктивные требования.
Были проведены встречи с клиентом и всеми разработчиками для того, чтобы обсудить реализацию этих проектов.
Как только проекты были согласованы, архитектор доставки поручал работу каждому разработчику в течение каждой недели.
Архитектор доставки обрисовывал в общих чертах цели, которые будут достигнуты к концу недели. Цели были видны в basecamp.
Шаги разработки
Разработка была выполнена следующим образом:
Репозиторий был разветвлен в индивидуальную (персональную) учетную запись GitHub каждого разработчика. Все новые функции были продвинуты к этому репозиторию. Затем разработчик создает запрос на включение изменений из своего репозитория в GitHub репозиторий клиента.
Все запросы пересматриваются другими разработчиками проекта для поддержания высокого уровня, а также для достижения согласованности между каждой системой.
После того как запрос получения был рассмотрен и все комментарии и предложения адресовались, запрос получения объединяется в основное ответвление.
Сервер сборки Дженкинса автоматически создает и развертывает приложение на сервере непрерывной интеграции (CI).
Еженедельные просмотры клиента
Быстрая и гибкая методология также включила еженедельные демонстрационные примеры с клиентом. Эти демонстрационные примеры позволили клиенту давать обратную связь в каждой из различных систем. Клиент может использовать приложение, просматривая последнюю версию на CI или постановку сервера. Это очень эффективный способ разработки и гарантирует, что конечный продукт был точно таким, каким требовал клиент.
Методы развертывания
Первоначально, развертывание было установлено, используя традиционный подход с Дженкинсом как сервер сборки. Любое изменение, внесенное в основное ответвление каждой системы, было автоматически развернуто на клиенте сервера CI.
Чтобы развернуться к серверу подготовки, мы создали новое ответвление в клиенте repo и вызвали его v0.1.0, (например). Оно выдало нашему развертыванию номер версии. Затем мы выполняли задание на сервере Дженкинса, названном sync_repos. sync_repos , задание приняло этот номер версии в качестве параметра, а затем уже продвинуло то ответвление к lsmdeployment, отдельной учетной записи GitHub.
Чтобы создать сервер подготовки, мы установили параметр как вышеупомянутый номер версии и выполнили сборку. Рабочий сервер был создан таким же образом; однако, это требовало того, чтобы сервер подготовки был развернут сначала. К завершению проекта nScale был сконфигурирован, чтобы заменить вышеупомянутый метод развертывания.
Выпуск Продукта
Студенты из предыдущей платформы изучения должны были быть переданы новой платформе. Это повлекло за собой сложные миграционные сценарии.
Как только эти сценарии были выполнены, студенты могли войти в систему новой базы. Все новые платформы были успешно запущены и находятся теперь в активном ежедневном использовании студентами и всем штатом лондонской Школы Маркетинга.
Моя основная задача во время выпуска продукта состояла в том, чтобы записать сценарий, который будет отсылать определенную компанию по электронной почте студентов, зарегистрированных на различных курсах LSM, чтобы позволить им узнавать, что они могут теперь войти в систему и использовать новую платформу изучения. Студенты были переведены на новую платформу изучения на поэтапной основе; поэтому, было важно, чтобы сценарий отослал это по электронной почте на основе требований LSM. Это позволило нам протестировать определенные функции и удостовериться в том, что все работало правильно, прежде чем переместить всех студентов на новую платформу.
Мои следующие шаги
Завершение работы системы Лондонской Школы Маркетинга является примером того, как компании обновляют свои существующие системы, чтобы использовать Node.js. Я горжусь тем вкладом, который я сделал для этого. Даже при том, что это было «крещением огнем» в моей карьере, как разработчик программного обеспечения, я уже чувствую себя намного уверенней и уменьшил тот свой проект ‘новичка’, который стал успешным.
С моим новым знанием Node.js, AngularJS, Сенеки и nScale, я уже нахожусь в гуще моего следующего проекта: новая платформа сообщества для CoderDojo. Эта платформа подобна во многих отношениях проекту LSM, поскольку она также использует вышеупомянутые технологии. Я использую Seneca и AngularJS, чтобы реализовать и бэкэнд и функции фронтэнда. Знание, что я получил в работе LSM, помогло мне сразу же взяться за дело с платформой CoderDojo, и я все больше и больше узнаю об этих технологиях каждый день.
Хотите работать на nearForm? Мы нанимаем.
Высоких конверсий!