20 sty 20218 min czytania
Robert Krajewski
Współzałożyciel i CEO Ideamotive. Przedsiębiorca, mentor i doradca startupów.
Ruby on Rails to framework do szybkiego tworzenia aplikacji webowych w języku Ruby.
Rails jest tak mocno związany z Ruby, że czasem trudno odróżnić jedno od drugiego. Różnica jest jednak duża: Ruby to język programowania, a Rails to tylko framework napisany dla Ruby. Z mieszania tych pojęć często biorą się nieporozumienia, zwłaszcza gdy programistów specjalizujących się w Ruby poszukuje się jako programistów Ruby on Rails. Trzeba zrozumieć, że Ruby to nie Rails. Dokumentacja Ruby jest uzupełniana przez dokumentację Rails.
Framework Rails ogromnie przyczynił się do rozwoju języka Ruby i to właśnie wraz z jego pojawieniem się zainteresowanie Ruby wystrzeliło w górę.
Zajmuje mniej czasu. Szacuje się, że czas wytwarzania w Ruby on Rails jest o 40-50% krótszy niż w innych językach programowania.
Modułowa budowa Ruby on Rails i samej aplikacji daje nie tylko szybsze wytwarzanie, ale też elastyczność rozwiązań. Można je łatwo modyfikować, ulepszać albo rozbudowywać po wydaniu.
Ruby to koncepcja spójności struktury i metodyki pisania kodu, której trzymają się programiści RoR, żeby ułatwić sobie wzajemną współpracę.
W praktyce wszystkie 3 poprzednie punkty przekładają się na ostateczne oszczędności i wyższy zwrot z inwestycji (ROI).
Specjalistów JAVA i PHP jest znacznie więcej. Jasne, że ilość nie zawsze oznacza jakość. W każdym z tych obszarów są prawdziwi profesjonaliści, jak i osoby dopiero zaczynające naukę. Mimo to specjalistów jest tu mniej.
Bądźmy szczerzy: aplikacje w RoR nie są tak szybkie jak te pisane w Javie czy C. Prawda jest jednak taka, że dla większości zastosowań Ruby on Rails jest wystarczająco szybki. Wiele znanych firm powierzyło swój biznes Rails i nie żałuje.
Express to framework dla aplikacji Node.js.
Express to minimalistyczny i elastyczny framework webowy dla Node, który daje bogaty zestaw funkcji do tworzenia aplikacji jedno- i wielostronicowych oraz hybrydowych.
Ma bogate API i jest bardzo szybki.
Ten framework rozwija się po swojemu, w przeciwieństwie do innych mocno wzorowanych na Rails, choć sporo zapożyczył z innego frameworka Ruby o nazwie Sinatra. Koncepcja jest prosta: framework daje szerokie możliwości uruchomienia i pracy w locie, bez długiego przygotowania.
Express od dawna służy do budowy aplikacji i dzięki swojej stabilności mocno trzyma pozycję jednego z najpopularniejszych frameworków Node.js.
Do tego frameworka powstało mnóstwo szczegółowych instrukcji i opisów przygotowanych przez programistów, którzy sprawdzili jego skuteczność w praktyce. Dlatego deweloperzy polecają zacząć od Expressa, jeśli chcesz nauczyć się tworzyć aplikacje na platformie Node.js.
Przyznasz, że dużo mądrzej jest korzystać ze zgromadzonego i sprawdzonego doświadczenia niż wymyślać koło na nowo.
Główną cechą tego frameworka jest to, że Express ma niewiele podstawowej funkcjonalności. Wszystkie pozostałe potrzebne funkcje trzeba dobrać z zewnętrznych modułów.
W istocie Express w czystej postaci to serwer, który może nie mieć ani jednego modułu. Dzięki temu minimalizmowi programista dostaje na start lekkie i szybkie narzędzie, które może rozbudowywać i rozwijać.
Jednocześnie ważne jest to, że wybór modułów dla Expressa nie wiąże się z żadnymi ograniczeniami: ani ilościowymi, ani funkcjonalnymi.
W efekcie framework daje programiście możliwość rozwiązania dowolnego problemu, nie ograniczając wyboru narzędzi.
Można też wspomnieć o:
Z jednej strony to dobra wiadomość: brak gotowych uniwersalnych rozwiązań oznacza, że każda tworzona aplikacja będzie unikatowa. Z drugiej strony programista musi samodzielnie dobrać i poukładać moduły, co wymaga dużo pracy, a więc również więcej czasu i wysiłku.
TypeScript trzeba skompilować, zanim użyjesz go z Node.js, co nieco komplikuje sprawę - kompilator w łańcuchu narzędzi, source mapy do ustalenia, w którym miejscu prawdziwego kodu pojawił się błąd produkcyjny itd.
Coraz więcej osób zastanawia się, który framework jest najlepszy do backendu. Ponieważ wielu naszych czytelników nigdy nie korzystało z Expressa, chcieliśmy przyjrzeć się różnicom między Rails a Express.
Analizując konkurencję, zauważyliśmy też, że więcej firm wymienia w ogłoszeniach Node i Express niż Rails. Express wydaje się dobrym narzędziem do nauki i naprawdę lubię programować w JavaScripcie, ale kocham też prostotę Rails.
Co więc jest lepsze?
Podejście Convention Over Configuration pozwala programistom jak najszybciej zabrać się za realny produkt — przy minimalnym czasie na konfigurację środowiska. To wygodne dla programistów, ale też bezpośrednio skraca time to market. I słusznie! Ruby on Rails przydaje się, gdy chcesz bardzo szybko zbudować aplikację i przetestować swoje pomysły na rynku. Gdy pojawią się użytkownicy, możesz zbierać feedback, obserwować ich zachowania, weryfikować wczesne założenia i wyznaczyć właściwą ścieżkę dalszego rozwoju.
Zwycięzca: Ruby on Rails
Express.js słynie z szybkości. Po części dzięki połączeniu programowania zdarzeniowego z programowaniem asynchronicznym. Do tego nieblokujące wejście/wyjście. Wszystko to pozwala maksymalnie wykorzystać jeden rdzeń procesora i pamięć komputera.
W praktyce Node.js obsługuje jednocześnie więcej żądań i z definicji obciążenie wielu serwerów WWW. Node.js pozwala programom działać nawet przy wejściu/wyjściu żądań, gdy serwer jest obciążony. Utrzymuje wydajność aplikacji niezależnie od obciążenia.
Zwycięzca: Express.js
Według Express VS Ruby On Rails - Framework Technologies Market Share Comparison, framework Node’a ma 174 112 stron i trend wzrostowy, a jego rywal 381 367 portali i trend spadkowy.
Ruby On Rails prowadzi w większości krajów, w tym w USA, Rosji, Japonii, Indiach i 144 innych. Express jest najpopularniejszy w Chinach, Brazylii, Korei Południowej, na Białorusi i w 7 innych krajach.
Sięgając do google trends, widać, że przez ostatnie lata RoR miał znacznie więcej zapytań w wyszukiwarce.
Popularność Node.js jest jednak niezaprzeczalna. To, że opiera się na JavaScripcie, jest jego największą zaletą, bo istnieje już duża społeczność, która może uczynić Node.js bardziej odpowiedzialnym niż Ruby.
Jednocześnie można powiedzieć, że RoR jest znacznie trudniejszy do nauki i dlatego dostępność specjalistów mocno się zawęża. Programiści są, ale jest ich mniej niż w innych technologiach. Wynika to z innego progu wejścia w tę technologię (zwykle do Ruby trafia się po kilku latach PHP), co mówi też o jakości tych programistów.
Dobrych programistów jest równie mało we wszystkich technologiach.
Wynik: remis
Połączenie workerów i klastrów Expressa ułatwia tworzenie dodatkowych procesów Express.js zależnie od obciążenia. To upraszcza rozwój aplikacji w Express.js. Konstrukcja tego frameworka sprawia, że możliwości ogranicza w zasadzie tylko liczba dostępnych procesorów serwera. Czyni to z niego dobrą platformę, jeśli planujesz wdrażać aplikacje klasy enterprise.
Krąży mit, że „Rails się nie skaluje”. To główne złudzenie osób, które nie próbowały pisać poważnych projektów w RoR. Ruby on Rails skaluje się znakomicie.
Spójrz na GitHuba, Groupon, Basecamp i inne. Wszystkie te projekty napisano w Rails i wszystkie mają inne problemy, ale nie problemy ze skalowaniem (najczęściej chodzi o wydajność bazy danych).
Wynik: remis
Rails to otwartoźródłowy framework webowy wspierany przez aktywną i pomocną społeczność programistów. Jej członkowie nie tylko pomagają sobie nawzajem przy problemach, ale też dbają, żeby infrastruktura Rails była aktualna, a poprawki błędów i kwestie bezpieczeństwa zgodne ze standardami branżowymi.
Express to dość młoda technologia, która po prostu nie może konkurować z RoR pod względem wsparcia.
Zwycięzca: Ruby on Rails
Prostota Rails bywa zwodnicza. Na początku krzywa uczenia się jest naprawdę łagodna, a mnogość tutoriali i przewodników dla początkujących jeszcze to ułatwia. Ale wraz ze wzrostem złożoności aplikacji robi się coraz trudniej. Bez dobrych konwencji kodowania i projektowania obiektowego kod rozejdzie się na wszystkie strony i stanie się nie do utrzymania.
Po niewielkim wysiłku na start Express jest dobrym wyborem dla początkujących programistów NodeJS, którzy chcą szybko ruszyć z miejsca.
Zwycięzca: Express.js
Express jest elastyczny, ale to bywa problemem. Czasem moduły są kiepskiej jakości, a proponowanej dokumentacji brakuje specyfikacji. Jako programista masz w Node.js wybór modułów. I nie zawsze jest oczywiste, który jest lepszy. Na przykład wybór silnika szablonów potrafi zająć czas.
Express.js jest więc rozwiązaniem mniej gotowym do użycia od razu niż RoR. Moduły bywają trudne do integracji, zawierają też błędy i powodują nieoczekiwane zachowania. Dlatego bardzo ważne jest, żeby mieć w zespole doświadczonego programistę Node.js, który pomoże rozwiązywać problemy.
Zwycięzca: Ruby on Rails
Po pierwsze, język Ruby nie jest dla początkujących. Bariera wejścia jest wysoka, więc programiści Ruby zwykle trafiają tu po latach pracy w innym języku. Średni wiek programisty Ruby to 25-28 lat. Typowy „początkujący” programista Ruby on Rails to doświadczony web developer z dużą wiedzą, doświadczeniem w projektach w innym języku, rozumieniem zasad programowania i świetną znajomością web developmentu w ogóle.
Ponieważ Node i Express są nowe i bardzo modne, na rynku jest mniej takich programistów. Łatwość nauki sprawia jednak, że pula specjalistów tego frameworka szybko rośnie. Dlatego koszt Twojego projektu nie będzie tak wysoki jak tego samego w Rails.
Zwycięzca: Express.js
Główną zaletą tworzenia w Ruby on Rails jest duży zbiór bibliotek (gemów), które znacząco skracają czas dostarczenia. Zastanawiałem się, jak dojrzały jest Node w porównaniu z RoR. Wybrałem popularne gemy używane w naszych projektach i próbowałem znaleźć ich odpowiedniki w Node. Oto, co wyszło:
Powyższa lista ogranicza się do najważniejszych bibliotek backendowych. Pominąłem mniej kluczowe, ale też istotne gemy, takie jak AASM, Awesome Nested Set, Acts As Taggable On, Draper. Zakładam też, że cała praca na froncie byłaby zrobiona w React lub Vue i że nie używamy gemów frontendowych takich jak Simple Form i Kaminari.
Wybór idealnej technologii do projektu powinien zawsze zaczynać się od oceny Twoich problemów i potrzeb. Kiedy je zrozumiesz, dużo łatwiej ocenisz, która technologia najlepiej posłuży Twojej aplikacji.
Jeśli zależy Ci na zbudowaniu aplikacji jak najszybciej, możesz postawić na Ruby on Rails. To dobry wybór, gdy projekt ma napięty termin i budżet. Pamiętaj jednak, że taka decyzja może mieć negatywne konsekwencje wraz ze wzrostem aplikacji - Ruby on Rails bywa krytykowany za problemy z wydajnością i skalowalnością. Do tego zatrudnienie dobrego programisty RoR bywa na dłuższą metę dość drogie.
Jeśli mierzysz wysoko i chcesz, żeby aplikacja się skalowała, albo budujesz innowacyjne rozwiązanie webowe wymagające pełnej kontroli nad architekturą frameworka, modułami, integracją z bazą danych i wdrożeniem na serwerze, właściwym wyborem jest Express.js. Jest szybki, lekki i skalowalny. W połączeniu ze sposobem obsługi dużych plików i wielu równoległych żądań to szczególnie dobry wybór do wszystkich narzędzi real-time, czatów, streamingu i pracy zespołowej.
Robert jest współzałożycielem Ideamotive. Przedsiębiorca, który z pasją szerzy cyfrową rewolucję w całym internecie. Mentor i doradca w akceleratorach startupów. Uwielbia się uczyć i odkrywać nowe modele biznesowe.
Zobacz wszystkie wpisy autoraKompletny przewodnik biznesowy
Czytaj terazPopularne artykuły
21 inspirujących projektów UI aplikacji mobilnych na 2023 rok
Michał Pruciak 7 min czytania
MedTech vs HealthTech vs BioTech: jakie są różnice?
Michał Pruciak 7 min czytania
10 biznesowych zastosowań sieci neuronowych (z przykładami!)
Michał Pruciak 4 min czytania
10 przykładów dobrych praktyk w web designie na 2023 rok
Adam Kozłowski 7 min czytania
28 znanych aplikacji webowych napisanych w PHP
Dawid Karczewski 14 min czytania
Jakich usług programistycznych szukasz?
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści
Ocena 4,8 / 5,0 od klientów z różnych branż i lokalizacji.