Internet of Things (IoT) telah memperkenalkan revolusi baru dalam cara manusia berinteraksi dengan lingkungan sekitarnya. Dalam perkembangan teknologi ini, salah satu aspek yang paling penting adalah arsitektur yang mendasarinya. Salah satu literatur yang telah membahas arsitektur IoT adalah “Architecting the Internet of Things” oleh Zach Shelby dan Dominique Guinard.
Definisi
IoT merujuk pada jaringan perangkat fisik yang terhubung ke internet, memungkinkan pertukaran data dan kontrol yang efisien. Arsitektur IoT memainkan peran kunci dalam membangun kerangka kerja yang stabil dan efisien untuk memungkinkan komunikasi yang mulus antara perangkat.
Arsitektur IoT Menurut “Architecting the Internet of Things”
Dalam literatur ini, Shelby dan Guinard menguraikan arsitektur IoT menjadi beberapa lapisan utama:
1. Lapisan Perangkat (Device Layer):
Lapisan ini adalah rumah bagi perangkat fisik seperti sensor, aktuator, dan mikrokontroler. Perangkat ini mendeteksi atau mempengaruhi lingkungan fisik dan mengirimkan informasi ke lapisan berikutnya.
2. Lapisan Komunikasi (Communication Layer):
Lapisan ini bertanggung jawab atas pengiriman data dari perangkat ke sistem backend. Protokol komunikasi, seperti MQTT (Message Queuing Telemetry Transport) atau CoAP (Constrained Application Protocol), digunakan di sini untuk memastikan transmisi data yang aman dan efisien.
Mari kita jelaskan lebih lanjut tentang dua protokol komunikasi penting dalam konteks Internet of Things (IoT): MQTT (Message Queuing Telemetry Transport) dan CoAP (Constrained Application Protocol).
a. MQTT (Message Queuing Telemetry Transport):
MQTT adalah protokol komunikasi ringan dan berbasis pelanggan-server yang dirancang khusus untuk kondisi jaringan yang tidak stabil atau bandwidth terbatas. MQTT adalah salah satu protokol yang paling umum digunakan dalam aplikasi IoT, terutama dalam skenario di mana banyak perangkat IoT harus mengirimkan data secara real-time ke server pusat. Berikut adalah beberapa karakteristik kunci dari MQTT:
- Keringanan dan Efisien: MQTT dirancang untuk meminimalkan penggunaan bandwidth dan sumber daya, menjadikannya ideal untuk perangkat IoT yang memiliki keterbatasan dalam hal daya dan jaringan.
- Pesan Berbasis Sistem: MQTT menggunakan model penerbit/pelanggan (publisher/subscriber), di mana perangkat IoT dapat mem-publish pesan ke topik (topic) tertentu dan pelanggan yang berlangganan ke topik tersebut akan menerima pesan tersebut.
- Quality of Service (QoS): MQTT mendukung tiga tingkat QoS (0, 1, dan 2) yang mengontrol sejauh mana pesan harus dijamin pengiriman dan pengiriman ulang pesan dalam situasi kegagalan.
- Retained Messages: MQTT memungkinkan pesan yang akan disampaikan kepada pelanggan yang baru bergabung untuk topik tertentu, memastikan bahwa pelanggan tidak melewatkan informasi penting.
Protokol MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi ringan yang digunakan dalam aplikasi Internet of Things (IoT) dan sistem M2M (Machine-to-Machine). Protokol ini menggunakan model penerbit/pelanggan (publisher/subscriber) untuk mentransmisikan data antara perangkat IoT dan server atau antara perangkat IoT sendiri. Berikut adalah struktur protokol MQTT:
i. Header:
- Byte Pertama: Byte pertama header mengandung informasi tentang jenis pesan (Connect, Publish, Subscribe, dsb.) dan flag untuk mengontrol kualitas layanan (QoS) dan retensi pesan.
- Panjang Pesan: MQTT menggunakan variabel byte encoding untuk menyatakan panjang pesan, memungkinkan pengiriman pesan dengan panjang yang fleksibel.
ii. Pesan Kontrol:
- Connect: Digunakan untuk menginisialisasi koneksi antara klien dan broker MQTT.
- Publish: Digunakan oleh penerbit (publisher) untuk mengirim pesan ke topik tertentu.
- Subscribe: Digunakan oleh pelanggan (subscriber) untuk berlangganan ke satu atau beberapa topik.
- Unsubscribe: Digunakan oleh pelanggan untuk membatalkan langganan dari satu atau beberapa topik.
- Ping Request/Ping Response: Digunakan untuk menjaga koneksi tetap aktif antara klien dan broker.
- Disconnect: Digunakan untuk memberitahu broker bahwa klien akan memutuskan koneksi.
iii. Payload:
- Payload berisi data aktual yang dikirim oleh penerbit. Struktur dan format payload tergantung pada aplikasi dan informasi yang dibutuhkan oleh pesan MQTT.
Contoh Penggunaan MQTT:
Misalkan ada sebuah perangkat IoT yang mengukur suhu ruangan dan mengirimkan data tersebut ke server melalui MQTT. Pesan yang dikirim oleh perangkat tersebut mungkin terlihat seperti ini:
- Header: Tipe Pesan: Publish, QoS: 1 (Pesan harus dikonfirmasi oleh penerima), Retained: Tidak, Panjang Pesan: 25 bytes.
- Pesan Kontrol: Publish Pesan ke Topik: “suhu/ruangan”, ID Pesan: 12345.
- Payload: Data suhu yang diukur, misalnya: “23.5°C”.
Dalam struktur ini, klien MQTT (perangkat IoT) mengirim pesan Publish ke topik “suhu/ruangan” dengan ID pesan 12345 dan payload berisi data suhu 23.5°C.
Penting untuk diingat bahwa struktur pesan MQTT dapat bervariasi tergantung pada jenis pesan, QoS, dan pengaturan lainnya yang ditentukan oleh pengguna atau aplikasi. Meskipun demikian, struktur umum ini membentuk dasar protokol komunikasi MQTT, memungkinkan perangkat IoT untuk berkomunikasi dengan broker MQTT dan satu sama lain secara efisien dan andal.
b. CoAP (Constrained Application Protocol):
CoAP adalah protokol aplikasi berbasis RESTful (Representational State Transfer) yang dirancang untuk digunakan di perangkat dengan sumber daya terbatas, seperti sensor dan aktuator pada perangkat IoT. CoAP memungkinkan perangkat IoT berkomunikasi melalui protokol HTTP yang diperlakukan secara efisien dan efektif di lingkungan IoT. Berikut adalah beberapa fitur kunci dari CoAP:
- Ringan: CoAP dirancang untuk memiliki overhead yang rendah, memungkinkan perangkat dengan memori dan daya terbatas untuk menggunakan protokol ini dengan efisien.
- Metode HTTP Mapping: CoAP mendukung metode yang analog dengan metode HTTP seperti GET, POST, PUT, dan DELETE, memungkinkan integrasi yang mudah dengan aplikasi dan infrastruktur berbasis web.
- Observing Resources: CoAP mendukung observasi terhadap sumber daya, yang memungkinkan klien untuk berlangganan ke sumber daya dan menerima pembaruan ketika nilai sumber daya berubah.
- Sistem Keamanan Terpadu: CoAP memiliki dukungan terintegrasi untuk keamanan melalui DTLS (Datagram Transport Layer Security), sehingga memastikan komunikasi yang aman di lingkungan yang terbuka dan rentan.
Protokol Constrained Application Protocol (CoAP) adalah protokol aplikasi berbasis RESTful yang dirancang khusus untuk digunakan di perangkat dengan sumber daya terbatas, seperti perangkat IoT (Internet of Things). CoAP memungkinkan perangkat ini berkomunikasi secara efisien di lingkungan jaringan terbatas. Berikut adalah struktur protokol CoAP:
i. Header:
- Versi: Versi CoAP yang digunakan (biasanya 1).
- Tipe Pesan (Message Type): Jenis pesan CoAP, seperti Confirmable (CON), Non-Confirmable (NON), Acknowledgment (ACK), atau Reset (RST).
- Kode Pesan (Message Code): Kode yang menunjukkan jenis operasi yang diminta atau diberikan oleh pesan CoAP.
- Panjang Token (Token Length): Jumlah byte dalam token (biasanya 0 hingga 8 byte) untuk identifikasi permintaan dan tanggapan yang sesuai.
- Identifier (Message ID): Identifier untuk pesan CoAP, digunakan untuk mengaitkan respons dengan permintaan aslinya.
- Token: Sebuah token opsional yang digunakan untuk mengidentifikasi permintaan dan tanggapan yang berhubungan.
- Pilihan (Options): Informasi tambahan yang terkait dengan permintaan atau respons, seperti jenis media atau opsi lainnya.
- Panjang Pesan (Payload Length): Jumlah byte dalam payload (data) pesan.
- Payload: Data yang dikirim dalam pesan, seperti informasi pengukuran suhu dari sensor.
ii. Pilihan (Options):
- Pilihan Delta: Jumlah byte antara pilihan sekarang dan pilihan sebelumnya dalam pesan. Digunakan untuk mengurangi overhead dalam pesan CoAP.
- Pilihan Panjang: Jumlah byte dalam nilai opsi tersebut.
- Nilai Opsi: Nilai dari opsi yang terkait dengan permintaan atau respons.
Contoh Penggunaan CoAP:
Misalkan ada permintaan untuk mendapatkan data suhu dari perangkat IoT menggunakan CoAP:
- Header: Versi: 1, Tipe Pesan: Confirmable (CON), Kode Pesan: GET, Identifier: 12345, Token: ABCD (misalnya), Panjang Pesan: 0 (tidak ada payload).
- Pilihan: Opsi Uri-Path: “suhu”, Opsi Uri-Path: “ruangan”.
- Payload: Tidak ada payload karena ini adalah permintaan GET.
Dalam struktur ini, permintaan CoAP dikirim dengan metode GET untuk mengambil data suhu dari “suhu/ruangan”. Token “ABCD” digunakan untuk mengidentifikasi permintaan dan memungkinkan server merespons dengan benar.
Struktur CoAP yang ringan dan efisien ini memungkinkan perangkat IoT berkomunikasi dengan server atau perangkat lain dalam lingkungan sumber daya terbatas dengan menggunakan protokol yang mirip dengan HTTP, tetapi dengan overhead yang jauh lebih rendah, memastikan efisiensi dan kinerja yang baik dalam konteks Internet of Things.
Kedua protokol yakni MQTT dan CoAP memiliki keunggulan dan kegunaan masing-masing tergantung pada kebutuhan spesifik aplikasi IoT. Pengembang dapat memilih protokol yang paling sesuai dengan lingkungan dan persyaratan proyek IoT mereka untuk mencapai komunikasi yang andal dan efisien antara perangkat IoT.
3. Lapisan Middleware:
Lapisan ini bertindak sebagai perantara antara lapisan perangkat dan aplikasi pengguna. Middleware memproses data yang diterima, melakukan transformasi data jika diperlukan, dan mengelola keterhubungan antarperangkat.
Lapisan Middleware dalam arsitektur Internet of Things (IoT) adalah bentuk perangkat lunak (software). Ini adalah perangkat lunak yang berjalan di server atau platform cloud dan bertindak sebagai perantara antara perangkat keras (hardware) IoT dan aplikasi atau pengguna akhir. Middleware membantu mengelola komunikasi, pemrosesan data, integrasi aplikasi, manajemen keamanan, dan banyak fungsi lainnya dalam konteks IoT. Berikut adalah beberapa contoh konkret dari lapisan middleware dalam bentuk perangkat lunak:
a. Message Brokers:
Message brokers seperti RabbitMQ, Apache Kafka, dan ActiveMQ adalah contoh middleware yang digunakan untuk mengelola pertukaran pesan antara perangkat IoT dan aplikasi. Mereka memfasilitasi komunikasi antara berbagai perangkat dan memungkinkan pemrosesan pesan secara efisien.
b. IoT Platforms:
Platform IoT seperti AWS IoT, Google Cloud IoT, dan Microsoft Azure IoT adalah contoh middleware yang memberikan berbagai layanan untuk mengelola perangkat IoT. Mereka menyediakan fungsionalitas seperti manajemen perangkat, pemrosesan data, integrasi aplikasi, dan keamanan, semuanya dalam satu paket perangkat lunak.
c. Message Queue Systems:
Sistem antrian pesan seperti RabbitMQ, Apache Kafka, dan Redis MQ adalah contoh middleware yang memungkinkan perangkat IoT mengirimkan pesan ke antrean dan aplikasi dapat mengambil pesan tersebut sesuai kebutuhan mereka.
d. IoT Middleware Frameworks:
Ada juga kerangka kerja middleware IoT seperti Eclipse Mosquitto, Eclipse Kura, dan FIWARE Orion Context Broker. Ini adalah kerangka kerja perangkat lunak yang dirancang khusus untuk mendukung aplikasi IoT dengan menyediakan layanan komunikasi, manajemen data, dan integrasi aplikasi.
e. Enterprise Service Buses (ESB):
Enterprise Service Buses seperti Apache ServiceMix dan Mule ESB adalah contoh middleware yang digunakan dalam konteks IoT untuk mengelola integrasi aplikasi dan pertukaran data di seluruh sistem perusahaan.
f. Database Systems:
Sistem database seperti MongoDB, Cassandra, dan InfluxDB juga dapat dianggap sebagai bentuk middleware ketika mereka digunakan untuk menyimpan dan mengelola data dari perangkat IoT. Mereka memungkinkan penyimpanan data terstruktur dan teratur untuk analisis lebih lanjut.
4. Lapisan Aplikasi (Application Layer):
Lapisan ini adalah tempat di mana data diolah dan digunakan untuk menghasilkan informasi yang berguna. Aplikasi IoT, seperti smart home systems, smart cities, atau industrial automation, beroperasi di lapisan ini.
5. Lapisan Pengguna (User Layer):
Lapisan teratas adalah antarmuka pengguna yang memungkinkan pengguna manusia berinteraksi dengan aplikasi IoT. Ini dapat berupa aplikasi mobile, web dashboard, atau perangkat antarmuka lainnya.
Tantangan dalam Arsitektur IoT:
Meskipun arsitektur ini memberikan kerangka kerja yang solid, ada sejumlah tantangan yang harus diatasi. Keamanan data, privasi pengguna, dan interoperabilitas perangkat adalah beberapa masalah utama yang perlu diatasi dalam pengembangan arsitektur IoT.
Arsitektur IoT, seperti yang dijelaskan dalam literatur “Architecting the Internet of Things”, memberikan pandangan yang komprehensif tentang bagaimana perangkat-perangkat yang terhubung ke internet berkomunikasi dan berinteraksi. Dengan memahami dan menerapkan prinsip-prinsip ini, kita dapat membangun lingkungan IoT yang aman, efisien, dan bermanfaat bagi pengguna di seluruh dunia. Seiring dengan perkembangan teknologi ini, perhatian terhadap aspek keamanan dan privasi harus tetap menjadi fokus utama, memastikan bahwa IoT dapat memberikan manfaat tanpa mengorbankan keamanan dan privasi pengguna.
Warung Sains Teknologi (Warstek) adalah media SAINS POPULER yang dibuat untuk seluruh masyarakat Indonesia baik kalangan akademisi, masyarakat sipil, atau industri.