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

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).

jenkins

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 Contabocj. 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.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.