Postawienie aplikacji na własnym serwerze? Z K8s czy bez ?

0

Witam, mam pytania dotyczące postawienia aplikacji mikroserwisowej na własnym serwerze (nie w chmurze). Aplikacja ma działać w sieci lokalnej.

  1. Pierwsze pytanie to czy robi się tak, że instaluje się np. minikube na VPS produkcyjnym ? Czy po prostu postawić na dockerze bez bawienia się w k8s ?
  2. Drugie pytanie dotyczy ogolnej architektury maszyn wirtualnych na serwerze.
    Używając Proxmox'a zrobiłbym sobie oddzielne vpsy z:
  • aplikacją produkcyjną
  • na pliki
  • baza danych produkcyjna
  • aplikacja testowa
    Czy to jest prawidłowe podejście, żeby później łatwo dołożyć jakieś CI/CD? Chciałbym trochę zrobić sobie na tym serwerze takiego AWS'a :)
  1. Dopiero poznaje co to CI/CD. Oglądam przykłady na Jenkinsie. Chciałbym się zapytać gdzie ja go powinieniem wdrożyć w tym powyższym przypadku? Oddzielna maszyna ? Na dockerze uruchomionym na vps z aplikacją ?

Przepraszam jeśli te pytania są jakieś głupie ale chciałbym wdrożyć aplikację w sposób poprawny. Nie mogę dojśc do tego jak to dobrze skonstruować, żeby przykładowo później do projektu mogli dochodzić programiści od każdego mikroserwisu i wszystko miało ręce i nogi ;)

7
ciastko1742 napisał(a):

Witam, mam pytania dotyczące postawienia aplikacji mikroserwisowej na własnym serwerze (nie w chmurze). Aplikacja ma działać w sieci lokalnej.

To ja mam najpierw dwa pytania pomocnicze:

  1. Czy potrzebujesz niesamowitej skalowalności? Czy będziesz miał miliony klientów (ludzi lub urzadzeń)? Czy będziesz miał wysokie obciążenie?
  2. Czy potrzebujesz pracy ciągłej? Czy możesz sobie pozwolić na 15 minut, poł godziny czy godzinę przerwy raz w miesiący na produkcji jak będziesz podgrywać wersję?

Od odpowiedzi na te pytania zalezy czy potrzebujesz k8s. Oczywiście jak ktoś chce zawsze można użyć k8s. Ale widziałem systemy produkcyjne działające na samym dockerze bez k8s i IMHO działały dobrze. Jedyny problem to że raz na dwa miesiące system trzeba wyłączyć na podegranie wersji. Raz nawet podgrywaliśmy wersję na produkcję jak użytkownicy mieli przerwę na lunch :D

3

@KamilAdam:
+1

@ciastko1742:
Jak masz
a) bazę
b) aplikację

To czy na pewno to architektura mikroserwisowa - czy tylko "podzielony monolit".
Dobry monolit nie musi być zły, a na pewno lepszy niż kiepskie wdrożenie tzw "mikroserwisowe"

2

A dużo masz tych kontenerów? Może docker compose ci wystarczy a jakieś Ci/CD możesz postawić tam, gdzie trzymasz kod, a nie koniecznie musisz robić jakieś Jenkinsy. Trochę mało informacji podałes, żeby ocenić czy czasem nie komplikujesz zza bardzo.

2
  1. Ilu userow przewidujesz dla aplikacji.
  2. Spokojnie mozesz postawic to na wirtualce przydzielajac jej odpowiednio duzo zasobow.
  3. Jezeli nie puscisz tam 10k userow pracujacych caly czas to zaprzeganie kubernetesa nie ma zbytnio sensu.
  4. Co do separacji to juz Twoj wybor. Wszystko zalezy jak masz zbudowana aplikacje. Pliki mozesz trzymac osobno w podzie z samymi plikami, osobno na VM, wewnatrz poda z apka, dunno.
  5. Aplikacja testowa? Chodzi o srodowisko np. "preprod"?
  6. CICD powinienes odseparowac calkowicie od srodowiska aplikacyjnego. Nie polecam korzystac z Jenkinsa, powinno sie za to banowac. CICD ma brac kod z gita i od tego miejsca wykonywac kroki az do wypuszczenia dzialajacej np. binarki na srodowisko juz finalnie. Tutaj moze byc preprod, test, prod etc.
0

@KamilAdam: samymi pytaniami odpowiedziałeś mi, że nie potrzebuję tu k8s. Dzięki :)

@ZrobieDobrze: Bardziej jako aplikację chodziło mi już o całą infrastrukturę już złożoną w całość no i tu te pytanie - np. jeśli robiłbym to np w AWS to bym sobie porobił różne bazy dla różnych mikroserwisów, a tutaj ? na jednej VM kilka baz dla każdego mikro?

@S4t: Tak, użyje docker-compose. Co do tego CICD dopiero sobie to przeglądam, szukam a na necie ciągle Jenkins ;)

@japanlofi: 5. Chodziło o takiego do testowania przez "klikaczów", dostep do takiej platformy demo.

2

Czyli srodowisko typowo testowe, ktore powinienes wypychac prosto ze srodowiska dev - wedle metodyki. Dobrze byloby odseparowac kazde srodowisko / instancje aplikacji od siebie. Chociazby na wypadek kiedy zdechnie Ci maszyna, VM etc.
Generalnie wszystko zalezy od skali projektu. Jak robisz to wewnatrz firmy na zamknietej sieci dla 50 userow to od biedy mozesz wszystko obgonic i na jednej VM. Decyzja po Twojej stronie, nie znamy zalozen projektu i wymogow co do samego dzialania.

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