Internet of Things یا به اختصار IoT که در فارسی به اینترنت اشیاء برگردان شده است، به عنوان یک صنعت جدید در حال رشد و تکامل است. Things (اشیاء) در واقع به هر چیزی گفته میشود که دادهها به وسیلۀ آن در شبکۀ اینترنت منتقل میشوند که از آن جمله میتوان سنسورها، کامپیوترها، مایکروویوها، گوشیهای هوشمند، ساعتها و غیره را نام برد. نیاز به توضیح نیست که تعداد دیوایسهایی که قابلیت اتصال به اینترنت دارند به صورت نمایی در حال رشد است و از همین روی پیشبینی شده که در آیندهای نه چندان دور، IoT در بسیاری از حوزهها در زندگی نوع بشر تأثیرگذار خواهد بود که به عنوان سادهترین کاربردهای آیاوتی میتوان قابلیت برقراری تماس با ساعتهای هوشمند یا توانایی خاموش کردن چراغهای خانه از راه دور را نام برد.
در این مقاله قصد داریم تا برای آشنایی بیشتر با مفهوم #اینترنت اشیاء، به تشریح برخی اصطلاحات کلیدی این حوزه میپردازیمت و همچنین ارتباطش با دیگر فناوریها بپردازیم؛ اما پیش از مطالعهٔ ادامهٔ مطلب، توصیه میکنیم به مقالهٔ اینترنت اشیاء (Internet of Things) چیست؟ مراجعه نمایید که در آن ماهیت IoT به تفصیل مورد بررسی قرار گرفته است. به طور کلی، برخی از رایجترین اصطلاحات کاربردی در حوزهٔ آیاوتی عبارتند از:
- Internet of Things: در یک نگاه کلی، اینترنت اشیاء شبکهای از یکسری شیئ (نُود) است که همهٔ آنها به یکدیگر متصل هستند.
- Things: شیئ در IoT عبارت است از هر چیزی مانند یک سنسور، لوازم خانگی و حتی تمام وسائل نقلیه که این اشیاء میتوانند از طریق اینترنت به یکدیگر متصل شوند.
- Network: شبکه عبارت است از کانکشن مابین نُودها که امکان به اشتراکگذاری منابع را برای آنها فراهم میکند.
- API: یک اینترفیس در برنامهنویسی اپلیکشنها است که به دولوپرها یا کاربران توانایی انتشار یا استفاده از دادههای یک اپلیکیشن خاص را میدهد. همچنین میتوان ایپیآی را یک سرویس نامید (برای مثال، یک اصطلاحاً Fuel API به منزلهٔ سرویسی است که با دریافت دیتا از کاربران، میزان سوخت موجود در خودرو را مشخص میکند.)
- Data: دادهها در نتیجۀ آنالیز یک نُود به دست میآیند. برای مثال، میتوان دیتای حاصل از خواندن سنسورها به مدت چند ساعت، نتایج حاصل از آنالیز نحوۀ کار ترموستات در یک دمای خاص یا حتی میزان مصرف سوخت در هر ساعت را در نظر گرفت.
- Coarse-grained: به کامپوننتهای بزرگ موجود در یک سیستم اینترنت اشیاء گفته میشود. برای مثال، کل ناوگان خودروسازی را میتوان یک به اصطلاح Coarse-grained از سیستم آیاوتی در نظر گرفت.
- Fine-grained: به کامپوننتهای کوچکتر در سیستمهای اینترنت اشیاء گفته میشود که به عنوان مثال، میتوان خواندن دیتای مربوط به سطح سوخت یک ماشین را در نظر گرفت.
آشنایی با رابطۀ مابین سیستمهای IoT و API
یکی از چالشهای ساخت سیستمهای کاربردی آیاوتی، ارائۀ منابع این سیستمها به عنوان سرویسهایی جداگانه است. با بهکارگیری زیرساختهای کلود، رویکردی را در حوزهٔ IoT میتوان در نظر گرفت که از آن طریق بتوان منابع کوچکتر سیستمهای اینترنت اشیاء را در قالب یک API اصطلاحاً Encapsulate کرد.
به طور کلی این API قابلیتهای دسترسپذیری، پیکربندی و همچنین سایر قابلیتهای عملیاتی را برای سیستمهای IoT مبتنی بر کلود فراهم میکند و این در حالی است که در سیستمهای آیاوتی اولیه چیزهایی همچون منابع زیرساخت در قالب یکسری کامپوننتها و لایبرریهای نرمافزاری طراحی میشدند که صرفاً برای یک هدف مورد استفاده قرار میگرفتند و اغلب به صورت کامپوننتهای بزرگ و پکیجهای غیرمنعطف ارائه میشدند که این نوع کامپوننتها در سیستمهای آیاوتی موجب میشوند تا منابع سیستم آیاوتی را نتوان به عنوان سرویسهای جدا در اختیار کاربران قرار داد! بنابراین با داشتن منابع IoT کوچکتر که در یک API اصطلاحاً Ecapsulate شدهاند، میتوان منابع را به عنوان سرویسهایی جدا ارائه داد و همچنین میتوان آنها را با انعطافپذیری بیشتر در اپلیکیشنها یکپارچه کرد.
زیرساخت کلود که از شیوههای متداول برای ارائۀ سرویسهای مجازی (Virtualisation) خود استفاده میکند، هزینهٔ بیشتری را به دلیل سربار ناشی از ریسورسها به کاربران وارد میسازد و این در حالی است که امروزه تکنولوژیهای مبتنی بر کانتینر، مانند Docker، استفاده از دیتاسنترها و بهینهسازی منابع سختافزاری را بهبود بخشیدهاند (Docker ابزاری است که یک اپلیکیشن و دیپندنسیهای (وابستگی) مورد نیاز آن را در محیط یک کانتینر پکیج میکند.)
درآمدی بر Big Data و IoT
سیستمهای IoT ارتباط تنگاتنگی با Big Data دارند به طوری که میتوان گفت این سیستمها قابلیت ذخیرۀ حجم عظیمی از دادهها را دارا هستند و طبقهبندی اینکه آیا یک سیستم توانایی ذخیرۀ بیگ دیتا را دارا است یا خیر، با ارزیابی سه معیارِ زیر انجام میشود:
- Volume
- Velocity
- Variety
به طور خلاصه، Volume بیانکنندۀ مقدار دیتایی است که بایستی ذخیره شود، Velocity بیانکنندۀ سرعت سیستم در دریافت و ذخیرهسازی دیتا و Variety بیانکنندۀ نوع دیتایی است که ذخیره میشود. با آنالیز این سه معیار، میتوان دیتابیس مناسب برای یک سیستم آیاوتی را مشخص کرد تا بتوان مقدار دیتا را در این سیستم هَندل کرد و همچنین از هرگونه Data Loss (از دست رفتن دیتا) جلوگیری کرد.
پیشرفتهای اخیر صورت گرفته در رایانش ابری (کلود) موجب بهبود فرآیند ذخیرۀ دیتا، میزان دسترسپذیری بالا در استفاده از سیستمهای توزیعشده و دیتاسنترها به منظور ذخیرۀ دیتا و ارائۀ سرویسهای مجازی شده است و همچنین در سرویس ذخیرهسازی رایانش ابری نیز تغییرات زیادی اعمال شده است که این تغییرات مبتنی بر سیستمهای ارائهدهندۀ سرویسهای مبتنی بر کلود است که آن از جمله میتوان Google Cloud Big Table یا AWS Storage Gateway را نام برد.
اکوسیستم IoT دارای Things (اشیاء) بسیاری است که هر یک از این اشیاء دادههای متنوعی را تولید میکنند که بایستی این دادهها ذخیره شوند. همچنین با داشتن اِسکمای انعطافپذیر، امکان ذخیره دیتای ساختیافته و غیرساختیافته را برای کاربران فراهم میکنند و این در حالی است که اکثر دیتابیسهای به اصطلاح Relational (رابطهای مثل MySQL) به سختی دادههای غیرساختیافته را ساپورت میکنند و عمدتاً دلیلش هم حجم زیاد این دادهها و مشخص نبودن نوع آنها است که محدودیتهای اِسکمای از پیشتعریفشدۀ این نوع دیتابیسها را نقض میکند. در مقابل، دیتابیسهای به اصطلاح NoSQL تا حد قابلتوجهی این معضل را برطرف نمودهاند که برای آشنایی بیشتر، میتوانید به مقالهٔ درآمدی بر انواع مختلف دیتابیسهای NoSQL مراجعه نمایید.
آن دسته از اکوسیستمهای IoT که مقادیر زیادی دادهها را ذخیره میکنند، میتوانند این دادهها را آنالیز کرده و نتایج حاصل را در اختیار مشتریان خود قرار دهند که نتایج حاصل از آنالیز بیگ دیتا مخصوصاً برای کسبوکارها بسیار مفید است چرا که مدیران میتوانند از نتایج حاصل از آنالیز دادهها در فرآیندهای تصمیمگیری خود استفاده کنند.
به طور کلی، اینترنت اشیاء آیندۀ لایف اِستایل (سبک زندگی) کاربران علاقمند به استفاده از فناوری را تحتتأثیر قرار خواهد داد. اما در عین حال، امروزه سیستمهای آیاوتی با چالشهای زیادی روبهرو هستند که با افزایش میزان دادهها، این تکنولوژیها بایستی توانایی ذخیرهسازی و کار روی حجم عظیم دیتا را دارا باشند.