Nesnelerin İnterneti: IoT-Ignite ile Uçtan Uca IoT (Fog Computing) Programlama

· ARDIC | Uğur GELİŞKEN
4,4
21 de recenzii
Carte electronică
491
Pagini

Despre această carte electronică

IoT-Ignite platformu 10 yılı aşkın emek ve birikimin sonucu olarak gerçekleşmiş bir projedir. IoT (Internet of Things - Nesnelerin İnterneti) yaygın olarak “bir sensörden gelen verinin internet üzerinden buluta gönderilmesi ve burada gösterilmesi” olarak algılanmaktadır ki bu tanım aslında IoT’nin en basit tanımı, alfabesinin ilk harfidir. Aslında, IoT’nin günümüzde teknolojinin

dokunduğu her alanı adreslediğini söyleyebiliriz. Örneğin hepimizin kullandığı akıllı telefonlar aslında gelişkin IoT cihazlarıdır.


IoT’ye giriş olarak tanımlayabileceğimiz ilk kuşak çözümler, hem ülkemizde hem de tüm dünyada en çok referans alan tanım oldu. Maker (hobi geliştiriciler) dünyasının popülaritesinin artmasıyla birlikte Arduino benzeri geliştirme kartı edinen ve bununla bir-iki sensörden gelen bilgiyi okuyan, sonrasında bu veriyi İnternet ortamında bir sunucuya taşıyıp web sayfasında renkli grafiklerle

gösterebilen çalışmalarla, ilk IoT platformu ve çözümleri piyasadaki yerlerini almış oldu.


Bir çözüm, o ana kadar çalışılmamış bir alanda bilgi edinilmesini sağlıyorsa ticari bir değer de taşıyabilir. Örneğin, bir fıçıdan akan içeceğin debisinin okunması ve o içecekten ne kadar satıldığının ölçülmesi gibi bir çalışma, içecek tedarikçisine stok tükenmeden sipariş talimatını otomatik veriyorsa “çözüm” olarak adlandırılabilir; çünkü işlevseldir ve ticari bir değer taşıyabilir.


Küresel pazarda buna benzer şekilde çalışan 1000’e yakın IoT çözümü (platformu) olduğu bildiriliyor. Bu tip çözümler ticari bir değer taşımakta ve basit çözümlerle daha fazla müşteriye ulaşmak için çözümlerini “platform” olarak pozisyonlamaktalar. Ancak bu tanım, platform olmaktan çok verilen çözümü adreslemektedir. Genel amaçlı platform ise, tanımını aşağıda verdiğimiz gibi daha karmaşık ve gelişkin bir mimari ve teknolojiyi gerektirmektedir.


Bu kitabın konusu olan IoT’nin, çalışma altyapı platformu olan “bulut”dan kısaca bahsederek devam edersek, kendisini organize edebilen ana katmanları ve fonksiyonel yapı taşları olan ve ölçeklenebilir olarak çalışabilen bir yapıdır. Bulut teknolojisi alfabesinin A’sı olan bu tanımdan sonra bu yapı çok derin ve karmaşık bir yöne doğru evrilir. Bulut üzerinde çalışması istenen sistem,

çözüm ve uygulamaların; gerçek anlamda “bulut”un katma değerlerini kullanabilmesi için “bulut” üzerinde “cloud native”olarak kodlanması gerekmektedir. İstemci-sunucu (client – server) mimarisinde tasarlanmış klasik çözümün, fiziksel sunucu yerine herhangi bir bulut servisi sağlayıcıdan kiralanan sanal bir makina üzerinde çalıştırılması, arzu edilen verimi ve ölçeklenebilirliği sağlayamamaktadır.


IoT platformu nedir sorusuna bakmadan önce platform nedir sorusuna cevap bulmaya çalışalım.


