Hi, chłopaki, w tym artykule porównamy Node.js vs Ruby on Rails dla rozwoju stron internetowych. Głównym powodem dla którego napisałem ten artykuł jest to, że nasz zespół jest ciągle pytany o to, który język lub framework jest najlepszy do nauki. W każdym razie, nigdy nie dajemy prostej odpowiedzi, ponieważ nie są one jednoznaczne. Więc myślę, że następną najlepszą rzeczą jest spojrzenie na wszystkie fakty i statystyki. Mamy zamiar spojrzeć na niektóre z zalet i niektóre z wad zarówno Node.js i Ruby on Rails dla technologii server-side. Zanim zaczniemy, chciałbym poruszyć kilka kwestii. Więc już słyszymy krytyków mówiących jak zamierzasz porównać Node.js, który jest runtime do Ruby on Rails, który jest frameworkiem? Rozumiem ten argument, ale to co zamierzam porównać to dwie technologie server-side i stosy webowe. Teraz wyjaśnijmy sobie, co jest lepsze do nauki teraz i co jest lepsze do wdrożenia dla biznesu. Nie mówię aby porównywać bezpośrednie cechy Ruby on Rails do Node.js jeśli to sprawi, że poczujesz się lepiej zastąp Node.js czymś takim jak Express lub innym frameworkiem opartym na Node. Tak czy inaczej, porównujemy struktury backendowe i stosy, a nie poszczególne technologie. Nasz zespół pracował z obiema technologiami i niektórzy z nas lubią obie technologie. Nie promuję jednej nad drugą. Ważne jest również, aby zrozumieć, że to, co działa dla nas, może nie działać dla Ciebie i vice versa. Należy również pamiętać, że mózg każdego z nas jest inny. There is no cookie cutter answer for this question.

Let’s go ahead and get started with looking at some of the similarities between both technologies.

  • Popularne technologie Server-Side Technologies.
  • Fairly easy to learn.
  • High performance.
  • Używane przez najlepsze strony internetowe/aplikacje.
  • Silna społeczność.
  • Podobna struktura oparta na MVC.
  • Szybki rozwój.

Zarówno Node.js jak i Rails są szanowanymi i popularnymi technologiami server-side, które mogą robić wiele różnych rzeczy. Mogą pracować z wieloma różnymi stosami i bazami danych i tak dalej. Obie są dość łatwe do nauczenia. Node używa JavaScript, a Rails używa Ruby. Ale Ruby i JavaScript są łatwiejsze do nauczenia niż coś takiego jak Java, C# lub niektóre z tych języków wyższego poziomu. Oba są dość wybaczającymi językami i jest mnóstwo zasobów do ich nauki. Node.js i Ruby on Rails działają naprawdę dobrze, a my porozmawiamy o poziomie wydajności. Istnieje wiele przykładów popularnych stron internetowych, które używają obu technologii. Node i Railsy mają bardzo silne i opiniotwórcze społeczności.

Rails jest już trochę dłużej i ma więcej starych timerów. Ale Node staje się coraz bardziej popularny każdego dnia. Teraz MVC lub Model-View-Controller jest zaprojektowanym wzorcem. A Ruby on Rails ma twarde MVC. Masz folder dla swoich modeli, kontrolerów i widoków. MVC jest możliwe z niektórymi frameworkami w Node, takimi jak Express. Jednak Express jest znacznie bardziej elastyczny w swojej strukturze niż Railsy. Możesz po prostu wziąć pewne aspekty MVC. Nie jest to jedyna możliwa struktura. Node i Railsy są używane do szybkiego rozwoju i prototypowania. Rails ma niesamowitą funkcję składania, a Express ma generatory i narzędzia wiersza poleceń, jak również.

Zalety Rails

  • Skonsolidowana struktura.
  • Bardzo opiniotwórcza.
  • Migracje baz danych.
  • Szybkość rozwoju.
  • Ruby to świetny język.
  • Ruby gems.
  • Dojrzałość i szanowana społeczność.

