OpenMobster – mobilna chmura

mobster_32

Wszystko możemy dziś umieścić w chmurze: aplikacje, usługi, dane. Istnieje wiele zdefiniowanych modeli takich usług: IaaS, PaaS, SaaS… Ich wspólnym mianownikiem jest zawsze zwiększenie elastyczność biznesu, obniżenie kosztów, zwiększenie szybkości dostarczania rozwiązań, skalowalności, dostępności itp. Z pewnością można wymienić ich znacznie więcej.
Dlaczego by nie dołączyć do ogólnego trendu i samodzielnie nie tworzyć tego typu rozwiązań? Dla każdego, kto ma ochotę na własną chmurę, ciekawą propozycją jest środowisko OpenMobster. To kompletne rozwiązanie dostarcza funkcjonalności typu „cloud computing”. Dystrybuowany jest na zasadach otwartego oprogramowania zgodnie z licencją EPL 1.0. Umożliwia instalację tego rozwiązania we własnej infrastrukturze sieciowej. Daje nam to nieograniczone możliwość konfiguracji oraz integracji z innymi systemami.


 Główne funkcjonalności OpenMobster

  • Synchronizacja danych – automatyczna synchronizacja danych pomiędzy urządzeniem a serwerem. Dostępne są różne tryby synchronizacji: dwukierunkowa, jednokierunkowa z serwera do urządzenia lub z urządzenia do serwera oraz synchronizacja podczas inicjalizacji aplikacji.
  • Dane przechowywane offline na urządzeniu – dane odczytane z serwera są zapisywane lokalnie na urządzeniu. Po odłączeniu od sieci aplikacja pracuje na lokalnej kopii danych. Po przywróceniu połączenia wszystkie zmiany są synchronizowane z serwerem. Operacje te są przeprowadzane automatycznie, co nie wymaga dodatkowego programowania.
  • Notyfikacje push – notyfikacje wysyłane z serwera do urządzenia służące do przekazywania krótkich informacji o nowościach czy też aktualizacjach danych. Użytkownik może być informowany o nadejściu nowej informacji np. sygnałem dźwiękowym. Mechanizm ten działa w trybie rzeczywistym i jest niezależny od platformy.
  • Bezpieczeństwo – aby nawiązać połączenie z serwerem, każde urządzanie musi zostać aktywowane. Wykonuje się to poprzez podanie adresu serwera oraz loginu i hasło. Komunikacja jest wykonywana za pomocą szyfrowanego protokołu.
  • Lokalizacja urządzeń – funkcjonalność pozwalająca na lokalizowanie aktywowanych urządzeń. Możemy np. zdefiniować mechanizm uruchamiania odpowiedniej akcji w momencie naszego wejścia na teren firmy.
  • Mechanizm zdalnego wywoływania procedur – OpenMobster udostępnia interfejs do definiowania procedur oraz ich późniejszego uruchamiania z urządzenia.
  • Platforma dla Android, iOS i HTML5 – aplikacja może być napisana jako natywna aplikacja Android lub iOS oraz jako aplikacja hybrydowa wykorzystując środowisko PhoneGap.
  • Framework MVC i DATA – zestaw klas ułatwiających i przyspieszających proces projektowania aplikacji.
  • Konsola zarządzająca – po zainstalowaniu środowiska openmobster na serwerze JBoss mamy dostępną konsolę, za pomocą której możemy zarządzać użytkownikami oraz urządzeniami. Aktualnie mamy dwie funkcje administracyjne, które możemy wykonać na każdym aktywowanym urządzeniu: zdalne zablokowanie urządzenia oraz zdalne wyczyszczenie wszystkich danych.
  • Manager aplikacji – każda aplikacja zainstalowana w środowisku openmobster jest dostępna w managerze aplikacji. Jest przygotowana przykładowa aplikacja, która wyświetla wszystkie aktualnie zainstalowane w chmurze aplikacje. Po wybraniu jednej z nich zostaje uruchomiona przeglądarka, możemy ściągnąć i zainstalować wybraną aplikację.


Instalacja i uruchomienie środowiska OpenMobster

