Spring + SPA -> darmowy deployment na AWS Free Tier

Spring + SPA -> darmowy deployment na AWS Free Tier
KK
  • Rejestracja:ponad 16 lat
  • Ostatnio:29 dni
1

Cześć,

piszę sobie swoją aplikację i chciałbym ją zdeployować na AWS w ramach darmowej wersji. Temat jest dla mnie zupełnie nowy i nie wiem jak do niego podejść.
Mój stack to SPA (Vue), Spring WebFlux, MongoDB. Front z backendem łączy się przez RSocket (websocket). Do deploya potrzebuję Apache (w WebFluxie nie da się forwardować requestów, więc kopiowanie htmla do /static odpada), javy, bazy mongo.

  1. Docker -> ogólnie udało mi się appkę uruchomić dockerem na lokalnym Windowsie, jednak zbudowane obrazy zajmują 1 GB. Limit dla AWS ECR to 500 MB, no i uploadowanie 1GB przy każdym deployu będzie męczące
  2. AWS Beanstalk -> nie próbowałem, bo wpadłem na to pisząc ten tematu tutaj.
  3. Zrobienie tasków na ECS w oparciu o dockerowe obrazy, volume dla źródeł i kopiowanie tam frontu i .jar
  4. ?

Czy ktoś robił coś takiego i może polecić w jaki sposób to deployować?


OtoKamil
Obraz 1GB? To same instrukcje odpalenia .jara czy wszystko z frontem spakowane do jednego obrazu? Na Alpine czy jakiś inny OS? Bo trochę dużo za dużo to zajmuje
KK
  • Rejestracja:ponad 16 lat
  • Ostatnio:29 dni
0

@OtoKamil: docker images

Kopiuj
mongo                   4.2                 2b2cc1f48aed        7 days ago          388MB
httpd                   2.4                 ccbcea8a6757        2 weeks ago         166MB
openjdk                 13.0.2-jdk          ff31919fd91c        3 months ago        491MB

JAR backendu zajmuje 58 MB, front może z 7 MB, a baza to też pewnie kilka MB. Po zbudowaniu te dockerowe obrazy dość ciężkie są, ale jeśli ich upload sprawiłby, że appka rusza z palca to idzie to przeboleć ;)
PS. Z dockerem mam do czynienia od paru dni, więc może coś mylę.


KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
2

Obraz openjdk jest faktycznie duży (497MB) i nic z tym nie zrobisz jeśli bazujesz na tym obrazie. Ale możesz poszukać jakiejś minimalnej wersji alpine + java np anapsix/alpine-java

Jest o tym cały wątek na SO


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
RR
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 14 godzin
  • Postów:43
1

Hej, ja też tutaj nie mam doświadczenia, ale wydaje mi się, że:

  1. Możesz wszystko wrzucić na EC2 (Elastic Cloud Compute), czyli najzwyklejszy serwer AWSowy, który używa EBS (Elastic Block Store) do trzymania danych "na dłużej" - wydaje mi się, że zmieścisz się w ramach free tier.
  2. Ale po co tak robić, skoro cała idea korzystania z AWS opiera się na wykorzystaniu poszczególnych usług? Obraz aplikacji javovej, po odchudzeniu, spokojnie zmieści się na ECR (Elastic Conteiner Registry), możesz go odapalić przy użyciu np. Fargate, do trzymania danych wykorzystaj DynamoDb (a jeśli chcesz korzystać z MongoDB, polecam chmurowy Atlas MongoDB). Co do frontendu, to się nie znam, statyczny można trzymać na S3 (Simple Storage Service), a w Twoim przypadku, zdaje się, potrzebowałbyś do tego pewnie nowej instancji EC2?
KK
dzięki za odpowiedź, właśnie próbuję przy użyciu Beanstalk i jak mi się uda to opiszę to tutaj. DynamoDB chyba płatna jest, front statyczny na S3 (też płatne, ale do 1 GB to może z dolar na rok wyjdzie :P). I tak, próbuję właśnie bez stawiania instancji EC2
RR
Atlas MongoDB jest zatem darmowy na 100%.
OL
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:28
0

Ja wrzucałem na Beanstalka, ale Spring Bootową apkę z podpiętą bazą MySQL na AWS RDS tylko, że to MVC. Wystarczył zwykły .jar i odpowiednio skonfigurowane app.properties w aplikacji i ich powiązanie z environment properties w AWS. Tylko coś mi się wydaje, że Twój przypadek nie jest taki prosty. :)

KK
  • Rejestracja:ponad 16 lat
  • Ostatnio:29 dni
0

AWS ECS, ECR, jakieś clustry, jakieś taski, EC2, S3, Beanstalk, Fargate, load balancery, scaling groups, DynamoDB itp itd... Siedziałem cały dzień i rozkminiałem co do czego, do tego każde z tych pojęć + pricing w googlach, żeby przypadkiem czegoś nie zaznaczyć i nie dać się ogolić na grube dolary. Głowa mnie od tego rozbolała.

Wyczyściłem wszystko. Postawiłem linuxa na EC2 (mimo, że całe życie pracuję na Windowsie, no ale tak wypada). Zalogowałem się po ssh, zainstalowałem dockera, pobrałem swoje obrazy, działa.

Problem polegał na tym, że mam dwa dockerowe obrazy z kodem, front i backend. hub.docker.com pozwala na 1 obraz w prywatnym repozytorium. Z pomocą przyszedł GitLab, który w prywatnym repo daje 10 GB. Do tego moje obawy względem wielkości obrazów były bezzasadne. Docker ma warstwy, więc tylko pierwszy push i pull był ciężki, kolejne to tylko przesyłanie kodu. Na tym etapie projektu takie rozwiązanie mi spokojnie wystarcza.


Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)