Case Studies

Sprawna migracja do chmury Amazon Web Services (AWS) w świecie rozwiązań ERP

Zrealizowaliśmy rozwiązanie dla firmy dostarczającej oprogramowanie ERP dla podmiotów publicznych. Klient dostarcza specjalistyczne oprogramowanie dla firm w całej Polsce. Jest to specjalistyczne rozwiązanie klasy ERP, które działa jako aplikacja desktopowa na systemach Windows.

Optymalizacja infrastruktury: wdrażanie rozwiązań chmurowych dla bezproblemowego połączenia z bazą danych

Do poprawnego działania aplikacji klienta wymagane jest połączenie z bazą PostgreSQL. Dla wielu firm wiąże się to z utrzymaniem dodatkowego sprzętu. Z kolei dla dostawcy oprogramowania pojawia się konieczność zdalnej pomocy i konfiguracji sprzętu na odległość. Potrzeba wykorzystania rozwiązań chmurowych wyszła od klientów końcowych, którzy chcieli mieć możliwość skorzystania z gotowego rozwiązania bez konieczności instalacji i utrzymania baz danych po swojej stronie.

 

Cel: budowa wysoko dostępnej i bezpiecznej infrastruktury 

Celem projektu było stworzenie wysoko dostępnej infrastruktury, która pozwoli na obsłużenie połączeń wielu klientów w bezpieczny, wydajny i optymalny kosztowo sposób. Docelowe rozwiązanie ewoluowało wraz z kolejnymi rozmowami i zbieraniem wymagań projektowych. Początkowa architektura rozwiązania przekazana przez klienta nie była w stanie spełnić wszystkich wymagań. Razem z klientem pracowaliśmy ramię w ramię – my nad architekturą docelowego rozwiązania, a klient nad weryfikacją czy proponowane rozwiązania są możliwe do wykorzystania w jego aplikacji.

 

Zbieranie wymagań i tworzenie specyfikacji oprogramowania

Na początku dokładnie omówiliśmy potrzeby klienta i zebraliśmy wszystkie jego wymagania. Następnie przeszliśmy do ustalenia specyfikacji oprogramowania, które będzie działać z infrastrukturą i potencjalnych zmian w tworzonym oprogramowaniu. Pokazywaliśmy dostępne możliwości i sposoby wykorzystania ich w kodzie.

Wyzwanie: połączenie rozbieżnych oczekiwań 

Aplikacja domyślnie działała z wersją postgresa, która niedługo traciła wsparcie dostawcy chmurowego. Klient po testach potwierdził, że aplikacja działa również z nowszą wersją. Dlatego użyliśmy Postgres w wersji 14.7

Największym wyzwaniem było połączenie wszystkich wymagań klienta, które często nie szły ze sobą w parze, m.in.:

  • bezpieczeństwo
  • wysoka dostępność
  • koszt utrzymania

 

Efektywność kosztowa: wdrażanie współdzielonych klastrów dla ograniczenia nakładów

Ze względu na koszt utrzymania zdecydowaliśmy się, że jedynym rozwiązaniem jest współdzielony klaster. Takie rozwiązanie znacznie redukuje koszty, zarówno po stronie chmury, jak i pod względem czasu potrzebnego na konfigurację i utrzymanie. Wprowadza jednak zagrożenia pod kątem bezpieczeństwa – oddzielenia danych różnych klientów i wysokiej dostępności (walka o zasoby pomiędzy klientami).

 

Zdecydowaliśmy się skorzystać z:

  • AWS Aurora Serverless v2 – silnik bazy danych
  • GitHub – przechowywanie dokumentacji i konfiguracji
  • Terraform – powoływanie infrastruktury i konfiguracja klientów

Wysoka dostępność i efektywność kosztowa z AWS Aurora Serverless v2

W kwestii wysokiej dostępności i kosztów postanowiliśmy wykorzystać AWS Aurora Serverless v2 z automatycznym skalowaniem. To rozwiązało problem wysokiej dostępności i kosztów. 

Temat bezpieczeństwa takiego rozwiązania był najtrudniejszy do rozwiązania i wymagał od nas utworzenia konfiguracji zarówno po stronie silnika postgres jak i AWS. Każdy klient uzyskuje dostęp poprzez indywidualny zestaw poświadczeń do konta utworzonego w AWS IAM i powiązanego z kontem postgres. Konto ma dostęp tylko do swoich baz danych z określonych adresów IP.
Ze względu na złożoność takiej konfiguracji, bezpieczeństwo dalej nie jest zapewnione – drobny błąd podczas tworzenia baz danych lub konta może spowodować, że reguły dostępu nie zostaną odpowiednio nadane i klient zyska dostęp do innych baz. Ten problem rozwiązaliśmy wykorzystując Terraform. Dzięki temu klient ma możliwość tworzenia identycznej konfiguracji dla każdego klienta bez miejsca na popełnienie błędu!

Zarządzanie infrastrukturą i klientami przy użyciu narzędzi opartych o Terraform

Poza dostarczeniem gotowego rozwiązania, stworzyliśmy również zestaw narzędzi opartych o Terraform, które pozwalają na szybkie i bezbłędne zarządzanie konfiguracja infrastruktury i klientów. Dodanie nowego klienta do istniejącego klienta polega na wpisaniu nazwy do listy zmiennych, co powoduje utworzenie odpowiednich kont, baz danych oraz uprawnień. Ponadto do uwierzytelniania wykorzystywane są tożsamości AWS IAM i tokeny, co sprawia, że logowanie jest bezpieczne i jest możliwość wprowadzenia dodatkowych ograniczeń – na przykład do adresu IP klienta.

 

Korzyści dla klienta

Konfiguracja nowego klienta zajmuje mniej niż 15 minut co sprawia, że nasz klient może zacząć pracować nawet tego samego dnia po podpisaniu umowy! Brak sprzętu to mniej problemów zarówno dla klientów, którzy nie mają swoich działów IT jak i dostawcy oprogramowania.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *