Migrate!
Upcoming SlideShare
Loading in...5
×
 

Migrate!

on

  • 1,420 views

My presentation for DevClub.eu 27.07.10 meeting.

My presentation for DevClub.eu 27.07.10 meeting.

Statistics

Views

Total Views
1,420
Views on SlideShare
1,050
Embed Views
370

Actions

Likes
0
Downloads
3
Comments
0

1 Embed 370

http://www.devclub.eu 370

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

Migrate! Migrate! Presentation Transcript

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