Zastosowanie Scali w aplikacjach webowych

0

Cześć!

Zastanawiam się nad zaletami i wadami zastosowania Scali w projektach, które są typowymi aplikacjami webowymi.

Po obejrzeniu kilku świetnych filmików z @jarekr000000 (Dzięki za kawał dobrej wiedzy! :D) zwłaszcza o patologii Spring, Jakarta EE oraz wadach adnotacji, a także w oparciu o własne doświadczenie jak magia Springa może przeszkadzać i dlaczego warto używać Hexagonal architecture/Ports&Adapters itp, pomyślałem o tym jakie moga być potencjalne zalety/wady użycia konkretnej kombinacji języka oraz bibliotek/frameworków do aplikacji webowych.

Obecnie pracuję nad aplikacją webową, w której wykorzystuję Java, Spring Boot, Spring Cloud, a same komponenty są podzielone na mikroswerwisy wg Bounded Context w DDD i oczywiście domena w każdym mikroserwisie jest całkowicie odseparowana od jakiejkolwiek frameworka zgodnie z Hexagonal architecture/Ports&Adapters.

Jakie wady/zalety widzielibyście w przepisaniu aplikacji i ogólnie stosowaniu konkretnych poniższych języków/frameworków do typowych aplikacji webowych, ale które mogą okazać się bardziej skomplikowane niż przysłowiowy CRUD?

  1. Scala + Play do budowy mikroserwisów
  2. Kotlin + Spring Boot
  3. Java + Spring Boot jako najbardziej standardowy tech stack + użycie Vavr, co na pewno da większe możliwości

Zastanawiam się nad przepisaniem całej aplikacji na Scale i całkowitej rezygnacji z Javy i Springa, głównie z powodu tego, że Scala daje potężne możliwości, zwłaszcza jeśli chodzi o functional programming, oraz samym znudzeniem Java.

Jak wygląda zastosowanie Scali/Kotlina w aplikacjach webowych nad którymi pracujecie i czy warto użyć zwłaszcza Scali do pisania aplikacji webowych trochę bardziej skomplikowanych niż zwykły CRUD, poza oczywistymi zastosowaniami typu Big Data i Machine Learning?

Z góry dzięki!

4

Jako programista Scali odradzam bo:

  • Oderski ma w d*** wsteczną kompatybilność
  • Idzie Scala 3 ale jeszcze nie doszła, jak już wskakiwać to w nową
  • Mierna jakość bibliotek, albo są niedorobione albo nawpier*** monad i innych zabawek - fajnie dopóki nie dojdziesz do pierwszego problemu
  • Kompilacja wolna jak diabli, IntelliJ z wtyczką do Scali potrafi się zaciąć lub nie wszystkie refactory działają tak dobrze jak w Javie

Kotlin to w mojej opinii najlepszy teraz wybór. Nawet Gradle dodał opcje opisu buildu w Kotlinie.
Jak nie jesteś przywiązany do Springa to teraz jest sporo konkurentów można więc Kotlin + Mikronaut/Quarkus/coś innego.
Dużo jest teraz tych frameworków, nie ma jeszcze nowego ale Spring wymięka - to co zrobili to przysypali ładnym api syf z wersji 4.0 i sprzedają jako SpringBoot. Ja tego nie kupuje, potrzebna jest świeża krew...

1
mnyozk napisał(a):

Zastanawiam się nad przepisaniem całej aplikacji na Scale i całkowitej rezygnacji z Javy i Springa, głównie z powodu [...] samym znudzeniem Java.

Ktoś (klient) za to zapłaci bo zostanie to poparte czymś więcej jak tylko znudzeniem javą jednego programisty?

0
0xmarcin napisał(a):

Jako programista Scali odradzam bo:

  • Oderski ma w d*** wsteczną kompatybilność
  • Idzie Scala 3 ale jeszcze nie doszła, jak już wskakiwać to w nową
  • Mierna jakość bibliotek, albo są niedorobione albo nawpier*** monad i innych zabawek - fajnie dopóki nie dojdziesz do pierwszego problemu
  • Kompilacja wolna jak diabli, IntelliJ z wtyczką do Scali potrafi się zaciąć lub nie wszystkie refactory działają tak dobrze jak w Javie

Kotlin to w mojej opinii najlepszy teraz wybór. Nawet Gradle dodał opcje opisu buildu w Kotlinie.
Jak nie jesteś przywiązany do Springa to teraz jest sporo konkurentów można więc Kotlin + Mikronaut/Quarkus/coś innego.
Dużo jest teraz tych frameworków, nie ma jeszcze nowego ale Spring wymięka - to co zrobili to przysypali ładnym api syf z wersji 4.0 i sprzedają jako SpringBoot. Ja tego nie kupuje, potrzebna jest świeża krew...

Tak tak, o braku kompatybilności wstecznej w Scali słyszałem, bo sam jej używam, ale nie aż tak często, chociaż powiem Ci, że nigdy nie miałem za bardzo problemów z wtyczką do Scali w Intellij, ale może mam farta po prostu :D
Ta aplikacja to mój projekt więc spokojnie mogę pozbyć się Springa i poeksperymentować ;)

BraVolt napisał(a):
mnyozk napisał(a):

Zastanawiam się nad przepisaniem całej aplikacji na Scale i całkowitej rezygnacji z Javy i Springa, głównie z powodu [...] samym znudzeniem Java.

Ktoś (klient) za to zapłaci bo zostanie to poparte czymś więcej jak tylko znudzeniem javą jednego programisty?

Nie, to mój projekt, po to aby poeksperymentować z nową wiedzą, także śmiało mogę działać z różnymi językami/frameworkami itp, zwłaszcza, że bardzo dobrze nauczyłbym się prawdziwego programowania funkcyjnego, chociaż Haskell jeszcze lepszy do tego ;)

@jarekr000000 @Wibowit Jesteście chyba na forum najbardziej doświadczonymi, którzy mieli okazję ze Scala pracować. Podpowiedzielibyście jakie jest Wasze zdanie? ;)

2

Scala + Play do budowy mikroserwisów

Od lat nie robi się już mikroserwisów na PlayFrameworku, Nie jest to nawet zalecane przez twórców Playa. Play był dedykowany do stron generowanych po stronie backendu (jak RoR) więc teraz to takie niechciane dziecko. Do pisania mikroserwisów polecana jest Akka HTTP (bardzo sprytna biblioteczka robiona przez tą samą firmę co Play). Ewentualnie jak chcesz framework wszystkomający to Lagom (też od nich)

Kotlin + Spring Boot

A czemu takie dziwne połączenie? A czemu taki dziwny półśrodek jeśli masz dość magii Springa? Kotlin ma swoje własne dedykowane biblioteki/frameworki do mikroserwisów. Z czego najpopularniejszy jest chyba Ktor

Po obejrzeniu kilku świetnych filmików z @jarekr000000 (Dzięki za kawał dobrej wiedzy! :D) zwłaszcza o patologii Spring, Jakarta EE oraz wadach adnotacji, a także w oparciu o własne doświadczenie jak magia Springa może przeszkadzać i dlaczego warto używać Hexagonal architecture/Ports&Adapters itp, pomyślałem o tym jakie moga być potencjalne zalety/wady użycia konkretnej kombinacji języka oraz bibliotek/frameworków do aplikacji webowych.

Jak chcesz małomagiczny framework dla Javy do wystawiania RESTa to polecam DropWizarda. Ilość magii ograniczona do minimum

3

Co do Scali - to fajny "zaczyn" dość nowoczesny web/rest w Scali od SoftwareMill
https://github.com/softwaremill/bootzooka

0

Od lat nie robi się już mikroserwisów na PlayFrameworku, Nie jest to nawet zalecane przez twórców Playa. Play był dedykowany do stron generowanych po stronie backendu (jak RoR) więc teraz to takie niechciane dziecko. Do pisania mikroserwisów polecana jest Akka HTTP (bardzo sprytna biblioteczka robiona przez tą samą firmę co Play). Ewentualnie jak chcesz framework wszystkomający to Lagom (też od nich)

Dzięki za uświadomienie, bo nie śledziłem losów Play ostatnio! ;) Co do Akki HTTP, nadawałaby się również do zwyczajnych mikroserwisów, które np. używają bazy danych i łączą się z zewnętrzymi serwisami, żeby pobrać cokolwiek, czy jednak bardziej pod kątem CRUD, Lagom nadaje się do tego, bo ma dużo więcej możliwości pod tym względem np. obsługę i18n (wielojęzykowości), walidacji itp?

Co do Scali - to fajny "zaczyn" dość nowoczesny web/rest w Scali od SoftwareMill
https://github.com/softwaremill/bootzooka

Na pewno sprawdzę, dzięki!

Co do Scali 3, jak widzicie przyszłość Scali w tej wersji? Z tego co widziałem, szykuje się sporo zmian i nowości.

@Shalom Z tego co kojarzę, to działałeś w bardzo poważnych miejscach jak ESA/CERN/ESO :D. Mógłbyś podzielić się wiedzą, jak wygląda właśnie sprawa języków/frameworków, które miałeś/masz okazję tam używać? Zakładam, że Java i Spring na pewno, a jak wyglądała sprawa ze Scalą i Kotlinem. Były używane w projektachw tych miejscach? ;)
Oczywiście zdaję sobie sprawę, że język i narzędzia dobiera się pod kątem rozwiązania problemu czy to biznesowego czy technicznego, ale jestem ciekawy jak to wygląda w takich instytucjach ;)

@jarekr000000 A u Ciebie można spotkać w projektach w wielu miejscach Scalę? W jakich obszarach w projektach ma zastosowanie? Z góry dzięki ;)

2

@mnyozk:

Co do Scali 3, jak widzicie przyszłość Scali w tej wersji? Z tego co widziałem, szykuje się sporo zmian i nowości.

Fajne. Ale tak 3 lata za późno.

Pech polega na tym, że dużo dobrych Scalowców już od dawana pisze w Haskellu.
A dużo słabych Scalowców (np. ja) w Kotlinie :-(
Perspektywa wyjścia nowej niekompatybilnej wersji powoduje, że jeszcze trudniej obecnie kogokolwiek do Scali zachęcić.
(trochę taki Osborne effect).

0

Fajne. Ale tak 3 lata za późno.
Pech polega na tym, że dużo dobrych Scalowców już od dawana pisze w Haskellu.
A dużo słabych Scalowców (np. ja) w Kotlinie :-(
Perspektywa wyjścia nowej niekompatybilnej wersji powoduje, że jeszcze trudniej obecnie kogokolwiek do Scali zachęcić.
(trochę taki Osborne effect).

Pytam tak właśnie o Scalę, dlatego, że podstawy znam, działa na JVM oraz przede wszystkim chciałbym nauczyć się naprawdę dobrze i solidnie paradygmatu funkcyjnego, i chcę również zacząć pisać w Haskellu, ale z tego co widzę, to chyba najlepiej będzie od razu ruszyć z Haskellem a dalszą naukę Scali podarować sobie, zwłaszcza przy nauce progr. funkcyjnego? ;)

To samo jeśli chodzi o stosowanie Scali w apkach webowych z integracją np. z bazami danych i wybranie Kotlina pod ten cel?

0

Ja się właśnie chciałem pouczyć Scali, tym się kierowałem przy ostatnich dwóch zmianach pracy. W poprzedniej firmie (dość znanej i lubianej na forum) padła decyzja, że przepisują na Javę (to był monolit), a w obecnej padła decyzja, że każdy nowy mikroserwis ma być w Rust, kilkadziesiąt scalowych mikroserwisów ma być utrzymywanych "póki jest sens" w Scali, ale właściwie każdy sobie zdaje sprawę, że za chwilę zacznie się przepisywanie w wolnym czasie.

Jestem ciekawy, jak się będą trzymały rzeczy ściśle ze Scalą powiązane - przede wszystkim Spark, ale też Hadoop czy Gatling.

1 użytkowników online, w tym zalogowanych: 0, gości: 1