Po pierwsze, przyjrzymy się zaletom Ruby on Rails, a następnie wadom. Jak już wspomniałem, Railsy mają bardzo silną strukturę MVC. Większość aplikacji Railsowych będzie wyglądała bardzo podobnie pod względem podstawowych plików i folderów. Masz ten silny fundament, a następnie budujesz na nim za pomocą gemów, niestandardowych pakietów i bibliotek. Dodatkowo, Rails jest bardzo opiniotwórczy, co oznacza, że zmusza cię do trzymania się jego sposobu robienia rzeczy. Railsy zakładają, że będziesz pisał kod w określony sposób i niektórzy ludzie mogą powiedzieć, że jest to trochę ograniczające. Ale to również sprawia, że kod jest łatwiejszy, dużo czystszy i trudniej jest tworzyć błędy i problemy. Nie jest to ograniczające w tym sensie, że nie możesz stworzyć tego, co chcesz, ale po prostu sposób, w jaki zamierzasz się tam dostać. Jeśli zrobisz to we właściwy sposób, najprawdopodobniej będzie to najłatwiejsza ścieżka.

Railsy mają również naprawdę dobrą funkcjonalność migracji baz danych. Pozwalają nam one robić takie rzeczy jak tworzenie i edytowanie tabel i kolumn w naszej bazie danych bez konieczności ręcznego wchodzenia i dodawania lub zmieniania rzeczy. To również daje ci ładny mały dziennik lub ścieżkę, którą możesz śledzić, aby zobaczyć dokładnie, co zostało zrobione w strukturze twojej bazy danych.

Teraz do Node. Istnieją pewne pakiety lub moduły do migracji, takie jak DB-migrate, które mogą działać naprawdę dobrze, ale nie są tak dogłębne i łatwe w użyciu jak system migracji akordu Rails. Jeśli chodzi o prototypowanie i szybki rozwój, nie ma zbyt wielu technologii, które mogą pobić Railsy. Tak więc, z pewną podstawową konfiguracją i kilkoma poleceniami rusztowania masz w pełni działającą aplikację CRUD. Migracje baz danych są dodawane do tej szybkości. Node.js i Express są dość dobre w szybkim rozwoju, jeśli używasz narzędzi i modułów firm trzecich. Ale Rails ma wszystkie te rzeczy zaraz po wyjęciu z pudełka.

Jest kilka plusów i minusów języka Ruby, ale w przeważającej części, jest on dobrze szanowany i jest bardzo czysty. Ruby jest językiem wieloparadygmatowym, możesz robić proceduralny kod funkcjonalny, ale w większości jest on zorientowany obiektowo. Wszystko może być postrzegane jako obiekt. RubyGems jest menedżerem pakietów dla Ruby on Rails i jest używany do rozszerzania podstawowej funkcjonalności frameworka. Jest on podobny do npm dla Node.js. Wszystkie aplikacje Railsowe posiadają plik gem, w którym możesz określić swoje klejnoty. Następnie możesz uruchomić polecenie bundlera aby zainstalować je wszystkie, podobnie jak npm install z Node.js.

Kolejną wspaniałą rzeczą w Ruby on Rails jest to, że istnieje już od jakiegoś czasu i ma bardzo szanowaną i inteligentną społeczność. Deweloperzy utrzymujący Ruby on Rails są niezwykle inteligentni i pełni pasji do tego frameworka. Istnieje mnóstwo zasobów na temat frameworka, w tym fora, wpisy na blogach i dokumentacja, która pomoże Ci, jeśli utkniesz. To są niektóre z wielkich zalet Ruby on Rails.

Wady Railsów

  • Wydajność
  • Zbyt prosta
  • Popularność
  • Brak dokumentacji

Pomówmy o niektórych wadach. Jedną z największych skarg jakie słyszeliśmy na Ruby on Rails jest to, że jest stosunkowo wolny. Railsy to duży framework z wieloma funkcjami w swoim rdzeniu. Jak również niektóre z lżejszych frameworków, masz również czynnik w postaci zależności od gemów i plików aplikacji. Jest tak wiele automatyzacji i rusztowań, że programista nie uczy się zbyt wiele o tym jak działa framework Rails. Możesz wiedzieć o języku Ruby, o składni lub strukturze ich aplikacji, ale dla kogoś, kto naprawdę rozumie, jak działa Rails, jest to świetne ze względu na jego szybki rozwój. Z drugiej strony, niektórzy z deweloperów naprawdę muszą przejść dodatkową milę, aby naprawdę zrozumieć pewne rzeczy. Railsy są również o wiele trudniejsze dla dużych projektów niż małe aplikacje. Może mieć pewne problemy ze skalowaniem, jak również.

Więc inną wadą jest to, że Rails nie jest tak popularny jak Node.js. W tym czasie, Node.js jest na krawędzi cięcia rozwoju sieci, a ekscytacja Railsami naprawdę spadła. W naszej opinii, jeśli szukasz pracy, zdecydowanie powiedzielibyśmy nauczyć się Node i prawdopodobnie Express. Więcej firm zatrudnia programistów JS niż jakiegokolwiek innego języka. Gdyby to było pięć lat temu, Railsy lub Ruby byłyby jednym z trzech najlepszych języków do nauki. Ale w dzisiejszych czasach nie jest to już tak popularne. Więc krótko wspomniałem wcześniej, że rdzeń Rails framework ma naprawdę dobrą dokumentację i przykłady, pozwalające nauczyć się prostych poleceń rusztowania i migracji bazy danych. To wszystko jest w porządku. Jednakże, kiedy próbujesz nauczyć się bardziej zaawansowanego programowania i próbujesz dowiedzieć się o konkretnych klejnotach, czasami czuje się to jak szukanie igły Newtona w stogu siana.

Kilka całkiem dużych nazwisk używało lub używa Ruby on Rails w swojej platformie. Nie wydaje mi się, żebyś mógł być dużo większy niż Twitter. Ponadto, przenieśli wiele swoich usług backendowych do Scali i Javy z powodu pewnych problemów ze skalowaniem. Ale używali Rails przez długi czas i jestem pewien, że nadal używają go w innych aspektach swojej platformy, takich jak ich partnerstwo z Shopify. Dodatkowo, Basecamp, który jest rozwiązaniem do zarządzania projektami, powiedział, że Railsy są sercem i duszą ich projektu. Oprogramowanie, które działa na GitHubie zostało zbudowane na Railsach. Soundcloud i Hulu, który jest popularnym serwisem streamingowym, zostały zbudowane na Railsach. Od samego początku Groupon i LivingSocial, SlideShare i Urban Dictionary używały Railsów w swoim developemtn.

Node.js Zalety

  • Niezwykle popularny.
  • Wysoka wydajność.
  • Asynchroniczny.
  • Bardzo skalowalny.
  • JavaScript front i backend.
  • Elastyczna struktura plików.
  • npm i Moduły.

Teraz, gdy przyjrzeliśmy się Railsom, zacznijmy przyglądać się Node.js. Zaczniemy od zalet. Jednym z ogromnych plusów Node.js jest jego niezwykła popularność. Jest to w zasadzie nowa, najnowocześniejsza technologia w tworzeniu stron internetowych. Jest bardzo duże zapotrzebowanie na rynku. Jest niezwykle popularny dla startupów. Istnieje kwitnąca społeczność open-source wokół Node i frameworka Express. Istnieje wiele dobrze rozwiniętych modułów na npm, a jeśli chodzi o szybkość i wydajność, Node wybija Railsy prosto z wody. Właściwie, to całkiem sporo wybija wszystko z wody. Działa na silniku Google JavaScript, który jest błyskawiczny. Node jest używany do budowania aplikacji internetowych w czasie rzeczywistym, które prawie czują się jak aplikacje desktopowe.

Następnie, Node.js jest również asynchroniczny. Oznacza to, że kiedy program wysyła żądanie do serwera, nie musi czekać na odpowiedź. Może kontynuować wykonywanie. Node działa na jednym wątku, w przeciwieństwie do innych języków, które wysyłają żądanie. Czekają, aż to żądanie zostanie wykonane, a następnie wysyłają następne i tak dalej. Tak więc Node.js jest również bardzo skalowalny, a bycie na pojedynczym wątku odgrywa w tym dużą rolę. Node działa również bardzo dobrze z bazami danych NoSQL, takimi jak MongoDB, która jest znacznie bardziej skalowalna niż tradycyjne relacyjne bazy danych, takie jak MySQL. Prawie wszystkie duże firmy, o których czytałem, przeszły na Node.js i odnotowały co najmniej przyzwoity wzrost wydajności.

