Internet dla rzeczy… i ludzi

W zasadzie wszystko co nas otacza od zawsze generuje potężne ilości danych. Dotychczas mogliśmy tylko zauważać to zjawisko, ponieważ poziom technologiczny nie pozwalał na zbieranie, przetwarzanie i interpretowanie wszystkich tych informacji. Teraz dzięki nowoczesnym rozwiązaniom IT wdrażanym na potrzeby składowania, analizy i przesyłu danych, w końcu możemy wyciągać wnioski z eksabajtowych odmętów danych.

iot-big-1

Zacznijmy jednak od tego, czym jest Internet of things, czyli Internet rzeczy? Co znaczy to określenie? Mamy bowiem do czynienia z nieco niefortunnym tłumaczeniem. Internet rzeczy bowiem kojarzy się z ogólnie zdefiniowaną siecią, którą wykorzystują jakieś przedmioty. W zasadzie jest to prawda. Jednak takie uproszczenie jest wysoce krzywdzące dla idei IoT, która jest daleko bardziej rozwinięta. To tak jak byśmy powiedzieli, że internet jest siecią dla komputerów, a nie dla ludzi. Podobnie jest z IoT, którego definicja powinna rozszerzyć pojęcie Internet rzeczy w Internet dla rzeczy. Niby drobna zmiana, jedno słowo, a zdecydowanie łatwiej sobie to wyobrazić w przestrzeni – internet dla ludzi i internet dla rzeczy. Lekko niepokojące? Zaczyna zlatywać Skynetem, Terminatorem i Matriksem? Dobrze, mamy trop.

Coraz więcej urządzeń

Internet dla urządzeń. Dlaczego? Otóż już kilka lat temu okazało się, że podłączonych do globalnej sieci jest ponad miliard ludzi i… 1,8 miliarda urządzeń. Zatem przeważająca klientela buszująca w internecie jest nieco mniej białkowa, niż nam się pierwotnie wydawało. Co więcej trend jest wzrostowy. O ile chyba każdy z czytelników słyszał o prawie Moore’a, o tyle pytanie o prawo Metcalfe’a zadane w szerszym gronie pozostawia zazwyczaj niezręczną ciszę na sali. Wyjaśnijmy – podobnie jak prawo Moore’a, które mówi o tym, że ekonomicznie optymalna liczba tranzystorów w układzie scalonym, zwiększa się w kolejnych latach zgodnie z trendem wykładniczym, prawo Metcalfe’a odnosi się do liczby połączeń w systemie teleinformatycznym, która to rośnie proporcjonalnie do kwadratu liczby urządzeń. Oznacza to ni mniej, ni więcej tyle, że liczba urządzeń i połączeń będzie rosła geometrycznie. Ludzi będzie natomiast przybywać raczej liniowo.

https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/DIKW_Pyramid.svg/2000px-DIKW_Pyramid.svg.png

Zatem w rok 2025 wejdziemy z kilkoma tysiącami urządzeń przypadającymi na jednego człowieka. Krzemowa klientela będzie niekwestionowaną większością, pod którą dostosowane będzie większość usług. W imię nieśmiertelnego „nasz klient nasz pan” idea IoT ma zatem za zadanie przygotować nas, nasze infrastruktury i oprogramowanie do nadchodzącej ferii barw i smaków.

Nasuwa się myśl, że internet dla rzeczy jest nieco szalonym pomysłem – bo przecież ludzie komunikują się, omawiają swoje akcje i reakcje, odczucia, dzielą się nimi, wnioskują i na ich podstawie reagują bądź nie. Przedmioty natomiast to ciała martwe, bez zmysłów… ale, czy aby na pewno? Człowiek ma pięć podstawowych zmysłów – wzrok, smak, węch, dotyk, słuch. Urządzenie natomiast może mieć tyle samo, lub dużo, dużo więcej – mikrofon, reprezentuje słuch, sensory substancji chemicznych stałych oraz ciekłych to smak, lotnych – węch, czujniki nacisku – dotyk, kamera – wzrok. Pięć na pokładzie. Idźmy dalej, akcelerometr to równowaga, sensory ciśnienia, dymu, ognia, podczerwieni itd. Maszyna może mieć wiele „zmysłów”. Dorzućmy do tego tożsamość reprezentowaną przez niepowtarzalny znaczniki, dzięki którym możemy zidentyfikować ją i odróżnić od innych. I jeszcze interfejs komunikacyjny niezbędny do interakcji z otoczeniem i innymi urządzeniami… Voilà! Przed państwem mikrosensory z modułem komunikacyjnym. Deus ex machina nowoczesnego IT.

