Uruchamianie aplikacji pisanych w Golang

UniCloud jest platformą wielojęzykową, dotychczas wspierającą środowiska Java, PHP, Python, Ruby, Node.js, a od teraz również środowisko dla języka Golang, umożliwiając działanie projektów niezależnie od ich wielkości i rodzaju.

 

Tworzenie nowego środowiska dla aplikacji Golang

Uruchomienie o należy stworzyć właściwe środowisko, używając Asystenta Topologii.

Przełącz się na zakładkę silnika Go, dodaj Golang jako serwer aplikacji, a także pozostałe inne stosy oprogramowania wymagane przez projekt (np. mechanizm cache, bazę danych czy dodatkowy storage pod projekt). Na typ etapie określisz także liczbę węzłów, limity cloudletów dla poszczególnych zasobów oraz np. włączysz publiczny adres IPv4.

 

Pamiętaj! Wszystkie instancje w Jelastic to zupełnie niezależne kontenery, równo rozłożone na dostępnych węzłach korzystające z zasad anti-affinity. Dzięki temu nie istnieje ryzyko przestoju aplikacji, a co za tym idzie, gwarantowana jest duża dostępność.

Wersjonowanie Golang

UniCloud wspiera obecnie następujące wersje szablonu stosów Golang:

  • Golang 1.9.x
  • Golang 1.10.x
  • Golang 1.11.x
  • Golang 1.12.x

Istnieje możliwość wyboru preferowanej wersji platformy na etapie tworzenia środowiska oraz jej późniejszej zmiany za pomocą ponownego wdrożenia kontenerów. W ten sposób wszystkie własne dane znajdujące się wewnątrz węzła (lub węzłów) zostaną zachowane, co pozwala w prosty sposób zaktualizować wersję programu w momencie publikacji nowej wersji szablonu stosu.

Wdrożenie Aplikacji Go

Wdrożenie projektu Go z repozytorium Git jest możliwe po stworzeniu środowiska (wdrożenie z archiwum aplikacji zostanie wprowadzone w najbliższej wersji platformy).

Możliwe jest dostosowanie procesu wdrażania poprzez wprowadzenie lub dostosowanie następujących zmiennycjh kontenera:

  • GO_RUN – ustawia nazwę wykonywalnego pliku binarnego (jeśli nie zostanie on określony, skrypt wdrażania postara się go zlokalizować w oparciu o nazwę projektu Git)
  • GOPATH – określa folder wdrażania (domyślnie jest to home/jelastic/webapp)
  • GO_BUILD_OPTIONS dostarcza dodatkowe opcje dla funkcji build (-a, domyślnie, by wymusić przebudowę już aktualnych pakietów)
  • GO_RUN_OPTIONS dostarcza dodatkowe opcje dla funkcji run

W trakcie procesu wdrożenia platforma UniCloud wykonuje następujące operacje:

  • analizuje dostępny Git URL, aby otrzymać link do projektu Go
  • pobiera pakiet z wszystkimi zależnościami, używając komendy go get
    • w razie wystąpienia błędu pobiera pakiet jak dla zwykłego projektu Git i próbuje odzyskać zależności Go
  • tworzy projekt za pomocą komendy go build (wykorzystując dodatkowe opcje określone w zmiennej GO_BUILD_OPTIONS)
  • uruchamia plik binarny określony przez zmienną GO_RUN, korzystając z komendy go run (z pomocą dodatkowych opcji określonych w GO_RUN_OPTIONS).

Po prawidłowym wdrożeniu, projekt Go zostaje umieszczony w katalogu określonym w zmiennej GOPATH. Dzięki temu, workspace hierarchy opiera się na wymaganiach oficjalnej dokumentacji języka.

Zarządzanie Domenami

Do środowiska przeznaczonego na hosting aplikacji Go możesz podpiąć własną, zewnętrzną domenę i używać jej zamiast domyślnej, systemowej nazwy środowiska. Istnieją dwie możliwości przypisywania domen:

  • rekord CNAME: w wypadku używania Wspólnego Równoważnika Obciążenia (Shared Load Balancer); zalecana dla środowisk developerskich oraz testowych
  • rekord A: w wypadku używania Publicznego IP; jest w stanie poradzić sobie z dużym obciążeniem i nadaje się do środowisk produkcyjnych.

Co więcej, istnieje możliwość łatwego przełączania się między domenami, w celu przekierowania ruchu z jednego środowiska do innego (na przykład przełączając się na nowszą wersję aplikacji bez okresu przestoju).

Ważne! Dla dostępu przez Publiczne IP, ruch może być przekierowany do innego środowiska za pomocą metody SwapExtlps API (również dostępne przez CLI).

 

 

Automatyczne Skalowanie Pionowe

Automatyczne skalowanie pionowe pozwala dynamicznie przydzielać dodatkowe zasoby (RAM, procesor) na podstawie bieżącego użycia i zgodnie z granicznymi wartościami ustawionymi dla serwera. Ta funkcja pozwala alokować tylko te zasoby, które w danym momencie są wymagane do prawidłowego, stabilnego działania aplikacji. Pozwala także oszczędzić czas dzięki pełnej automatyzacji przydzielania zasobów(dodawania lub ich odejmowania).

Ważne!Platforma automatycznie wykonuje proces skalowania, użytkownik musi jedynie określić górny i dolny limit cloudletów (każdy jest równy 128 MiB pamięci RAM oraz 400 MHz CPU) dla serwera Go za pomocą asystenta topologii.

Aplikacja będzie działała zgodnie z ustawionymi ograniczeniami, zmniejszając użycie zasobów gdy obciążenie jest mniejsze, i zwiększając je w wypadku znacznego obciążenia. W ten sposób płaci się tylko za zasoby, które rzeczywiście się zużywa.

Ręczne Skalowanie Poziome

Istnieje możliwość łatwego dodania kolejnych serwerów Golang poprzez asystenta topologii w trakcie tworzenia środowiska lub jego dostosowywania. Należy kliknąć przycisk „+” w sekcji Skalowanie poziome i dodać wymaganą liczbę instancji.

Maksymalna liczba serwerów tego samego typu wewnątrz pojedynczej warstwy środowiska to 16 węzłów. Co istotne, jeśli na etapie tworzenia środowiska nie dodamy load balancera, ale włączymy automatyczne skalowanie, zostanie on dodany przez platformę automatycznie.

Automatyczne Skalowanie Poziome

Automatyczne skalowanie poziome może być wprowadzone poprzez użycie regulowanych wyzwalaczy (tzw. triggery), które dostosowują liczbę węzłów do stopnia obciążenia aplikacji. Aby skonfigurować skalowanie automatyczne należy przejść do sekcji Ustawienia > Monitorowanie > Automatyczne skalowanie poziome i  wybrać przycisk dodaj.

W tym miejscu można skonfigurować wyzwalacze dla konkretnych stosów i zasobów (CPU, RAM, Sieć, Dysk) poprzez dostosowanie warunków skalowania.

Dodatkowo, istnieje zestaw innych funkcji zapewnianych przez hosting UniCloud dla języka GO to:

  • własny lub domyślny certyfikat SSL
  • publiczny adres IPv4
  • duży wybór zarządzanych baz danych
  • firewalle dla kontenera, punkty końcowe oraz izolacja środowiska
  • przyjazny użytkownikowi interfejs użytkownika oraz bezpośredni dostęp do protokołu SSH w celach zarządzania
  • Open API oraz Cloud Scripting dla automatyzacji procesów
  • model płatniczy „pay-as-you-use”
  • Funkcjonalność współpracy dla pracy zespołowej

Wydajny hosting aplikacji pisanych w języku Python przeznaczony jest dla środowisk developerskich, produkcyjnych i testowych.

 Więcej informacji na temat uruchamiania aplikacji tworzonych w Golang znajdziesz w dokumentacji Jelastic:

button-jelastic

Otagowano: