Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Мысли об облачных IDE

6 комментариев

Мне кажется что никто на сегодняшний день не понимает, что такое облачные IDE. Если посмотреть на то, что люди реально пишут, получается у них следующее

  • Редактор в облаке который пусть и имеет подсветку синтаксиса, но остается достаточно рудиментарным и не обладает даже сотой долей набора фич, которые нужны современным пользователям всяких IDE.

  • Возможность сразу использовать 100500 языков, т.к. все компиляторы уже установлены и настроены. (Только в большинстве случаев разработчик использует один язык, но выбор – это все равно хорошо.)

  • Возможность компилировать и запускать программы в облаке соответствующий код в sandbox-е, так чтобы нельзя было снести к чертям всю систему. EdX даже умудрился сделать подобную штуку для CUDA, что не тривиально.

  • Коллаборативные возможности вроди sharing (a la GitHub Gist), ветвления (как в IdeOne) и прочие возможности, которые являются фактически source control-ом.

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

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

  • Поддержка тестирования — хочется иметь возможность запускать вагон тестов и фактически использовать серверную часть не только для continuous integration (это слишком просто), но именно для continuous testing в стиле NCrunch и подобных

  • Поддержка профилирования — это проще чем отладка и в принципе должно быть как-то реализуемо.

  • Поддержка деплоймента — чтобы готовые приложения сами разворачивались, клались в NuGet, и все такое

  • Поддержка мониторинга — раз уж на то пошло, почему бы не мониторить приложения и выдавать статистику по ним? Кстати, именно это уже делается в VS Monaco/Azure.

Основная проблема с Cloud IDE – это то что все забыли зачем облако. То есть облака рассматриваются как «социальный дропбокс», хотя на самом деле, облако – это место где хорошо масштабируются ресурсы. Зачем нужны ресурсы?

  • Во-первых, на (общих) серверах можно ставить более серьезное железо. Если учесть что разработчики для всех целей кроме CI не используют все мощности компа постоянно, покупка 32-процессорных систем с FusionIO и прочими вещами уже не кажется такой страшной.

  • Многие вещи параллелизуются. Например компиляция. Я уже какой год использую IncrediBuild вместо встроенного MSBuild. В облаке можно отмасштабировать компиляцию пропорционально размеру проекта.

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

  • Тестовое покрытие (code coverage) – тоже штука дорогая и в принципе на него можно выделать машины побыстрее.

Думаю идея понятна – эластичный рост облака до объема задачи позволит разработчику получать больше информации о своих наработках, и получать эту информацию быстрее (и в идеале – непрервыно). Но самое интересное я оставил напоследок, а именно:

  • Более глубокий анализ кода, включая спекулятивный анализ – это когда мы например меняем код в нужном (как нам кажется) направлении, перепрогоняем все тесты (ибо ресурсы позволяют) и замеряем перформанс дабы понять что лучше работает.

  • Перекрестный анализ проектов на предмет использования того или иного API. Мне почему-то кажется, что modus operandi взаимодействия с типовой библиотекой «шаблонизируется», и тем самым может быть использован для предоставляния пользователю более умных подсказок.

  • Можно использовать специализированное железо (например Xeon Phi) – возможность, которая недоступна большинству разработчиков ввиду дороговизны а также невозможности втиснуть такую карту в типичный MBP. (В теории, можно строить специализированное железо для ускорения задач программирования, но боюсь индустрия на такое не способна – не хватает кругозора и понимания вещей.)

Я надеюсь что рано или поздно можно будет использовать эти и другие возможности в облаках и на кластерах тоже. Когда – понятия не имею. Но мысли пока вот такие. А как еще можно использовать облако для разработки? Напишите в комментариях. ■

Advertisements

Written by Dmitri

10 марта 2014 в 23:23

Опубликовано в Development

Tagged with , , , ,

комментариев 6

Subscribe to comments with RSS.

  1. Разработчикам для мобильных платформ не помешал бы кластер с разношерстными девайсами (живыми, когда возможно, а не эмуляторами), на которых можно деплоиться/запускать/отлаживать/тестировать приложения — а то иметь свой зоопарк дорого.

    Разрабочикам кросс платформенных приложений тоже такое бы не помешало: сколько раз уже было, что на ms.net что-то работает, а на mono — даже не собирается, и аналогично с msvc vs gcc.

    Alexander Buryak (Rageous)

    10 марта 2014 at 23:51

    • Полностью согласен. То же самое с написанием кода для разных GPU.

      Dmitri

      10 марта 2014 at 23:53

    • Не так давно я ушёл от .Net стека и как раз занимаюсь чем-то похожим, о чём вы рассказываете в статье. Есть такая концепция docker.io — правда работает она для cемейства unix.
      Это виртуальная машина в рамках процесса, использующая внутри linux containers и AUFS. Внутрь этого контейнера я могу запихнуть все зависимости, которые мне надо для моего проекта: java 7, mysql, nodejs etc, закоммитить это в image и развернуть затем на другой машине за секунды… Мы в частности используем для развёртывания Amazon EC2.

      Aleks Borodkin

      11 марта 2014 at 0:26

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

        Dmitri

        11 марта 2014 at 9:32

  2. Нам невозможно впарить sh*t — нас в облака не затащить! :)
    Дим, ну ты что, всерьёз думаешь, что «облака» — это будущее?? Даже для «америк» это сомнительная затея как по надёжности, так и по защищённости. А с моей т.з. все эти облачные монстры — тупая попытка взять всех за яйца — спасибо, мы уж как-нибудь в оффлайне поживём (что и делали успешно предыдущие 40 лет).

    Ivan

    11 марта 2014 at 3:05

    • Это банально cost-effective — вместо того чтобы закупать свое железо, нанимать админов и тратить вагон времени на точную настройку, вмест этого воспользоваться всем готовым. Это во-первых. Во-вторых эластичности по ресурсам не могут добиться даже крупные IT компании, а про мелкие мы вообще молчим. Так что с точки зрения денег все рационально. С точки зрения privacy — другой вопрос, конечно.

      Dmitri

      11 марта 2014 at 9:34


Оставить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: