Macierz odpowiedzialności wygląda więc nastepująco:

Etap dmt Partner
Analiza opcjonalnie – na żądanie TAK
Koncepcja systemu opcjonalnie – na żądanie TAK
Szczegółowy projekt TAK
Implementacja TAK
Testy modułów TAK
Testy end-to-end opcjonalnie – na żądanie TAK
Instalacja platformy Atom opcjonalnie – na żądanie TAK
Instalacja modułów opcjonalnie – na żądanie TAK
Konfiguracja platformy Atom opcjonalnie – na żądanie TAK
Konfiguracja modułów oraz setup procesów opcjonalnie – na żądanie TAK
Opieka gwarancyjna i pogwarancyjna w zakresie setupu procesów opcjonalnie – na żądanie TAK
Opieka gwarancyjna i pogwarancyjna w zakresie platformy Atom i modułów TAK

Model współpracy z varem

Oczywiście w dzisiejszym świecie budowanie od zera (from scratch) systemu informatycznego nie ma wielkiego sensu. Byłby to proces kosztowny oraz obarczony wieloma ryzykami.

Dlatego w naszych wdrożeniach używamy przygotowanej przez nas platformy Atom, na której powstają dedykowane rozwiązania dla konkretnych klientów. Na platformie (która jest gotowym produktem), uruchamiane są poszczególne moduły realizujące różne atomowe czynności. Nasz system pozwala na połączenie małych modułów w pełne procesy realizujące nawet skomplikowane operacje biznesowe.

Na rynku istnieje sporo platform umożliwiających uruchamianie różnorakich systemów. Jednak zazwyczaj konieczne jest pozyskanie skomplikowanej wiedzy na temat ich budowy. Wydłuża to czas wdrożenia i czas testów. Programista tworzący takie moduły musi samodzielnie zdobywać swoją wiedzę. To z kolei oznacza, że nawet jeśli platforma jest dobra, to braki w wiedzy lub doświadczeniu programisty spowodują, że całościowy system nie będzie skuteczny, a jego wdrożenie będzie obarczone wieloma ryzykami.

Tymczasem w modelu współpracy jaki proponujemy w naszej firmie, całość prac programistycznych spoczywa na nas. To nasi deweloperzy, świetnie znający platformę Atom, przygotowują kod źródłowy poszczególnych modułów. W efekcie są w stanie w pełni wykorzystać wszelkie możliwości platformy.

Co jednak najważniejsze, moduły takie realizują pewne drobne, wręcz „atomowe” funkcjonalności. Przykładowo, jeśli w systemie konieczne będzie wygenerowanie danych na podstawie danych przychodzących mailowo w skompresowanych i zaszyfrowanych plikach, to odbieranie maili, dekompresja, deszyfracja i wreszcie samo przetwarzanie, będzie realizowane przez zupełnie różne atomowe moduły.

Dzięki takiemu podejściu nasz klient (lub nasz reseller), może samodzielnie skonfigurować cały system, łącząc niemal dowolnie poszczególne atomowe moduły w bardziej rozbudowane procesy. Nie ma jednak konieczności pisania nawet linijki jakiegokolwiek modułu.

Co więcej, poszczególny moduł może być wykorzystywany w wielu różnych procesach. W efekcie to my dostarczamy cały gotowy system klocków. Ale to nasz klient czy też reseller może budować z tych klocków niemal dowolne rozwiązania IT.

