Jednak gdy następowała potrzeba stworzenia aplikacji WWW, niemal od początku często pojawiał się w naszej pracy bazujący na języku Python framework Django. Od pewnego momentu stał się on standardowym rozwiązaniem wykorzystywanym przez nas przy tworzeniu internetowych serwisów i aplikacji.
Niezależnie od wybranej technologii, taka standaryzacja jest oczywiście wartościowa sama w sobie. Dzięki niej możemy bezpośrednio uczyć się na sukcesach i błędach z wcześniejszych projektów - rozwijać wewnętrzne reguły i narzędzia wspierające efektywny i stabilny rozwój oprogramowania w wybranej technologii. W ten sposób działamy szybciej i z większą pewnością siebie, bo każdy kolejny projekt jest beneficjentem tworzonego przez lata technologicznego know-how. To, że zdecydowaliśmy się wybrać akurat Django nie jest jednak przypadkiem.
Perfekcjoniści z terminami
Django jest bazującym na języku Python frameworkiem do tworzenia oprogramowania stojącego za serwisami i aplikacjami internetowymi. Jego pierwsza wersja powstała w 2003 roku w redakcji amerykańskiego dziennika Lawrence Journal-World. Gazeta potrzebowała oprogramowania, które będąc stabilne jednocześnie pozwoli na szybki rozwój strony w reakcji na wydarzenia, w tym na błyskawiczne tworzenie serwisów tematycznych. W 2005 roku framework został bezpłatnie upubliczniony na licencji otwartego oprogramowania, a od 2008 roku za jego rozwój odpowiada niezależna organizacja non-profit działająca pod nazwą Django Software Foundation. Dziś Django jest jednym z najpopularniejszych frameworków tego typu na świecie. Wykorzystywane jest do tworzenia bardzo różnego rodzaju serwisów, ale nadal stara się wspierać ich szybki, elastyczny i stabilny rozwój. Dobrze odzwierciedla to jego oficjalne motto: “The web framework for perfectionists with deadlines” czyli “Framework internetowy dla perfekcjonistów z terminami”.
Solidne fundamenty
Aplikacje tworzone na bazie frameworku Django pisane są w języku programowania Python, który znany jest ze swojego nacisku na przejrzystość i prostotę kodu. Dobrze napisany kod w Pythonie jest oszczędny w formie, estetyczny i zrozumiały - często wręcz przypominający podręcznikowy pseudokod. Zwięzły i jasny kod oznacza mniej błędów i szybsze postępy pracy, a także szczęśliwszych programistów. Według badań serwisu StackOverflow, Python znajduje się w czołówce języków programowania pod względem satysfakcji wśród pracujących z nim osób. W tym samym badaniu był również najczęściej wymieniany jako język z którym ludzie chcieliby pracować. Python pomaga nam więc utrzymywać produktywny i zadowolony zespół, a także w razie potrzeby go poszerzać (warto dodać, że jest on jednym z najczęściej uczonych języków na studiach informatycznych).
Szeroki ekosystem
Tworzenie stron internetowych jest tylko małym wycinkiem tego do czego używany jest Python. Niemal w każdej dziedzinie gdzie wykorzystuje się programowanie, pojawia się Python. Często okazuje się to dla nas kluczowe przy tworzeniu nowatorskich projektów, gdzie korzystamy z gotowych bibliotek i komponentów napisanych dla Pythona, choć oryginalnie z myślą o zupełnie innym zastosowaniu niż serwis internetowy. Python oferuje szeroki wachlarz takich bibliotek - tylko w katalogu PyPI znajduje się ich obecnie już ponad 125 tysięcy.
Ma to szczególnie duże znaczenie przy tworzeniu funkcjonalności opartych na głębokiej analizie danych. Python stał się faktycznie standardem w data science, wykorzystywanym zarówno na uniwersytetach (obok języka R), jak i w zastosowaniach komercyjnych. Pisząc w języku Python mamy bezpośredni dostęp do tych samych narzędzi, które są używane na codzień w tej dziedzinie (takich jak biblioteki numPy, pandas, NLTK, Tensorflow i wielu innych). Daje nam to możliwość łatwego wykorzystania w naszych produktach najnowszych osiągnięć związanych z analizą danych, machine learningiem czy szeroko rozumianymi technikami sztucznej inteligencji.
Dołączone baterie
Django działa w modelu “batteries included”. Oznacza to, że przychodzi od razu z zestawem wbudowanych komponentów potrzebnych do stworzenia realnej aplikacji www, nie ograniczając się tylko do niezbędnego minimum. Są to między innymi moduły do wygodnej komunikacji z bazą danych, wyświetlania danych, obsługi formularzy, tłumaczeń, rejestracji i zarządzania użytkownikami, pamięci podręcznej, wyświetlania komunikatów, testów automatycznych. A nawet Django Admin, czyli narzędzie do automatycznego tworzenia panelu zarządzania treścią w serwisie. Dodatkowo Django zawiera niespotykanie dobrą i dokładną dokumentację technologiczną wszystkich tych komponentów. To wszystko powoduje, że programiści mogą od początku skupiać się na tworzeniu funkcjonalności specyficznych dla danej aplikacji, a nie wykonywaniu powtarzalnych czynności.
Poza “bateriami” przychodzącymi z Django, można oczywiście skorzystać z wielu gotowych modułów Django stworzonych przez ogromną społeczność skupioną wokół projektu - tylko w katalogu Django Packages znajduje się ich obecnie ponad trzy tysiące. Społeczność jest również aktywna w innych aspektach - tworzy niezliczone blog, książki, konferencje, zapewnia wzajemne wsparcie (tylko w serwisie StakOverflow znajduje się obecnie niemal 160 tysięcy pytań dotyczących Django).
Szybki development
Django przychodzi z wbudowanym serwerem developerskim, który działa lokalnie na komputerze programisty, automatycznie przeładowując się przy każdej modyfikacji w projekcie. Pozwala to programować widząc na bieżąco efekty zmian i na nie reagując. Proste, zintegrowane środowisko developerskie jest również jednym z powodów dla których zainstalowanie dobrze zarządzanego projektu napisanego w Django na komputerze nowego programisty zajmuje zwykle zaledwie kilka czy kilkadziesiąt minut. To bardzo odróżnia Django od wielu komercyjnych pakietów i sprawia że członkowie zespołu projektowego mogą szybciej być produktywni. Również przy tworzeniu nowego projektu Django jest bezproblemowe. Potrafi przy pomocy jednej komendy stworzyć gotowy szkielet działającego projektu. W Laboratorium EE używamy zamiast tego własnego generatora, który tworzy początkowy projekt dostosowany do naszych potrzeb - pod względem konwencji, dodatkowych modułów czy konfiguracji (np. podpięcia projektu do naszej infrastruktury automatycznych testów oraz systemu śledzenia błędów). Nie tylko oszczędza to czas zespołu na początku projektu, ale również zachęca do eksperymentowania - sprawdzania pomysłów poprzez tworzenie małych testowych aplikacji czy funkcjonalnych prototypów.
Wśród najlepszych
Od czasu upublicznienia Django minęło ponad 12 lat. Zostało ono przetestowane bojowo w niezliczonej liczbie serwisów i aplikacji internetowych - i tych małych i tych największych. Na Django zbudowane są takie serwisy jak NASA, Mozilla (w tym katalog rozszerzeń do Firefoksa), The Washington Post, The Onion, Pinterest, BitBucket, Disqus (które opisało na blogu w jaki sposób efektywnie obsługuje z Django 8 miliardów odsłon miesięcznie), czy wreszcie Instagram (który tematowi tego w jaki sposób z wykorzystuje Django do obsługi 92 milionów zdjęć i 4 miliardów polubień dziennie poświęcił godzinną prezentację). Django jest narzędziem przy pomocy którego można szybko przetestować nowy pomysł, ale gdy przyjdzie taka potrzeba jest w stanie obsłużyć obciążenie w skali Instagrama.
Dobre praktyki bezpieczeństwa
Django przykłada bardzo dużą wagę do dobrych praktyk związanych z bezpieczeństwem. Każdy projekt w domyślnej konfiguracji zawiera m.in. automatyczne zabezpieczenia przed atakami typu cross-site scripting, cross site request forgery, SQL injection, clickjacking i brute force (na hasłach użytkowników). Zabezpieczenia te działają na poziomie samego frameworku, od pierwszej minuty działania projektu, bez konieczności żadnych dodatkowych zabiegów.
Podsumowanie
Wybór frameworku programistycznego jest (wbrew pozorom) w dużej mierze sprawą subiektywną. Warto go dobierać pod kątem projektu w którym będzie wykorzystywany, a także organizacji która będzie go rozwijać. W Laboratorium EE chętnie wykorzystujemy Django, bo bardzo dobrze wpasowuje się ono w styl w jakim działamy. Lubimy działać szybko - eksperymentować, sprawdzać rezultaty, weryfikować pomysły. Przejrzysty, zwięzły Python i elastyczne Django z “dołączonymi bateriami” świetnie się w to wpasowują. Poza tworzeniem serwisów i aplikacji internetowych, kwestiami na których skupia się Laboratorium EE są usługi oparte na danych i cyberbezpieczeństwo. Pod tym kątem wybór dominującego w data science Pythona i dobrze zabezpieczonego Django jest również dość jasny. Jednocześnie wiemy, że korzystając z Django budujemy na solidnych fundamentach - przetestowanych przy dziesiątkach naszych projektów i niezliczonych innych projektach na całym świecie (w tym tych największych).