Migracja Mozilla Addons na Django

Streszczenie wpisu na blogu All Night Diner zawierającego powody i zalety zastąpienia CakePHP przez Django dla serwisu Mozilla Addons.

We wpisie AMO Development Changes in 2010 możemy dowiedzieć się o migracji serwisu dodatków do Firefoksa z CakePHP na Django. Obecnie wykorzystywane jest CakePHP 1.1 i jest to serwis o największym ruchu stworzonym w tym frameworku. Jednakże zespół AMO podjął decyzję na migrację na nową platformę z kilku powodów:
  • Poręczna warstwa abstracji bazy danych: W CakePHP istnieje warstwa abstrakcyjna, lecz dla AMO nie była wystarczająco funkcjonalna. Gdy ta warstwa działała - zwracała ogromne ilości zagnieżdżonych tablic z danymi powodują wysokie zużycie pamięci i czasu procesora (brak pamięci to duży problem serwisu). Gdy warstwa nie działała trzeba było wykonywać zapytania bezpośrednio. Także keszowanie jest problematyczne (szczególnie efektywne usuwanie nieaktualnych danych z kesza). ORM Django (w połączeniu z memcache) powinien spełnić wymagania zespołu.
  • Testy jednostkowe: obecny serwis ma ograniczony zestaw testów, a i tak działają strasznie wolno wyczerpując przy okazji pamięć. W przypadku Django dodatkową zaletą jest niezależność testów miedzy sobą.
  • Lepsze debugowanie: poziom debugowania w CakePHP wspierany XDebugiem okazał się niewystarczający, bo nie zawierał wszystkich potrzebnych danych (lub ogromne tablice w jakich lubuje się ten framework). W Pythonie i Django debugowanie jest bardziej szczegółowe pokazujące całą ścieżkę kodu związanego z błędem, który się pojawił (traceback), a także dane jakie były użyte. AMO planuje użyć pdb, IPython i django-debug-toolbar.
  • Ciągła integracja: dzięki znacznie lepszej platformie do testów zespół chce także wprowadzić rozwój oprogramowania wg zasady ciągłej integracji z wykorzystaniem frameworka Hudson. Dzięki temu powinna spaść ilość regresji oraz pewność co do stabilności nowego kodu wrzucanego na produkcję.
O innych szczegółach zmiany platformy i wykorzystaniu innych nowych technologii można przeczytać w podlinkowanym we wstępie wpisie.
blog comments powered by Disqus

Kategorie

Strony