Nasze systemy budujemy w klasycznym cyklu produkcji (analiza/projekt/implementacja/testy/wdrożenie/opieka), przy czym model współpracy wygląda następująco:

  1. Analiza. Analiza potrzeb i problemów pojawiających się u naszego klienta, a także analiza uwarunkowań w jakich oprogramowanie będzie musiało funkcjonować. W szczególności analizę taką może przeprowadzić nasza firma lub samodzielnie nasz lokalny partner po przejściu odpowiednich szkoleń.
  2. Projekt systemu. Projekt składa się z dwóch części:
    • Ogólna koncepcja systemu. Może ona zostać przygotowana bezpośrednio przez naszego lokalnego partnera i następnie przez nas weryfikowana. Koncepcja nie opisuje szczegółowej architektury systemu, a jedynie ogólny sposób realizacji oczekiwań klienta (jeszcze bez podziału całego systemu na moduły).
    • Szczegółowy projekt modułów. Ta część projektu powstaje całkowicie w naszej firmie. W oparciu o naszą wiedzę o możliwościach platformy Atom projektujemy wszystkie moduły, interfejsy użytkownika, sposób wymiany danych oraz sposób przetwarzania danych. W efekcie nasz lokalny partner otrzymuje pełny opis „klocków”, z których będzie mógł skonfigurować procesy bezpośrednio u klienta.
  3. Implementacja. Nasze zespoły programistów implementują konkretne rozwiązania, tworząc konkretne moduły działające na platformie Atom. Wykorzystujemy tu całą naszą wiedzę na temat budowy systemów masowej przepustowości, od razu optymalizując wszystkie rozwiązania informatyczne. Co więcej, jako że moduły tworzone są przez osoby doskonale zaznajomione ze specyfiką platformy Atom, możliwe jest całkowite wykorzystanie wszelkich możliwości tej platformy.
  4. Testy:
    • nasza firma samodzielnie wykonuje wszelkie testy pojedynczych modułów,
    • na życzenie naszego partnera lub klienta wykonujemy również pełne testy end-to-end na bazie odpowiednich scenariuszy testowych.
  5. Wdrożenie. Nasz lokalny partner samodzielnie instaluje platformę Atom i moduły, konfiguruje je oraz przeprowadza odpowiednie szkolenia dla użytkowników końcowych i administratorów. Na życzenie klienta lub partnera wdrożenie może być realizowane bezpośrednio przez naszą firmę.
  6. Opieka gwarancyjna i pogwarancyjna. Nasze systemy objęte są pełną opieką. Ten element cyklu produkcji uważamy za najistotniejszy. Oprogramowanie tworzone jest bowiem tylko raz, zaś jego eksploatacja jest procesem ciągłym. Dlatego zapewnienie naszym klientom właściwej opieki jest naszym absolutnym priorytetem. Nasi specjaliści są do Państwa dyspozycji przy wszelkich pracach związanych czy to z usuwaniem błędów, czy to z wykonywaniem modyfikacji. Modyfikacje mogą być związane ze zmianą wymagań biznesowych, ale też np. ze zmianą wolumenu przetwarzanych danych.

Co ważne, przez cały okres trwania umowy o opiece gwarancyjnej i pogwarancyjnej nasz system objęty jest bezpłatną opieką gwarancyjną. Wszelkie błędy usuwane są w ramach tej umowy bez dodatkowych opłat przez tak długi czas, jak tylko trwa umowa – bez żadnych wstępnych ograniczeń.

Warto przy tym zaznaczyć, że nasz lokalny partner lub klient mogą samodzielnie zmieniać definicje procesów, korzystając z dostarczanych przez nas klocków – zupełnie bez naszego udziału. Udział naszej firmy jest niezbędny tylko wtedy, gdy zachodzi konieczność zmiany kodu źródłowego konkretnego modułu. Dlatego też nasz lokalny partner zapewnia opiekę nad samą konfiguracją modułów, my zaś zapewniamy pełną opiekę nad implementacją platformy Atom oraz wszystkich dostarczonych przez nas modułów.

Ogólne zasady współpracy z varem

System zbudowany w oparciu o platformę Atom może zostać wdrożony również przez naszego przedstawiciela – resellera (VARa).

Z punktu widzenia użytkownika najważniejszą częścią systemu opartego na platformie Atom są oddzielne atomowe moduły utworzone przez naszą firmę. Nasze systemy działają w szczególnie wymagających środowiskach i dlatego uznaliśmy, że bezpieczniej będzie jeśli cały kod źródłowy powstawać będzie tylko w jednym miejscu, tak by klient był pewien, że moduły tworzone są przez osoby dysponujące pełną wiedzą o platformie Atom. Oznacza to, że możemy zagwarantować naszemu klientowi, iż moduły są w pełni kompatybilne z samą platformą i przygotowane w taki sposób, by zapewnić największą możliwą wydajność.

W realnym wdrożeniu nasz partner za pomocą platformy Atom, zupełnie bez naszego udziału, może:

  • W pełni konfigurować całą platformę i wszystkie moduły za pomocą wygodnego, ustandaryzowanego interfejsu konfiguracyjnego, dostępnego poprzez przeglądarkę WWW. Konfigurację może więc wykonywać zdalnie lub u klienta.
  • Budować z różnych stworzonych przez nas modułów bardziej złożone zadania, w ramach których występują zależności pomiędzy modułami.
  • Planować warunki i czas uruchamiania zadań – platforma sama uruchomi odpowiednie moduły we właściwym czasie lub według zależności pomiędzy zadaniami i procesami, zgodnie z wprowadzoną konfiguracją.
  • Uruchamiać moduły na odpowiednich serwerach, przeznaczonych pod system.
  • Zarządzać obciążeniem serwerów (load-balancing).
  • Obsługiwać sytuacje awaryjne, np. uruchamianie konwerterów/mikrousług na innym serwerze w przypadku awarii serwera, na którym działały one wcześniej.
  • Monitorować i nadzorować pracę systemu.

Warto przy tym podkreślić, że system konfiguruje się raz – potem cała jego praca jest zupełnie zautomatyzowana i nie wymaga nadzoru (unattended).

Każda firma chcąca zostać VARem musi podpisać odpowiednią umowę oraz obowiązkowo przejść szkolenie, tak by mogła profesjonalnie przeprowadzić cały proces wdrożeniowy u klienta końcowego. Zainteresowanych zapraszamy do kontaktu z nami.

Schemat architektury

Moduły uruchamiane na platformie Atom to niezależne małe bloki kodu wykonywalnego. Zazwyczaj w ramach jednego systemu działa wiele różnych modułów platformy, utworzonych specjalnie dla danego wdrożenia. Przykładowymi zadaniami, wykonywanymi przez moduły, mogą być:

  • import plików,
  • konwersja plików,
  • przetwarzanie danych w bazie Atom_Convert,
  • komunikacja z innymi systemami lub modułami,
  • przetwarzanie grafiki lub rozpoznawanie pisma

itd.

Należy podkreślić, że nie ma narzuconej określonej specjalizacji modułów Atom. W każdym z systemów lub w ramach jednego systemu, mogą powstawać moduły bardzo różniące się i stopniem skomplikowania, i rodzajem wykonywanych zadań.

Na jednej fizycznej lub logicznej maszynie możliwe jest uruchomienie wielu różnych modułów platformy równocześnie. Każdy z takich modułów uruchomiony jest wraz z przypisaną do niego osobną konfiguracją. Taki moduł wraz z konfiguracją to tzw. proces.