Tysiące zastosowań

Dobrze, wiemy że jest ich dużo, są złożone, rozpoznawalne i można się z nimi porozumieć. Pojawia się jednak pytanie – do czego nam to jest potrzebne? Zastosowań są tysiące. Rozpoczynając od monitoringu zdrowia pacjentów, czy nawet konkretnych elementów (protezy, rozruszniki serca itd.), przez systemy obsługi logistyki i przewozu towarów, po urządzenia które raportują aktualnie wolne miejsca na parkingu firmowym wprost do nawigacji montowanej w samochodzie. Do tego dochodzi monitoring budynków, ich stanu sanitarnego, technicznego i ppoż., oraz wiele, wiele innych zastosowań. Siłą systemów stanie się agregacja i korelowanie danych, które pozwolą na zdecydowanie dokładniejsze opracowywanie zależności pomiędzy zachodzącymi zjawiskami – np. powstawanie ulicznych korków, a godziny otwarcia pobliskich sklepów, występujących w nich promocji, wykształcenia kupujących. Finalnie zaowocuje to doprecyzowaniem aktualnych modeli opisujących, lub przewidujących zachowania otaczającego nas świata. Potężne ilości danych zbierane przez systemy IoT będą owocowały wzorcami, które będzie można zapisać w postaci algorytmów i wdrażać do systemu tak, aby pewne funkcje realizować w relacji maszyna do maszyny (M2M), a nie tak jak jest teraz maszyna do człowieka (M2P).

Początki tego zjawiska można obserwować już teraz – bransoletki badające sen i budzące w najlepszym dla nas momencie, personalni asystenci – Siri, Cortana, Google Now, Amazon Echo, którzy potrafią powiedzieć nam, że czas już wyjść z domu bo możemy nie zdążyć na najbliższe spotkanie. Przykłady można długo mnożyć, ale wydaje się, że na kanwie tych kilku opisów, można sobie wyobrazić co propagatorzy idei IoT chcą osiągnąć. Powyższe rozwiązania cierpią na choroby wieku dziecięcego, ale właśnie wszędobylskie sensory, dokładnie badające świat nas otaczający, nieprzerwanie raportujące do głównego ośrodka, sprawią, że modele działania tych systemów będą dokładniejsze i przerażająco precyzyjne. Teraz otacza nas zaledwie kilka urządzeń. Za 10 lat będzie ich kilkaset razy więcej. Zatem nasz dziś nieco ślepy, głuchy i kulawy asystent personalny będzie miał jak hinduska bogini Kali dwie, cztery, osiemnaście czy też tysiąc rąk, oraz setki oczu i uszu.

Idea automatyzacji i eksploracji danych

Warto się tutaj zatrzymać i popatrzeć na tematykę IoT poprzez pryzmat piramidy DIKW (u podstawy znajduje się Data, dalej Information, Knowledge, Wisdom), która z pewnymi drobnymi zmianami wpływa na ewolucję idei automatyzacji i komputeryzacji od początku lat 80 ubiegłego stulecia.

https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/DIKW_Pyramid.svg/2000px-DIKW_Pyramid.svg.png

Tak więc mamy dane. Ogromne ilości danych i technologie takie jak HDFS, MooseFS, Lustre czy Ceph, które pozwalają na ich w miarę elastyczną obsługę w lokalnym centrum danych, lub usługi cloud – Amazon S3/Glacier, Azure HDInsight, czy też Google BigQeury. Powyższe systemy kładą ogromny nacisk na skalowalność środowiska, co pozwala na de facto nielimitowane horyzontalne rozbudowywanie pojemności – tzn. więcej węzłów klastra, a nie większe węzły. Dzięki temu mamy do dyspozycji teoretycznie nielimitowane miejsce na dane. Jednak czyste, nieprzetworzone dane nie są wiele warte. Nową ropą jest informacja. Jednak aby wyłuskać z tera/peta/exabajtów danych interesujące nas informacje, potrzebujemy potężnej mocy obliczeniowej oraz wzorców poszukiwanych informacji. Przyjrzyjmy się zatem ogromnej gałęzi dotyczącej eksploracji danych tzw. data mining i wszelkich teorii oraz algorytmów, które w ramach tej dziedziny już od lat 60 poprzedniego wieku były rozwijane. Eksploracja danych jak się okazuje nie jest sprawą prostą, a wykrywanie wzorców to kawał potężnej matematyczno-statystyczno-analitycznej pracy. Metod są tysiące. Samych rozwiązań opensource mamy ponad 30, a komercyjnych, tych jawnych, grubo ponad 100.

