Wdrożenie Django na The Onion

Serwis The Onion zawierający prześmiewcze, nieprawdziwe wiadomości i reportaże niedawno przeszedł na Pythona i Django. Zespół IT serwisu opisał dość szczegółowo to wdrożenie.

Serwis wystartował w 2005 roku wykorzystując Drupala (istniał wcześniej oparty o inne rozwiązania). Wtedy była to bardzo dobra decyzja i nie było lepszych alternatyw. Już w tym okresie zespół był zainteresowany Pythonem, który był według zespołu lepiej zaprojektowanym językiem. W międzyczasie wdrożyli m.in. A. V. Club w Django zdobywając więcej doświadczenia z nowymi narzędziami. Po wdrożeniu Django na The Onion od razu zauważono poprawę w kwestii szybkości, stabilności i łatwości zarządzania serwisem.

Migracja zajęła około trzech miesięcy, w czasie których zajmowano się także innymi projektami. Wykorzystano także część kodu stworzonego dla A. V. Club (model artykułów, grafik). Największym wyzwaniem było zaimportowanie danych z okresu 10 lat do nowego serwisu. Szablony zostały podzielone na liczne komponenty wielokrotnego użytku, a multi-db ułatwiła migrację z MySQL na PostgreSQL. Wykorzystanie Django, sorl i PIL do tworzenia przyciętych miniatur poprzez templatetags dała grafikom i redaktorom sporo elastyczności zapewniając łatwość użytkowania.

W efekcie otrzymano czysty kod z testami jednostkowymi - łatwy w dalszym rozwoju i utrzymaniu. Do tego komponenty do wielokrotnego użytku, czy też ORM a nie tylko seria helperów zapytań. Każdy z zespołu może pracować nad tym kodem, jako że jest znacznie mniej specjalistycznego kodu, czy różnych haków.

Do pełnotekstowego wyszukiwania wykorzystywany jest Sphinx. Nginx robi za serwer multimediów i reverse proxy. Wykorzystywany jest także haproxy i umożliwił podmianę serwisów w 5 sekund. Obecnie serwis działa poprzez serwer Apache i mod_wsgi, choć zespół myśli o wykorzystaniu uwsgi. Masowo wykorzystywany jest simplejson i feedparser. Do zarządzania nowymi wersjami serwisu używany jest capistrano.

RkBlog

Django, 5 April 2010

Comment article
Comment article RkBlog main page Search RSS Contact