Platform, teknik olarak içinde birden çok ürünü oluşturmaya yarayacak parçaları bulundurur ve herhangi bir dikey çözüm yerine çözümler kümesinin ortak paydasını adresleyebilen bir yapıya sahiptir. Böylelikle, platform kullanarak özellikli bir çözümü oluşturmak, tek başına bir çözümü oluşturmaya nazaran çok daha kolay olur. Platform mimari felsefesi birçok çözüme hizmet verecek şekilde düşünülerek tasarlanmış olmalıdır.


Söylenene uygun olarak IoT platformu, nesnelerin internetinin ihtiyaç duyacağı temel yapı taşlarını barındırmak zorundadır. Bu temel yapı taşları şöyle sıralanabilir: iletişim katmanı, çekirdek IoT fonksiyonları, analiz ve uygulama katmanı, dış dünya ile iletişimi sağlayacak zengin arayüz katmanı.


İletişim katmanı IoT platformunda nesneler ile platform arasındaki iletişiminin sağlandığı ve yönetildiği katmandır. Bu katmanda, değişik iletişim protokollerinin (TCP, HTTP, MQTT, XMPP, vb.) desteklenmesi gerekir. Bunun yanında daha karmaşık konularda da destek verebilmesi gerekir;örneğin, nesnelerin bir güvenlik duvarı (firewall) ve NAT (network address translation) arkasında olması durumunu yönetebilmesi, nesne çevrimdışıyken (offline) gönderilmiş bir komutun saklanıp doğru bir kuyruklama mekanizmasıyla nesne çevrimiçi (online) olduğunda gönderilmesi gibi senaryoları karşılayabilmesi de beklenir. Nesnelerin sayısı on binlere, yüz binlere ulaştığında, iletişim katmanı bu yüksek çift yönlü trafiği performans kaybı yaşamaksızın yönetebilmelidir.


Çekirdek IoT fonksiyonları başlığı altında şu temel yapıları sıralayabiliriz; nesnelerin uzaktan ayarlanabilmesi, nesnelerin her birinin benzersiz bir tanım ile ayrıştırılabildiği altyapısının olması, bu nesnelerden gelen bilginin kayıpsız saklanması ve veri saklama yapısının elastik ve ölçeklenebilir bir yapıda olması, nesneler ile bulut arasında güvenli iletişimin sağlanması, nesnelerin üzerinde koşmakta olan yazılımların gerektiğinde uzaktan ve güvenilir bir şekilde güncellenebilmesi ve elbette binlerce, yüz binlerce nesnenin sisteme otomatik olarak güvenli bir şekilde dahil olabilmesi... Tüm bu özellikleri sağlayacak mekanizmaların aynı zamanda istenen çoklukta nesnenin dahil edilebileceği, ölçeklenebilir bir yapı içinde geliştirilmiş olması vazgeçilmezdir.

Analiz ve uygulama katmanını belki de bir IoT platformunun sağladığı fayda modelinin en öne çıktığı katman olarak düşünebiliriz. Burası toplanan bilginin işlendiği ve sonuç veya rapor ürettiği altyapı katmanıdır. Veri analiz edilir, görselleştirilir, karmaşık olay işlemeden, yapayzeka katmanından geçer. Veri bu fonksiyonlardan sonra sistem üzerinde bir eylemi tetikleyebilir. Burada karmaşıklığı fazla fonksiyonları işaret ediyoruz; yüz binlerce nesneden gelen bilginin gerçek zamanlı veya gerçek zamana yakın şekilde işlenmesi ve karar verilebilmesi gerçek anlamda ölçeklenen bir yapıyı gerektirir.


Bunların yanı sıra, edge-computing (kenarda bilgi işleme), nesnelerin internetinin yükselen kavramı olarak ortaya çıkıyor. Nesneler topladıkları veriyi platform bulutuna göndermeden önce kendilerine fiziksel olarak yakın bir yere (örneğin bir gateway’e veya gateway görevi üstlenmiş herhangi bir cihaza) gönderir. Bulut üzerinde gerçekleşecek veri analizi ve hatta karmaşık olay işleme gibi bazıişilemler bu katmanda yapılabilir. Böylelikle anlık veri, büyük veri denizine eklenmeden önce sonucunu üretip görevini tamamlayabilir. Hatta nesne ile platform arasında internet bağlantısı olmadığı durumlarda bile veri kayıt altına alınabilir, edge-computing ile veri eş zamanlı olarak işlenebilir ve önceden tanımlanmış karar mekanizmaları yerel olarak işletilebilir. Yapay zeka

teknolojisinin bu katmanda yapılabiliyor olması, örneğin eğitilmiş veri setinin bu katmanda kullanılabilmesi ve gelen veri üzerinden sonuç (inference) çıkarılması gibi fonksiyonların da bu katmana taşınması giderek gereklilik halini alıyor.


Elbette edge-computing, IoT platform mimarisinin çok daha yetkin özelliklere sahip olmasını da gerektirmektedir. Edge compute dediğimizde nesneye yakın, işlem yapabilen bilgisayar katmanından söz ediyoruz; bunu aynı zamanda dağıtık bir bilgisayar mimarisi olarak da tanımlamak mümkün. Üzerinde değişik algoritma ve servislerin koştuğu sahaya yayılmış binlerce cihazın

yönetilebilmesi, üzerinde çalışan servislerin güncel ve doğru çalışmasının sağlanması da gerekmektedir. Bunun yanında, edge-compute katmanında nesnelerin doğrudan bu katmana bağlanabilmesi için, gerekli tüm iletişim protokollerini desteklenmesi (örneğin nesnelerin IoT platformuna olan bağlantısında olduğu gibi MQTT, TCP vb.), bu katmanın kendisinin otomatik nesne keşfi, güvenli kayıt ve iletişim yapabilecek alt yapıya sahip olması gerekir. Aynı zamanda bu bilgilerin IoT bulutunda yansımasının oluşturulması gibi arka planda çok önemli ve karmaşık işlevlerin de sağlanması gerekir.


Dolayısıyla edge-compute destekleyen IoT platformunda yukarıda söz ettiğimiz, IoT işlevlerine ek olarak, bu katmanı da hassasiyet ile yönetebilecek gelişmiş başka bir katmana daha ihtiyaç vardır; edge-computing platform ve servis yönetim katmanı. Bu katman belki de sahada mini sunucu da diyebileceğimiz binlerce, on binlerce bilgisayarı, bunların üzerinde koşan servisleri, bu minisunuculara bağlanmış sensörleri, erişim düzenekleri (actuator) de bu katman üzerinden sorunsuz olarak yönetebiliyor olmalıdır.


Arayüz katmanı ise geliştirici ve son kullanıcıların görsel olarak platform ile iletişiminin sağlandığı (HMI-Human Machine Interface) çoğunlukla web tabanlı arayüzlerden oluşur. Bunun yanında başka sistemler veya platformlar ile IoT platformunun iletişim kurmasını sağlayan iletişim metotlarının da olması gerekir. Günümüzde bu tip iletişimi sağlayan ana iletişim metotları

arasında REST-API’leri anabiliriz. Bu API’ler ile dış dünyadaki sistemin IoT platformundan istekte bulunarak sonuçlarını platformdan alabilir. Benzer şekilde IoT platformu da dış dünyadaki sistemlere çağrıda bulunabilir; örneğin sistemde bir olay gerçekleştiğinde IoT platformu SMS (short message service) gönderebilen bir sistem ile iletişime geçerek SMS gönderebilir. Buna ek olarak, dış dünyaya olay (event) gerçekleştiği zaman bunu anlık olarak aktarabilecek arayüz tiplerinin de lması gereklidir; günümüzde en çok kullanılan mekanizma, pub/sub (publisher/subscriber) iletişim modelidir. Bu model üzerinden IoT platformu dış sistemlere onların önceden belirttikleri olay tiplerini anlık olarak bildirilebilir.


