Kulisy JavaStart.pl – Jak wygląda zaplecze naszej strony?

| 6 stycznia 2019

Kulisy javastart

W ramach tego wpisu chciałbym przedstawić jak wygląda nasze zaplecze „od kuchni”. Opiszę z jakiego oprogramowania korzystamy, w jakiej technologi tworzymy stronę i gdzie ją hostujemy.

Sprzęt

Zarówno ja (Marcin) jaki i Sławek korzystamy aktualnie z Macbooków Pro 13″ Early 2015. Jesteśmy świadomi, że istnieje sporo hejterów Apple, ale trzeba przyznać, że sprzęt robią bardzo dobry i ciężko znaleźć lepszą alternatywę za podobne pieniądze. Laptopy mamy podpięte do 24″ monitorów.

Strona JavaStart.pl

Historia

Pierwsza wersja naszej strony była blogiem postawionym na wordpressie. Sławek tworzył wtedy wpisy wprowadzające do programowania w języku Java. Treść tych wpisów nadal jest dostępna jako darmowe treści w zakładce Baza Wiedzy. Strona rosła w siłę, odwiedzało ją coraz więcej ludzi i podjęta zostałą decyzja o komercjalizacji serwisu.  Długo szukaliśmy gotowego rozwiązania które umożliwi nam na tworzenie kursów. Wybór padł na platformę Moodle (często kojarzoną z platformą egzaminacyjną na studiach). Z Moodle korzystaliśmy od sierpnia 2014 do początków 2018 kiedy to wdrożyliśmy stronę która dostępna jest teraz.

Technologie

Strona internetowa tworzona jest w dosyć popularnym ostatnio stacku technologicznym: Angular oraz Spring Boot.

Backend

Tutaj wybór mógł być tylko jeden: Java. Korzystamy ze stacku Spingowego: Boot, MVC, REST, Security, Data, a jako bazy danych MySQL. Natomiast podczas dewelopmentu wykorzystywana baza do H2. Migracje bazy realizowane są z wykorzystaniem Liquibase.

Frontend

Za frontend odpowiada Angular. Na potrzeby wyszukiwarek internetowych pierwsze wejście na stronę powoduje jej wyrenderowanie po stronie serwera (tzw. SSR), korzystamy tutaj z Angular Universal, a za renderowanie odpowiedzialny jest node express. Korzystamy z reduxa w celu zarządzania stanem aplikacji.

Obsługa płatności

Do obsługi płatności korzystamy z usług serwisu Przelewy24. Przez moment korzystaliśmy również z PayLane. Z tych drugich zrezygnowaliśmy, ponieważ ich system wystawia automatycznie kilka faktur dziennie. Czekamy, aż to poprawią i rozważymy powrót do korzystania z ich usług.

Budowanie i deployment

W celu usprawnienia procesu budowania strony i deploymentu postanowiliśmy zautomatyzować ten proces. W tym celu korzystamy z Jenkinsa. Mamy skonfigurowane zadania do budowania frontendu, backendu, deploymentu oraz tworzenia kopii zapasowych. Dzięki temu obrazy dockera budowane są automatycznie, a aktualizacja serwisu to najczęściej uruchomienie jednego zadania (no i oczywiście obserwowanie czy wszystko się powiodło).

Blog

Podstrona na której właśnie czytasz ten wpis https://javastart.pl/b/ oparta jest na wspomnianym już wcześniej wordpressie. Jest to bardzo wygodna opcja do prowadzenia bloga. Wygodny interfejs, możliwość instalowania wtyczek i szablonów spowodowała, że uznaliśmy, że nie ma żadnego uzasadnienia, żeby dodawać funkcjonalność bloga do naszej strony. Byłoby to wymyślanie koła na nowo.

WordPress do działania wymaga php z wtyczką mysql i apache. Tworzymy więc kontener Dockera z niezbędną konfiguracją:

FROM php:5.6.35-apache
RUN a2enmod rewrite
RUN docker-php-ext-install mysql

Przy uruchamianiu podpinany jest katalog z plikami wordpressa jako volumen.

Przekierowanie podstrony /b/b na bloga realizowane jest za pomocą nginxa na poziomie proxy.

