معماری نرم افزار در نرم افزارهای پردازش داده های حجیم (Big Data)

مقدمههمانطور که می ­دانیم در عصر داده ­های حجیم؛ پردازش، تحلیل و استفاده از داده به عنوان یک عامل کلیدی برای رشد کلیه سازمان­ها تبدیل شده است و موجب مزیت رقابتی در کسب و کارها، محرک نوآوری، افزایش رقابت و اثرات مثبت اجتماعی خواهد شد. با توجه به افزایش روزافزون حجم بزرگ داده­ها، گسترش کیفی و کمی سرویس­های متعدد ارائه شده در سطوح مختلف؛ حرکت به سمت ارتقا زیرساخت­های نرم افزاری در قالب محاسبات توزیع شده و استفاده از روش­های نوین پردازش داده­ها اهمیت می ­یابد.ما در این مطالعه، با مطرح نمودن سوالاتی در زمینه بررسی معماری­های نرم ­افزارهای کلان داده­ها و پاسخگویی به آنها قصد داریم که به دید مناسبی جهت، درک اهمییت و انگیزه پذیرش معماری­های کلان داده و شناسایی معماری­های نرم افزاری موجود و ساختار آنها برای سیستم­های کلان داده و راهکارهای رفع چالش در این زمینه دست یابیم.چرا به معماری صحیحی در نرم ­افزارهای پردازش کلان داده نیاز داریم(انگیزه اتخاذ معماری­ های کلان داده)؟امروزه، برای مقابله با افزایش سریع حجم، تنوع و سرعت داده ­های تولید شده، لازم است، ظرفیت فنی جدید و زیرساخت­های موجود مناسبی را برای جمع­آوری و تجزیه و تحلیل کلان داده­ها اتخاذ کنیم. متأسفانه، توسعه سیستم‌های کلان داده ساده نیست و برخلاف انتظارات بالا، پروژه‌های کلان داده ممکن است به دلیل عدم انتخاب ویژگی‌های مناسب و طراحی مناسب معماری کلان داده با شکست مواجه شوند. سیستم­های کلان داده مختلف نیازمندی­های متفاوتی خواهند داشت و به همین دلیل پیکربندی­های طراحی معماری متفاوتی را باید اعمال کرد. از این رو یک معماری مناسب برای سیستم کلان داده برای دستیابی به الزامات ارائه شده از اهمییت بالایی برخوردار است. در دسته ­بندی زیر می­ توانیم عمده دلایل نیاز به معماری نرم ­افزارهای پردازش داده­های بزرگ را مشاهده کنیم:· پشتیبانی از فرآیندهای تحلیلی: پردازش و مدیریت موثر حجم عظیمی از داده ها برای پشتیبانی از فرآیندهای تجزیه و تحلیل داده­ها یکی از انگیزه های اصلی اتخاذ یک معماری کلان داده است. ورودی فرآیندهای تجزیه و تحلیل کلان داده اغلب شامل داده­های چند رسانه­ای، از جمله متن، داده ­های حسگر، یا جریان های موسیقی/ویدئو به منظور انجام تحلیل مقایسه ­ای و شناسایی الگوهای در حال ظهور و روابط مرتبط در حوزه­های مختلف برنامه است. معماری‌های کلان داده، زیرساخت‌ها و ابزارها، سیستم‌ها را قادر می‌سازند تا پشتیبانی تصمیم‌گیری بهتری را ارائه دهند.· بهبود کارایی: یکی دیگر از انگیزه‌های اصلی برای اتخاذ معماری‌های کلان داده، پردازش کارآمد حجم عظیمی از داده‌های ناهمگن با مدل‌های داده‌ای انعطاف‌پذیر، نیمه ساختاریافته و طیف وسیعی از اندازه‌های پرس و جو است و در عین حال از تحمل خطای راه‌حل مستقر شده اطمینان می‌یابد. نظارت کارآمد اطلاعات انبوه نیز در مطالعات اولیه انتخاب شده مورد تاکید قرار گرفته است. اجرای جوین کوئری­ها بر روی سکو­های مختلف داده­های بزرگ و مجموعه داده­های بزرگ مختلف به طور موثر و پرس و جو تعاملی به موقع نیز از جمله اهداف اتخاذ معماری­های کلان داده است.· بهبود قابلیت پردازش داده ­ها در زمان واقعی: سومین دلیل اصلی در استفاده از سیستم­های کلان داده، به دست آوردن توانایی مقابله با سرعت بی­سابقه تولید داده در زمان واقعی و نیازهای مربوط به پردازش آن است. اینترنت اشیاء محرکی برای استقرار فشرده حسگرها است که متعاقباً جریان های داده­ای را تولید می­کنند که از طریق ابزارهای کلان داده برای ایجاد پیش­ بینی ­های مبتنی بر رویداد، پرس و جو (پیچیده و ad-hoc) و پردازش رویداد پیچیده جمع آوری، نظارت و پردازش می شوند. معماری کلان داده باید به طور موثر الزامات تأخیر را در چنین مواردی برآورده کند.· کاهش هزینه­ های توسعه: دلیل اصلی دیگر کاهش هزینه های استقرار یا عملیات سیستم است. به عنوان مثال، در بخش مالی، شرایط بازار به طور ناگهانی تغییر می­کند، که باعث ایجاد اصرار برای پردازش حجم بالایی از داده­ها در زمان کوتاه می ­شود. در یکی از پژوهش ­های صورت گرفته برای بهبود تجربه کاربر، یک معماری موثر و اقتصادی با در نظر گرفتن زمان و هزینه های ذخیره سازی طراحی شده است.· فعال کردن نوع جدیدی از خدمات: ارائه خدمات جدید برای پشتیبانی از طراحی و استقرار سریع برنامه های کاربردی علمی به عنوان هدف اولیه در برخی پژوهش­ ها در نظر گرفته شده است. معماری سرویس گرا و وب معنایی در پرتو این مطالعه هستند. این سکو رویکرد نرم‌افزار به‌عنوان سرویس را اتخاذ می‌کند و امکان اجرا، بسته‌بندی، آپلود و پیکربندی نرم‌افزارهای علمی را فراهم می‌کند.· مدیریت داده­ ها و هماهنگ ­سازی سیستم: آخرین دلیل اصلی این است که سیستم را قادر می سازد تا مجموعه های کلان داده را مدیریت و هماهنگ کند. به عنوان نمونه، یک رویکرد معماری محور برای کنترل تحویل مستمر کلان داده، طراحی سیستم داده های بزرگ و توسعه تجزیه و تحلیل چابک ارائه شده است.که بر روی هماهنگی فناوری‌ها، نمونه‌های اولیه و معیارهای هر فناوری تمرکز می‌کند و از روش مدل‌سازی داده‌های مفهومی برای گسترش معماری استفاده می‌کند.معیارهای استفاده از برنامه­ های کلان داده کدامند؟برنامه ­های کلان داده باید از معماری­هایی استفاده کنند که قابلیت پشتیبانی از انواع داده ­ها را داشته و تمام محاسبات لازم برای تحلیل ­ها را بتوانند انجام دهند. و برای تحقق این کار باید محورهای کلیدی زیر در نظر گرفته شود:· کشف و شناسایی داده: تجزیه و تحلیل داده با درک منابع داده آغاز می شود. منظور از درک منابع این است که چه داده ای در یک منبع خاص در دسترس بوده و کیفیت و ارتباط آن با داده های دیگر به چه صورت است.· ذخیره سازی و تحلیل مشترک داده ها : در معماری های سنتی، محیط تحلیلی از محیط داده مجزا است. نرم افزار تحلیلی بر روی زیرساخت‌های خود اجرا شده و داده را از انبار داده و یا از سیستم‌های دیگر برای انجام تجزیه و تحلیل پیچیده استخراج می کند، چرا که قصد دارد سرعت دسترسی به داده ها را افزایش دهد نه لزوماً عملیات پیشرفته ریاضی را انجام دهد.· مدیریت و تحلیل داده بدون ساختار: برای مدت زمان طولانی، داده بر اساس نوع آن به ساخت یافته، نیمه ساخت یافته و یا غیر ساخت یافته طبقه بندی شده است سکو باید به صورتی عمل کند که داده ها را بتواند صرف نظر از نوع داده های آن ها تحلیل نماید.· تجزیه و تحلیل داده بلادرنگ: سکو نیازمند تحلیل داده بلادرنگ داده ها در زمان تولید آن است. در واقع، سکو کلان داده نه تنها باید قادر به پشتیبانی از تحلیل داده جریانی باشد، بلکه باید به طور موثری قابلیت مدیریت افزایش حجم جریان داده را داشته باشد.· کتابخانه غنی از توابع تحلیلی و مجموعه ­ای از ابزارها: یکی از اهداف اصلی یک سکو کلان داده کاهش زمان چرخه تحلیل است. سکو کلان داده باید قادر به کاهش زمان های تحلیل با استفاده از شتاب دهنده­ ها، کتابخانه­ ای از توابع تحلیلی و مجموعه ابزاری که روند توسعه و تجسم را تسریع می­کند، باشد. بدین منظور، یک سکو کلان داده باید قابلیت تعامل با بیشترین بسته‌های تحلیلی را داشته باشد.· یکپارچه ­سازی و حاکمیت بر تمام منابع داده: این محور شامل سیاست ها، ابزارها و فن آوری­هایی برای بهبود کیفیت داده، امنیت، حکمرانی، مدیریت داده اصلی، یکپارچه ­سازی داده و مدیریت چرخه حیات اطلاعات بوده که صحت و اعتماد را برای داده ­ها ایجاد کرده و برای موفقیت هر برنامه تحلیلی بسیار حیاتی هستند.الزامات اصلی معماری نرم افزار برای ساخت سیستم های پردازش داده های بزرگ، کدامند؟بسیار مهم است که بتوانیم سیستم‌های نرم‌افزاری را خوب طراحی و توسعه دهیم که به طور مؤثر و کارآمد نیازهای مختلف مربوط به تجزیه و تحلیل داده‌ها، پردازش و ذخیره‌سازی را برآورده کنند. به منظور پاسخگویی به پیچیدگی سیستم ­های کلان داده و قابلیت های پویای آنها که باید در زمان اجرا برآورده شوند، نگرانی برای تعریف دقیق نیازها نیزافزایش می یابد.نیازهای مهم در ارائه یک معماری شامل:· مقیاس پذیری: سیستم های داده های بزرگ باید مقیاس پذیر باشند، یعنی باید قادر به افزایش و پشتیبانی از مقادیر مختلف داده، پردازش آنها به طور یکنواخت، تخصیص منابع بدون تاثیر بر هزینه ها یا کارایی برای برآوردن این نیازها، به چندین گره محاسباتی و ذخیره سازی برای توزیع مجموعه داده ها و پردازش آنها مورد نیاز است ؛· محاسبات با عملکرد بالا: عملیات زمان واقعی را می توان به عنوان مجموع مقیاس پذیری بالا و عملکرد بالا مشخص کرد که امکان انجام عملیات را در زمان واقعی، امکان تجزیه و تحلیل و تصمیم گیری سریع را فراهم می کند. سیستم های کلان داده باید قادر به پردازش جریان های بزرگ داده در مدت زمان کوتاه باشند، بنابراین این سیستم­ها باید علاوه بر محاسبات فشرده (تجزیه وتحلیل خصوصا در بخش­های مهم) باید بتوانند نتایج دلخواه و مطلوب کاربران(نیاز به پاسخ های سریع به درخواست های طولانی مدت) را نیز بازگردانند .· قابلیت نگهداری(مدولاریت): سیستم های داده های بزرگ باید خدمات توزیع شده را ارائه دهند، یعنی به ماژول هایی تقسیم شوند که بتوانند از آنها برای دسترسی، پردازش،( تجسم و به اشتراک گذاری داده ها و مدل ها از حوزه های مختلف، ارائه انعطاف پذیری برای تغییر وظایف دستگاهها) استفاده کرد.· سازگاری(قابلیت همکاری): سیستم های کلان داده باید از سازگاری، ناهمگونی و بهره برداری از داده ها(فرمت های مختلف داده) پشتیبانی کنند. علاوه بر این، سیستم ها باید انعطاف پذیر باشند تا بتوانند چندین فرمت تبادل داده را تطبیق دهند که برای انجام این موارد باید به بهترین دقت ممکن در حین عملیات دست یابند. پس سازگاری یعنی، نشان دهنده توانایی تمام اطلاعات یکپارچه، چه از یک منبع داده یا چندین منبع داده، منسجم و قابل استفاده باشد· امنیت: سیستم های کلان داده باید امنیت داده ها را تضمین کنند یعنی کنترل دسترسی و جلوگیری از دسترسی غیرمجاز را در زمان یکپارچگی اطلاعات، تبادل داده ها با سیاست­ های چندسطحی حمایت کنند.· عملیات بی درنگ: سیستم های داده های بزرگ باید بتوانند جریان پیوسته داده ها و پردازش آن ها را به منظورتسهیل تصمیم گیری در زمان واقعی، مدیریت کنند.· قابلیت همکاری: سیستم های کلان داده باید به طور شفاف با یکدیگر ارتباط برقرار کنند تا امکان تبادل اطلاعات بین آنها فراهم شود.در دسترس بودن: سیستم های داده های بزرگ باید از در دسترس بودن داده های بالا، از طریق مقیاس افقی تکرار داده ها، (یعنی پخش)، اطمینان حاصل کنند.چه انتظاراتی از یک معماری داده مدرن وجود دارد؟انتظارات بنا به اجزایی که در یک معماری داده مدرن ممکن است موجود باشد به صورت کلی به شرح زیر دسته­بندی می­ کنیم:· یک محیط معماری که برای نگهداری حجم بالایی از داده ­ها· چینش قوی داده­ ها و قابلیت ­های ابرداده همراه با مدیریت اصلی داده­ ها· قابلیت پشتیبانی از توابع تحلیلی خودکار و هوشمند· شفافیت و پاسخگویی به تغییراتیعنی به طورکلی باید برنامه ­های مرتبط با معماری داده برای حمایت از نیازهای رو به رشد داده و پویایی بازار در حال تغییر، بهبود پیدا کنند و ویژگی­ هایی مثل قابلیت تطبیق وخودکار، هوشمندی، قابلیت انعطاف­ پذیری، امن بودن وتمرکز بر ارزش کسب وکار و حاکمیت داده ­ها را شامل شوند.رویکردهای موجود معماری نرم ­افزار برای برنامه­ های کلان داده کدامند؟سه رویکرد اصلی برای طراحی معماری‌های نرم‌افزار برای سیستم‌های کلان داده با توجه به مرور مقالات وجستجوها مشاهده می‌شود: اتخاذ یک معماری مرجع، پیروی از روش‌شناسی طراحی معماری و استفاده از یک مدل مرجع.معماری Lambda Architectureمعماری لامبدامعماری لامبدا به عنوان معماری مرجع ظاهر می­شود که تجزیه و تحلیل­های زمان واقعی و تاریخی کارآمد را از طریق یک چارچوب قوی امکان پذیر می­کند. هدف ارائه این معماری که توسط Nathan Marz مطرح شده ارائه یک چارچوب معماری برای پاسخگویی به انواع داده‌ها، قابلیت مقیاس‌پذیری و مدیریت خطاهای داده‌ای است که امروزه شاید به عنوان شناخته شده‌ترین معماری حوزه کلان‌داده مورد استفاده قرار می‌گیرد.معماری لامبدا به دلیل تکنیک پردازش داده‌اش برای مدیریت حجم عظیمی از داده‌ها با بهره‌گیری از هر دو لایه دسته‌ای و لایه پردازش سرعت/جریان، محبوب است. این رویکرد خاص تلاش می‌کند با استفاده از پردازش دسته‌ای برای ارائه نماهای جامع و دقیق از داده‌های دسته‌ای، تعادل تأخیر، توان عملیاتی و تحمل خطا را متعادل کند، در حالی که به طور همزمان از پردازش جریانی بلادرنگ برای ارائه نماهایی از داده‌های آنلاین استفاده می‌کند. خروجی های لایه دسته ای و سرعتی را می توان قبل از ارائه ادغام کرد.کارایی این معماری به شکل افزایش توان عملیاتی، کاهش تأخیر و خطاهای ناچیز آشکار می‌شود، در نتیجه یک معماری خطی مقیاس‌پذیر ایجاد می‌شود که به جای افزایش مقیاس، مقیاس‌پذیری را کاهش می‌دهد.معماری لامبدا با توجه به اصول زیر به مقیاس پذیری بالا و تاخیر کم می رسد:· تغییرناپذیری داده ها· غیر عادی سازی داده ها· نماهای از پیش محاسبه شدهمعماری لامبدا مشکل محاسبه توابع دلخواه روی داده های دلخواه را در زمان واقعی با تجزیه مسئله به سه لایه حل می کند.1. لایه دسته ای یا مسیر سرد(Batch): این لایه وظیفه انباشت اطلاعات را به عهده دارد. در واقع تک مرجع واقعیت داده‌ها در این لایه قرار می‌گیرد(SVOT = Single Version Of Truth). تکنولوژی‌هایی مانند Haoop، Pig/Hive در این لایه مورد استفاده قرار می‌گیرند. این لایه قابلیت مقیاس‌پذیری افقی را نیز فراهم می‌کند.2. لایه سرعت یا مسیر داغ(Speed): این لایه مجموعه پردازش‌های مبتنی بر یادگیری ماشین یا تجزیه‌وتحلیل‌های سریع و در لحظه را پشتیبانی می‌کند. این لایه برای پاسخگویی به ذخیره‌سازی حجم عظیمی از داده‌ها ساخته نشده است و صرفاً روی بخش‌های کوچکی از داده‌ها پردازش‌های تحلیلی خود را صورت می‌دهد.3. لایه سرویس(Serving): این لایه وظیفه برقراری ارتباط با ۲ لایه پیشین را برعهده داشته و Queryهای لازم را برای خروج اطلاعات از سیستم را پس از ترکیب داده‌ها فراهم می‌کند. معمولاً در فضای عملیاتی این لایه است که با ابزارهای خارجی مانند برنامه‌های هوش تجاری (مانند PowerBi، Tableau و …) ارتباط برقرار می‌نماید.نمونه استفاده از این معماری در معماری و سبد تکنولوژی‌های شرکت Yahoo در استقرار معماری Lambda را می‌توان در شکل زیر مشاهده ­نماییم.معماری داده در یاهوالبته معماری لامبدا چالش‌هایی را هم ایجاد می ­کنند.مانند، پیچیدگی بالا و یا پردازش دوباره سناریوهای خاص در هر بار چرخه دسته ­ای،که سودمند نیستند. همین چالش‌ها باعث شده است تا معماری‌های دیگری نیز به وجود بیایند. یکی از مهم‌ترین آن‌ها معماری Kappa است که با حذف لایه Batch و با استفاده از تکنولوژی‌های ارسال و دریافت پیام، تلاش می‌کند که به صورت همزمان دریافت اطلاعات را انجام داده و سپس با پردازش آن‌ها، داده‌های پالایش شده را به لایه Serving تحویل دهد. معماری Kappa در مدیریت کلان‌داده ها را در شکل زیر مشاهده می­ کنیم.معماری kappaدر هر کدام از این لایه­ ها چارچوب­ هایی برای پردازش جریان داده ­ها استفاده می­ شود که امکان پردازش موازی و توزیع شده داده ­های حجیم را جهت دستیابی به سرعت بالای پردازش داده ­ها فراهم می ­کنند در جدول زیر برخی از این چارچوب­ های پرکاربرد را مشاهده می­ کنیم.چارچوب های پردازش جریان دادهکه در بین آنها هادوپ بیشتر از همه مورد توجه قرار گرفته است، هادوپ برای مدیریت فرایند کلان داده ها استفاده می ­شود. اصلاح هادوپ مجموعه­ ای از نرم­ افزارها و کتابخانه ­هایی است که پردازش حجم عظیمی از داده های توزیع شده را فراهم می ­کند. هادوپ، حجم زیادی از داده­ها را پردازش و مدیریت می ­کند. چارچوب هادوپ شامل زیر پروژه نگاشت کاهش می باشد. نگاشت کاهش یک الگو برای پردازش داده های حجیم در هادوپ است. به عبارت دیگر، یک مدل برنامه نویسی ساده برای حل مسائل محاسباتی در مقیاس وسیع و به صورت توزیعی را ایجاد می­کند.امروزه در بسیاری از صنایع مانند پزشکی یا نفت وگاز به صورت ترکیبی از این دو معماری کنار هم استفاده می­ کنند، مثلا در صنعت نفت وگاز، با حجم عظیمی از داده ­ها که از منابع مختلف به دست می ­آید با سرعت بسیار بالایی سروکار دارد نیازمند روش­هایی هستند که با استفاده از الگوها وچارچوب­ های مختلفی برای توزیع و پردازش داده­ های مختلف در سیستم پردازش داده ­های بزرگ بدون نیاز به طراحی مجدد یا بازسازی سیستم ترکیب و تغییر دهد. در این نوع صنایع نیازمند مدل­های ترکیبی که دو تکنیک پردازش زمان واقعی و پردازش دسته ­ای را با هم ترکیب کنند زیرا داده ­های عظیمی نیاز به پردازش با دقت بالا و زمان پردازش کم دارند. با این حال هیچ یک از دو تکنیک جداگانه نمی­ توانند این دو کار را با هم انجام دهند و نیاز به پردازش ترکیبی دارند، برخی از معماری­ های ترکیبی عمومی وجود دارند که هم پردازش زمان واقعی و هم پردازش جریانی کلان داده را ترکیب می­ کنند. رایج ­ترین آنها معماری لامبدا و کاپا هستند. در شکل زیر یک نمونه از مدل ترکیبی را در صنعت نفت وگاز مشاهده می نماییم.مدل معماری ترکیبی پیشنهادی در صنعت نفت وگازهمانطور که در شکل مشاهده می کنیم، اجزای پردازش دسته ای ، جریان داده دارای دو شاخه است. داده ای که نیازبه پرداز ش بلادرنگ دارد به مولفه پردازش Real-Timeمنتقل می شود. در حالی که داده هایی که نیازبه پردازش دسته ای دارند در یک مجموعه داده عظیم ذخیره می شوند که بعداً می تواند به دسته ارسال شودجزءپردازش به عنوان داده های تاریخی برای پردازش دسته ای. کاربر در زمان اجرا می تواند تکنیک پردازش را با انتخاب از داشبورد تصمیم بگیرد. این را می توان با ارائه برخی از رابط های برنامه نویسی کاربردی (API)و فایل های پیکربندی موجود در لایه پردازش،باپیکربندی APIبا استفاده ازبرخی ابزارهای مدیریتAPIارائه شده در لایه نتیجه،به دست آورد.سپس نتیجه پردازش به لایه نتیجه ارسال می شود که نمایش های Real-Timeو Views Batchرا در خود نگه می دارد. Real-Time Viewsزمان واقعی را ذخیره می کند. نتیجه پرداز شBatch Viewsنتیجه پردازش دسته ای ارسال شده از لایهBatchرا ذخیره می کند.ویژگی مهم معماری پیشنهادی این است که کاربر می تواند کل نما را برای مقایسه یا انتخاب از داشبوردپرس و جو کند. ویژگی جالب دیگر معماری، ذخیره کل نتایج پردازش و بازگشت به مجموعه داده عظیم است. این به دلیل این است که؛ نتیجه می تواند به عنوان داده های تاریخی برای پردازش آینده استفاده شود.سخن پایانیبرنامه‌هایی که در حوزه کلان‌داده یا همان Big Data توسعه پیدامی­کنند، نیاز دارند تا از الگوهایی تبعیت کنند که امکان پردازش لحظه‌ای حجم بالایی از داده‌ها را در هر لحظه داشته­باشند. مهم‌ترین عامل شکست یا بحران‌های سیستم‌های نرم‌افزاری در فضای کلان داده، معماری نرم‌افزاری است و نه هیچ عامل دیگری. معماری نرم‌افزاری، به مراتب بیشتر از کمبود منابع کافی سخت‌افزاری و سروری یا مشکلات امنیت اطلاعات، به کسب‌وکارهای مبتنی بر داده لطمه وارد کرده است.و انتخاب معماری نرم‌افزاری صحیح علاوه بر وجود یک دانش غنی، خیلی مبتنی بر تجربه و آزمون‌وخطا شکل می‌گیرد، در گزارش مکنزی به این موضوع صریحاً اشاره شده است که عدم در اختیار داشتن برنامه‌ریزی در خصوص معماری فضای مدیریت داده در سازمان‌ها، یکی از مهم‌ترین چالش‌هایی است که کسب‌وکارهای مبتنی بر داده با آن مواجه بوده و البته خواهند بود.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابعEduardo A. Hinojosa-Palafox, An Analytics Environment Architecture for Industrial Cyber-Physical Systems Big Data Solutions, Sensors 2021, 21, 4282. https://doi.org/10.3390/s21134282C. Avci,B. Tekinerdogan, Software architectures for big data: a systematic literature review, Big Data Analytics 2020, https://doi.org/10.1186/s41044-020-00045-1M.Mohammadpoor, F. Torabi,Big Data analytics in oil and gas industry: An emerging trend, Petroleum · December 2020, https://doi.org/10.1016/j.petlm.2018.11.001https://marketplace.big-data-value.eu/content/elastic-software-architecture-extreme-scale-big-data-analytics-fog-computing-ecosystemshttps://elastic-project.eu/software-infrastructurehttps://www.linkedin.com/pulse/data-lake-architecture-dharamraj-tiwarihttps://www.linkedin.com/pulse/%CE%BB-%CE%BA-%CE%B6-tale-three-big-data-musketeers-bargunan-somasundaram?trk=read_related_article-card_titlehttps://www.linkedin.com/pulse/understand-lambda-architecture-2-minutes-hariharan-ramachandranhttps://www.linkedin.com/pulse/lambda-architecture-overview-daniel-ranallo