Nie można jednak pozwolić sobie na utratę czujności – jedną z głównych reguł, którymi powinien kierować się zespół developerski jest ekonomia. Aplikacje i dane powinny zużywać jak najmniej udostępnianych przez system zasobów. Dlatego też, pomimo postępu technologicznego, programiści nie ustają w wysiłkach, aby wytwarzane przez nich oprogramowanie było szybkie, wydajne, ale i ekonomiczne w działaniu.

Jednym z zagadnień, z którym często spotykamy się, tworząc oprogramowanie dla biznesu jest kolejkowanie zadań. Aplikacje biznesowe zarządzają dużą ilością wrażliwych danych o skomplikowanej strukturze. Najczęściej przechowywane są w jednym z systemów baz danych, uporządkowane w tabelach połączonych dodatkowo siecią wzajemnych relacji. Z bazy danych korzysta w jednym czasie wielu „klientów” – rozumianych tutaj jako użytkowników, aplikacje, sesje, które wysyłają do bazy złożone zapytania o dane albo też żądania modyfikacji istniejących danych.

Aby ta sytuacja przestała być tylko konstruktem teoretycznym, posłużmy się przykładem jednego z naszych klientów. Firma Faktor specjalizuje się w imporcie i sprzedaży kwiatów sztucznych. Ponieważ funkcjonuje już ponad 20 lat i zyskała silną pozycję rynkową, wolumen transakcji i przepływ towarów cały czas wzrasta. Firma Faktor obsługuje zarówno klientów hurtowych (kwiaciarnie, firmy eventowe, mniejsze hurtownie), jak i indywidualnych. Sprzedaż odbywa się w siedzibie firmy, a także za pośrednictwem kilku sklepów internetowych, obsługujących różne segmenty rynków europejskich. Towary składowane są w kilku magazynach, a nad wszystkimi aspektami funkcjonowania przedsiębiorstwa czuwa stworzony przez Integree system ERP.

W momencie, kiedy klient jednego ze sklepów chce dodać towar do koszyka, do bazy danych sklepu wysyłane jest zapytanie o jego dostępność. Jeżeli towar jest dostępny, klientowi udostępniana jest ścieżka zakupowa. Następnie do bazy danych magazynu znajdującego się w siedzibie firmy wysyłana jest informacja, że ilość towaru w bazie sklepu uległa zmianie, dlatego też należy zaktualizować dane o ilości produktów w magazynie. Jeżeli w kilku sklepach na raz klienci złożą zamówienia na różne produkty, dane o zamówieniach trafią do działu finansowego (moduł fakturowania), spedycji (procedura nadania przesyłek) oraz zamówień (konieczność uzupełnienia brakujących produktów). Jednocześnie stan magazynu zostanie zaktualizowany i przesłany do sklepów. Wymiana tych informacji zajmie milisekundy, jednak musi podlegać pewnym regułom. Jednym ze składników systemu ERP jest aplikacja kolejkująca zapytania do baz danych i ich modyfikacje. Zarządza ona przepływem informacji, kolejnością ich zapisu i pozwala synchronizować ze sobą rozbudowane systemy danych.

Informacje o zamówieniach, zakupach, płatnościach i klientach przesyłane i przechowywane są w formie danych tekstowych i numerycznych. Są więc stosunkowo „lekkie” i nie zajmują dużo przestrzeni dyskowej, ani nie obciążają łącz. System magazynowy zawiera jednak także zdjęcia produktów… Każdy produkt opisywany jest jednym bądź kilkoma wysokiej jakości zdjęciami. Oznacza to, że na każdy z 2500 produktów przypada dodatkowo ~15 MB danych w postaci zdjęć. Po przemnożeniu otrzymujemy 37,5 GB zdjęć. Wyobraźmy sobie teraz sytuację, kiedy do magazynu trafia nowy towar. System magazynowy natychmiast „informuje” o tym bazy danych sklepów, żądając, aby zsynchronizowały się ze stanem magazynowym. Czy w tym momencie system powinien zainicjować transfer 40GB danych (baza + pliki graficzne) do systemów sklepowych? Na szczęście nie. Aplikacja kolejkująca jest w stanie stwierdzić nie tylko, że dane w jednej z baz uległy zmianie – jest ona w stanie sprawdzić które, a następnie zaktualizować tylko niezbędne rekordy.

Kolejną funkcją systemu kolejkującego jest przetwarzanie asynchroniczne. W momencie, kiedy użytkownik uruchomi daną akcję (np. podsumowanie zamówienia), system wykonuje w tle serię zapytań do baz danych. Użytkownik natomiast nie musi czekać na wynik działania, ponieważ jest od razu przenoszony do następnego ekranu aplikacji.

Serwer kolejkujący zapewnia także wszystkim elementom systemu "odporność" na brak połączenia internetowego. Jeżeli w momencie zapisu danych jedna z baz znajdzie się w trybie offline, mechanizm kolejkujący odnotuje to i powróci do zapisu w momencie, kiedy znów będzie to możliwe.

Jest to tylko jedno z rozwiązań, za pomocą których udaje nam się odwzorować logikę biznesową klienta. Jeżeli potrzebujesz aplikacji, która bezpiecznie przetworzy dane z różnych źródeł – umów się z nami na kawę.