در حوزه کلان داده یا Big Data مطالب بسیار زیادی در فضای وب و حوزههای علمی و عملیاتی مطرح شده است و این مطلب تلاش میکند، انواع معماری برنامههای کلان داده – Big Data Application Architecture را به صورت خلاصه معرفی نماید. این پست در خصوص ارائهای در یکی از دروس دانشگاهی بنده آماده شده است و به همین سبب، بیشتر به صورت عکسهایی گرفته شده از فایل پاورپوینت دارد.
چرا معماری نرمافزار یا برنامههای کلانداده مهم است؟
آندسته از برنامههایی که در حوزه کلانداده یا همان Big Data توسعه مییابند نیاز دارند تا از الگوهایی تبعیت نمایند که امکان پردازش لحظهای حجم بالایی از دادهها را داشته باشند. اساساً به سبب تجربه حدود ۱۰ سالهای که در حوزه تولید سیستمهای نرمافزاری و تعامل با حوزههایی مانند هوش تجاری یا همان Business Intelligence و سامانههایی که با حجم بسیار بالا و متنوعی از دادهها کسب کردهام، میتوانم در یک جمله خلاصه اینطور بیان کنم که «مهمترین عامل شکست یا بحرانهای سیستمهای نرمافزاری در فضای کلان داده، معماری نرمافزاری است و نه هیچ عامل دیگری». معماری نرمافزاری، به مراتب بیشتر از کمبود منابع کافی سختافزاری و سروری یا مشکلات پهنای باند یا امنیت اطلاعات، به کسبوکارهای مبتنی بر داده لطمه وارد کرده است.
انتخاب معماری نرمافزاری صحیح، علیرغم دانش علمی، بسیار مبتنی بر تجربه و آزمونوخطا شکل میگیرد، بهگونهای که برخی اوقات در صحبتهای خودمانی بین متخصصان این حوزه، این جمله شنیده میشود که در حوزه معماری سیستم، آنچه در دانشگاهها و مراکز علمی مطرح میکنند، هیچ ارزشی ندارد. بدین معنا که سیستمهای نرمافزاری مانند وبسایتها و اپلیکیشنهای موبایلی که برای پاسخگویی به حجم بالایی از دادهها و کاربران آماده میشوند، ممکن است بهگونهای خاص معماری شوند که از چند الگوی معروف معماری نرمافزاری استفاده کرده و همزمان نیز از هیچکدام به صورت مستقیم استفاده نکند.

در گزارش مکنزی به این موضوع صریحاً اشاره شده است که عدم در اختیار داشتن برنامهریزی در خصوص معماری فضای مدیریت داده در سازمانها، یکی از مهمترین چالشهایی است که کسبوکارهای مبتنی بر داده (بخوانید همه کسبوکارها) با آن مواجه بوده و البته خواهند بود.
به طور کلی فضای کسبوکاری فشارهای زیادی را به تیمهای فنی سازمانها وارد میکند تا بتواند دادههای داخل و خارج سازمان را دائماً پایش کرده و بتواند تصمیمات مدیریتی در خصوص آنها بگیرد.
معماری Lambda Architecture

هدف ارائه این معماری که توسط Nathan Marz مطرح شده ارائه یک چارچوب معماری برای پاسخگویی به انواع دادهها، قابلیت مقیاسپذیری و مدیریت خطاهای دادهای است که امروزه شاید به عنوان شناخته شدهترین معماری حوزه کلانداده مورد استفاده قرار میگیرد.

همانطور که در شکل فوق مشاهده میشود، جریان دادهای از بالا به پایین سرازیر میشود و به سبب آنکه شکل ورود اطلاعات مشابه کاراکتر λ است، نام این معماری نیز از همین حرف یونانی اخذ شده است. این معماری از ۳ لایه تشکیل میشود:
- لایه Batch
- لایه Speed
- لایه Serving
لایه Batch در معماری Lambda
این لایه وظیفه انباشت اطلاعات را به عهده دارد. در واقع تک مرجع واقعیت دادهها در این لایه قرار میگیرد (SVOT = Single Version Of Truth). تکنولوژیهایی مانند Haoop، Pig/Hive در این لایه مورد استفاده قرار میگیرند. این لایه قابلیت مقیاسپذیری افقی را نیز فراهم میکند.

لایه Speed در معماری Lambda
این لایه مجموعه پردازشهای مبتنی بر یادگیری ماشین یا تجزیهوتحلیلهای سریع و در لحظه را پشتیبانی میکند. این لایه برای پاسخگویی به ذخیرهسازی حجم عظیمی از دادهها ساخته نشده است و صرفاً روی بخشهای کوچکی از دادهها پردازشهای تحلیلی خود را صورت میدهد.

لایه Serving در معماری Lambda
این لایه وظیفه برقراری ارتباط با ۲ لایه پیشین را برعهده داشته و Queryهای لازم را برای خروج اطلاعات از سیستم را پس از ترکیب دادهها فراهم میکند. معمولاً در فضای عملیاتی این لایه است که با ابزارهای خارجی مانند برنامههای هوش تجاری (مانند PowerBi، Tableau و …) ارتباط برقرار مینماید.

معماری کلانداده شرکت Yahoo
به عنوان نمونه میتوان معماری و سبد تکنولوژیهای شرکت Yahoo در استقرار معماری Lambda را میتوان در شکل زیر مشاهده کرد.

استفاده از معماری Lambda در توسعه نرمافزارها، مزایای زیادی را به ارمغان میآورد. برخی از مهمترین این مزیتها در شکل زیر قابل مشاهده هستند:

و البته چالشهایی را هم ایجاد میکند:

همین چالشها باعث شده است تا معماریهای دیگری نیز به وجود بیایند. یکی از مهمترین آنها معماری Kappa است که با حذف لایه Batch و با استفاده از تکنولوژیهای ارسال و دریافت پیام، تلاش میکند که به صورت همزمان دریافت اطلاعات را انجام داده و سپس با پردازش آنها، دادههای پالایش شده را به لایه Serving تحویل دهد.
معماری Kappa
شکل زیر نمایی کلان از معماری Kappa در مدیریت کلانداده را نمایش میدهد:




