Dystrybucja aplikacji webowej

Dystrybucja aplikacji webowej
B1
  • Rejestracja:ponad 2 lata
  • Ostatnio:11 miesięcy
  • Postów:24
0

Cześć,

Z góry zaznaczam, że nie jestem developerem i uznaję za całkiem możliwe, że moje pytanie wyda się nieco dziwne.
Programuję na razie edukacyjnie i hobbistycznie. Napisałem swoją pierwszą apkę. Mam gotowy backened w Springu i front w Angularze.
Robiłem to tak, że najpierw zrobiłem folder "MyApp-Backened" i tam w Inteliju zrobiłem projekt i apkę backendową z użyciem Spring boota, i potem drugi folder - "MyApp-Frontend" i tam projekt z użyciem Angulara.

Oba odpalam w kompilatorze, przeglądam na localhoscie w przeglądarce, apka śmiga, zrobiłem to co chciałem. Tylko mam jeden mały problem.

  1. Co dalej z tym zrobić? Do jakiej postaci takie apki się zwyczajowo doprowadza, żeby komuś je realnie pokazać i w jaki sposób?
    Z backendu niby mogę zrobić plik wykonywalny .jar, ale co z frontem ? Jak to się łączy itd?

  2. Chciałbym to wrzucić na swojego github'a. W jakiej formie się takie aplikacjie wrzuca. W jednym folderze i podzielone na 2 podfoldery -> po prostu na front i backened i w nich zawartość? Czy jest jakiś powszechny standard według jakiego się to robi?

No tak, coś tam już wiem. Coś tam zaprogramowałem, działa i brakuje mi wiedzy (z materiałami w internecie też krucho w tym aspekcie, bo wszystkie uczą programowania).
Domyślam się, że to trochę oryginalne pytanie, ale jest może jakiś developer zawodowy, który mi doradzi jak to wygląda pod względem dobrych praktyk i co z tym zrobić?

edytowany 2x, ostatnio: Riddle
SP
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 7 godzin
  • Postów:30
0
  1. Według mnie najlepiej to zdockeryzować. W obu projektach tworzysz Dockerfile, budujesz obrazy dockerowe, potem tworzysz docker-compose z tymi dwoma serwisami i ktoś sobie jednym poleceniem uruchamia cały system.
  2. Tak, możesz tak wrzucić
EH
omg...wyciągać rakiete na komara. Brawo. Przez takie osoby rodzi się OE
cerrato
@ehhhhh: ja także napiszę +1. A nawet +2
K5
  • Rejestracja:około 6 lat
  • Ostatnio:około 17 godzin
  • Postów:1002
1

Jak chcesz pokazać komuś aplikację to musisz to wystawić na świat. Np na Heroku.
Jeśli chcesz pokazać kod to wystarczy repo na GitHubie.

Ja osobiście wydzieliłbym front do oddzielnego repo.

KA
Popieram oddzielne repo dla frontu. Przerabiałem scenariusz z jednym repo i czasami robił się niezły sajgon. Tylko trzeba ogarniać jakoś zgodność wersji API z wersjami frontu.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8423
0

frontend możesz wrzucić gdziekolwiek (z darmowych np. netlify, github pages), chociaż może być konieczne ustawienie odpowiednich CORS na backendzie, w przypadku kiedy backend będziesz serwować na innej domenie.


Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:6 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10074
1

A czemu nie możesz tego dystrybuować tak jak jest?

Tzn backend skompilowany do pojedynczego .jar, a front to pewnie jeden .html + kilka zminifikowanych JSów?

SL
  • Rejestracja:około 7 lat
  • Ostatnio:około 2 godziny
  • Postów:896
1

Backend:

  • tutaj nie ma cudów. Ktoś gdzieś musi odpalić polecenie java -jar twojaAplikaja.jar albo coś analogicznego. Najbardziej uniwersalną metodą (która abstrachuje to w czym jest napisana twoja aplikacja) jest zbudowanie obrazu dockerowego z aplikacją. Taki obraz możesz wrzucić do jakiegoś orkiestratora (Kubernetes, AWS ECS) albo odpalić ręcznie na jakiejś wirtualce przy pomocy dockera. Najprostszym rozwiązaniem będzie wejście przez ssh na maszynę wirtualną, zainstalowanie odpowiedniej wersji javy i skopiowanie jara (te kroki abstrachuje docker) i uruchomenie serwera.

Frontend:

  • ktoś go musi serwować. Najczęściej buduje się jakoś paczkę z plikami html/js/css/obrazkami/fontami, którą serwuje jakiś serwer HTTP. Może to robić twoja aplikacja w Springu np /v1/api/... jest mapowane na twoje kontrolery restowe a standardowe /index.html i tak dalej na twój zbudowany frontend. Z lepszych rozwiązań jest serwowanie frontendu przez wyspecializowany serwer/aplikację, która jest szybka/bezpieczna/konfigurowalna np. ngnix. Z uwagi na uwarunkowanie plików frondowych (mała zmienność, duże rozmiary plików np. obrazki, potrzeba niskiego latency, ochrona przed DDoSami, duża siatka serwerów rozłożona po całym świecie) często używa się  CDNów
EH
kolejny z dockerem który uważa że docker to najprostsza forma dystrybucji. Brawo! Lubie jak ktoś się bezsensownie męczy ale nie trzeba do tego nakłaniać innych.
SL
Umiesz czytać? Napisałem co jest najbardziej uniwersalną metodą jak i najprostszym rozwiązaniem, gdzie drugie podejście nie używa dockera
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:3277
0

Trzeba sprawić, że będzie to dostępne pod jakimś publicznym adresem whatever.com
Popatrz sobie na darmowe rozwiązania Google Cloud, AWS, Azure. Utwórz VM'kę wrzuć tam backend i go odpal.
Frontend jak już ci pisano "gdziekolwiek" - CDN/Blob storage w chmurze, albo nginx na vm'ce, albo jak też ci już pisano, pakujesz jeden lub oba kawałki do kontenerów dockera i odpalasz na jakichś zarządzalnych usługach w chmurze. Np. tutaj (nie używałem) https://cloud.google.com/run/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.