OpenMobster można uruchomić na dowolnym systemie operacyjnym, w którym działa serwer JBoss w wersji 5.1. Jeśli wcześniej nie mieliśmy serwera aplikacyjnego zainstalowanego w tej wersji, musimy ją ściągnąć ze strony www.jboss.org. Po rozpakowaniu zipa ze środowiskiem OpenMobster kopiujemy z katalogu ./cloudServer/ jedną z wersji instalacyjnych OpenMobstera do katalogu JBoss-a:<jboss_home>/deploy. Mamy przygotowane do wyboru dwie wersje. Pierwsza, developerska, wykorzystuje plikową bazę danych hsqldb. Działa ona od razu po skopiowaniu, niepotrzebna jest żadna dodatkowa konfiguracja. Druga wersja jest przygotowana do podłączenia do serwera bazy danych mysql. Potrzebne jest oczywiście wpisanie odpowiednich parametrów konfiguracyjnych dla połączenia do mysql. Następnie możemy uruchomić serwer JBoss poleceniem:/bin/run.sh –c openmobster –b 0.0.0.0 .

Po uruchomieniu JBossa system jest gotowy do pracy. Poprawność instalacji możemy sprawdzić, instalując na urządzeniu managera aplikacji. Znajdziemy go w lokalizacji: http://<adres_serwera>:<port>/o/android/cloudmanager. Po uruchomieniu tego linka w urządzeniu aplikacja zostanie pobrana i będzie można zainstalować ją na telefonie. Trzeba pamiętać, aby mieć zaznaczoną opcję w urządzeniu „Inne źródła”. Po uruchomieniu aplikacji w celu jej aktywacji należy podać adres serwera, login i hasło. Login i hasło dla użytkownika ustala się w konsoli zarządzającej. Po poprawnej aktywacji możemy wyświetlić listę zainstalowanych aplikacji, uruchomić mechanizm RPC lub wysłać notyfikację Push. Dodatkowo aplikacja ta jest odpowiedzialna za wykonywanie zdalnych poleceń administracyjnych. Nie ma obowiązku instalacji aplikacji administracyjnej na urządzeniu. Jest ona niezbędna tylko do wykonywania poleceń administracyjnych.

Tworzenie aplikacji w systemie Android

OpenMobster zawiera zestaw przykładowych aplikacji prezentujących możliwości środowiska. Na blogu openmobstera znajduje się artykuł, który krok po kroku wyjaśnia, jak uruchomić taką przykładową aplikację: http://openmobster.blogspot.com/2013/05/open-source-enterprise-mbaas-platform.html. Nie chcąc powtarzać tych kroków, postaram się pokazać, jak można przygotować w pełni funkcjonalne środowisko programistyczne do tworzenia aplikacji w OpenMobster na urządzenia systemem Android. Po pierwsze, musimy na komputerze mieć zainstalowane:

  • JDK w wersji 1.6,
  • Maven w wersji 3.0 lub wyższej,
  • Eclipse Juno lub nowszy,
  • SDK Android.

Jeśli spełniamy te wymagania, możemy utworzyć szablon projektu. Służy temu dostępna w katalogu /AppCreator aplikacja appcreator.bat (appcreator.sh dla linuxa),. Po jej uruchomieniu trzeba odpowiedzieć na kilka pytań, takich jak nazwa projektu, wersja OpenMobstera, wersja androida. Następnie zostaje utworzony w katalogu /AppCreator/workspace/ szablon aplikacji. Składa się on z trzech części:

  • app-android – projekt aplikacji android,
  • cloud – szablon aplikacji serwerowej,
  • moblet – szablon z konfiguracją aplikacji.

Żeby móc zaimportować projekty do Eclipsa, należy wykonać kilka czynności:

  1. W katalogu projektu trzeba uruchomić polecenie mvn eclipse:eclipse. Utworzy ono pliki konfiguracyjne wymagane przez eclipse. Następnie w projekcie app-android edytujemy plik .project: zmieniamy nazwę projektu, dodając przyrostek android np. myapp-android oraz modyfikujemy plik konfiguracyjny eclipsa, dodając rodzaje dostępnych buildów i natury projektu. Docelowo plik .project powinien wyglądać następująco:
     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <projectDescription>
      <name>myapp-android</name>
      <projects/>
      <buildSpec>
            <buildCommand>
                <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
            </buildCommand>
            <buildCommand>
                <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
            </buildCommand>
            <buildCommand>
                <name>org.eclipse.jdt.core.javabuilder</name>
            </buildCommand>
            <buildCommand>
                <name>com.android.ide.eclipse.adt.ApkBuilder</name>
            </buildCommand>
            <buildCommand>
                <name>org.eclipse.m2e.core.maven2Builder</name>
            </buildCommand>
      </buildSpec>
      <natures>
            <nature>org.eclipse.m2e.core.maven2Nature</nature>
            <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
            <nature>org.eclipse.jdt.core.javanature</nature>
      </natures>
    </projectDescription>
  2. Po wykonaniu tych zmian możemy zaimportować projekty, wybierając opcje w Eclipse: File->Import->Existing Projects into Workspace, a następnie wskazać folder utworzonego projektu. Zostaną zaimportowane trzy projekty myapp, myapp-android i myapp-cloud.