Kolejną wielką zaletą Node jest to, że używa JavaScript, który jest szeroko stosowany w wielu stosach internetowych. Wiele razy zdarza się, że język na front-endzie różni się od backendu, ale tak nie jest w przypadku korzystania z Node.js. Używamy JavaScript na front-endzie i back-endzie. Istnieje mnóstwo frameworków client-side, które dominują w branży – React, Angular, Vue.js. Jest to więc ogromny plus dla Node.js. Oczywiście JavaScript działa również dobrze z API JSON, które są bardzo popularne.

Node.js, Express, lub Happy.js, każdy z tych frameworków ma naprawdę elastyczną strukturę plików. Pozwalają ci konstruować swoje aplikacje tak, jak chcesz. Możesz zamknąć wszystko w jednym pliku JS aplikacji. Jeśli chciałbyś mieć więcej tradycyjnej struktury MVC, myślę, że są zarówno dobre, jak i złe strony tego. Ale w przeważającej części, jeśli wiesz co robisz i jesteś dobrym programistą, to elastyczność jest dobrą rzeczą. Podobnie jak klejnoty Ruby, Node również posiada swój własny menedżer pakietów zwany npm, lub menedżer pakietów Node. Największą różnicą pomiędzy npm a Ruby gems jest sposób w jaki zarządzane są zależności. W Ruby, zależności są instalowane globalnie. Więc musisz użyć bundlera i zarządzać nimi na własną rękę. npm zajmuje się tym wszystkim dla twoich modułów. Są one umieszczane w folderze modułów Node. Następnie te moduły mogą również mieć swój własny folder modułów węzła z własnymi zależnościami. npm moduły również wydają się mieć lepszą dokumentację, przynajmniej w moim doświadczeniu.

Node.js Disadvantages

  • Sucks for CPU intensive tasks.
  • Inconsistency.
  • Newer technology.
  • Callback hell.
  • Too modular.

Więc spojrzeliśmy na pozytywy i zalety Node.js. Teraz spójrzmy na niektóre wady. Tak dobry, jak Node jest dla wielu aplikacji w stylu CRUD, absolutnie ssie dla aplikacji, które są intensywne dla procesora. Powodem tego jest to, że za każdym razem, gdy robi coś, co zajmuje chwilę, np. operacje procesora, będzie kolejkował wszystkie przychodzące żądania, ponieważ działa na jednym wątku. Coś takiego jak Apache, który ma więcej dostępnych wątków, podzieli ten czas procesora pomiędzy nie. I tylko operacje wejścia-wyjścia są równoległe, ponieważ są wykonywane asynchronicznie. Przykładem zadania intensywnie wykorzystującego CPU jest coś takiego jak renderowanie 3d, kodowanie wideo, modelowanie naukowe itp.

Inną skargą na Node jest to, że może być trochę niespójny. Niektórzy uważają, że API zmienia się w częstych odstępach czasu. To czasami nie jest bardzo kompatybilne wstecz. Nie tylko to, ale struktura aplikacji Express, w ogóle, jest bardzo swobodna i elastyczna. Czasami może to dać programistom wystarczająco dużo liny, aby się powiesić.

Rails jest bardzo surowy, więc trudniej jest napisać zły kod. Ponieważ Node jest asynchroniczny, będziesz miał do czynienia z wieloma funkcjami wywołania zwrotnego i często mogą one bulgotać i dostać się do tego, co nazywa się piekłem wywołań zwrotnych. Istnieją rozwiązania tego problemu, takie jak narzędzia async i używanie obietnic. Jest kilka rzeczy, które możesz zrobić, aby temu zapobiec. Mnie osobiście to nie przeszkadza, ale wiem, że niektórzy programiści, którzy nie są przyzwyczajeni do programowania asynchronicznego mają problem z dużą ilością callbacków.

Jak widać obie te opcje backendu mają swoje plusy i minusy, ale obie są fantastycznymi technologiami. Wszystko powinno być zawsze oceniane indywidualnie, a nie tylko mówić, że jedna jest lepsza od drugiej we wszystkich sytuacjach.

Articles

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.