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

Недавно я работал над проектом по разработке сайта в Китае для Коалиции Евангелия, и история начинается с ужасного начала:

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

Чтобы было понятно, чем я занимаюсь, вот мой проектный комбинезон:

Предыстория проекта

Проект, над которым я работаю в The Gospel Coalition, — это независимый проект по разработке сайта, переданный на аутсорсинг китайской команде. Вся рабочая команда довольно глобализирована, и проект разработки сайта осуществляется посредством сотрудничества по всему миру.

Структура проекта

По сравнению со сложным фоном проекта структура проекта довольно проста. Он состоит из трех независимых сервисов:

  • WordPress: включен для редакторов в качестве закулисья для управления контентом, что позволяет им публиковать свои статьи и получать доступ к другому контенту.
  • Базы данных: база данных MySQL. Оба сервиса будут обращаться к одной и той же базе данных, и WordPress будет писать в нее, в то время как официальный сайт читает
  • Независимый официальный сайт: Отображение контента. Мы не используем шаблоны WordPress, так как есть много настроек. Сайт разработан самостоятельно на Java (Spring Boot + Thymeleaf)

Первоначальный план и стратегия разработки

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

  • Подать заявку на тестовый сервер
  • Настройка среды тестового сервера
  • Установите Jenkins и настройте информацию о его развертывании.
  • Развертывание локального проекта и электронная почта менеджеру проекта для приемочной проверки
  • Внесите изменения в соответствии с отзывами и… зациклите предыдущий процесс.

Первая попытка разработки в облаке

Все бы успеть, если бы не дальнобойная задача. Сидя в KFC за 40 минут до отправления поезда, я был озадачен рядом проблем: я не мог прямо сейчас писать код, потому что мне нужно будет загрузить много программ для нового MacBook, настроить среду разработки. и т. д., и самое главное — какую скорость интернета мы можем ожидать? У меня даже нет столько времени ждать!

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

Я собираюсь объяснить, что я сделал с ним и как он в конечном итоге помогает мне выполнять все мои хлопотные задачи точно в срок:

Я включил свой MacBook, подключенный к точке доступа. И вот идет старый процесс, я гуглил TeamCode, создаю учетную запись и вхожу в нее. Что меня удивило, так это процесс развертывания: после авторизации моего репозитория Git в Pylon среда разработки Java была создана в течение 5 секунд!

Я выбрал конфигурацию по умолчанию с двумя виртуальными процессорами и 4 ГБ ОЗУ, более или менее виртуальную машину с Linux. Затем я вытащил коды.

Возможно, Pylon обнаружил, что я работаю над своим проектом на Java, поэтому Git и Maven были установлены по умолчанию. Он поддерживает как VSCode, так и встроенную Cloud-IDE. Поскольку разработка всех основных сервисов и стилей завершена, осталось лишь несколько настроек и отладки. Я пропустил загрузку другой IDE и работал непосредственно над ее Cloud-IDE.

Я снова начал волноваться, когда узнал, что мне нужно структурировать mvn install, прежде чем все запускать. Согласно моему предыдущему опыту, загрузка всех этих зависимостей может занять более 20 минут, и моя точка доступа может не выдержать этого. А пока я понял… Эй, разве это не удаленная машина? Это должно быть основано на мощности интернета и алгоритма сервера, я не должен об этом беспокоиться. После того, как началась загрузка зависимостей, я упаковал свой MacBook и начал садиться в поезд. Хотя он был настроен, как и ожидалось, когда я сел на свое место, все равно приятно видеть, что все было готово к работе.

Теперь, когда моя отладка была сделана после 2-х часов кропотливой работы на сверхскоростном пассажирском экспрессе, меня озадачила другая проблема: Как я должен отправить проект в личку на проверку, не обращаясь за сервером и не говоря уже о развертывании Jenkins?

Ломая голову в поисках оптимального решения, я очень ценю, что Документы TeamCode были, несомненно, полезны! Я попробовал Tin — еще одно облачное решение, предоставленное TeamCode — для запуска приложения, и моя проблема с покупкой тестового сервера и задачей развертывания была решена в мгновение ока.

Tin — это, по сути, продукт, который упаковывает приложение, поэтому он действительно помогает, поскольку менеджера по проектам интересуют только результаты, а не коды. Я снова загрузил свои коды в репозиторий Git и создал Tin для PM.

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

Небольшая интерлюдия

В первую ночь все идет гладко: PM может осмотреть проект через Tin. Он предложил несколько проблем, и все они решаются с помощью Cloud-IDE + Pylon. После нескольких электронных писем туда и обратно проверка в основном завершена.

После еще одного долгого рабочего дня мы столкнулись с еще одной ошибкой, когда я ехал в метро, ​​возвращаясь в Шанхай. Один из JS-методов на странице конфликтует с общим методом, и страницу невозможно открыть! До официального релиза всего час, а у меня нет возможности кодить в метро. Я глубоко виноват, если весь проект приходится откладывать и всем приходится работать сверхурочно только из-за меня.

В этой безвыходной ситуации я попытался спросить, могут ли помочь программисты переднего плана. Я отправил ему ссылку-приглашение и «заставил» его присоединиться к моему рабочему пространству, чтобы помочь изменить коды. В конце концов он согласился помочь после того, как признал, что нет необходимости в развертывании среды, структурировании и всех этих хлопотных задачах — и в большом угощении от меня. Мы общались по телефону, инструктируя его, как пользоваться Pylon и Cloud-IDE.

Благодаря быстрой реакции все сделали за 10 минут. Приложение обновилось на Tin, личка его проверила, и… Уф, сайт плавно запустился вовремя.

Примечания

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

Исходя из своего опыта, я предполагаю, что облачная разработка с TeamCode поможет в следующих ситуациях:

  1. Гибкая ситуация разработки. Cloud-IDE + Pylon будет полезен, если вы переключаетесь между компьютерами и рабочими средами. Поскольку все ресурсы находятся в облаке и нет необходимости в развертывании в среде, разработка в облаке может быть достаточно гибкой.
  2. Быстрая упаковка и развертывание. Tin может быть полезен для таких ситуаций, как инспекции, демонстрационные презентации, технические коммуникации, быстрое POC и т. д. Он позволяет нам удобно демонстрировать наш проект другим.
  3. Командное сотрудничество. Например, ваши товарищи по команде могут отлаживать проект напрямую, не беспокоясь о времени и географической разнице. Каждый может использовать сервис в соответствии со своим темпом на TeamCode, так как большинство сервисов автоматизировано.

Спасибо, что прочитали мою статью и надеюсь, что мой опыт будет вам полезен. Не стесняйтесь комментировать ниже для обсуждения!