Od tego momentu możemy rozpocząć tworzenie aplikacji. Aplikację możemy skompilować i spakować do wersji gotowej do wdrożenia poprzez wykonanie polecenia mvn package.

Framework MVC

OpenMobster dostarcza programistom zestaw klas ułatwiających i przyspieszających tworzenie aplikacji w chmurze. Zaproponowany framework MVC bazuje na sprawdzonych wzorcach projektowych „Rich Internet Application”.

Ekran (Screen)
Abstrakcyjna klasa odpowiedzialna za obsługę ekranu. Odpowiada za obsługę nawigacji pomiędzy ekranami: przycisk wstecz oraz „home”.

Polecenia (Command)
Interfejs Command ukrywa przed programistami wiele szczegółów implementacyjnych, m.in. sposób komunikacji z interfejsem graficznym czy też metodę uruchamiania zadań w oddzielnym wątku. Do zaimplementowania udostępnione są następujące metody:

      • doAction – metoda, w której zawarta jest logika biznesowa,
      • doViewBefore – metoda wywoływana przed wykonaniem metody doAction; można w niej wykonywać dowolne zmiany na ekranie, np. umieścić okienko dialogowe lub okienko statusu,
      • doViewAfter – metoda wywoływana po wykonaniu metody doAction,
      • doViewError – metoda wywoływana w przypadku wystąpienia błędu w wykonaniu metody doAction.

OpenMobster wyróżnia następujące rodzaje komend:

      • LocalCommand – do uruchamiania niewielkiej logiki biznesowej, która zakończy się w krótkim czasie,
      • AsyncCommand – do uruchamiania większej logiki biznesowej, po jej uruchomieniu interfejs nie czeka na zakończenie wykonywania logiki,
      • RemoteCommand – do uruchomienia większej logiki biznesowej, po jej uruchomieniu interfejs czeka na zakończenie,
      • PushCommand – służy do zaprogramowania, jaka akcja ma się wykonać w momencie odebrania notyfikacji push z serwera.

Model
EventBus – ukrywa przed programistami szczegóły obsługi zdarzeń GUI, komunikacji pomiędzy GUI a poleceniami. Wykorzystanie tego interfejsu pozwala skupić się nad rozwojem kodu biznesowego, a nie oprogramowaniem niskopoziomowego natywnego interfejsu.
Navigation – mechanizm zarządzania ekranami, jakie są prezentowane dla użytkownika.
Internationalization – mechanizm zarządzania lokalizacjami narodowymi aplikacji.

Zaproponowane API Frameworka jest wspólne dla systemów Android i iOs. Wszystkie dostępne klasy oraz metody mają swoje odpowiedniki w obu środowiskach. Wykorzystanie tego frameworku nie jest niezbędne do tworzenia aplikacji. Wówczas jednak należy samodzielnie zająć się wszystkimi aspektami inicjalizacji danych, synchronizacji wątków i odświeżania widoku użytkownika.

Synchronizacja danych

Jedną z najważniejszych funkcjonalności OpenMobstera jest wsparcie dla synchronizacji danych pomiędzy urządzeniem a chmurą. Wyróżniamy następujące rodzaje synchronizacji, wspierane przez platformę:

      • dwukierunkowa – zmiany danych są synchronizowane zarówno na urządzeniu, jak i w chmurze,
      • jednokierunkowa – zmiany są synchronizowane jednokierunkowo, z chmury na urządzenie lub z urządzenia na chmurę,
      • inicjalizacja – podczas pierwszego połączenia urządzenie może być zasilane inicjalnym zestawem danych.

