Статьи

Кодирование в облаке

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

Как я уже говорил, до сих пор, находились ли вы в офисе или сидели в кафе, вам, как правило, требовался компьютер для разработки (в большинстве случаев — ноутбук MacBook, Windows или Linux), который может иметь следующие вещи:

  • Редактор или IDE, такие как Sublime, Vim или Visual Studio
  • Локальный веб-сервер, такой как MAMP
  • Сервер приложений и фреймворк (RoR, Python / Django, Node.js)
  • Гит
  • LiveReload или CodeKit

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

Но по мере того, как широкополосная связь становится все более распространенной, требования к такому мощному устройству становятся менее строгими из-за большого количества облачных предложений, доступных для разработчиков. Такие сервисы, как Cloud9 IDE и Nitrous.io, переносят в облако реальные среды разработки, позволяя разработчикам работать удаленно и предлагая большую гибкость в отношении устройств, с которыми они выбирают работать.

Эти сервисы не только выводят IDE в Интернет, но и предоставляют инфраструктуру, которая предоставляет разработчикам:

  • Полная интеграция Git с такими сервисами, как Github и Bitbucket
  • Терминальный доступ для функциональности командной строки
  • Виртуализированные бэкэнды, позволяющие вам раскручивать экземпляры RoR или Node.js
  • Развертывание в производственных службах, таких как Heroku или Windows Azure
  • Командное сотрудничество

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


Мое первое знакомство с реальной облачной IDE было Cloud9 . У них был очень простой онлайн-редактор с интеграцией с Github, который в то время был очень крутым и явно очень альфа. Тем не менее, это было невероятно многообещающе, и наряду с работой, которую Mozilla делал над Беспином , оно показало огромный потенциал. Интересно, что проект Mozilla Bespin был позже объединен с Ace, редактором Cloud9, который, кажется, внес значительный вклад в удобство редактирования в облачной IDE.

C9 использует очень похожий ценовой подход к Github, предлагая хороший базовый набор функций с помощью модели freemium с более неограниченной функциональностью за 12 долларов в месяц. Различия сводятся к типу рабочих пространств, которые вы имеете, количество, которое вы можете иметь и функции, доступные в этих рабочих пространствах. Рабочая область — это место, где живет ваш проект, включая файлы проекта и инструменты и сервисы, которые вы можете использовать (например, Ruby или Python). Поэтому, в зависимости от сложности ваших потребностей, вам может понадобиться серьезно рассмотреть вариант премиум-класса, который дает вам:

  • Еще пять частных рабочих мест
  • Неограниченное рабочее пространство FTP
  • Больше виртуального дискового пространства для ваших рабочих пространств
  • Полный доступ к терминалу и командной строке в ваших рабочих пространствах

Опции терминала особенно важны, так как C9 позволяет вам использовать SSH и FTP на вашем собственном сервере, в основном позволяя вам использовать их службу исключительно в качестве облачной IDE.

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

У вас есть несколько вариантов входа в систему, в том числе традиционный сценарий электронной почты и пароля, или вы можете использовать OAuth через GitHub или BitBucket. Сделав это с последними двумя, вы получите доступ к репозиториям, которые вы уже сохранили в этих сервисах, как показано здесь:

с9-рабочее пространство

Рабочая область позволяет мне либо клонировать существующее хранилище из импортированного списка, либо клонировать по выбранному URL-адресу, либо создать новое рабочее пространство на основе удаленного сервера (через SSH или FTP)

новое рабочее пространство

Я решил клонировать мое «authy» репозиторий Git, который был образцом исходного кода, который я написал для статьи здесь на Nettuts + о двухфакторной аутентификации. Сервер приложений, который я использовал для этого, был ColdFusion, и я был очень взволнован, когда C9 правильно распознал файлы ColdFusion. Честно говоря, я этого не ожидал, поскольку CFML не так популярен, как раньше:

ида-authy

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

ида-терминал

Чтобы продвинуться немного дальше, обратите внимание, что на следующем снимке экрана я внес изменение в gettoken.cfm , добавив комментарий. Набрав git status на панели терминала, вы увидите измененный статус файла, как и следовало ожидать:

ида-терминал-ГИТ

Затем git commit -a -m "Added comment" и git push обновляет мое репо соответственно:

совершить-GitHub

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

с9-автозаполнения

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

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

Наконец, если вы любите приключения, вы можете выбрать собственную версию Cloud9 IDE, поскольку это проект с открытым исходным кодом, лицензированный по лицензии GPL. Страница GitHub предлагает хорошие инструкции о том, как установить его, как в * nix, так и в среде Windows, поэтому, если вы хотите отказаться от стоимости, примите это.


Nitrous.IO (отныне я буду называть Nitrous) — это новая опция, получившая высокую оценку таких разработчиков, как Иегуда Кац из проекта Ember.js и Тобиас Латке, выпускник Rails Core. Это все еще в бета-версии, но на данный момент работает впечатляюще хорошо. Они приняли подход, заключающийся в предложении полного виртуализированного стека, который не только включает в себя среду IDE, но и раскручивает то, что они называют «коробками», которые в основном содержат весь ваш стек разработки. Это включает в себя ваш выбор Ruby on Rails, Node.js, Python / Django или Go.

Новая коробка

Как и в случае с C9, они предлагают базовые услуги, которые позволяют вам надевать шины. Это достигается тем, что вы получаете достаточно «закисиных» очков (155), чтобы создать базовую коробку, которой, по их словам, должно хватить для большинства повседневных задач. Обратите внимание на изображение выше, что объем выбранной памяти и хранилища влияет на количество оставленных точек закиси. Стандартный базовый блок предоставит вам пять баллов, и, как и многие провайдеры VPS-хостинга, вы можете динамически выбирать больше ресурсов в зависимости от того, что вам нужно. Я уверен, что это выйдет дорого, как только он выйдет из бета-версии, но они позволяют невероятно легко заработать больше очков, не открывая свой кошелек. С помощью нескольких различных социальных связей и заданий вы можете заработать больше очков за свои функции:

N20-morepoints

Обратите внимание, что, выбрав несколько вариантов, я смог увеличить свои очки N20 со 155 до 180, и чем больше друзей вы пригласите, тем больше очков вы заработаете. Только не будь назойливым спамером!

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

После того, как вы выбрали свои настройки, настройка поля становится невероятно простой и даже имеет крутой анимированный индикатор выполнения:

n20-положение

Затем появляется IDE, и вы готовы начать работу:

n20-ида

В отличие от C9, я не нашел способа визуально увидеть доступные репозитории Github. Я предполагал, что подключение к Github также позволит мне легко клонировать одно из моих репозиториев в свою коробку. В итоге я следовал этим инструкциям, чтобы добавить SSH-ключи, сгенерированные Nitrous, в свою учетную запись Github, а затем сделать клонирование одного из моих репозиториев в IDE:

N2O-ГИТ-клон

Я также мог бы использовать функцию загрузки для загрузки файлов моего проекта:

n20-загрузки

Мне просто кажется, что получение прямого визуального доступа к вашему репозиторию GitHub является приоритетной функцией, на которую должна обратить внимание команда Nitrous, и что я считаю плюсом для C9.

Когда файлы были на месте, пришло время посмотреть, как работает IDE, и, судя по всему, она работает очень хорошо, легко распознавая различные типы файлов и предлагая подсветку синтаксиса в соответствии с типом файла:

N20-ида-файлы

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

Для тех, кто привык работать в терминале, вы найдете, что Nitrous легко адаптируется. На самом деле, вам действительно нужно чувствовать себя комфортно, чтобы в полной мере использовать сервис. Установка и запуск таких пакетов, как MongoDB или Memcached, осуществляется с помощью диспетчера пакетов Nitrous, который называется Parts который, как вы уже догадались, основан на командной строке. Например, установка MongoDB будет выглядеть так:

1
parts install mongodb

Если вы привыкли использовать apt-get в Linux или brew install в OS X, этот синтаксис должен быть очень знакомым.

Главное помнить, что редактор — это только одна часть уравнения. Здесь вы в основном работаете на полноценной машине в веб-браузере, поэтому комфорт в среде * nix определенно поднимет вам настроение.

Даже развертывание вашего сайта потребует от вас использования командной строки. Здесь нет опции «просто нажать кнопку». Nitrous легко интегрируется со следующими сервисами:

  • Heroku
  • Google App Engine
  • Microsoft Azure
  • Nodejitsu

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

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


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

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