Meteor nie umarł. I w dodatku ma się całkiem dobrze
Kilka tygodni temu w software housie Czarny Kod robiliśmy rozeznanie wśród firm zajmujących się produkcją oprogramowania. Chcieliśmy znaleźć kogoś, kto zna się na Meteorze. W odpowiedzi dostaliśmy dziesiątki maili, ale moją uwagę przykuł jeden z nich, w którym autor napisał: „Meteor nie żyje”. Udowodnię, że to nieprawda.
Adam Trojańczyk. CEO w Czarny Kod Software House (software house, który buduje niesamowite aplikacje). Pracował dla największych agencji interaktywnych. Jest także współzałożycielem i CTO w Tap To Speak (wielokrotnie nagradzanej na całym świecie aplikacji).
Spis treści
Konsternacja
Przyznam się, że byłem trochę skonsternowany czytając w wiadomości, że meteor nie żyje i zacząłem się zastanawiać, czy faktycznie nie przegapiłem czegoś ważnego. W mojej firmie od lat zajmujemy się produkcją oprogramowania, doradzamy klientom w doborze technologii i podejmowaniu odpowiednich kroków biznesowych. Rynek obfituje w technologie służące do tworzenia oprogramowania. Od PHPa, przez Railsy, Closure, .Net, C#, Javę, kończywszy na JSach, w tym NodeJs’ie, a przykładów jest o wiele więcej.
Dlaczego Meteor
Kilka lat temu pisaliśmy w Railsach, to była nasza główna technologia, na której opieraliśmy swoje narzędzia, ale także ta, którą najczęściej rekomendowaliśmy swoim klientom. Kiedy pojawił się pomysł stworzenia pierwszego, szybkiego MVP, dzięki któremu mieliśmy zwalidować rynek i które miało być technologią reaktywną, nie do końca wiedzieliśmy jeszcze jak w prosty sposób ugryźć temat. Zadanie nie tyle było przytłaczające, co bardzo czasochłonne, a na to nie mogliśmy sobie pozwolić.
Stanęliśmy trochę z boku, podrapaliśmy się po głowach i zaczęliśmy dochodzić do wniosku, że jeżeli mamy być zespołem do szybkiego reagowania i rozwiązywania nietrywialnych zadań, to musimy coś zmienić. Z pomocą przyszedł jeden z programistów, Tomek, pokazując rozwiązanie, z którym ostatnio miał do czynienia. Opowiedział, jak w prosty sposób zbudować aplikację na NodeJs’ie z instancją MiniMongo pomiędzy serwerem a klientem, która całość od razu (w paczce) udostępnia połączenie po websocketach i w zasadzie nie trzeba się niczym wysilać. Mówił o MeteorJs i to była miłość od pierwszego zakodowania.
Testowanie
Potem było już z górki: pierwsze projekty, pierwsze wdrożenia aż wreszcie uzyskaliśmy pierwszy w Polsce status oficjalnego partnera Meteora. To było coś wielkiego, coś co napawało nas dumą. Tym bardziej, że wszystkie projekty, które wdrożyliśmy w tej technologii okazały się sukcesem. Współpracowaliśmy z dziesiątkami agencji, a dzięki wprowadzeniu Meteora udało się osiągnąć wyniki, dzięki którym dużo szybciej wytwarzaliśmy oprogramowanie niż wewnętrzny zespół korporacji.
Gdy tworzyliśmy nasz startup (Tap To Speak), to właśnie wybór tej technologii jako naszego rozwiązania zaważył na tym, że tylko w przeciągu 1,5 roku zdobyliśmy prawie 20 nagród i nominacji, a z naszego rozwiązania skorzystały takie firmy jak Disney, Toshiba, IBM czy Harvard.
Wracamy do e-maila
Wróćmy więc do wiadomości, którą dostałem w odpowiedzi na zapytanie o Meteora. Nie wierzę, że ktoś mógł sądzić, że Meteor nie żyje. Pracujemy w nim przecież od lat, nieprzerwanie. Kilka dni temu udostępniono kolejną wersję, w której znów zaszły rewolucyjne zmiany. Dlaczego więc niektórzy uważają, że ta platforma się nie rozwija? Pewnie przez sposób na skierowanie do skorzystania z innych rozwiązań oferowanych przez firmę. Najpewniej tak, ale mimo tego natchnęło mnie to do refleksji, które stały się inspiracją do napisania tego artykułu.
Jak to się wszystko zaczęło
Historia Meteora sięga roku 2011. Wtedy jeszcze pod nazwą Skybreak, został objęty inkubacją w jednym z najlepszych startupowych inkubatorów — Y Combinator. Kiedy Meteor startował, większość stron po zatwierdzeniu formularza nadal przeładowywała swoją zawartość, by wyświetlić zmiany. Chwilę wcześniej wystandaryzowane XMLHttpRequest API był ostatnim krzykiem mody, a Jquery ogromnie popularne.
Kiedy więc MeteorJs wprowadził możliwości wyświetlania i odświeżania danych w czasie rzeczywistym, bez konieczności przeładowywania strony, stało się to czymś rewolucyjnym, dzięki czemu szybko zebrał większe grono zwolenników. Przez te wiele lat Meteor przeszedł długą drogę i pojawiło się jego wiele, dopracowanych wersji. Wszystkie błędy związane z bezpieczeństwem do tej pory łatane są w trybie natychmiastowym, co zwiększa poczucie stabilności rozwiązania.
Co w trawie piszczy?
Tak jak wspomniałem wcześniej Meteor działa w zasadzie z marszu. Wystarczy pobrać, zainstalować, wpisać trzy komendy w konsoli i mamy w pełni działającą instancję klient —> serwer wraz z bazą danych i mechanizmami zmian treści w czasie rzeczywistym. To znaczy, że korzystając z Meteora już na starcie zaoszczędzamy kilka dobrych godzin na konfiguracji.
Kolejna rzecz, która ma ogromne znaczenie dla rozwoju technologii, to niesamowita społeczność tego rozwiązania, która gotowa jest cały czas budować, usprawniać i wdrażać a przy tym służyć pomocą osobom, które byłyby zainteresowane skorzystać z Meteora. Od kiedy MeteorJs daje możliwość pełnej i banalnie prostej integracji z ekosystmem NPM, nie ma dla niego już rzeczy niemożliwych. W MongoDB – pojawiają się transakcje, Meteor integruje się oprócz BlazeJs’a także z: Reactem, Angularem, VueJs, GraphQl czy Cordovą. I co najważniejsze, posiada ponad 13 100 pakietów i ponad 500 000 unikalnych instalacji na całym świecie.
Taylor Otwen, twórca jednego z najbardziej popularnych frameworków w PHP Laravel, przytacza MeteorJs’a jako najbardziej popularny framework backendowy.
A teraz część tylko dla programistów…
Mówiąc o zaletach Meteora, warto wspomnieć o niesamowitych rozwiązaniach do deploymentu naszych aplikacji. Po pierwsze, mamy Galaxy – oficjalny hosting MeteorJs, który działa po prostu niesamowicie, gdyż omijamy proces konfiguracji środowiska. Po drugie, rozwiązanie MeteorUp, które za pomocą kilku komend umożliwia nam skonfigurowanie serwera (na którym ma stać nasze rozwiązanie) zbudowanie i umieszczenia aplikacji, bazy danych, nginxa wraz z gotowym certyfikatem SSL w kontenerach dockera i odpalenia, wraz z CI i automatycznym rollback’iem, całości na produkcji… łuff.
W przypadku budowania narzędzia, które ma być połączeniem serwisu internetowego, aplikacji mobilnej lub desktopowej w jednym, Meteor sprawdza się znakomicie. Podobnie jak dobudowanie kolejnych modułów do istniejącego rozwiązania, gdzie chcemy zwiększyć szybkość zapytań lub stworzyć warstwę frontową dla czegoś bardzo archaicznego. I jak tu nie kochać Meteora?
Testowanie aplikacji
Testowanie aplikacji z Meteorem nigdy nie było prostsze. Testy jednostkowe to w zasadzie bułka z masłem. Dzięki webdriver.io i chimp.js jesteśmy w stanie stworzyć testy zautomatyzowane całej aplikacji w kilka godzin. Podpinamy do tego PhantomJS (skryptową, bezgłową przeglądarkę używaną do automatyzacji interakcji ze stroną lub aplikacją) i nie musimy się martwić, że przy kolejnej wrzutce, czy coś nie zadziała na produkcji. PhantomJs może zrobić zdjęcie błędnie wyświetlanego lub obsługiwanego elementu, a nasze CI przesłać go wraz z logami (po stworzeniu integracji) jako alert, że coś poszło nie tak.
Podsumowanie
Trendy wskazują, że rozwiązania Javascript’owe rosną w siłę. Wiele firm programistycznych przekierowało swoje siły właśnie w tym kierunku. Wszystkie frameworki Jsowe zaczynają przeganiać inne technologie. NodeJs przeżywa swoją wiosnę, podobnie jak Meteor. Rozkwita, zmienia się i napędza nie tylko programistów, ale także firmy, które zdecydują się na wybranie tego rozwiązania.
Warto też wspomnieć, że technologia ta otrzymała wielomilionowe dofinansowanie, które przyczyniło się do ogromnego skoku rozwojowego oraz dała pewność, że przez wiele lat nie zniknie ona z rynku. Dlatego tym, którzy jeszcze nie spróbowali, polecam by się więcej nie wahali.