location /b/ {
    proxy_pass http://localhost:8092/b/;
    proxy_redirect off;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Domeny

Domena JavaStart.pl została zarejestrowana za darmo, w 2010 roku w nieistniejącym już serwisie 1and1.pl. Następnie zmigrowaliśmy ją do OVH i tutaj już zostaliśmy. OVH oferuje rozsądne ceny przedłużania domen i wygodny panel zarządzania strefą DNS.

Mamy również kilka innych domen kupionych na tzw. „zapas”. Na razie nic z nimi nie robimy, ale kto wie co przyniesie przyszłość.

Hosting

javastart.pl

Od początku 2018 roku hosting jest aktualnie realizowany na serwerach webh.pl (link afiliacyjny, jeśli zakupisz u nich hosting korzystając z linka to otrzymamy 20% wartości pierwszego zakupu). Na początku, dla celów testowych, wybraliśmy KVM Mini i okazało się, że jest to wystarczająca konfiguracja do działania naszego serwisu. Cały czas mamy możliwość polepszenia konfiguracji sprzętowej VPSa, ale póki co nie ma takiej potrzeby.

Rozważaliśmy też zakup VPSa u OVH, ale ze względu na kilka przypadków wyłączenia serwera z powodu rzekomego ataku DDOS z najmowanego serwera zrezygnowaliśmy z tej opcji. Całkiem możliwe, że nastąpiło włamanie i wina była po naszej stronie, ale wolimy nie ryzykować. Na szczęście wyłączone serwery były tylko testowe, więc większych strat nie było.

Serwer deweloperski

Serwer deweloperski z Jenkinsem, Jirą, testową wersją strony, etc. wykupiony mamy na Contabo (link afiliacyjny). Korzystamy z opcji Medium. W tym mamy VPSa z 16GB ram, 400GB SSD, oraz nieograniczonym transferem. Sprawdza się całkiem nieźle, mogę szczerze polecić. Aktualnie na tym serwerze chodzą:

  • Jenkins
  • Jira
  • strona z zadaniami dla uczestników szkoleń stacjonarnych
  • strona z przykładami do kursów online
  • serwis javastart w wersji deweloperskiej – do testowania
  • Mailtrain
  • kilka innych usług

Wszystko działa bez większych problemów.

Maile

Teoretycznie moglibyśmy zainstalować oprogramowanie do zarządzania skrzynkami mailowymi, jednak po zapoznaniu się z kilkoma artykułami online szybko porzuciliśmy ten pomysł. Do hostingu maili wystarczy najczęściej zwykły hosting. Tutaj wybór padł na webd.pl. Korzystamy z opcji Hosting MINI. Pomimo kilku mniejszych problemów jesteśmy w miarę zadowoleni z wyboru.

Na pochwałę zasługuje obsługa klienta. Na zgłoszenia panowie odpowiadają najczęściej do 3 minut od ich zgłoszenia. Jako klient poczty służy nam Thunderbird, a na telefonie z aplikacja Gmail.

Przez jakiś czas korzystaliśmy z tego hostingu również w celu wysyłania wiadomości systemowych (aktywacja konta, reset hasła, powiadomienia o końcu dostępu, powiadomienia o odpowiedziach na forum). Jednak od pewnego czasu integracja przestała działać poprawnie, serwer SMTP zaczął zwracać błędy, a obsługa klienta stwierdziła, że to nie ich wina, a powód problemu leży w przekroczeniu liczby połączeń. Od tego czasu wysyłamy maile za pomocą Amazon SES.

 

Newsletter

Do niedawna rzadko wysyłaliśmy maile (zamierzamy to zmienić), głownie ze względu na to, że było to bardzo problematyczne. Korzystaliśmy z serwisu Mailchimp, sprawdza się bardzo dobrze. Wersja darmowa posiada limit do 2000 osób zapisanych do list. Dosyć szybko przekroczyliśmy ten limit, głównie ze względu na to, że na poprzedniej wersji strony wyświetlaliśmy pop-up zachęcający do zapisu do newslettera. Ponieważ wysyłamy w porywach do 3 mailingów rocznie to cena $50/msc wydawała się niepotrzebnym wydatkiem. Szukaliśmy innego rozwiązania (FreshMail, GetResponse, etc.), jednak wszystkie wyglądają podobnie cenowo. Niedawno znaleźliśmy idealne dla nas rozwiązanie. Samemu hostujemy darmowy program MailTrain. Posiada on szereg funkcjonalności potrzebnych do email marketingu. Samo wysyłanie maili jest realizowane za pomocą usługi Amazon SES, gdzie wysłanie 1000 maili kosztuje 1o centów.

Podsumowanie

Przedstawiłem w skrócie jak wygląda nasze zaplecze. Mam nadzieję, że było to dla Ciebie interesujące. Jeśli chcesz się czegoś jeszcze dowiedzieć daj nam o tym znać pisząc w komentarzach poniżej. Postaram się odpowiedzieć i dodać do wpisu.

2 thoughts on “Kulisy JavaStart.pl – Jak wygląda zaplecze naszej strony?

  1. Andrzej T

    Mogę szczerze polecić ten kurs w którym biorę udział. Dodatkowo udało mi się wykupić w black friday resztę kursów o których myślałem za jednym zamachem. Szefowie javastart p. Ludwiczak i p. Kunert moim zdaniem dążą nie tylko do poszerzania naszej wiedzy, inspirowania nas na wewnętrznym forum, ale także dbają o nawet najmniejszy detal jak choćby spójrzcie jak dynamicznie chodzi ten cały portal, jak jest dopracowany i jak czytelny.
    Czekałem z tym feedbackiem aż trochę pouczestniczę w kursach i szczerze mówiąc nie pozostałem z tymi najtrudniejszymi i nurtującymi mnie zagadnieniami bez odpowiedzi nie dłużej niż 2 dni.
    W Blogu na wordpresie nie ma tej fajnej czcionki która sprawia że wszędzie gdzie tylko mogę zmieniam ją na mont…
    Krótko i na temat: jest zajebiście!

    Reply
  2. Arkadiusz Panek

    Hej,
    fajnie poczytać co się za waszym blogiem kryje. Uwagę, a raczej radę mam tylko do tego:
    FROM php:5.6.35-apache
    RUN a2enmod rewrite
    RUN docker-php-ext-install mysql

    Polecałbym zrobić upgrade technologii – php5.6 przestało być wspierane na koniec grudnia 2018 razem z php7.0. Najlepiej w tym momencie przejść na php7.3 + nginx (zamiast apache – odczujecie na pewno zmianę pozytywnie :)) Przy php5.6 natomiast absolutnie bym odradzal zostać – naraża was to na wiele ataków. WordPress sam w sobie bywa niebezpieczny, a jeszcze z wersją legacy php to tykająca bomba.

    Pozdrawiam,

    Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *