Dystrybucja aplikacji webowej

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ć?

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ć
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.

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.

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?

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
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/

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