• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nowoczesny sposób deploymentu i serwowania stron w Java

0 głosów
240 wizyt
pytanie zadane 18 lipca 2020 w Java przez trzczy Gaduła (3,240 p.)
Uczę się Javy Jee ze Spring i Spring boot, ale mam kłopot z ustaleniem, jakie najlepiej ogarnąć technologie do deploymentu i web servingu. Ostatnio opracowałem sobie sposób deploymentu przez IntelliJ do zdalnego serwera GlassFish 5.1, przez upload artefaktu archiwalnego war. Ale gdzieś tam przeczytałem, że deployment war jest przestarzały. Wiem też, że są serwery Tomcat i Jetty. Pytanie, która droga jest najlepsza i w miarę nowoczesna. Docelowo chodzi mi o pisanie takich serwisów jak Allegro, aplikacje bankowe, Twitter... no ok, może nie od razu. W każdym razie chodzi mi o takie podejście na dużą skalę. W sumie mógłbym zapytać, jaki serwer webowy i sposób deploymentu ma Allegro, które podobno jest napisane w Javie. Albo Twitter.

Z góry dziękuję
komentarz 18 lipca 2020 przez Wiciorny Mędrzec (198,980 p.)

 Javy Jee ze Spring i Spring boot

Java EE to nie jest Spring a tym bardziej SpringBoot :), Java EE jakarta- to jest inny framework zamiast Springa.
 

ogarnąć technologie do deploymentu i web servingu.

 

zależy od projektu nie ma czegoś takiego, że nauczysz się jednego i  tyle, a na projekcie trafisz do Frameworka - napisanego przesz firmę :) ani spring, ani JEE i co wtedy? 

Co do reszty to sie nie wypowiem, bo :D pisząc nie zdajesz sobie sprawy jak bardzo jest to skomplikowane i jak WIELE przed Tobą w takim razie 
To wszystko zależy :) takie serwisy mogą powstać również w architekturach samego  Angulara, samego REACT dewelopingu, dodatkowo bez server side od strony Javy. 
Może to być mikroserwis, nie koniecznie rest? Może to być stary web services, wątpię zęby servlet apli ale ...  "ttozależyzm" 

komentarz 18 lipca 2020 przez trzczy Gaduła (3,240 p.)
Dzięki za odp. Chodzi mi o to, jakie są obecnie trendy co do web serwera i deploymentu. Nie mam zamiaru się dopasowywać do jakichś zespołów, projektów... tylko zacząć naukę od nowoczesnych rzeczy. A nie tak, jak to właśnie miało miejsce, że rozkminiam kilka dni deployment z war, a potem gdzieś przypadkiem czytam, że to jest przestarzałe.

2 odpowiedzi

0 głosów
odpowiedź 18 lipca 2020 przez mbabane Szeryf (79,300 p.)
edycja 18 lipca 2020 przez mbabane

Docelowo chodzi mi o pisanie takich serwisów jak Allegro

Oj obawiam się że allegro to nie takie hop siup, tam jest mega dużo baz danych (kiedyś słyszałem o 400), mikroserwisów i innych zależności. Samo wyszukiwanie przedmiotów to może być osobna aplikacja. Czy np. trzymanie zdjęć w allegro wymaga sporo wysiłku (wykorzystują chyba do tego Amazon S3 lub coś pochodnego).

Do małych serwisów typu prosty sklep internetowy gdzie dzienny ruch to 1000 użytkowników, wystarczy Spring boot i wbudowany w niego tomcat (tzw. embedded), czyli jak powstanie Ci jar to go odpalasz na serwerze:

java -jar app.jar

Tak z grubsza, bo trzeba to jeszcze jakoś zgrabnie zrobić, np. jako usługę systemu linux. Ewentualnie można posłużyć się dockerem żeby odpalić jako osobne kontenery: serwer w java, bazę danych i front-end (wszystko jako osobny kontener dockerowy). Naturalnie pod linuxem, centos czy nawet ubuntu wystarczą.

komentarz 18 lipca 2020 przez trzczy Gaduła (3,240 p.)
Hej dzięki za odp. Czyli na serwerze zdalnym zainstalowana tylko Java, a web serwer nie musi być zainstalowany, bo jest on wbudowany w ten plik app.jar?
1
komentarz 18 lipca 2020 przez mbabane Szeryf (79,300 p.)
Tutaj masz jak postawić aplikacje spring bootową (taką z bazą danych (jako osobna usługa amazona jeśli dobrze pamiętam)) na amazonie:

https://www.youtube.com/watch?v=3s8uzBW8KFE
1
komentarz 18 lipca 2020 przez mbabane Szeryf (79,300 p.)

bo jest on wbudowany w ten plik app.jar?

Tak, jeśli dobrze wyklikałeś spring boota to tak.

1
komentarz 18 lipca 2020 przez mbabane Szeryf (79,300 p.)
Jak Cię interesuje Allegro od strony technicznej to poszperaj tutaj:

https://allegro.tech
komentarz 18 lipca 2020 przez trzczy Gaduła (3,240 p.)

@mbabane, zatem przyszłością jest serwer w chmurze. Dzięki, ciekawy ten wykład.

1
komentarz 18 lipca 2020 przez mbabane Szeryf (79,300 p.)
Pewnie tak - o ile nie są już teraźniejszością, bo Amazon powstał na potrzeby Amazonu (tego sklepu) jeśli się nie mylę.

Jeśli chodzi o przyszłość w Java to być może będzie to Quarkus i GraalVM.
–1 głos
odpowiedź 19 lipca 2020 przez Lewo Gaduła (3,000 p.)
Allegro to microservicy które z tego co wiem to Kotlin, Java, Scala.
Ogólnie kiedyś wrzucało się plik war na kontener aplikacji, który umiał odpowiednie przetwarzać kod który korzystał ze specyfikacji JavaEE.

Spring bazował na konceptach JavaEE, zrobił to po swojemu, starając się część standardów przyjąć u siebie, by być częściowo kompatybilny z API JavaEE. Teraz np. jak masz Spring Boota to nie musisz się zajmować pakowaniem paczki, wrzucaniem jej na server i instalowania serwerka on stworzy Ci paczkę z wbudowanym Tomcatem/Netty który od razu Ci ją odpala.

Nowocześnie to jest odejść od servletów i typowych rozwiązań Java do sieci tylko uzywać narzędzi które stawiają Ci serwer który wystawia REST API i przetwarza żądania (np. Spring MVC). Jak potrzebujesz wydajności, to pewne rzeczy może warto zrobić Websocketami i bezpośrednią komunikacją przez socket (rzadko kiedy i jest to dość ciężkie).
Wybierałbym technologie które bazują na Netty (serwer używa NIO przez co jest dość szybki). Może do samego REST wystarczy Ci też Dropwizard. Rozważalbym Spring (z użyciem Netty) lub Micronaut.

Jeśli chodzi o architekturę to osobny temat - popularne są microservice. Jak dzielisz swój program na małe servisy to możesz niezależnie skalować je (np. zwiększyć wydajność tylko modułu płatności bo niewyrabia). A jeśli chcesz skalować to chmury dają fajne opcje (czyli chcesz więcej mocy to nie dokupujesz nowego kompa do swojej serwerowni czy większego dysku tylko płacisz jakąś stawkę np. Amazonowi).

Deployment - w nowoczesnym wydaniu powinien być zautomatyzowany (CI/CD) - czyli albo masz własną insfrastrukturę i konfigujesz w jakimś topornym narzędziu np. Jenkins swoje kroki co powinno się wykonać (np. w twoim przypadku móglby to być maven który pobiera zależności, uruchamia testy i kompiluje kod oraz skrypt który odpala obraz systemu serwera i instaluje jave, tomcata i wgrywa w odpowiedni katalog skompilowany i spaczkowany plik).

Myślę, że w kwestii architektur, deploymentu warto byś użył jakiejś chmury która dość ułatwia te rzeczy. W Springu piszesz RESTa, wrzucasz kod na np. Amazon AWS (usluga EC2, ale nie pamiętam), ustawiasz sobie jakiś podstawowy codepipeline który zareaguje na zmiany w zdalnym repozytorium (może to byc github i webhooki albo codecommit).
Tego jest dość dużo i nie jest to łatwe, ale jak chcesz robić nowoczesne aplikacje typu allegro to długa droga. Najpierw zacznij dobrego RESTa pisać oraz testy jednostkowe do niego.
1
komentarz 19 lipca 2020 przez mbabane Szeryf (79,300 p.)

Nowocześnie to jest odejść od servletów

 (np. Spring MVC).

Spring MVC to własnie serwlety tylko bardzo sprytnie przykryte. 

https://docs.spring.io/spring/docs/5.1.8.RELEASE/spring-framework-reference/web.html#spring-web

Spring Web MVC is the original web framework built on the Servlet API 

komentarz 19 lipca 2020 przez Lewo Gaduła (3,000 p.)
Masz rację, głównym servletem jest z tego co pamiętam Dispatcher Servlet. Chodziło mi bardziej o korzystanie z rozwiązań gdzie nie trzeba bezpośrednio na nich pracować, ręcznie wrzucać na tomcata itd.
komentarz 19 lipca 2020 przez Wiciorny Mędrzec (198,980 p.)
ale i tak musisz wrzucać jak nie na tomcata to Jboss czy Windfly czy inny server :) ... nawet w architektórze mirkoserisowej masz AWS, a dla Springa masz SPRING-CLOUD

Podobne pytania

0 głosów
0 odpowiedzi 68 wizyt
0 głosów
2 odpowiedzi 110 wizyt
pytanie zadane 6 stycznia 2021 w JavaScript przez Mariusz Podgórski Początkujący (400 p.)
0 głosów
2 odpowiedzi 273 wizyt
pytanie zadane 23 lutego 2016 w Java przez Reflexip Początkujący (450 p.)

86,526 zapytań

135,279 odpowiedzi

300,595 komentarzy

57,276 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...