Praktyki

Korzyści:

  • zdobędziesz cenne doświadczenie zawodowe
  • rozwiniesz ścieżkę swojej kariery jako programista
  • opublikujesz dostępny kod jako część większego projektu - chcemy, aby był on dostępny na GitHubie dla każdego
  • brak umowy poufności względem opracowanego kodu
  • praktyczne zastosowanie narzędzi Git - najpopularniejszego i podstawowego narzędzia pracy grupowej z kodem źródłowym
  • podzielimy się doświadczeniem i poradzimy, gdy utkniesz w martwym punkcie lub nie będziesz wiedzieć od czego zacząć

Zadania

Træfik - dostawca DNS Go

Træfik to nowoczesne odwrotne proxy HTTP i load-balancer, który ułatwia wdrażanie mikrousług. Posiada on możliwość automatycznego uzyskiwania certyfikatów SSL z Let's Encrypt. Uzyskiwanie certyfikatu SSL wymaga uwierzytelnienie (wykazania prawa do) domeny, co może odbyć się m. in. poprzez odpowiedni wpis DNS. HyperOne udostępnia usługę DNS.

Celem jest opracowanie integracji, abyśmy byli dostawcą usług DNS (ang. dns provider) w Træfik na potrzeby weryfikacji Let's Encrypt.

Træfik wykorzystuje bibliotekę Lego, co powiększa potencjał kodu, gdyż może być wykorzystane także w innych aplikacjach. Zapewnia to także znaczną ilość integracji mogących stanowiących źródło inspiracji i podpowiedzi.

CLI - moduł Powershell Powershell NodeJS

Posiadamy CLI, które umożliwia zarządzanie zasobami Platformy. Chcemy zwiększyć komfort jego wykorzystania na platformie Windows poprzez modułu PowerShell, będący obwolutą (ang. wrapper) na istniejące CLI.

Został opracowany wstępny zarys. Konieczne jest jego rozwinięcie i przełożenie na kod. Możliwe, że część kodu będzie wymagać wygenerowania do czego powinna wystarczyć elementarna wiedza o NodeJS, którą możemy przekazać.

Terraform - dostawca Go

W rozwoju środowisk chmurowych popularny jest proces Infrastructure as Code (IaC) zakładający wykorzystanie do zarządzania i opisu infrastruktury deklaratywnych procedur.

Jednym z popularniejszych narzędzi usprawniających ten proces jest Terraform napisany w Go.

Chcielibyśmy powstania dostawcy (ang. provider), który umożliwi wykorzystanie tego narzędzia względem naszej Platformy. Wystawiamy do tego odpowiednie API. Konieczne jest napisanie odpowiedniego modułu, a w miarę rozwoju Platformy jego rozwijanie. Istnieje wiele modułów mogących stanowiących źródło inspiracji i podpowiedzi.

OctoDNS - dostawca Python

OctoDNS jest narzędziem umożliwiającym deklaratywne opisanie strefy DNS, a w przypadku zmian opracowania planu doprowadzenia do pożądanego stanu i zrealizowania go. Umożliwia to efektywne zarządzanie rekordami DNS w sposób identyczny dla kodu źródłowego, a dzięki narzędziom ciągłej integracji wdrażanie tych zmian. OctoDNS został napisany w języku Python.

Chcielibyśmy powstania dostawcy (ang. provider), który umożliwi wykorzystanie tego narzędzia względem naszej Platformy. Udostępniamy do tego odpowiednie API. Konieczne jest napisanie odpowiedniego modułu, a w miarę rozwoju Platformy jego rozwijanie. Istnieje wiele modułów mogących stanowiących źródło inspiracji i podpowiedzi.

Ansible - moduł Python

Ansible jest narzędziem przeznaczonym do automatyzacji zarządzania konfiguracją oprogramowania. Umożliwia ono także zarządzanie infrastrukturą np. utworzonymi wirtualnymi serwerami.

Chcielibyśmy powstania modułu, który umożliwi wykorzystanie tego narzędzia względem naszej Platformy. Udostępniamy do tego odpowiednie API. Konieczne jest napisanie odpowiedniego modułu, a w miarę rozwoju Platformy jego rozwijanie. Istnieje wiele modułów (przykład dla GCE mogących stanowiących źródło inspiracji i podpowiedzi.

Grafana - źródło danych JavaScript

Grafana jest narzędziem przeznaczonym do monitorowania i analizy historycznych danych, przede wszystkim tych które ulegają okresowej zmianie w czasie (ang. time-series).

Grafana wspiera wiele źródeł danych oraz posiada dokumentacje opracowania kolejnych. Niektóre są ściśle związanych z określonym dostawcą usług np. CloudFlare, Azure. Trwają prace nad wprowadzeniem do Grafany mechanizmów prezentacji danych czasu rzeczywistego. W platformie udostępniamy w czasie rzeczywistym, a także gromadzimy historyczne dane obrazujące parametry pracy Wirtualnych maszyn. Usprawni to monitorowanie parametrów ich pracy bez konieczności instalowania przez użytkownika jakiegokolwiek agenta.

Chcielibyśmy powstania modułu dostarczającego źródło danych, który umożliwi wykorzystanie tego narzędzia względem naszej Platformy. Gromadzimy dane historyczne i udostępniamy do tego odpowiednie API. Konieczne jest napisanie odpowiedniego modułu, a w miarę rozwoju Platformy jego rozwijanie. Istnieje wiele otwartoźródłowych modułów mogących stanowiących źródło inspiracji i podpowiedzi.

Zabbix - import metryk JavaScript

Zabbix jest narzędziem przeznaczonym do monitorowania serwerów i aplikacji. Posiada otwarty protokół umożliwiający import metry z dowolnych źródeł.

W platformie udostępniamy w czasie rzeczywistym, a także gromadzimy historyczne dane obrazujące parametry pracy Wirtualnych maszyn. Takie dane możemy także zacząć udostępniać dla innych zasobów.

Wydaje się możliwe utworzenie agenta, który w czasie rzeczywistym zaimportuje dane o maszynach wirtualnych z Platformy do serwera Zabbix. Serwer Zabbix wykorzysta wówczas te informacje np. do powiadomieniu o utrudnieniach w pracy aplikacji użytkownika. W niektórych przypadkach może to pozwolić na zrezygnowanie z instalacji i konfiguracji jakiegokolwiek oprogramowania na monitorowanej wirtualnej, a każda utworzona na platformie Wirtualna maszyna mogłaby ulegać automatycznej rejestracji i zostać objęta monitoringiem.

Chcielibyśmy powstania usługi do wykorzystania przez użytkowników Platformy, które powyższe zapewnią. Ze względu na utrzymanie oprogramowania w czasie i nasze doświadczenia preferujemy napisanie tego w NodeJS, ale w przypadku wystąpienia istotnych powodów jesteśmy otwarci na inne technologie.

Apache LibCloud - dostawca Python

Apache LibCloud jest biblioteka Pythona do interakcji z popularnymi dostawcami usług w chmurze za pomocą zunifikowanego API.

Chcielibyśmy powstania odpowiedniego modułu, który umożliwi wykorzystanie naszej Platformy jako dostawcy zasobów w tej bibliotece.

CLI - graficzna prezentacja metryk JavaScript

Posiadamy CLI, które umożliwia zarządzanie zasobami Platformy. Posiada także możliwość uzyskania danych obrazujących parametry pracy Wirtualnych maszyn (zob. h1 vm metrics ). Forma prezentacji ich jest dość surowa, choć nawet w CLI możliwe byłoby zaprezentowanie przystępniej.

Chcielibyśmy opracowania odpowiednich zmian do CLI, które zwiększą atrakcyjność prezentacji metryk np. poprzez wykresy.

GraphQL - bramka oparta o REST API Platformy JavaScript

Dostrzegamy potencjał technologi GraphQL. Posiadamy jednak istniejące stabilne rozwiązania, które wymagają utrzymania oparte o REST API Platformy.

Chcielibyśmy zbudowania bramki GraphQL opartej na bieżącym interfejsie API REST, co pozwoliłoby w pełni ocenić potencjał migracji do GraphQL.

Acme.sh - provider DNS Bash

Acme.sh jest klientem protokołu ACME wykorzystywanym przez Let's Encrypt podczas wydawania bezpłatnych certyfikatów SSL. Takie certyfikaty mogą być wykorzystywane do świadczenia bezpłatnych usług na naszej infrastrukturze. Uzyskiwanie certyfikatu SSL wymaga uwierzytelnienie (wykazania prawa do) domeny, co może odbyć się m. in. poprzez odpowiedni wpis DNS. HyperOne udostępnia usługę DNS.

Celem jest opracowanie integracji, abyśmy byli dostawcą usług DNS w Acme.sh na potrzebyKon weryfikacji Let's Encrypt. Narzędzie posiada znaczną ilość integracji, których analiza pozwoli z pewnością pogłębić wiedzę o języku skryptowym bash.

Zarządzanie użytkownikami Wirtualnych maszyn JavaScript C++ C# Python

Chcielibyśmy umożliwić zarządzanie kontami użytkowników usług działających na Wirtualnych maszynach z poziomu interfejsu Platformy. Dostrzegamy istniejące otwarte rozwiązania, które to realizują. Posiadamy doświadczenie w opracowaniu usług umożliwiających bezpieczną komunikacje Platformy z systemem pracującym w Wirtualnej maszynie.

Zadanie to będzie z pewnością wymagało istotnych zmian po stronie naszej Platformy. Nie będzie ono trywialne w realizacji. Jesteśmy jednak otwarci, aby je wspólnie z Tobą zaplanować, zaprojektować i zrealizować.

FreeBSD

FreeBSD jest system operacyjnym z rodziny Linux o ugruntowanej pozycji i stałym gronie użytkowników. Możliwe jest jego uruchomienie na naszej Platformie, co wymaga jednak ręcznych operacji użytkownika i odbiega od standardów dostarczania systemów operacyjnych. Standardem jest dostarczenie systemu w postaci Rekomendowanego Obrazu, który zapewnia wstępną konfiguracje np. w zakresie konfiguracji sieci i dostępu.

Dotychczasowe Rekomendowane Obrazy są budowane z wykorzystaniem oprogramowania Packer, a kody źródłowe rozwiązania są ogólnodostępne. Informacje niezbędne do konfiguracji sieci i dostępu są dostarczane przez metadane. Wykorzystywany jest cloud-init w celu wstępnej konfiguracji.

Konieczne jest opisanie skutecznie instalacji FreeBSD z wykorzystaniem oprogramowania Packer, które obecnie jest zintegrowane z naszą Platformą. Następnie opracowanie mechanizmu do odczytu metadanych w celu automatycznej konfiguracji systemu (kluczy SSH, sieci itp.). Potencjalnie możliwym do wykorzystania jest także cloud-init, gdyż został napisany w Python i posiada pewne elementy zapewnienia zgodności z FreeBSD.

One-Click Apps

Dla początkujących Użytkowników instalacja nawet podstawowego oprogramowania tj. Wordpress, Drupal w sposób bezpieczny, efektywny może nastręczać trudności. Dostrzegamy, że inni dostawcy dostarczają w tym celu rekomendowane obrazy wirtualnych maszyn, których użycie jest uproszczone i nie wymaga głębokiej znajomości systemów Linux.

Konieczne jest:

  • identyfikacja odpowiednich aplikacji,
  • rozważenie i ewentualne zaprojektowanie uproszczonego instalatora oprogramowania np. podczas pierwszej instalacji lub przez metadane użytkownika,
  • opracowanie Obrazów z odpowiednim oprogramowaniem na bazie istniejących Rekomendowanych Obrazów z wykorzystaniem oprogramowania Packer.
  • opracowanie mechanizmu testów instalacji oprogramowania i jego poprawnego funkcjonowania w nowszych wersjach
Czy uważasz ten artykuł za przydatny? Tak Nie