Dlaczego lubię technologię JAIN SLEE
Zdarzyło się, że przy realizacji kilku projektów dla telekomunikacji. Analizowaliśmy kilka rożnych rozwiązań, jakkolwiek jeżeli ktoś szuka skalowalnego środowiska umożliwiającego szybkie tworzenie aplikacji to wybór jest tylko jeden.
Ponieważ teraz piszę kilka projektów dotykających różnych obszarów działalności operatora, w przyszłości będę umieszczał artykuły dotyczące tej technologii dotyczące przykładowych tematów:
- Obsługa Diameter w Mobicents (napisanie własnego adaptera zasobów, przykłady usługi odpytującej kilka systemów za pomocą różnego rodzaju interfejsów Diameter)
- Usługi oparte o stos SS7 i SIGTRAN w Mobicents
- Serwisy udostępniane jako WebServices w Mobicents
- Konfiguracja usługi zarządzającej konfiguracja dla innych usług z automatycznym powiadamianiem o zmianach konfiguracji
Najważniejsze dla mnie cechy środowiska JAIN SLEE to:
- prosty podział na moduły – albo coś jest usługą (Service building block – SBB), wszystkie pozostałe elementy są adapterami zasobów w przeróżnych postaciach (Resource Adapter – RA)
- zorientowanie na zdarzenia, w tym zdarzenia są generowane przez SLEE, usługi lub adaptery zasobów
- priorytetyzacja zdarzeń
- możliwość umiejscowienia serwisów w kontekście czasów dzięki systemowi Timerów
- sposób obsługi wielowątkowości – czyli zdarzenia i aktywności
- wsparcie dla mechanizmów persystencji – zarówno w postaci szybkich jednowymiarowych tablic (Profile Tables) jak i dzięki JPA
- obsługa komunikatów pomiędzy modułami, jak i wsparcie dla interfejsów lokalnych
- skalowalność i możliwość rozpraszania logiki aplikacji – w tym klastrowanie aplikacji
- dostępność serwerów aplikacji zarówno komercyjnych rock solid (OpenCloud Rhino) jak i OpenSource (Mobicents)
Wszystko to za cenę tego, iż środowisko SLEE jest trudniejsze w użyciu niz J2EE – większość programistów Java (szczególnie po przesiadce z Windows i .NET) ma problemy z wielowątkowością, a tutaj dodatkowo mamy pełną asynchroniczność i poniekąd brak kontroli. Jakkolwiek uważam że warto – dzięki takiej architekturze można osiągnąć obsługe setek zdarzeń na sekundę na pojedynczym serwerze bez obawy o spadek wydajności.