backend

Tworząc nowy projekt, zwykle wykonuje się serię tych samych kroków. Stawianie warstwowej architektury, modele, repozytoria, serwisy, konfiguracja, providery… Ten schemat lubi się powtarzać. Jest to czasochłonny proces, po którym z punktu widzenia klienta nic nie zostało zrobione. No bo co z tego, że poświęciliśmy 10 godzin pracy, skoro żadna z funkcjonalności nie została tak naprawdę zaimplementowana? Z pomocą przychodzą różne mniej lub bardziej gotowe rozwiązania, typu ASP.NET Boilerplate, Serenity Application Platform. Ale nawet one nie rozwiązują problemu w 100% – i tak trzeba sobie „pobrudzić palce” kodem.

Z punktu widzenia full-stack developera, ta nazwijmy to wstępna praca jest mnożona przez 2. No bo oprócz części backendowej trzeba też skonfigurować frontend. A tutaj nie dość, że co chwilę wychodzi nowy framework czy tool, to czasami tej wstępnej konfiguracji jest jeszcze więcej.

W ciągu ostatnich kilku lat powstało wiele usług, które określają się mianem BaaS – Backend as a Service. Są to platformy, w których można sobie „wyklikać” prostego CRUDa, skonfigurować zewnętrzne serwisy, nie ruszając przy tym kodu. Pierwotnie usługi tego typu były tworzone dla aplikacji mobilnych. Developer dostawał gotowy backend do wysyłania powiadomień push, synchronizacji ustawień, czy łączenia się z innymi usługami w chmurze (MBaaS – Mobile Backend as a Service). Z czasem jednak powstały też podobne serwisy, które oferują tego typu funkcjonalności, z tym że bardziej przydatne dla developerów aplikacji webowych. I tak oto mamy obecnie wysyp różnego rodzaju usług BaaS. Co konkretnie oferują te usługi? Przyjrzyjmy się kilku z nim.

Backand

backand

Backand to kompletne środowisko BaaS, które określa się jako „Serverless”. Pokrótce znaczy to tyle, że usługi są automatycznie skalowane w zależności od zapotrzebowania. Do tematów Serverless i Function as a Service na pewno wrócę w przyszłych postach, na razie zostawiam link do wujka Martina. Co do oferowanych usług, mamy tutaj możliwość stworzenia modelu danych i wygenerowania prostego API, z możliwością podpięcia istniejącej bazy. Za pomocą Queries da się zbudować zapytania, które można zmapować pod konkretny endpoint API. Usługa oferuje też integrację z różnymi providerami logowania poprzez OAuth – wystarczy wklepać tokeny. Jest też możliwość tworzenia i nadawania ról. Pozostałe usługi to zarządzanie plikami, analiza logów oraz funkcje analityczne.

Jak dla mnie Backand najbardziej oddaje obraz tego, czym jest Backend as a Service. Dokładnie tak wyobrażałem sobie usługę tego typu, gdy po raz pierwszy spotkałem się z tym stwierdzeniem. Gdyby ktoś chciał sobie poklikać i spróbować samemu, zamieszczam link.

Firebase

firebase

Firebase to usługa BaaS od google. Oferuje podobne usługi co Backand, natomiast jest skierowana bardziej w stronę developerów aplikacji mobilnych – posiada specyficzne dla mobilków usługi takie jak push notifications, dynamic links oraz AddMob. Nie znaczy to jednak, że nie może służyć za backend dla aplikacji webowych. Twórcy stworzyli nawet oficjalną bibliotekę dla AngularJS: AngularFire, natomiast dla nowej wersji Angular możemy skorzystać z angularfire2. Podobnie jak w Backand mamy do wyboru różne plany cenowe – jest darmowy, najbardziej ograniczony, plan płatny, oferujące większe limity, ale możemy też skorzystać z opcji Pay as you go. Wówczas płacimy za rzeczywiste zużycie zasobów. Firebase oferuje także możliwość tworzenia scenariuszy testowych dla aplikacji mobilnych.

Usługa wydaje się być świetnym rozwiązaniem dla aplikacji mobilnych, jednocześnie jest alternatywą dla innych serwisów BaaS skierowanych pod aplikacje webowe. Zamieszczam link do potestowania.

Parse Server

parse

Parse pierwotnie był usługą BaaS w chmurze. Została ona jednak wyłączona, a kod źródłowy został opublikowany na GitHubie. Obecnie Parse można uruchomić na własnym środowisku. Wymaga to jednak trochę gimnastyki z nodejs, najprostszym rozwiązaniem wydaje się postawienie gotowego środowiska na dockerze.  Parse składa się z serwera i dashboardu, wymaga także mongoDb. Tym, co wyróżnia Parse spośród innych rozwiązań BaaS, jest jego modularność. Podstawowy moduł Core zapewnia tylko zarządzanie bazą i api. Jeśli chcemy zrobić coś więcej, musimy zainstalować odpowiedni moduł. Z jednej strony może się to wydawać uciążliwe, no bo w końcu ideą BaaS jest to, że backend ma po prostu działać. Osobiście jednak jestem zdania, że jest to zaleta, gdyż instalujemy tylko to, co naprawdę potrzebujemy.

Własne rozwiązanie

Skoro mamy tyle dostępnych opcji, pojawia się pytanie – po co tworzyć kolejny tego typu serwis?

meme

Moja odpowiedź brzmi: żeby łyknąć sporą porcję wiedzy. Tworzenie tego typu serwisu będzie wymagało integracji wielu technologii. Moim celem nie jest stworzenie rynkowej konkurencji dla pozostałych usług BaaS, tylko podszkolenie się w kilku aspektach, m.in.:

  • DDD
  • Angular
  • SQL
  • Docker API
  • OAuth, JWT

A jeśli przy tym uda mi się stworzyć sensownie działający serwis, którego ktoś będzie chciał użyć, to będę się bardzo cieszył 🙂

Daj Się Poznać 2017

Minął rok od założenia mojego bloga. Skąd o tym wiem? Bo ruszyła kolejna edycja Daj Się Poznać. W tym roku uczestników jest prawie 1000. Nie liczę, że uda mi się coś wygrać w konkursie. Natomiast wygraną będzie dla mnie, jeśli uda mi się dotrwać do końca. W zeszłym roku przytłoczyły mnie inne projekty, dlatego moje Nocturno poszło na dalszy plan. Napisałbym, że tym razem będzie inaczej, ale jak tylko o tym pomyślę, to przypomina mi się Vaas z Far Cry 3 i jego „Definition of Insanity” – kto grał ten wie o co chodzi 😉 Jednak jeśli nie spróbuję, to się nie dowiem.

Na koniec zamieszczam link do mojego (jeszcze) pustego repozytorium na GitHubie.

Share