Optymalizacja infrastruktury
Dzięki bogatemu doświadczeniu w budowaniu wydajnych, dostępnych i bezpiecznych rozwiązań do obsługi aplikacji bazujących na technologiach webowych oraz realizowaniu projektów integrujących istniejące systemy oraz powstających zarówno w ramach własnej infrastruktury jak i struktur klientów możemy zaproponować usługi w zakresie optymalizacji działających lub planowanie nowych rozwiązań, które pozwolą na lepsze skalowanie, wymierne oszczędności i łatwiejsze rozwijanie i utrzymywanie istniejącej platformy.
Wykorzystujemy głównie stabilne oprogramowanie opensource, rozbudowywane o dodatkowe funkcjonalności zapewniające dostosowanie do projektów, platformę sprzętową blade wysokiej gęstości oraz macierze dyskowe iscsi dające możliwości pełnej redundancji systemu oraz uruchomienie wirtualizacji mniej wymagających pod względem zasobów serwerów. Aby zapewnić odpowiedni poziom usługi i odciążyć macierze dyskowe wykorzystujemy cache zarówno w rozwiązaniach aplikacyjnych jak i zaawansowane konfiguracje reverse proxy protokołu HTTP. Stabilność platformy gwarantuje stały monitoring, a zbieranie danych dotyczących zasobów oraz obciążenia serwera pozwalają z wyprzedzeniem prognozować trendy i rozbudowywać system bez ryzyka zainstnienia przeciążeń.
Ważnym aspektem projektowania jest zarządzanie zmianami w sposób automatyczny i ciągły, audytowanie zgodności systemów z przyjętą polityką i implementowanie zabezpieczeń mających istotny wpływ na ciągłość działania usługi i bezpieczeństwo (prywatność, integralność) zawartych w systemach danych.
Wirtualizacja.
Najbardziej popularnym i rozwiniętym mechanizmem wirtualizacji opensource, jest Xen, wspierany komercyjnie przez firmy Citrix oraz RedHat. Jest to także nasz wybór jeśli chodzi o wirtualizację serwerów w oparciu o system Linux. Głównymi cechami jest pełne wykorzystanie możliwości sprzętowych serwera (mały narzut, możliwość wykorzystania konfiguracji SMP, elastyczna konfiguracja sieci pozwalająca na izolację i uruchomienie serwerów należących do różnych sfref bezpieczeństwa na pojedyńczym serwerze fizycznym) oraz pełne wsparcie dla systemów HA (wykorzystanie udziałów iscsi, proces live migration – możliwość przeniesienia serwera wirtualnego pomiędzy fizycznymi maszynami bez konieczności jego zatrzymania, wsparcie dla oprogramowania Heartbeat dbającego o migrację wirtualnych serwerów w przypadku awarii sprzętowej lub przeciążenia serwera “hosta”). Kiedy wykorzystywać wirtualizację? W przypadku kiedy bieżący lub przyszły projekt nie będzie wiązał się z dużym obciążeniem, a ważne pozostają kwestie dostępności (HA) oraz bezpieczeństwa (izolacja serwerów frontend i backend) wirtualizacja z użyciem co najmniej dwóch serwerów fizycznych jest zalecanym rozwiązaniem. Pozwoli bowiem rozłożyć równomiernie ruch pomiędzy wirtualne serwery, a dzięki ich odpowiedniemu umieszczeniu nawet awaria sprzętowa pozwoli na kontynuację pracy systemu. W bardziej wymagających pod względem obciążenia systemach proponujemy zwirtualizowaną farmę serwerów aplikacji (często realizujące różne role, jak podział na szybkie serwery generujące oraz wolniejsze serwery wyszukujące lub aktualizujące informacje – np. realizujące żądania POST), natomiast baza danych oraz warstwa cache, ze względu na stałą wysoką utylizację zasobów sprzętowych i minimalizację opóźnień zalecamy wydzielić na serwery fizyczne (nadal korzystając z oprogramowania HA).
Konfiguracje wysokiej dostępności.
Realizację systemów wysokiej dostępności realizujemy przy użyciu kilku technik. Najbardziej wydajne i szeroko stosowane w przypadku aplikacji webowych jest uruchamianie farm serwerów aplikacji oraz Load Balancerów pracujących w trybie active/active (z użyciem mechanizmu ECMP). Większość zastosowań wymaga jednoczesnego dostępu do danych (repozytoriów plików takich jak layout, zdjęcia czy filmy), realizowane przez współdzielony system plików w technologii GFS oraz nośniki udostępniane przez iscsi. Ten rozwijany przez firmę Red Hat system pozwala na wydajny dostęp z każdego węzła w oparciu o rozproszony system klastrowy RHCS. Dodatkowo stosujemy optymalizację na poziomie systemów plików oraz mechanizmy cache’owania po stronie aplikacji aby zagwarantować zrównoważone wykorzystanie dostępnych zasobów. Pozostałe technologie HA bazują na wykorzystaniu oprogramowania Heartbeat rozwijanego przez firmę Novell. Dzięki systemowi plikowemu drbd możemy tworzyć proste, ale wydajne dwuwęzłowe klastry pracujące w trybie active/standby lub active/active (realizujące dwie różne role). Bardziej wymagające konfiguracje wielowęzłowe są również możliwe przy użyciu opisanego wyżej klastrowego systemu plików GFS. Ważnym zagadnieniem przy budowaniu klastrów jest mechanizm zachowania spójności w przypadku braku komunikacji pomiędzy członkami. W oparciu o iscsi opracowaliśmy autorską metodę fencing inband pozwalającą na pewny sposób wyłączenia serwera z klastra bez konieczności komunikacji do zewnętrznych komponentów zarządzających (zachowując pełną separację w obrębie klastra oraz wydzieloną sieć do zarządzania).
HTTP Cache
W projektowaniu wysokowydajnych aplikacji webowych bardzo ważne jest jak najszybsze realizowanie zapytań użytkowników, a zatem ścieżka użytkownik-serwer powinna być jak najkrótsza. Dzięki wykorzystaniu technik takich jak consistent hashing, virtual memory cache, thread multiplexing, IW10, ESI oraz nowoczesnego oprogramowania varnish oraz haproxy umożliwiamy szybki dostęp do żądanej treści przy zachowaniu uprawnień użytkowników (dostęp warunkowy), a nawet w przypadku czasowej niedostępności serwerów backendowych (możliwy do zdefiniowania czas w którym dane uznane jako przestarzałe mogą być nadal serwowane użytkownikom) przy znacznym odciążeniu tych ostatnich oraz możliwościach skalowania niedostępnych dla serwerów aplikacji (nawet 10000 jednoczesnych żądań per serwer).
Zarządzanie zmianami
Oferujemy szkolenia i wdrożenie nowych oraz dostosowanie istniejących projektów do nowoczesnej architektury infrastructure as code umożliwiającej konsekwentne zarządzanie poszczególnymi serwerami oraz grupami (takimi jak serwery należące do jednej platformy, np. frontend, backend, jednego projektu czy wspólnego datacenter). Więcej »
Monitoring i planowanie pojemności systemów
W oparciu o system zarządzania zmianami oferujemy kompletny system monitoringu oraz prognozowania trendów, którego wdrożenie pozwala na wgląd w konkretne mechanizmy zastosowane w projekcie, obciążenie jego poszczególnych komponentów jak również informacje o działaniu systemu jako całości, z punktu widzenia końcowego użytkownika.
Audyt bezpieczeństwa systemu
Dzięki własnym doświadczeniom w uruchamianiu dużych projektów możemy zaoferować badania bezpieczeństwa (audyt infrastruktury i aplikacji), wydajności (testy obciążeniowe) i zgodności konfiguracji z założonymi politykami (np. w oparciu o oprogramowanie do zarządzenia zmianami lub dostarczone konfiguracje).