Dodatkowo podczas przerwania połączenia sieciowego dostęp do wszystkich danych jest realizowany w trybie offline. Po przywróceniu połączenia dane są synchronizowane z serwerem. Wszystkie te operacje wykonują się automatycznie i nie wymagają dodatkowego oprogramowania. Aby rozpocząć synchronizację danych, musimy wykonać następujące kroki:

      1. utworzyć klasę implementującą interfejs MobileBean; dane zawarte w obiektach tego typu będą mogły być synchronizowane
      2. utworzyć klasę implementującą interfejs Chanel; za jej pośrednictwem obiekty typu MobileBean będą synchronizowane
      3. dodać w pliku META-INF/openmobster-config.xml wpis informujący o dodaniu nowej klasy typu Chanel.

Jak widać, implementacja synchronizacji nie jest trudna. Środowisko OpenMobster uwalnia nas od potrzeby dbania o aktualność danych. Wszystko odbywa się automatycznie, przez co ta funkcjonalność jest jedną z najwartościowszych.

Konsola zarządzająca

Konsola zarządzająca nie ma zbyt wielu możliwości. Dostępne są podstawowe mechanizmy zarządzania kontami użytkowników i aktywnymi urządzeniami. Z ciekawszych funkcjonalności warto wymienić możliwość zdalnego blokowanie urządzenia lub usunięcia wszystkich danych. Można to potraktować jako wstęp do mobilnych rozwiązań korporacyjnych. Zarządzanie z jednego miejsca wszystkimi urządzeniami mobilnymi w firmie jest bezcenne dla korporacji. Kradzież lub zgubienie smartfonu przez pracownika nie będzie już narażać firmy na utratę danych. Administrator jednym „kliknięciem” może wyczyścić pamięć komórki lub zablokować ją. Można w tym miejscu wyobrazić sobie znacznie więcej potrzebnych funkcji, np. lokalizację urządzania, aktualizację oprogramowania korporacyjnego, audyt zainstalowanych aplikacji itd. Liczę, że wraz z rozwojem platformy przybywać będzie funkcjonalności w tym zakresie.

Funkcjonalności konsoli zarządzającej:
tworzenie kont – możliwość tworzenia kolejnych kont administratora; konto musi zostać zaakceptowane przez inne aktywne konto administracyjne;
aktywowanie/dezaktywowanie urządzenia – jeśli urządzenie zostanie zaktywowane, nie będą dostępne żadne serwisy w chmurze;
re-assign – urządzenie jest przypisane do jednego użytkownika, za pomocą tylko tego konta można się zalogować do systemu; można zmienić użytkownika przypisanego do urządzenia;
konfiguracja mechanizmu Push – panel do konfiguracji mechanizmu push na urządzeniach firmy Apple.


Podsumowanie

Biorąc pod uwagę, że środowisko OpenMobster jest udostępniane na zasadach open source, to zakres funkcjonalności jest na zadawalającym poziomie. Na pewno konkurencyjne płatne platformy są o wiele bardziej rozbudowane. Są też oczywiście dostępne po wniesieniu pewnej opłaty, zazwyczaj dość pokaźnej. Istnieją jednak zastosowania, w których projekt ma mały budżet i nie jest potrzebny od razu ogromny kombajn. Zastosowanie mniejszej, aczkolwiek w pełni funkcjonalnej platformy MAEP może nam całkowicie wystarczyć. Do zalet środowiska OpenMobster można zaliczyć:

    • liczbę funkcjonalności,
    • mechanizm do tworzenia szablonu aplikacji,
    • pracę w środowisku Android, iOs, Titanium,
    • możliwość tworzenia aplikacji natywnych (Android lub iOS) lub hybrydownych (PhoneGap),
    • dystrybucję na zasadach licencja EPL (Eclipse Public License 1.0), otwarty kod
    • dokumentację, przykłady, zestaw demonstracyjnych aplikacji.

Wady platformy:

    • stara technologia implementacji (JBoss 5.1),
    • uciążliwy sposób integracji wygenerowanego szablonu aplikacji z IDE Eclipse,
    • niezbyt duże community,
    • brak informacji na stronach producenta o dalszych planach rozwoju.

Nie poruszyłem w artykule możliwość programowania w iOs, PhoneGap czy środowisku Titanium Studio. Jest to kolejna ogromna zaleta platformy OpenMobster. Mam nadzieje, że w kolejnych artykułach przedstawię możliwości integracji z innymi środowiskami programistycznymi.

Odnośniki

http://www.openmobster.org

http://openmobster.blogspot.com/

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *