Zarządzanie Senpuu (kodem, zadaniami, itd)

Wstęp

Zarządzanie projektem informatycznym prawie nigdy nie jest proste. Istnieje wiele zagadnień nad którymi trzeba zapanować oraz wiele takich, które trzeba ujarzmić. W tym artykule postaram się, drogi mieszkańcu, przybliżyć Ci niektóre z tych zagadnień, tak abyś mógł zobaczyć jak wygląda to właśnie na Senpuu.

Krótko o Senpuu jako takim

Portal Senpuu jako projekt informatyczny (w aktualnej postaci), rozpoczął się w styczniu 2011 roku. Wtedy przystąpiliśmy (redakcja) do zbierania osób chętnych nam pomóc (helperzy) w określeniu wymagań dla nowej odsłony tego portalu. W kilka dni wybraliśmy grupę mieszkanców chętnych do pomocy. Dzięki temu udało nam się zebrać informacje potrzebne do zbudowania tej odsłony (v5). W przeciągu tych 12 miesięcy prac, wypracowaliśmy szereg rozwiązań i metodologii (know-how), które sprawiają, że z pełną świadomością możemy powiedzieć, że pod względem informatycznym portal Senpuu.net jest bardzo dobrze zarządzany.

Niesforna redakcja

Kierowanie redakcją i wzajemna wymiana informacji w jej obrębie to sprawa kluczowa dla dobrego działania portalu. Do 2011 roku, przepływ informacji odbywał się za pośrednictwem gg i maili. Nie było to jednak zbyt dobre rozwiązanie, ponieważ często członkowie redakcji nie mieli pojęcia nad czym pracuje reszta, w skutek czego nad jednymi zagadnieniami pracowało za dużo osób a nad innymi nie pracował nikt. Zdarzało się też, że maile ginęły w spamie, ktoś czegoś nie dostał i powstawały małe "zgrzyty". Nie było ich tak dużo, do momentu kiedy postanowiliśmy pracować w większym gronie (redakcja + helperzy). Senpuu potrzebowało mechanizmu który umożliwiłby nam łatwe przydzielanie, sprawdzanie i egzekwowanie zadań w obrębie prac redakcyjnych i prac nad nową odsłoną portalu. Postanowiliśmy skorzystać z systemu Redmine, który służy do zarządzania projektami (głównie informatycznymi). Dzięki temu, każda osoba z redakcji może innej wystawić tzw. "ticket" z zadaniem. Taki ticket ma priorytet, stan oraz parę innych opcji. Kiedy zmieniamy coś w tickecie (np. status z "Nowy" na "W toku") , wszystkie powiązane z nim osoby dostają odpowiednią informację i wiedzą np. kiedy ticket został zamknięty (zakończony). Redmine znacząco usprawnił prace całej (rozrastającej się) redakcji.

Redmine - logowanie Redmine - panel

Kody źródłowe, czyli kopia zapasowa to za mało

Dziesiątki tysięcy linii kodu, kodu którego fragmenty mają czasem wpływ na działanie całego systemu. Do tego poprawki i rozbudowa o nowe opcje oraz dodatki. Jak tym zarządzać aby móc śledzić zmiany i w razie czego wykryć nieprawidłowości? GIT czyli rozproszony system kontroli wersji. Dzięki niemu, każda zmiana jest śledzona i można dokładnie sprawdzić, kto, co, kiedy i dlaczego zmieniał w kodzie źródłowym. Senpuu posiada własne repozytorium na zewnętrznym (w stosunku do produkcji) serwerze, dzięki czemu, wszystkie dane są bezpieczne w "tajnym" miejscu. W razie awarii czy też włamania na nasz serwer produkcyjny, kody źródłowe oraz kopie zapasowe, pozwalają na bardzo szybkie przywrócenie wszystkiego do normy.

Testy automatyczne, serwer integracyjny i update kodu na serwer

Tak jak wspomniałem w jednym z poprzednich artykułów "O Senpuu", cały portal pokryty jest testami automatycznymi. Dzięki temu, nie trzeba "przeklikiwać" się przez wszystkie części portalowe aby przetestować jego działanie. Na chwilę obecną testami pokryte jest 99.2% systemu, co jest wynikiem bardzo dobrym. Wadą tego rozwiązania jest to, że wszystkie one wykonują się około 40-50 minut zjadając przy tym zasoby komputera (procesor i pamięć). Na szczęście, na potrzeby naszego portalu opracowaliśmy mały serwer integracyjny, który pobiera z systemu kontroli wersji najnowsze wydanie (tzw. release), następnie odpala wszystkie testy i jeśli się powiodą (100% udanych powodzeniem), dokonuje automatycznej aktualizacji kodu na serwerze produkcyjnym. Jest to rozwiązanie unikatowe, ponieważ po każdej aktualizacji, możemy mieć (prawie) pewność, że nowy release jest lepszy od poprzedniego i że wszystko co działało przedtem, będzie działać i teraz. Poniżej, zamieściłem mały schemat jak to dokładnie wygląda (tak dla uzmysłowienia):

Przykładowy przepływ łączący wszystkie nasze narzędzia wygląda przykładowo tak:

  1. "Ktoś" zgłasza ticket na Redminie z błędem
  2. "Ktoś2" zgłasza usprawnienia i pomysły
  3. Zadania są zamykane na bieżąco
  4. W momencie zamknięcia odpowiedniej liczby zadań (przeważnie raz na 4-7 dni), robiony jest update do repozytorium
  5. Po większym updacie, uruchamiane są testy automatyczne (serwer integracyjny pobiera kod z repozytorium)
  6. Jeśli wszystko się uda (100% testów pomyślnie) serwer integracyjny aktualizuje na serwerze kod źródłowy Senpuu

Nie ma tutaj mowy o żadnym wrzucaniu plików przez FTP, edytowaniu plików ręcznie na serwerze (czy innych "niebagatelnych" sposobach aktualizacji kodu). Dzięki takiemu rozwiązaniu, mamy pewność, że przynajmniej duuuuża część portalu działa bez zarzutu i możecie jej spokojnie używać bez żadnych problemów. Dodatkowo, takie podejście w pełni automatyzuje proces aktualizacji, więc nie ma tutaj możliwości, że np. ktoś zapomni wrzucić jakąś z bibliotek czy też jeden z plików, przez co nic nie będzie działać.

DevIntegrator

Podsumowanie

Zastosowanie wielu narzędzi informatycznych (w tym części stworzonej na potrzeby Senpuu), pozwala nam dużo sprawniej pracować z i nad portalem, dostarczając Wam coraz lepszą jakość materiałów.

Komentarzy: 0 26 Grudzień 2011