Blog (4)
Komentarze (3.3k)
Recenzje (1)

Jak zbudowałem Moodle'a

@jaredjJak zbudowałem Moodle'a11.07.2013 23:56

Nosiłem się z napisaniem tego artykułu jakiś czas, ale jakoś weny nie było. Minęło pół roku, tej dalej nie ma, ale gdzieś w pobliżu ją czuję. O czym to - bo przecież nie napisałem moodle, tym się zajmuje facet z Australii plus cała grupa innych koderów. Otóż na uniwerku postanowiono zmienić system wspomagania nauki. Do tej pory korzystaliśmy z WebCT, ale wsparcie się skończyło. Firma ma w ofercie inny produkt, niestety nieziemsko drogi. Z mojego, czyli dba, punktu widzenia, również bardzo skomplikowany. Nie będzie to wpis techniczny, być może kiedyś taki powstanie, z poradami jak wszystko skonfigurować i podregulować. Tyle tytułem wstępu.

Wybór systemu

Jak wielu z Was zapewne wie, tak ważnego systemu dla przedsiębiorstwa (bo uniwersytet jest jakby nie było takim tworem), nie wybiera się w pięć minut. Powstał projekt, z radą, menadżerem, doradcami, sponsorami itp. Wybrano trzy systemy, zaproszono przedstawicieli firm na prezentację. Ponieważ moodle jako taki nie jest tworzony przez firmę, zaproszono doradców z takiej, zajmującej się wdrożeniami moodle i doradztwem. Byłem w komisji oceniającej produkty. Jak się to odbywało? Jak zwykła prezentacja ze slajdami, tyle że na koniec mogliśmy wałkować prezenterów. Pytania od członków komisji dotyczyły zarówno strony funkcjonalnej, jak i technicznej (ja). Nie będę Was zanudzał szczegółami ale oczywiście interesowało mnie z jaką bazą danych to może pracować, na jakich platformach itp. Po ocenie prezentacji, przyszedł czas na następne spotkanie i bardziej szczegółowe pytania, wybraliśmy już wstępnie dwa systemy i chcieliśmy poznać więcej szczegółów. Koniec końców - wybór padł na moodle, z wielu względów, z których finansowy był jednym z najważniejszych. Wysłano oficjalne maile do kogo się dało, zatwierdzono budżet i deadline'y - startujemy.

start
start

Wybór platformy OS i bazy danych

Żeby nie zostać posądzonym o stronniczość, trzeba było przetestować różne konfiguracje. W odróżnieniu od poprzednika (WebCT działał w zasadzie na ustalonym zestawie aplikacji - weblogic plus dwie bazy do wyboru), moodle oferuje wolność wyboru. W zasadzie jest jeden sztywny wymóg - PHP. W końcu aplikację pisze się w jednym języku a nie kilku. Co do reszty - serwer www, baza danych czy system operacyjny - można to postawić na wszystkim, na co jest kompilacja PHP. Poprosiłem dział serwerowy o przygotowanie 4 vm'ów. Dwa windows, dwa linux, przy czym sam instalowałem redhata. Windows jest z gotowego szablonu, oszczędność czasu. Jeden serwer windows dostał bazę MS SQL, IIS + PHP, drugi MySQL, apache i PHP. Ponieważ nie można postawić MS SQL na liuxie, PHP z jednego z nich łączył się z zewnętrznym serwerem. Żeby zrównoważyć testy, zmieniłem później konfigurację pierwszego serwera windows, tak by PHP łączyło się również z zewnętrzną bazą microsoftu. Dodaliśmy na koniec jeszcze jeden test - z bazą MySQL na zewnętrznym serwerze. Z takim środowiskiem przeprowadziliśmy mnóstwo testów wydajnościowych, wszystko było zapisywane i porównywane. Najlepiej cały system działał na konfiguracji - linux, apache, PHP i MySQL. Ale ponieważ na uniwerku przyjęto politykę korzystania z rozwiązań MS gdzie się tylko da, postanowiliśmy stworzyć hybrydowe środowisko - serwery www na linuxie, baza na klastrze MS SQL. Zacząłem budować całość, oprócz serwera bazy, bo to już mamy. Zaczęły się poważne testy i migracja danych. Niestety z jakichś powodów system nie działał zbyt wydajnie. W pewnym momencie postanowiliśmy wykorzystać bardzo wydajny serwer, kupiony dla innych celów, i postawić na nim bazę MySQL. Ponowna instalacja moodle, konfiguracja .... i zbieraliśmy szczęki z podłóg. Decyzja - zostajemy z takim zestawem - wszystko na linuxach z MySQL.

code
code

Realizacja

Przyszedł czas na konkretne zaplanowanie infrastruktury. Z testów wynikało, że pojedyncza baza na wybranym sprzęcie spokojnie da radę. Ale oczywiście trzeba mieć jakiś serwer "stand by" - czyli taki, który można przełączyć w tryb produkcyjny, w razie awarii podstawowego. Serwer na bazę ma 96GB ram, 32 rdzenie, 4 karty sieciowe (nie korzystam ze wszystkich). Drugi jest identyczny. MySQL skonfigurowałem w zestawie Master-Slave. W razie czego, przełączenie może być zrobione w 5 minut, może mniej. Mamy plany, by zmienić tę konfigurację w klaster active-active. W systemie z WebCT działały 4 serwery www, jeden administracyjny. Postanowiłem zbudować podobny zestaw. Serwer www to klaster 3 serwerów z apache, PHP, akceleratorem, zbudowane na maszynach wirtualnych. Do tego przyłączony jest czwarty serwer administracyjny, ale nie zarządza pozostałymi - jest przeznaczony do tzw. obsługi - czyli zaplanowane zadania, czyszczenie, wysyłanie maili, skrypty przetwarzające, importujące z innych baz itp. Aby nie obciążać głównych serwerów. Ten nie jest ujęty w puli na "load balancerze". O co chodzi z tym "load balancerem"? Uniwerek ma właśnie taki rozdzielacz ruchu, który obsługuje całe mnóstwo systemów. Jeden z wirtualnych serwerów na nim to właśnie moodle. Szczegółowa konfiguracja tego cuda to nie ja ;) W każdym razie - pula serwerów dla moodle zawiera trzy serwery produkcyjne. Ruch rozdzielany jest na zasadzie obciążenia, ale z tzw. sticky sessions. WebCT zapisywało wszystkie pliki w bazie danych. To wygodne ale powoduje, że baza puchnie jak zwariowana, trzeba stosować quoty itp. Moodle zapisuje pliki w systemie operacyjnym. Ale wszystkie serwery www muszą mieć dostęp do tego samego zasobu, więc kolejny serwer - NFS. Na razie jest to osobna maszyna z linuxem, ale nasz nowy SAN ma tę funkcjonalność, z mirrorowaniem, więc w niedługim czasie się na to przerzucimy. NFS to VM, więc mamy jej mirror na drugim kampusie, LUN jest też kopiowany na lustrzany obszar, niemniej - przełączenie maszyny to kilkanaście minut. Z NFS na SAN to może być nawet nie zauważone przez serwery www.

blade_servers
blade_servers

Produkcja, testy, szkolenia ....

Środowisko produkcyjne jest, ale to nie wszystko. Prawdziwy hardcore pracuje na żywym organizmie, ale w takiej firmie potrzebujemy zestawu testowego. Mamy swoich deweloperów, tworzą dodatki, moduły, plug-iny itd. Bez testów nikt nie odważy się zainstalować tego na produkcji. A i oni muszą mieć na czym to tworzyć. A cała kadra nauczycielska musi mieć swoje środowisko treningowe, studenci coś na czym zapoznają się z systemem itd itd. Liczba serwerów rośnie.... A jeszcze mamy serwery archiwalne, zawierają surowe dane zmigrowane z WebCT. Konfiguracja systemu testowego jest najbardziej zbliżona do produkcyjnego. Ze zrozumiałych względów. Połączenia do zdalnych systemów są również zdublowane, np. do firmy sprawdzającej plagiaty. Zapomnieliście już o bazach MS SQL? Ależ łączymy się z nimi z moodle. W tych bazach jest całe mnóstwo danych agregowanych z innych systemów - student record system, financial system, HR itd. Z serwera administracyjnego łączymy się z tymi bazami i pobieramy dane. Jakie - nie mam pojęcia, to wiedzą koderzy i zainteresowane działy. Ja oczywiście musiałem zainstalować i skonfigurować potrzebne sterowniki i biblioteki.

staff-training
staff-training

A siódmego dnia ....

Projekt, od rozpoczęcia do zamknięcia, trwał ok. 9 miesięcy. Po drodze kupiliśmy kilka przydatnych narzędzi, jak np. Full Convert Enterprise - program do migracji danych z bazy do bazy. Moodle okazał się bardzo "wdzięcznym" produktem. Oprócz PHP, reszta składników jest dowolna, zamiast apache można wykorzystać nginx czy lighthttpd. Zamiast MySQL z oracle, można użyć MariaDB albo bazy z Percona, albo zupełnie innej - MS SQL czy PostgreSQL. Całość może chodzić na linuxie albo windowsie, czytałem o wdrożeniach z wykorzystaniem komponentów w całości prawie microsoftowych. Może to działać też w chmurze, jest dużo firm hostujących moodle dla instytucji edukacyjnych. Zagłębiając się już w funkcjonalność - moodle może wyglądać zupełnie ... nie jak moodle. Trochę to zalatuje reklamą, ale po skomplikowaniu WebCT, z nieszczęsnym weblogikiem, opartym na javie - to wydało mi się niesamowicie proste.

Panie, z czym mi tu, ja to znam

Dla wielu to pewnie opowiadanie ich własnej historii. Jednakże mam nadzieję, że komuś nie obeznanemu w temacie, albo komuś kto pracuje w małej firmie, ten wpis przybliży jak się to robi w większych przedsiębiorstwach i na obczyźnie. Choć myślę, że nie różni się to wiele od projektów w Polsce.

Ty to zbudowałeś?

Dlaczego na początku napisałem, że to ja zbudowałem moodle? Dlatego, że tak było. Jestem DBA na uniwerku już 6 rok, przejąłem WebCT od poprzednika, niejako z urzędu byłem kandydatem na wykonanie tego projektu. Nie stworzyłem systemu oczywiście zupełnie sam. Inne teamy współdziałały, koderzy z www, serwerowcy, sieciowcy, gość od Load Balancera itd. Jednakże większość robiłem ja, począwszy od projektu systemu a skończywszy na oddaniu go do użytku. I nie piszę tego żeby się chwalić, chodzi o to, że taki system może zbudować ktoś, w zasadzie, ze średnią wiedzą o systemach na linuxie.

Man-Shaking-Hands
Man-Shaking-Hands
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.