Pozyskiwanie wiedzy z baz danych, czy też ze zbiorów danych daje nam informacje której szukamy. Jednak aby z tej informacji skorzystać potrzeba wiedzy… cóż jest bowiem warta jest sucha informacja że światło w dużym pokoju jest włączone? Dopiero gdy połączymy ją z wiedzą o tym, że w pokoju niema nikogo, a zapalone światło generuje koszt, można wykonać jakąś akcje. Do wykonania akcji potrzeba zatem zrozumienia informacji, którą można nazwać wiedzą. Dzięki temu światło w pokoju w którym nie ma, można ludzi zgasić. Mądrość jednak to coś poziom wyżej – to zrozumienia czy zgaszenie tego światła jest dobre dla ogółu teraz i dobre w przyszłości (np. czy prąd wzbudzenia nie jest wyższy od ogólnego zużycia). Może lepiej zastosować jakiś czas karencji, może wykrywanie ruchu, monitoring osoby czy śpi itd. Tak więc z danych można wyłuskać informacje, z których to możemy wyciągać wnioski i podejmować akcje, ale czy nasze akcje są mądre, to już zależy od skorelowania tych danych z milionami innych, z przewidywaniem, z doświadczeniem, z wnioskowaniem ze swoich własnych i innych akcji. Wydaje się oczywiste? Dla człowieka tak. Natomiast idea IoT ma to wdrożyć na poziomie maszyny. Oczywiście nie jednej, a wielu tysięcy mikroczujników z modułem komunikacyjnym, raportujących do centrum przetwarzania, gdzie na podstawie wypracowanych wcześniej wzorców i modeli, oraz znaczącej mocy obliczeniowej, będą podejmowane decyzje. A te następnie przekazywane będą w dół, z powrotem do sensorów odpowiedzialnych za podjęcie lub nie zadanej akcji.

Operacje w chmurze

Idea chmury obliczeniowej, tak usilnie propagowana przez zastępy wojowniczych marketingowców, zaowocowała tym, że niemal każdy, bezproblemowo może sobie wyobrazić rozproszone w chmurze centrum przetwarzania danych spływających z milionów urządzeń końcowych IoT. Jeżeli nie w formule SaaS (Software as a Service) to choćby jako relatywnie niekończące się pule zasobów mocy obliczeniowej, czy też pojemności dyskowej. Podobnie jest z oprogramowaniem – może jedynie dobór odpowiedniego języka programowania, frameworku itp. jest pewnym wyzwaniem, tym niemniej aplikacja to coś, co da się wytworzyć bazując na aktualnie dostępnych komponentach. Problemem natomiast jest komunikacja. Nie chodzi tutaj o przepustowości, które oczywiście też mogą stać się pewnym ograniczeniem, jednak nie stanowią raczej tak wielkiego problemu, ale np. straty pakietów, niestabilność łącza, zmienna liczba końcówek i ich nieprzerwana zmiana lokalizacji. Aby to lepiej zobrazować przyjrzyjmy się hipotetycznemu środowisku, w którym żyje stadko urządzeń IoT. Przede wszystkim jednak zacznijmy od tego, skąd takie oto mikroskopijne urządzenie (patrz zdjęcie z początku naszego artykułu) ma energię aby cokolwiek zrobić?

Sposoby są trzy. Pierwszym i relatywnie najprostszym jest stałe źródło zasilania, gdzie opcji jest wiele – sieć, solar, silnik itp. Drugi to bateria, co też jest logicznym i w miarę naturalnym, natomiast mało wygodnym rozwiązaniem. Co jakiś czas trzeba będzie ją ładować lub wymieniać, a co najgorsze ma ona limitowaną pojemność zależną od wielkości. Ostatnim sposobem jest zasilanie przez fale radiowe, np. Bluetooth Smart Technology, czy też idea Wi-Fi backscatter. Brzmi trochę nieprawdopodobnie, jednak idea która się za tym kryje została ogłoszona już w 1826 roku przez francuza o elektryzująco brzmiący imieniu André-Marie Ampère jako Prawo Ampera, które to określa relację między polem magnetycznym i prądem elektrycznym, który wytwarza to pole. Dorzucając rozwinięcie tego prawa przez Maxwella oraz praktyczne eksperymenty Tesli (dotyczące bezprzewodowego przesyłania energii), dostajemy pełny przepis na to jak fale radiowe, dotychczas służące do samego nadawania i odbierania, można również wykorzystać do zasilania urządzenia poprzez moduł komunikacyjny. Dodatkowo przyjmując za stałą fakt, że każde urządzenie w idei IoT będzie wyposażone w moduł komunikacyjny, dostajemy zasilaną permanentnie i połączoną z siecią maszynę. Rozwiązanie to wydaje się idealne, jednak ma pewne ograniczenia. Najważniejszym z nich jest fakt, że tej energii jest bardzo mało. Przekłada się to bardzo limitowanymi możliwościami wydajnościowymi tych malutkich urządzeń – mamy niskie taktowanie procesora i niewielką pojemność pamięci. Wpływa to bezpośrednio na architekturę oprogramowania tworzonego dla urządzeń IoT. Musi być ono uruchomione tworzone z użyciem bardzo wydajnego, wysoce zoptymalizowanego języka programowania – jeżeli nie zostanie opracowane nic innego, czeka nas wielki powrót C i assemblera! Czyli na warstwie centralnego systemu będą stosowane nowoczesne, opuchnięte w wypracowane przez dziesięciolecia funkcje frameworki, a do obsługi urządzeń brzegowych wymagane będą szybkie i bardzo małe programy, odpowiedzialne za realizację czterech podstawowych wzorców interakcji urządzenia brzegowego z centralnym lub lokalnym punktem przetwarzania – telemetrii, powiadomień, zapytań i komendy (patrz rysunek poniżej).

http://download.microsoft.com/download/B/5/F/B5F36BE7-C383-4CFB-AA54-3DB5E1B1DDAF/Building%20the%20Internet%20of%20Things.docx

Standardy komunikacji to podstawa!

Telemetria będzie jednokierunkową komunikacją urządzenia brzegowego, związaną np. z przesyłaniem aktualnego odczytu z czujnika (stężenie CO^2, jasność w pomieszczeniu itp.). Urządzenie brzegowe będzie również mieć możliwość odbierania powiadomień/wiadomości z centrali, np. centralny system przetwarzania uzna, że odczyt telemetryczny otrzymany kilka chwil temu jest poza skalą i trzeba wyświetlić powiadomienie. Urządzenie musi mieć również możliwość odpytania systemu telemetrycznego, aby otrzymać dodatkowe dane, oraz obsłużyć komendy, które odpowiadają za bezpośrednią interakcję z fizycznym otoczeniem – zgaś światło, otwórz garaż itp. Aktualnie opracowywane są standardy pozwalające na to, aby każdy producent mógł dostarczać już oprogramowane urządzenia, które zgodnie z uzgodnioną normą będzie w stanie komunikować się z centralnym systemem przetwarzania. Jednak na razie komunikacja z urządzeniami brzegowymi to wolna amerykanka. Mówimy tutaj o wszystkich warstwach modelu OSI. Zaczynając od wyższych warstw i protokołów odpowiedzialnych za zarzadzanie, możemy spotkać się z OMA-DM i OMA-M2M. Przesyłanie wiadomości może odbywać się przez API, HTTP/s, AMQP, MQTT, CoAP i wiele innych specyficznych rozwiązań. Serializacja danych to JSON, BSON, Apache Avro i również horda innych autorskich konceptów. To natomiast są warstwy aplikacji, prezentacji i sesji – czyli bułka z masłem. Elementy, które są definiowane stricte programowo. Prawdziwy hardcore zaczyna się natomiast niżej, ponieważ dla wspomnianych ostatnich trzech warstw trzeba zapewnić transmisję – zunifikowaną, stabilną, odporną na błędy i przekłamania, z adresacją, routingiem, przełączaniem pakietów, obsługą różnych mediów i form komunikacji. To jest ogromne wyzwanie, ponieważ w idei IoT mamy permanentny problemy z energią, stabilnością łączą, mocą obliczeniową i co najważniejsze skalą.

(http://download.microsoft.com/download/B/5/F/B5F36BE7-C383-4CFB-AA54-3DB5E1B1DDAF/Building%20the%20Internet%20of%20Things.docx

Warto zwrócić uwagę, że urządzenia IoT będą komunikować się ze sobą, z centralą oferującą wymagane serwisy, oraz miedzysystemowo w obrębie centrali. Wszystko to musi być spójnym, działającym bezkonfliktowo organizmem.

Opracowanie odpowiednich protokołów w świecie IoT to jedno z najtrudniejszych i najbardziej istotnych zagadnień. Aktualnie producenci mają na tapecie wiele pomysłów, które na każdej z czterech pierwszych warstw modelu OSI krążą wokół TCP, UDP, non-ip, IPv6, RPL, 6LoWPAN, PLC, 802.15.4 itd. itd.

http://download.microsoft.com/download/B/5/F/B5F36BE7-C383-4CFB-AA54-3DB5E1B1DDAF/Building%20the%20Internet%20of%20Things.docx

Najbardziej intersujący wydaje się Personal Area Network, gdzie opcji na wstępnie jest kilkanaście (sic!). Mnogość mediów, specyfika ich działania i różnorodność urządzeń jest ogromnym wyzwaniem. Natomiast istotne jest to, że powoli zaczynają się pojawiać RFC dotyczące idei IoT, co w perspektywie lat może skutkować pojawienie się standardu, którego obecnie brak.

Przemilczane bezpieczeństwo

Szeroko opisaliśmy zagadnienia dotyczące komunikacji. IoT to jednak zdecydowanie szerszy temat. Co z kwestią na razie nieco przemilczanego bezpieczeństwa? Nie chodzi tutaj nawet o systemy zarządzania, przesył i przetwarzanie danych – na to są jakieś pomysły w postaci TLS/SSL, TPM do składowania kluczy, IPsec zaszytego w IPv6 i innych rozwiązań bezpieczeństwa systemów przetwarzania.  To rozwiązania dodatkowe, które można uruchomić, ale nie są wymagane. Wciąż jednak brak ujęcia tego wszystkiego w standardzie. Druga kwestia dotyczy bezpieczeństwa na nieco innym poziomie – bezpieczeństwa konkretnej jednostki ludzkiej i poszanowania jej praw. Setki czujników dookoła każdego z nas i np. dane medyczne płynące wartkim strumieniem to zarówno ogromna forma nacisku, jak i potężna wartość marketingowa. IoT stworzy oceany danych będące Złotym Graalem dla wielu gałęzi rynku. Bezpieczeństwo technologiczne to jedno, bezpieczeństwo etyczne i ukryty totalitaryzm to drugie.

IoT stanie się topowym trendem najbliższych lat, nie tylko ze względu na wyzwania technologiczne z jakim będzie trzeba się zmierzyć. Stanie się tak, ponieważ otwiera on drzwi do wiedzy której nie da się pozyskać w żaden inny sposób. Zmapowanie człowieka i jego zachowań, przyzwyczajeń i lęków, przy odpowiednej metodzie i ogromnej ilości danych, stanie się wyłącznie kwestią przeliczenia prawdopodobieństwa. Człowiek ubrany w model zachowań może stać się tego modelu więźniem. Nie trudno sobie wyobrazić sytuację, że opaska fitness monitorująca nasz puls wykrywa jego raptowną zmianę, dane skorelowane przez centralny system z informacjami o naszym wieku, diecie, aktywności fizycznej i historii chorób dają wniosek że za chwile z prawdopodobieństwem 99,6% będziemy mieli zawał serca. System powiadamia prywatną służbę zdrowia. Karetka już jest w drodze, o czym informuje nas telefon. Padamy na ziemię, bo tlen w naszym krwiobiegu nie jest w takiej ilości w jakiej być powinien. Ból jest ogromny, przed oczami ciemnieje. Przeżywamy jednak, a w domu czeka już na nas aneks do umowy ubezpieczenia zwiększający stawkę o kilka procent, bo ryzyko śmierci z powodu ataku serca znacząco wzrosło. Kij ma zawsze dwa końce… Bo to prawda, że IoT to fenomenalna idea, która może na wielu płaszczyznach uprościć nasze życie, pytanie tylko jakim kosztem.

Artykuł pierwotnie pojawił się w magazynie IT Professional.