Tym razem deko więcej na temat koncepcji ekosystemu developerskiego, który ma w założeniu uprzyjemnić pracę oraz otworzyć wrota nowych technologii dla każdego niezależnie od tego na jakim systemie pracuje oraz jakimi narzędziami się posługuje.

Dlaczego ekosystem?

Każdy działający produkcyjnie system jest zależny od wielu czynników, usług i konfiguracji nie żadko kilku lub kilkunastu serwerów. W idealnym świecie, powinno być tak, że stworzenie takej platformy wykonujemy raz i wystarczy. Jednak wiemy, że ideały realnie nie istnieją, a często sploty przypadków mogą spowodować katastrofę. Czy możemy się uchronić? Oczywiście, że nie. Jednakże możemy się zabezpieczyć w sposób minimalizjący straty, co przy usługach online jest jednoznaczne z utrzymaniem usługi, a w przypadku awarii maksymalne skrócenie przerwy w dostawie. To deko jak z łodziami Wikingów, które nie mogły się zatrzymać na pełnym morzu bo tonęły.Utrzymanie ciągłości usług w klasycznym modelu serwerów i infrastruktury jest dośćtrudne. “Twarde” serwery, fizyczne dyski oraz ogromna zależność od zaplecza technicznego (energia, łączność, wsparcie etc..) powoduje, że tradycyjny model w aktualnym świecie sprawdza się raczej w korporacjach lub firmach, które korzystają z wewnętrznych usług teleinformatycznych. Chcąc tworzyć usługi globalne lub o wysokim współczynniku niezawodności musimy się zastanowić czy opieranie całości na zapleczu jednej firmy hostingowej jest bezpieczne. Pozatym logicznie rzecz biorąc zaufanie, jakie musimy mieć do takiej firmy jest ogromne, bo poza backupami sami nie posiadamy żadnej gwarancji na to, że całość będzie działać stabilnie i bez przerwy.

No dobra, wszystko fajnie, ale do czego zmierzamy?

Wyobraźmy sobie usługi, które działają podobnie jak komórka, są “dynamicznym” ekosystemem, który ma wysoki stopień autonomii. Jedno jest pewne, wszystko co dotyczny usług online jest daną, ciągiem znaków trzymanych w pamięciach na serwerach. Tak naprawdę te “krzaki” są statyczne, nie potrafią reagować, ot choćby uciekać przed zagrożeniem. Inaczej jest z komórką (w ujęciu biologicznym), poza spełnianiem (świadczeniem) pewnych funkcji obiekty biologiczne potrafią reagować na zmieniające się otoczenie. Ta cecha organizmów jednokomórkowych zainspirowała cały ten cykl tekstów.

Cały ożywiony świat to komórki, jest ich wiele, różnych, ale wszystkie mają dość zbliżoną budowę. Jak to się dzieje, że tak mały organizm potrafi reagować na otoczenie w odpowiedni sposób? Jak to się dzieje, że a przestrzeni kilku mikrometrów znajduje się całe zaplecze pozwalające na egzystencję? W końcu dlaczego pewnych mechanizmów świata ożywionego nie zaadoptować do dziedziny technologii i sieci? Czy jesteśmy w stanie za pomocą algorytmów zasymulować autonomiczny układ jakim jest organizm jednokomórkowy?

Wiele lat temu fascynowała mnie biologia, potem chemia. Koniec końców skończyłem jako klikacz, który ze światem ożywionym (zawodowo) ma znikomy kontakt, czasami dość tego żałuję, bo technologia jest wytworzona, jest zwieńczeniem naszego biologicznego rozwoju.

Chmura? Are you from the past?

Aktualnie popularny na całym świecie hosting “w chmurze” ma wiele zalet, ale również wiele wad. Najważniejszą wadą tego rozwiązania jest stwierdzenie “zaufana firma”, wielu usługodawców definiuje swoje usługi jako bezpieczne oraz niezawodne, ale.. No właśnie to ale jest kluczem do problemów współczesnej firmy chcącej świadczyć globalne usługi online. Najważniejszym (aktualnie) aspektem każdego hostingu jest jego złożoność i konfiguracja poszczególnych elementów, w pierwszym rzędzie oraz bezpieczeństwo danych od momentu uruchomienia usługi dla klientów w drugim. Wykupując hosting w jednej firmie raczej na 100% uzależniamy się od niego. Tworząc odpowiednie systemy, konfigurując je oraz monitorując nie chemy myśleć: A co w przypadku dużej awarii?

Chyba każdy używający usług różnych providerów doświadczył przynajmniej raz problemów z dostępnością infrastruktury u nich wykupionej, a to z powodu planowanych prac administracyjnych, a to przez błędną konfigurację, lub przez awarię sprzętu czy łącza. Czy kiedyś zastanawialiście się nad możliwością stworzenia takiej usługi, która potrafi sama, dzięki swojej architekturze i wykorzystywanych technologiach, przemigrować od jednego providera do innego, szybko i bezboleśnie zapewniając nam ciągłość w dostarczaniu danych?

Czy hosting “w chmurze” to tylko zwirtualizowane serwery? Czy nie ma możliwości skorzystania z eonów ewolucji organizmów jednokomórkowych i zaadoptowania pewnych mechanizmów, które przyroda wykorzystuje od wieków? W/g teorii jest to wykonalne, jednak wymaga w dużej mierze odwagi oraz stworzenia odpowiedniej architektury naszego systemu.

Po pierwsze wszystkie podsystemy muszą być rozproszone, tak aby mogły działać niezależnie od siebie, a zarazem monitorować się wzajemnie. Hurtownie danych (dyski, bazy) muszą mieć co najmniej jedną online’ową kopię, zaś sama usługa musi zawierać się w sobie. “Usługa sama w sobie?” - do działania online, potrzebujemy szeregu serwisów (mail, dns, etc..). Zawieranie się w sobie to nic innego jak autonomiczność, czyli wszystkie składowe muszą działać w obrębie jednego ekosystemu, czym jest on bardziej zamknięty tym lepiej dla bezpieczeństwa oraz prościej dla migracji. Wszystko to bardzo fajnie wygląda w tekście, ale życie to zupełnie inna sprawa. Wyobraźmy sobie prostą stronę internetową firmy X. Żeby działała potrzebujemy:

  • serwera DNS
  • serwera WWW
  • dysku na dane

Przy bardziej skomplikowanych usługach liczba wymaganych elementów wzrasta logarytmicznie, podobnie jak w przypadku organizmów jednokomórkowych czym większa przestrzeń która ma bezpośredni kontakt z otoczeniem tym większa możliwość wymiany “informacji” pomiędzy nią i światem zewnętrznym. Problem skali jest tutaj zawsze najtrudniejszy do ogarnięcia. Skala to poważny problem. Nawet bardzo prosta strona, wymagająca jedynie serwera www może spowodować, że problem skali będzie spędzać nam sen z powiek. Zawsze jest tak, że duża autonomia systemu zaciemnia nam zdarzenia wykonujące się w jego wnętrzu, bez odpowiednich narzędzi nie będziemy w stanie zbadać co tak naprawdę dzieje się w naszym ekosystemie. Przy dużej skali problem jest bardzo złożony, ponieważ automatyczne wykrywanie zależności, pojedynczych punktów awarii jest skomplikowane, a błędy przy określaniu struktury trudne do wykrycia.