Dany moduł może być przystosowany do działania na wielu maszynach na raz lub w kilku instancjach (procesach) na tej samej maszynie. O tym, gdzie (na jakich maszynach) oraz w ilu instancjach należy uruchomić taki moduł, decyduje platforma Atom na podstawie wprowadzonej konfiguracji.

  • AtomRunTime to element platformy Atom, który uruchamia i zarządza uruchomionymi modułami platformy na jednej maszynie. Na danej maszynie, przeznaczonej pod system, działa tylko jeden AtomRunTime i jest on uruchomiony zawsze (w trybie gotowości do uruchomienia konwerterów platformy, jeśli zajdzie taka potrzeba).

    AtomRunTime stwarza odpowiednie warunki do pracy konwerterom platformy – przekazuje im konfigurację, odbiera od nich logi itd.

    W skład platformy Atom (przez co rozumiemy cały grid/chmurę), może wchodzić dowolnie wiele maszyn – na każdej takiej maszynie zainstalowany być musi AtomRunTime.

  • AtomMonitor to element pomocniczy, który nadzoruje pracę AtomRunTime oraz AtomLoadBalancer, działających na tej samej fizycznej lub wirtualnej maszynie. Jeśli z jakiegoś powodu AtomRunTime lub AtomLoadBalancer ulegnie awarii, to AtomMonitor uruchomi go ponownie. Nadzorowanie działa również w drugą stronę – jeśli awarii ulegnie AtomMonitor, to AtomRunTime lub AtomLoadBalancer z tej samej maszyny wznowi jego działanie.

  • AtomLoadBalancer to specjalny element, który w ramach platformy Atomdziała zawsze na dokładnie jednej maszynie. Jego zadaniem jest:

    • Nadzorowanie pracy całego systemu – wszystkie instancje AtomRunTime i AtomMonitor komunikują się z nim, przekazując informacje o ich działaniu. Takie informacje, za pośrednictwem AtomRunTime, przekazują również moduły. AtomLoadBalancer może wykryć niektóre sytuacje awaryjne i rozpocząć odpowiednie działania, np. w przypadku awarii jednego z serwerów systemu, może spowodować uruchomienie na innej maszynie modułów, które przerwały pracę.
    • Rozkładanie obciążenia pomiędzy dostępne serwery – jeśli zachodzi konieczność uruchomienia kolejnego modułu (lub kolejnej instancji jednego z już uruchomionych modułów), to AtomLoadBalancer wskazuje maszynę, która najbardziej się do tego nadaje (np. jest najmniej obciążona lub ma odpowiednie parametry).
  • AtomConsole to aplikacja WWW służąca do monitorowania przez operatora pracy platformy Atom. Aplikacja wyświetla logi systemowe oraz inne dane, informujące o działaniu systemu. Umożliwia również przeprowadzenie działań awaryjnych, takich jak zatrzymanie czy uruchomienie jednego z elementów platformy.

  • PTRConfig to aplikacja WWW służąca do konfiguracji działania samej platformy PTR oraz konfiguracji każdego z modułów. Umożliwia między innymi:

    • Definiowanie kalendarzy i regionów (stref czasowych).
    • Grupowanie pojedynczych procesów w bardziej złożone zadania.
    • Definiowanie zależności pomiędzy zadaniami.
    • Ustalanie warunków uruchamiania zadań – czasu działania.
    • Dokonywania zmian w konfiguracji konwerterów – konfiguracja konwertera, przechowywana w bazie w postaci XML’a, jest przez aplikację wyświetlana w formie czytelnego formularza, w którym operator wprowadza zmiany wartości parametrów.
  • Komunikacja między poszczególnymi elementami systemu odbywa się bezpośrednio lub poprzez bazę danych. Przykładem komunikacji bezpośredniej jest komunikacja między aplikacją AtomRunTime a danym procesem (czyli modułem uruchomionym z konkretną konfiguracją). Aplikacja AtomRunTime może różnorako wpływać na działanie modułu, a w szczególności może:

    • Uruchomić moduł i przekazać mu parametry pracy procesu (w formie XML).
    • Odebrać z modułu wyniki jego pracy.
    • Zatrzymać moduł (wydać konwerterowi polecenie zakończenia wykonywania zadania konwersji w dowolnym momencie).
    • Sprawdzić czy konwerter działa.
  • Platforma Atom zrealizowana jest w architekturze trójwarstwowej:

    1. Warstwa prezentacji, czyli AtomConfig i AtomConsole wykonane jako aplikacje WWW.
    2. Warstwa biznesowa to WebService’y wbudowane w platformę, AtomLoadBalancer, AtomRunTime, AtomMonitor oraz odpowiednie moduły.
    3. Warstwę bazy danych stanowią odpowiednie serwery SQL z wbudowaną logiką w formie stored procedure. Ze względu na szybkość działania platformy Atom oraz jej skalowalność, sugeruje się stosowanie bazy VoltDB.
  • Platforma Atom zapewnia jednoczesny dostęp wielu użytkowników do aplikacji WWW, wchodzących w jej skład (AtomConfig i AtomConsole), z zastrzeżeniem, że nie jest możliwa konfiguracja tych samych elementów w tym samym czasie.

    Przykładowo dwóch użytkowników może bez przeszkód konfigurować dwa różne zadania, ale już dwóch użytkowników na pewno nie może w tym samym czasie dokonywać modyfikacji w konfiguracji tego samego zadania.

  • Interfejs użytkownika AtomConfig i AtomConsole dostępny jest w dwóch wersjach językowych: polskiej i angielskiej.

    W bazie konfiguracyjnej platformy będą przechowywane informacje o wybranym przez użytkownika języku.

    Wielojęzyczność jest zrealizowana w taki sposób, że w przyszłości będzie można w miarę łatwy sposób dodawać kolejne języki.

    Wszystkie informacje logowane przez platformę Atom są tylko w języku angielskim.

  • Równoległość przetwarzania jest jedną z podstawowych cech platformy Atom.

    Równoległość pozwala na skalowalność platformy, ma pozytywny wpływ na niezawodność jej działania oraz, co najważniejsze, ma ogromny wpływ na czas przetwarzań.

    Równoległość platformy Atom realizowana jest na kilku poziomach:

    • Poziom wielu serwerów procesujących.
    • Poziom wielu procesów działających na jednej maszynie równocześnie.
    • Poziom zrównoleglenia zadań realizowanych w ramach grupy zadań.
  • Skalowalność jest jedną z głównych cech platformy Atom.

    Jeżeli moc serwerów, które procesują dane, okaże się w pewnym momencie życia systemu niewystarczająca, aby procesowanie zamknęło się w określonym oknie czasowym, to wtedy wystarczy tylko dołożyć kolejny serwer i skonfigurować platformę Atom tak, aby korzystała z tego dodatkowego serwera (de facto oznacza to zainstalowanie na tym serwerze AtomRunTime i AtomMonitor). Oczywiście możliwa też jest skalowalność poprzez rozbudowę konfiguracji istniejącego serwera.

  • Atomowość to cecha samych modułów pisanych na platformę Atom i polega na tworzeniu modułów realizujących jak najbardziej atomowe funkcje.

    Przykładowo nie będziemy tworzyć jednego uniwersalnego modułu importującego pliki w różnych formatach, za to powstanie tyle atomowych specjalizowanych modułów importujących, ile jest różnych standardów importowanych plików.

  • Wszystkie moduły na platformie Atommają ten sam wspólny szkielet, który odpowiedzialny jest między innymi za uruchamianie, komunikację i konfigurację modułów. Szkielet ten powoduje, że tworząc nowy moduł, powstaje tylko kod realizujący logikę biznesową modułu.

    Atomowość modułu pozwala ograniczyć potrzebę modyfikacji, a w przypadku gdy okazuje się ona jednak niezbędna, znacznie ją uprościć ze względu na prostotę modułu. Pozwala to również na zmniejszenie nakładu pracy związanej np. z testami akceptacyjnymi wykonywanymi przez klienta, testami regresji (regression tests) itp.

Idź do góry