2. О проекте
• http://knigafund.ru
• Электронная
библиотека
• 38 тысяч книг на
текущий момент
• RoR 2.3, Postgres, Nginx
+Mongrel
3. Проект в начале 2008
• Разработка силами аутсорсеров в
течении года.
• Назначенный релиз в сентябре.
• Код на Symfony.
4. Хронология 2008
• Май - формирование команды.
• Июнь/июль - отказ от услуг аутсорсеров.
• Июль/август - доводка проекта своими
силами.
• Июнь-сентябрь - разработка DRM/Backoffice
на основе Rails 2.1
• Октябрь - полноценное открытие, принятие
решения о разработке новой версии на Rails.
5. Why bother?
• Symfony - php framework. Слабо
документирован, вторичен, тащит за
собой все проблемы с php.
• Аутсорсеры на проекте меняли команду
несколько раз.
• // FIXME: 06.12.07 обработать ошибку и
выдать нормально результат.
6. Начало работ по
миграции
• Находим ведущего программиста владеющего
технологией. В данном случае rails-ninja как ему
кажется.
• Долго спорим с ним по поводу best practices (до
появления http://github.com/flyerhzm/
rails_best_practices еще год).
• В процессе подготовки работ по миграции
увольняем прошлого “специалиста”.
• Учим команду. Основной вид работ - копирование
работающего поведения.
7. Процесс
• Миграция заняла 3,5-4 месяца (в наших широтах
слишком много праздников в начале года).
• Работающий прототип был готов на втором
месяце.
• Перенос данных чуть ли не самая сложная
работа.
• Беспокойный код (if !true vs. unless true) -
основная проблема программистов
переходящих с php.
8. Плюсы миграции
• Разработка по прототипу.
• Возможность сделать по-уму.
• Возможность плавно переобучить
команду.
9. Минусы миграции
• Две версии требуют одновременной
поддержки.
• Данные требуют миграции.
• Архитектурные ошибки наследуются
(например маршрутизация).
10. Why now?
• http://www.webkomora.com.ua/ru/articles/
web/management/man-month/11.html
Брукс все так же актуален. Допущения
устаревают, ошибки копятся.
• Никто не хочет быть “специалистом по
большим машинам”.
• Rails 3 (смотри дальше).
12. Perl
• Ларри Уолл дважды побеждал в
международном конкурсе запутанного
кода на языке программирования Си.
http://www.perlfoundation.org/perl6/
index.cgi?larry_wall
• Негативно настроенное сообщество.
• Perl 6.
14. Ruby
• полностью объектен.
• обладает хорошим инструментарием
мета-программирования.
• большое позитивно настроенное
сообщество.
15. Why Rails?
• Ruby.
• Community.
• Большинство других фреймворков
находятся в положении догоняющих.
• Make easy things trivial, make hard things
easy, make impossible things possible!
16. Rails 3
• Новый маршрутизатор.
• Новый синтаксис ActiveRecord.
• Bundler.
• Компонентная модель фреймворка.
• Unobtrusive javascript.
18. Бонус-трек
• Не только для веба - производственная
линия.
• Не только для базы - демо-сайт.
19. Производственная
линия
• Rails приложение генерации контента для сайта.
• Построено вокруг главной сущности - книга. С
использованием ActsAsStateMachine (aasm) gem.
• Обработка поделена на задачи посредством rake tasks
наследующих окружение (модельный слой).
• Часть задач выполняется на виртуальных windows машинах,
часть на центральном сервере обработки.
• База едина и за счет конечного автомата aasm сохраняет
целостность.
• Веб-интерфейс используется на центральном сервере
обработки для статистики и управления линией.
20. Демо-сайт
• Приложение для демострации режима
чтения книги - http://demo.knigafund.ru
• config.frameworks -=
[ :active_record, :active_resource,
:action_mailer ] в config/environment.rb
• Modelless MVC приложение, вся логика
находится в пределах контроллеров.
21. Заключение
• NoSQL? Or NoMySql?
• http://mitpress.mit.edu/sicp/
• Просто изучайте и внедряйте что-либо
новое.