Buraya kadar anlatılan işlevlere sahip bir IoT platformunu “full-stack IoT platform” (uçtan uca tam katmanlı nesnelerin interneti platformu) olarak tanımlıyoruz. En başta belirttiğimiz, globalde anılan 1000’e yakın IoT platformunu bu tanımla değerlendirdiğimizde ise sayının iki basamaklı bir sayıya zor ulaştığını görüyoruz.


Endüstri 4.0, günümüzde en çok konuşulan konuların başında geliyor. Konunun ticari ve sosyo-ekonomik boyutlarını bir kenara bırakıp teknik gereksinimler boyutuna bakacak olursak, Endüstri 4.0 için temel IoT platform mimarisinin edge-computing katmanlı full-stack IoT platform mimarisi olduğunu mutlaka belirtmemiz gerekir.


IoT platformunda olması gereken işlevlerin hepsinin doğal olarak ölçeklenebilirliği ise vazgeçilmez bir ön koşuldur. Bu nedenle bulut alt yapısı üzerinde koşan IoT platformunu oluşturan servislerin de “cloud-native” bir şekilde yazılmış olması gerekir.


Bu kitabın içeriğinde kullanılan ve servisleri tanıtılan IoT-Ignite platformu yukarıda tanımlanan “full-stack IoT platform” özelliklerine sahip bir IoT platformudur ve sözü geçen tüm katman ve işlevlere sahip bir yapıda tasarlanmıştır. Üzerinde birden fazla servis multi-tenant (çoklu kiracı) yöntemi ile çalışıyor ve yüz binlerce uç noktaya hizmet veriyor. IoT-Ignite platformu edge-compute katmanında (mini sunucular) gömülü Linux işletim sistemini desteklemekle birlikte Android işletim sistemini de geniş çapta destekliyor. IoT-Ignite Agent adı verilen Android uygulaması Google Play’den indirilebilir. IoT-Ignite agent için aslında bir uygulama demek doğru sayılmaz; onlarca servis ve uygulamacığın bir arada bulunduğu bir framework demek daha doğru olur. Bunun yanı sıra, Android üzerinde, IoT-Ignite agent ile birlikte çalışan ve kitabın değişik bölümlerinde örneklerle gösterilen birçok servis ve uygulama da var. Bunları kullanarak kolaylıkla Android üzerinde çalışan bir edge-gateway oluşturmak mümkün. Bu kitapta bunu gösteren onlarca örnek sistem paylaşılıyor.


Bu kitabın içeriğinde PilarOS (diğer adı TRDROID) adında bir işletim sistemine atıfta bulunuluyor. PilarOS, Google’ın Android Open Source Project (AOSP) projesinin güncel şeklini temel alıp ARM ve x86 tabanlı işlemciler için derlenmiş sürümüdür. ARDIÇ tarafından derlenen bu işletim sistemi, başka bir üreticinin “binary code”unu bulundurmaz ve IoT-Ignite platformunun içinde tanımlanan edge-gateway işlevini de içerir.


PilarOS’un içinde ARDIÇ tarafından geliştirilen AFEX ismi verilen bir çerçeve katman daha bulunur. AFEX (Android Frame Work Extensions), AOSP’de bulunan Android SDK ve API’lerineek olarak, 1500 üzerinde ek API arayüzü sağlamaktadır. Android işletim sisteminin boot-loader, kernel seviyelerinden en üst seviyede uygulama katmanlarına kadar tüm katmanlarının kontrol edilebilmesinin yanı sıra ek güvenlik yapılarını da sunmaktadır.


Android işletim sistemini IoT dünyasında edge-compute platformu olarak kullanan bilindik iki şirket var: birisi ARDIÇ diğeri de beklendiği gibi Android işletim sistemi sahibi olan Google Inc. Google, 2016 yılının sonunda AndroidThings adını verdiği bir işletim sistemini duyurdu. Bu işletim sistemi standart Android işletim sisteminin tersine açık kaynak olarak yayınlanmadı. İçeriği tamamen kapalı kaynak ve Google’ın desteklemeye karar verdiği belli donanımlar üzerinde çalışır binary şeklinde yayınlandı. AndroidThings ile PilarOS yapıları gereği birbirlerine benziyor ve IoT dünyasında isterleri karşılayabilecek şekilde tasarlanmışlardır.

AndroidThings’in duyurulduğu 2016 Aralık ayında, ARDIÇ’ın geliştirmiş olduğu PilarOS işletim sistemi yaklaşık bir senenin üzerinde sahada ve müşteri kullanımındaydı. Günümüzde her iki işletim sistemi, (PilarOS ve AndroidThings) temel işlevsellik açısından birbirine paralel şekilde evriliyorlar ve her ikisinin de kendisine ait güçlü yönleri var.


Diğer yandan IoT-Ignite platformu ve bu platformun parçası olan IoT-Ignite agent AndroidThings cihazlarını da destekliyor. (AndroidThings kapalı bir işletim sistemi olduğundan IoT-Ignite agent’in işlevselliği PilarOS’ta olduğu gibi geniş bir yelpazede değil, Google’ın SDK’sının yetenekleri ile sınırlıdır).


IoT-Ignite platformu üzerinde geniş bir yelpazede çözüm oluşturmak mümkün. Sunacağınız servisler başta örneği verilen boş fıçı anlama servisinden, karmaşık Endüstri 4.0, “connected vehicle” servis alanlarına kadar geniş bir hizmet ağını kapsayabilir. Geliştirme ortamında geliştiriciler için birçok örnek uygulama, bu kitapta da üzerinden geçilen örnek kullanım senaryolarına yer veriliyor. https://devzone.iot-ignite.com üzerinden geliştiricilerin kolaylıkla kendi servislerini geliştirebilmeleri için tasarlanmış IoT-Ignite platformunun sınırlı yeteneklerinin sunulduğu arayüze ulaşılabiliyor. Bu arayüz tamamen maker’ların veya servis geliştiricilerin kısa yoldan kendi servislerini hızla geliştirmesini sağlamaktadır. Diğer yandan, IoT-Ignite kurumsal arayüzü (https://enterprise.iot-ignite.com ), IoT-Ignite platformunun çok daha kapsamlı servislerine erişim sağlıyor. Bu arayüz ise kurumsal yaklaşımla; ölçeklenebilir ve sahada binlerce uç nokta ve servisin yönetilebilmesi için tasarlandı. Bu kitapta her

iki arayüzün kullanımı da örneklerle gösteriliyor. IoT’nin ne olduğunu detaylı olarak örnekleyen ve IoT-Ignite ile uçtan uca bir IoT platformunda neler yapılabileceği gösteren ve Türkiye’de bir ilk olan bu kitabın geliştiricilerin ufkunu açması ve dünyada IoT konusunda öncü bir konuma gelmemize faydasının olması bizim için büyük bir gurur kaynağı olacaktır.

Evaluări și recenzii

4,4
21 de recenzii

Evaluează cartea electronică

Spune-ne ce crezi.

Informații despre lectură

Smartphone-uri și tablete
Instalează aplicația Cărți Google Play pentru Android și iPad/iPhone. Se sincronizează automat cu contul tău și poți să citești online sau offline de oriunde te afli.
Laptopuri și computere
Poți să asculți cărțile audio achiziționate pe Google Play folosind browserul web al computerului.
Dispozitive eReader și alte dispozitive
Ca să citești pe dispozitive pentru citit cărți electronice, cum ar fi eReaderul Kobo, trebuie să descarci un fișier și să îl transferi pe dispozitiv. Urmează instrucțiunile detaliate din Centrul de ajutor pentru a transfera fișiere pe dispozitivele eReader compatibile.