понедельник, 5 марта 2012 г.

Анализ дня: цели и условия Continuous Delivery, "аутсорсовый" подход

    Всем привет.
    Продолжаю издеваться над собой.
    Ковыряясь все над тем же CD (Continuous Delivery) ушел немного в сторону философии. Какова цель CD, в чем она выражается и как измеряется. Вроде все просто. Цель - обеспечить бесперебойную и быструю поставку фичей из головы геймдизайнера непосредственно на компьютер рядового игрока. Но если моя фича попадает раз в три недели это достаточная скорость? Или раз в год? Сроков то не оговорено.
    Идем дальше. Условия для достижения данной цели я смог придумать два:

  1. Автоматизация всех действий - иначе быстро и без ошибок, а также постоянно не получится. 
  2. Необходимо в любой момент времени гарантировать и проверять, что база (транк) являются работоспособными. В обратной ситуации наладить максимально быстрый механизм отката. 
    Опять же. На каком этапе можно остановится, оглядеться и дальше работать только на поддержание этих условий? Собственно завтра попытаюсь вылить и формализовать это в виде диаграмм и более конкретных планов. Возможно поделюсь, если лень не одолеет.
    Вторая тема сегодняшнего анализа вытекает из первой. Поскольку мой день снова прошел под знаком общения и без единой строки кода, то совесть программиста  проснулась. Ну и начала ворчать над ухом, что мол много я времени уделяю планам, болтологии и поискам того как сделать вместо того, чтобы просто определиться что делать и писать код. Одним словом стала мне шить "аутсорсовый" подход. В принципе она где-то даже права. Даже сам замечал, что моя производительность и вообще заинтересованность проектом падает, если несколько дней подряд работаю без видимого, ощутимого в коде результата.
    Придется убаюкивать завтра диаграммами и тоннами кода. 
    На этом мой философский выпуск завершен, пошел практиковать. 
   
    Доброй всем ночи.

пятница, 2 марта 2012 г.

Анализ дня: TeamCity, встроенные скрипты

    Все-таки собрался с силами, чтобы продолжить серию. Как это всегда бывает написать второе сообщение намного сложнее, чем первое.
    Но перейдем ближе к делу. Сегодня выдалась достаточно сумбурная пятница и одной из причин этого стал мой первый кривой фикс на новом проекте :).
    Досталась мне в наследство билд система, поднятая с помощью TeamCity. Инструмент после CruiseControl-я выглядит замечательно, интерфейс очень дружелюбный и разобратся можно достаточно быстро.
    Одной из фичей TeamCity, является возможность писать cmd скрипты непосредственно через веб интерфейс. Вот этой фичей и воспользовался в полной мере тот, кто настраивал доставшуюся мне билд систему. Ну а я сегодня полез ее немного дотюнить. Нужно мне было всего-то поправить имя архива, который получается на выходе. Оказалось это нет так просто и я сразу ощутил все прелести встроенных скриптов.
    Пошли по пунктам:

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


    P.S. Еще в свое оправдение скажу, что мы уже пару дней назад начали выносить скрипты из TeamCity и переписывать их на Python. Думаю такая система будет намного лучше поддаваться контролю, изменениям и расширениям.

    Всем доброй ночи.

четверг, 1 марта 2012 г.

Анализ дня: делай сразу, GO и Artifactory

    Весна как известно время перемен. Вот и я сегодня в честь первого дня весны решил попробовать новую для себя штуку.
    Замечаю за собой нежелание подводить итоги недели, просто анализировать прошедший день. Поэтому решил поставить эксперимент. Каждый вечер буду писать о тех новых вещах, которые узнал за день. Ну а, если ничего не узнал, значит так и пишем, а потом ставим в уме минус, пожирнее.
    Вчера слушал интервью Радислава Гандапаса и он сказал, что одной из его сильных сторон является привычка делать все сразу. Не разводить сомнения, не продумывать мега хитрые планы,  а просто действовать ибо "опыт дороже знаний". Попробовал сегодня проследить за собой. Остался недоволен. Даже на протяжении одного дня было много моментов, когда тупил, ленился, и придумывал чтобы такое сотворить, чтобы ничего не делать.
    Уже в конце дня решил прочитать-просмотреть статью о Continuous Delivery, которая висела у меня в браузере несколько дней. Глаза выхватили две тулзы, требующие более пристального внимания. Это GO - сервер для continuous integration от ThoughtWorks Studios и Artifactory от JFrog. По идее Artifactory позволяет сохранять все артефакты билд системы и потом предоставлять к ним доступ всем желающим. Поскольку я сам сейчас активно занимаюсь настройкой continuous delivery то тулзы эти нужно будет рассмотреть более пристально. Кстати сама статья вот: http://java.dzone.com/articles/continuous-delivery-using Тоже рекомендую ознакомится.
    На сегодня все.
    Всем доброй ночи.