Łagodny uścisk Pythona

Grono.net to jeden z największych na świecie serwisów internetowych tworzonych z wykorzystaniem technologii Python i frameworku Django.

Grono.net to jeden z największych na świecie serwisów internetowych tworzonych z wykorzystaniem technologii Python i frameworku Django.

Łagodny uścisk Pythona

Albert Szybiński dyrektor działu IT w Grono.net

Grono.net, największy serwis społecznościowy w Polsce, powstało na przełomie 2003 i 2004 roku. Początkowo do jego budowania wykorzystywano technologię Java. O wyborze zadecydowała jej popularność i wygoda pisania kodu. Błyskawiczny sukces i rosnące wymagania (obecnie liczba użytkowników przekracza 1,4 mln) spowodowały, że Java szybko okazała się niewystarczająca do zaspokojenia wszystkich potrzeb. "Zastanawialiśmy się co robić, żeby Grono działało lepiej i szybciej. Java nie dawała nam elastyczności, której potrzebowaliśmy. Portal zmienia się bardzo szybko. Każdego dnia, a nawet kilka razy dziennie wprowadzane są zmiany" - mówi Albert Szybiński, dyrektor działu IT w Grono.net.

Po analizie zdecydowano się na podjęcie próby zastosowania technologii Python. Miała ona umożliwić optymalizację Grona pod względem szybkości pisania kodu i reagowania na nowe potrzeby biznesowe. W ocenie zarządzających serwisem Python oferował największą elastyczność i łatwość wprowadzania modyfikacji spośród dostępnych technologii.

Błyskawiczny sukces

Do obsługi Pythona nie potrzeba potężnych maszyn. Wystarczają zwykłe komputery wyposażone w procesory Intel Celeron. "Nie mieliśmy w owym czasie dostatecznych środków finansowych, żeby móc pozwolić sobie na wielkie wydatki. Zastanawialiśmy się jak oszczędzać na wszystkim. Serwer o takiej samej mocy dawał dużo większą wydajność w przypadku Pythona niż Javy" - tłumaczy Albert Szybiński.

Podstawowe problemy Grona koncentrowały się wokół poprawiania wydajności. Szybki wzrost liczby użytkowników Grona sprawiał, że po godzinie 20.00 serwery nie wytrzymywały obciążenia. Celem właścicieli Grona była szybkość działania na poziomie najlepszych serwisów tego typu na świecie. Ograniczeniem były przede wszystkim zasoby sprzętowe. W owym czasie, inaczej niż obecnie, firma nie dysponowała środkami finansowymi umożliwiającymi dokładanie kolejnych maszyn. "Analizy dostępnych możliwości skoncentrowały się wokół Google. Poza horyzontalnym modelem skalowania, w którym dołożenie kolejnego komputera liniowo podnosi wydajność, Google wykorzystywał Pythona. Rozpoczęliśmy testy i szybko okazało się, że to doskonały wybór" - mówi Albert Szybiński.

Pierwszy moduł napisany w Pythonie obsługiwał galerie zdjęć na Gronie. Firma była zaskoczona, że wykorzystując nową technologię od razu udało się jej stworzyć działający serwis. "Pierwsza wersja działała bez zarzutów. Byliśmy zaskoczeni. Python okazał się prosty i przyjazny w użyciu" - opowiada Marek Pułczyński, pionier pythonowych projektów Grona, obecnie odpowiedzialny za badania nowych technologii i rozwój serwisu. Decyzja o przepisaniu istniejącego kodu Javy do Pythona zapadła więc błyskawicznie. "Przepisywanie kodu było uciążliwe. Żaden programista nie lubi takiej roboty. Niemniej udało się zrealizować ten projekt w trzy miesiące. Można to było zrobić szybciej, ale jak to w portalu, trzeba było wykonywać mnóstwo prac bieżących związanych z utrzymaniem i rozwojem" - mówi Marek Pułczyński.

Ograniczenia frameworku

Pod względem czystej wydajności Python nie prezentuje się najlepiej. Jest wiele szybciej działających technologii. Niepodważalną zaletą jest jego elastyczność i szybkość tworzenia kodu. "Według różnych szacunków programista wykorzystujący Pythona w pewnych konkretnych zastosowaniach pisze kod 10 razy szybciej, niż zrobiłby to w Javie. To daje spore oszczędności" - mówi Marek Pułczyński. Poza tym Python podatny jest na skalowanie horyzontalne, co pozostaje w zgodzie z naczelną zasadą przyjętą przez Grono, czyli rozwoju poprzez dodawanie małych maszyn. W połączeniu z frameworkiem Django i bazą danych PostgreSQL, Python sprawdza się doskonale.

Na Grono.net praktycznie co miesiąc pojawiają się nowe funkcje. Programiści zyskali taką biegłość w produkcji kodu pythonowego, że framework Django zaczął stanowić dla nich ograniczenie. Na etapie budowy portalu Django sprawdzał się doskonale. Obecnie coraz częściej programiści Grona muszą go samodzielnie modyfikować. Przykładowo, w przypadku bardziej skomplikowanych zapytań nie używają już wbudowanego we framework mechanizmu ORM (Object-Relational Mapping). Zapytania do bazy danych tworzone są bezpośrednio w kodzie. Pomimo obiektywnych ograniczeń Django i "personalnych" zastrzeżeń niektórych programistów, firma pozytywnie ocenia jego wpływ na rozwój serwisu. "Na początku drogi był to optymalny wybór. Oceniając dzisiaj, alternatywą mógłby okazać się Pylons" - mówi Albert Szybiński.

Przedstawiciele Grona przyznają, że na obecnym etapie wycofanie się z Django stanowiłoby poważny problem. Dodają jednak, że Python i Django to tylko narzędzia. Najważniejszą kwestią pozostaje architektura serwisu. Django zawiera dużo błędów, ale pozwala bardzo szybko działać. Przykładem przyspieszania działania jest automatyczne tworzenie panelu administracyjnego do napisanego kodu. To o połowę skraca nakład pracy na projekt. Dlatego Grono nadal korzysta z Django, choć obecnie jest to dosyć mocno zmodyfikowana wersja frameworku.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200