<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مریم ملکی</title>
        <link>https://virgool.io/feed/@m_33569022</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 07:10:31</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1333035/avatar/0EOidR.jpeg?height=120&amp;width=120</url>
            <title>مریم ملکی</title>
            <link>https://virgool.io/@m_33569022</link>
        </image>

                    <item>
                <title>معماری نرم افزار در نرم افزارهای پردازش داده های حجیم (Big Data)</title>
                <link>https://virgool.io/@m_33569022/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%AF%D8%B1-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D8%AD%D8%AC%DB%8C%D9%85-big-data-sp1l9awjtu5v</link>
                <description>مقدمههمانطور که می ­دانیم در عصر داده ­های حجیم؛ پردازش، تحلیل و استفاده از داده به عنوان یک عامل کلیدی برای رشد کلیه سازمان­ها تبدیل شده است و موجب مزیت رقابتی در کسب و کارها، محرک نوآوری، افزایش رقابت و اثرات مثبت اجتماعی خواهد شد. با توجه به افزایش روزافزون حجم بزرگ داده­ها، گسترش کیفی و کمی سرویس­های متعدد ارائه شده در سطوح مختلف؛ حرکت به سمت ارتقا زیرساخت­های نرم افزاری در قالب محاسبات توزیع شده و استفاده از روش­های نوین پردازش داده­ها اهمیت می ­یابد.ما در این مطالعه، با مطرح نمودن سوالاتی در زمینه بررسی معماری­های نرم ­افزارهای کلان داده­ها و پاسخگویی به آنها قصد داریم که به دید مناسبی جهت، درک اهمییت و انگیزه پذیرش معماری­های کلان داده و شناسایی معماری­های نرم افزاری موجود و ساختار آنها برای سیستم­های کلان داده و راهکارهای رفع چالش در این زمینه دست یابیم.چرا به معماری صحیحی در نرم ­افزارهای پردازش کلان داده نیاز داریم(انگیزه اتخاذ معماری­ های کلان داده)؟امروزه، برای مقابله با افزایش سریع حجم، تنوع و سرعت داده ­های تولید شده، لازم است، ظرفیت فنی جدید و زیرساخت­های موجود مناسبی را برای جمع­آوری و تجزیه و تحلیل کلان داده­ها اتخاذ کنیم. متأسفانه، توسعه سیستم‌های کلان داده ساده نیست و برخلاف انتظارات بالا، پروژه‌های کلان داده ممکن است به دلیل عدم انتخاب ویژگی‌های مناسب و طراحی مناسب معماری کلان داده با شکست مواجه شوند. سیستم­های کلان داده مختلف نیازمندی­های متفاوتی خواهند داشت و به همین دلیل پیکربندی­های طراحی معماری متفاوتی را باید اعمال کرد. از این رو یک معماری مناسب برای سیستم کلان داده برای دستیابی به الزامات ارائه شده از اهمییت بالایی برخوردار است. در دسته ­بندی زیر می­ توانیم عمده دلایل نیاز به معماری نرم ­افزارهای پردازش داده­های بزرگ را مشاهده کنیم:· پشتیبانی از فرآیندهای تحلیلی: پردازش و مدیریت موثر حجم عظیمی از داده ها برای پشتیبانی از فرآیندهای تجزیه و تحلیل داده­ها یکی از انگیزه های اصلی اتخاذ یک معماری کلان داده است. ورودی فرآیندهای تجزیه و تحلیل کلان داده اغلب شامل داده­های چند رسانه­ای، از جمله متن، داده ­های حسگر، یا جریان های موسیقی/ویدئو به منظور انجام تحلیل مقایسه ­ای و شناسایی الگوهای در حال ظهور و روابط مرتبط در حوزه­های مختلف برنامه است. معماری‌های کلان داده، زیرساخت‌ها و ابزارها، سیستم‌ها را قادر می‌سازند تا پشتیبانی تصمیم‌گیری بهتری را ارائه دهند.· بهبود کارایی: یکی دیگر از انگیزه‌های اصلی برای اتخاذ معماری‌های کلان داده، پردازش کارآمد حجم عظیمی از داده‌های ناهمگن با مدل‌های داده‌ای انعطاف‌پذیر، نیمه ساختاریافته و طیف وسیعی از اندازه‌های پرس و جو است و در عین حال از تحمل خطای راه‌حل مستقر شده اطمینان می‌یابد. نظارت کارآمد اطلاعات انبوه نیز در مطالعات اولیه انتخاب شده مورد تاکید قرار گرفته است. اجرای جوین کوئری­ها بر روی سکو­های مختلف داده­های بزرگ و مجموعه داده­های بزرگ مختلف به طور موثر و پرس و جو تعاملی به موقع نیز از جمله اهداف اتخاذ معماری­های کلان داده است.· بهبود قابلیت پردازش داده ­ها در زمان واقعی: سومین دلیل اصلی در استفاده از سیستم­های کلان داده، به دست آوردن توانایی مقابله با سرعت بی­سابقه تولید داده در زمان واقعی و نیازهای مربوط به پردازش آن است. اینترنت اشیاء محرکی برای استقرار فشرده حسگرها است که متعاقباً جریان های داده­ای را تولید می­کنند که از طریق ابزارهای کلان داده برای ایجاد پیش­ بینی ­های مبتنی بر رویداد، پرس و جو (پیچیده و 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</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Sat, 12 Feb 2022 23:04:52 +0330</pubDate>
            </item>
                    <item>
                <title>تحویل مستمر(Continuous Delivery) و بهترین روش های اجرای آن</title>
                <link>https://virgool.io/@m_33569022/%D8%AA%D8%AD%D9%88%DB%8C%D9%84-%D9%85%D8%B3%D8%AA%D9%85%D8%B1continuous-delivery-%D9%88-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A2%D9%86-bmaatirxmu8x</link>
                <description>مقدمهتحویل مداوم یک روش توسعه نرم افزار است که از اتوماسیون برای سرعت بخشیدن به انتشار کد جدید استفاده می کند. در واقع فرآیندی را ایجاد می‌کند که از طریق آن تغییرات توسعه‌دهنده در یک برنامه کاربردی می‌تواند از طریق اتوماسیون به مخزن کد یا رجیستری ظرف منتقل شود.پسContinuous Deliveryتحویل مستمر توانایی دریافت انواع تغییرات، از جمله ویژگی‌های جدید، تغییرات پیکربندی، رفع اشکال‌ها و آزمایش‌ها ، به تولید یا در دستان کاربران، ایمن و سریع به روشی پایدار است.هدف ما این است که استقرارها را ،خواه یک سیستم توزیع شده در مقیاس بزرگ، یک محیط تولید پیچیده، یک سیستم تعبیه شده یا یک برنامه ، انجام دهیم، امور معمول و قابل پیش بینی که می توانند در صورت تقاضا انجام شوندما همه اینها را با اطمینان از اینکه کد ما همیشه در وضعیت قابل استقرار است، حتی در مواجهه با تیم‌هایی متشکل از هزاران توسعه‌دهنده که روزانه تغییراتی ایجاد می‌کنند، به دست می‌آوریم. بنابراین، فازهای ادغام، آزمایش و سخت شدن را که به طور سنتی به دنبال «dev full» هستند، و همچنین فریز کردن کد را کاملاً حذف می‌کنیم.چرا تحویل مداوم؟اغلب فرض بر این است که اگر می‌خواهیم نرم‌افزار را به دفعات بیشتری مستقر کنیم، باید سطوح پایین‌تری از ثبات و قابلیت اطمینان را در سیستم‌های خود بپذیریم. در واقع، تحقیقات انجام‌شده توسط همتایان نشان می‌دهد که اینطور نیست، تیم‌های با عملکرد بالا به طور مداوم خدمات را سریع‌تر و قابل اطمینان‌تر از رقبای کم عملکردشان ارائه می‌کنند. این امر حتی در حوزه های بسیار تحت نظارت مانند خدمات مالی و دولتی نیز صادق است. این قابلیت، مزیت رقابتی باورنکردنی را برای سازمان هایی که مایل به سرمایه گذاری برای پیگیری آن هستند، فراهم می کند.چنانچه با DevOpsآشنایی داشته باشد، یکی از ویژگی های DevOps بهبود ارائه نرم افزار است. بنابراین، سیستم‌های DevOps بالغ از تحویل پیوسته (CD) استفاده می‌کنند، فرآیند انتشار نرم‌افزار با اندازه‌ی بیت به طور منظم تغییر می‌کند. در میان تقاضای زیاد برای نوآوری دیجیتال، ساده‌سازی این خط لوله انتشار برای فعال کردن سیالیت کلی نرم‌افزار ضروری‌تر می‌شود.ارتباط تحویل مداوم با DevOps ؟همانطور که آشکار است، DevOps ، مفهومی که شیوه‌های «توسعه» و «عملیات» را با هم ترکیب می‌کند، رویکردی به فرهنگ، اتوماسیون و طراحی پلتفرم است که هدف آن افزایش ارزش کسب‌وکار و پاسخگویی از طریق ارائه خدمات سریع و با کیفیت بالا است.تحویل مداوم یک روش خاص توسعه نرم افزار است که اغلب در ارتباط با DevOps اعمال می شود. رویکرد DevOps احتمالاً شامل ایجاد یک خط لوله تحویل مداوم است. . DevOps رویکردهایی را برای سرعت بخشیدن به فرآیندهایی توصیف می کند که در آن یک ایده (مانند یک ویژگی نرم افزار جدید، درخواست بهبود یا رفع اشکال) از توسعه به استقرار در یک محیط تولید می رود که در آن می تواند برای کاربر ارزش ارائه کندبا DevOps، توسعه‌دهندگان، معمولاً در یک محیط توسعه استاندارد کدنویسی می‌کنند، از نزدیک با آزمایش‌کنندگان و تیم‌های عملیات فناوری اطلاعات کار می‌کنند تا سرعت ساخت نرم‌افزار، تعهد کد، آزمایش واحد و انتشار را بدون از دست دادن قابلیت اطمینان، سرعت بخشند.یک نتیجه اصلی اجرای DevOps یک خط لوله CI/CD است که توسط تیم های توسعه و عملیات که با یکدیگر با استفاده از یک روش چابک کار می کنند پشتیبانی می شود.خط لوله CI/CD چیست؟خط لوله CI/CD مجموعه ای از مراحل است که به منظور ارائه نسخه جدیدی از نرم افزار انجام می شود. وقتی CI/CD را در عمل پیاده کردید، یک خط لوله CI/CD ایجاد کرده اید.خط لوله CI/CD، نظارت و اتوماسیون را برای بهبود گردش کار توسعه برنامه، به ویژه در مراحل یکپارچه سازی و آزمایش، و همچنین در حین تحویل و استقرار معرفی می کند.اگرچه امکان اجرای دستی هر یک از مراحل یک خط لوله CI/CD وجود دارد، اما ارزش واقعی خطوط لوله CI/CD از طریق اتوماسیون چرخه عمر برنامه محقق می شود.تحویل مستمر(Continuous Delivery) چگونه با CI/CD مرتبط است؟تحویل مداوم بخشی از CI/CD را تشکیل می دهد، روشی برای ارائه مکرر نرم افزار با خودکارسازی برخی از مراحل توسعه برنامه.پس &quot;CI&quot; در CI/CD به ادغام پیوسته اشاره دارد. با یکپارچه سازی مداوم، تغییرات کد جدید در یک برنامه به طور منظم ساخته، آزمایش و در یک مخزن مشترک ادغام می شوند. این یک راه حل برای مشکل داشتن شعبه های بیش از حد یک برنامه در حال توسعه به طور همزمان است که ممکن است با یکدیگر تضاد داشته باشند.و&quot;CD&quot;در CI/CD می تواند به استقرار مداوم یا تحویل مداوم اشاره داشته باشد که روش هایی را برای خودکارسازی مراحل بعدی خط لوله توصیف می کند.تفاوت بین تحویل مداوم و استقرار مداوم چیست؟تحویل مداوم و استقرار مداوم، در حالی که مفاهیم نزدیک به هم مرتبط هستند، گاهی اوقات به طور جداگانه برای تعیین میزان اتوماسیون در حال وقوع استفاده می شوند.تحویل مداوم معمولاً به این معنی است که تغییرات یک تیم توسعه در یک برنامه به طور خودکار باگ آزمایش شده و در یک مخزن (مانند GitHub یا یک رجیستری کانتینر) آپلود می‌شوند، جایی که می‌توانند توسط تیم عملیات در یک محیط تولید زنده مستقر شوند. این پاسخی است به مشکل دید ضعیف و ارتباط بین توسعه دهندگان و تیم های تجاری. برای این منظور، هدف از تحویل مداوم این است که اطمینان حاصل شود که حداقل تلاش برای استقرار کد جدید لازم است.از سوی دیگر، استقرار مداوم، برخی از مراحل اضافی را از طریق فرآیند انتشار نرم افزار جدید پوشش می دهد. معمولاً شامل فرآیند انتشار خودکار تغییرات یک توسعه‌دهنده از مخزن تا تولید است، جایی که توسط مشتریان قابل استفاده است. این مشکل بارگذاری بیش از حد تیم های عملیاتی را با فرآیندهای دستی که روند تحویل برنامه را کند می کند، برطرف می کند. با خودکار کردن مرحله بعدی در خط لوله، بر مزایای تحویل مداوم استوار است.برترین ابزارهای تحویل مداوم برای سال 2021اگر شرکت شماDevOps را پذیرفته است، پس اهمیت تحویل مداوم را به عنوان بخشی از حلقه بازخورد توسعه نرم افزار درک می کنید. تحویل مستمر همراه با اجرای مداوم کار می کند تا از انتشار سریع کدهای بدون خطا اطمینان حاصل کند تا کاربران نهایی را از نرم افزار یا وب سایت خود راضی نگه دارد.در اینجا تعدادی از بهترین ابزار را در جدول زیر مشاهده می کنید.سه مورد از ابزار جدول بالا که بیشتر مورد توجه قرار گرفتند:گیت لب(GitLab)یک پلت فرم DevOps است که بر روی منبع باز در یک برنامه واحد برای زنجیره ابزار ساده تر و کنترل متمرکز بر SDLC ساخته شده است. رویکرد متمرکز و ساده آن و تمرکز بر عملکردهای اصلی DevOps - یعنی CD/CI - GitLab را به یک انتخاب عالی برای SMB ها تبدیل می کند. GitLab پس از اینکه توسعه دهندگان کد را به مخزن با آزمایش، ایمن سازی و نظارت خودکار کد به مخزن متعهد کردند، کارهای سنگین را انجام می دهداین هاب یک مرحله‌ای و کاربرپسند گردش کار را بهینه می‌کند و برای ساخت‌های مشترکی که نه تنها توسعه‌دهندگان، بلکه مدیران و طراحان می‌توانند در آن مشارکت کنند، مفید است. با توجه به بسیاری از ویژگی‌های GitLab در پلتفرم آن، شرکت شما می‌تواند به راحتی وارد ویژگی‌ها شود، اما کاربران آن از آسانی استفاده از آن لذت می‌برند.جنکینز (Jenkins)جنکینز که عمدتاً در شرکت‌ها و شرکت‌های متوسط استفاده می‌شود، به‌عنوان یک سرور CI در دسترس است یا می‌تواند برای پشتیبانی و خودکارسازی فرآیند CD شما نیز گسترش یابد. در واقع، کاربران از نحوه خودکارسازی و ساده سازی فرآیند CI/CD لذت می برند. جنکینز با طیف گسترده ای از ابزارهای خارجی ادغام می شود، اما مراقب خزش و سازگاری ابزار باشید.ادغام Jenkins با بسیاری از ابزارهای خارجی می تواند منجر به مشکلات ارتقاء شود. علاوه بر این، مطمئن شوید که جنکینز از نسخه ابزارهای خارجی که استفاده می کنید پشتیبانی می کند. اشکال اصلی جنکینز این است که تجربه کاربری آن به اندازه برخی ابزارهای موجود در بازار خوشایند یا شهودی نیست.سمافور(Semaphore)یک ابزار طاقچه با کارایی بالا در چشم انداز SMB است که به طور خودکار کد را با Docker، Kubernetes یا هر یک از ابزارهای از پیش نصب شده دیگر آن، پس از اینکه کد را به GitHub یا مخزن انتخابی خود متعهد می کنید، آزمایش می کند. Semaphore تجسم گردش کار را ارائه می دهد و به شما امکان می دهد داشبوردهای سفارشی ایجاد کنید تا معیارهای مربوط به DevOps خود را ردیابی کنیدبا این حال، داشبوردهایی که می‌توان در Semaphore ایجاد کرد، می‌توانند توسعه‌دهنده محور باشند و برای سایر ذینفعان DevOps، مانند مدیریت، که می‌خواهند یک مرور کلی از خط لوله داشته باشند، شهودی نباشند. با این اوصاف، کاربران رابط کاربری و تجسم خط لوله Semaphore و همچنین گزارش‌های رمزگشایی آسان آن را دوست دارند.عواملی که هنگام انتخاب یک ابزار تحویل مداوم باید در نظر گرفت:اول UI/UXبه این فکر کنید که چه کسی واقعاً از ابزار تحویل مداوم استفاده می کند و تجربه کاربری آنها را در نظر بگیرید. اتخاذ روش خوب DevOps به این معنی است که سهامداران مختلف در هر مرحله از جریان ارزش در SDLC شما درگیر هستند. شما یک ابزار CD می خواهید که استفاده از آن آسان باشد، خواه آن کاربر یک توسعه دهنده، مهندس، مدیر یا مدیر اجرایی سطح بالا باشد. در این راستا، در صورت وجود داشبوردها را بررسی کنید و مرورها را مرور کنید تا ببینید آیا ذکر مکرر از UI/UX ظاهر می‌شود یا خیر.ادغام ها /APIاگر به‌جای کل پلتفرم DevOps، فقط به دنبال یک ابزار CD هستید، مطمئن شوید که ابزار CD انتخابی شما به‌طور یکپارچه با سایر برنامه‌هایی که استفاده می‌کنید ادغام می‌شود. همچنین، بررسی کنید که ابزار همپوشانی نداشته باشد.آزمایش کردنمدل‌های توسعه مبتنی بر آزمایش مهم هستند زیرا کد باید بدون خطا باشد تا کاربران نهایی را راضی نگه دارد. توسعه‌دهندگان باید بتوانند تغییرات کد را به یک مخزن ارسال کنند که به نوبه خود، آزمایش‌های واحد پایه یا آزمایش‌های پیچیده انتها به انتها را در همه محیط‌ها درخواست می‌کند. آزمایش نیز لزوماً نیازی به خودکار نیست. می توان آن را در صورت نیاز انجام داد.نظارت و بازگشت آسانهر چه ابزار تحویل مداوم شما بتواند برای تیم DevOps شما انجام دهد، بهتر است. این شامل نظارت بر اشکالات در استقرار، هشدار به شما در مورد هر چیزی است که ایجاد می شود، و شاید حتی رفع اشکال به خودی خود بدون دخالت انسان.اگر اصلاح بدون دخالت انسان در محیط شما امکان پذیر نیست، برخی از ابزارها به طور خودکار به نسخه قبلی برمی گردند در حالی که همچنان UX یکپارچه را در اختیار کاربران نهایی قرار می دهندکنترل نسخهکنترل نسخه مستقیماً در ارتباط با بازگشت است، نه تنها برای بازگشت به یک مصنوع قبلی، بلکه برای تقویت کدنویسی مشترک بدون سردرگمی.مزایای استفاده از ابزارهای تحویل مداومصرفه جویی در زمانهنگام استفاده از ابزار تحویل مداوم، با خودکار کردن کارهای دستی، تنگناها را در SDLC کاهش داده یا از بین می برید. توسعه‌دهندگان مجبور نیستند منتظر بررسی و تأیید تغییرات کد یا کد خود باشند، در نتیجه خط لوله روان‌تری از توسعه تا استقرار ایجاد می‌کنندافزایش انعطاف پذیریبا ابزارهای تحویل مستمر، می‌توانید برنامه‌های بهتری را به کاربران نهایی ارائه دهید و نیازهای در حال تغییر آنها را با به‌روزرسانی‌های کوچک و مکرر که عملکرد، عملکرد و UX کلی برنامه را بهبود می‌بخشد، برآورده کنید.کاهش ریسکبا آزمایش خودکار داخلی، ابزارهای تحویل مستمر خطرات مرتبط با خطاهای کدگذاری و انتقال اشکالات به کاربر نهایی را کاهش می‌دهند، که می‌تواند منجر به از دست دادن درآمد، جریمه‌های احتمالی یا طرح دعوی قضایی شود.معرفی شرکت های ایرانی که در این زمینه فعالیت دارند:ابر آروانشرکت ابر آروان با بهره‌گیری از متخصصان ارشد حوزه QA و انجام ده‌ها پروژه مختلف آماده کمک به سازمان‌های مختلف برای راه اندازی فرایند CI/CD است.لیاراسرویس ابری لیارا،  و برای راه اندازی CI/CD در GitLab به شما کمک می کند. از این‌جا می‌توانید مستندات این ابزار را مطالعه کنید.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابعhttps://devops.com/the-state-of-continuous-delivery-in-2021/https://www.cioinsight.com/it-strategy/top-continuous-delivery-tools-for-2021/https://www.redhat.com/en/topics/devops/what-is-continuous-delivery</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Fri, 17 Dec 2021 14:40:22 +0330</pubDate>
            </item>
                    <item>
                <title>ابزار نظارت بر سرور(Prometheus)</title>
                <link>https://virgool.io/@m_33569022/%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-%D9%86%D8%B8%D8%A7%D8%B1%D8%AA-%D8%A8%D8%B1-%D8%B3%D8%B1%D9%88%D8%B1prometheus-uf6tg74cskes</link>
                <description>مقدمههمانطور که می­دانید، بهترین ابزارهای نظارت بر سرور دارای تعداد زیادی ادغام و پلاگین با کیفیت بالا، نمودارهای بسیار منعطف هستند و عملکرد هشدار پیشرفته ای را ارائه می دهند تا در صورت بروز مشکل به شما اطلاع داده شود.بهترین ابزارهای نظارت بر سرور برای توسعه دهندگان و مهندسان توسعه دهنده در سال 2021 :· Grafana + Prometheus· New Relic· InfluxDB + Telegraf· Datadogپرومتئوس چیست؟ابزار Prometheus یکی از محبوب ترین و بهترین ابزارهای نظارتی است که همراه با کوبرنیتزها استفاده می شود. ابتدا این ابزار توسط SoundCloud ایجاد و پس از مدتی به CNCF اهدا شد. در حال حاضر Google Borg Monitor از آن الهام می گیرد. Prometheu یک راه حل نظارتی برای ضبط و پردازش هر سری زمانی صرفا عددی است. این معیارها را به همراه شناسه ها و مهرهای زمانی منحصر به فرد جمع آوری، سازماندهی و ذخیره می کند.ابزارPrometheus یک سیستم قدرتمند مانیتورینگ و هشدار دهنده اپن سورس است. Prometheus، مقادیر و داده ها را به وسیلهMetric های گوناگون در یک time sequence یا دنباله زمانی مشخص، جمع آوری و ذخیره می کند.به صورت کلی مواردی مثل مکانیسم های هشدار داخلی (built-in alerting mechanisms)، مدل داده های چند بعدی (multidimensional) ، مدل pull vs. push، زبان پرسشگر Prometheus یا PromQL و جامعه در حال رشد باعث برجسته شدن Prometheus در بین دیتابیس های time-series می­شود.ویژگی و قابلیت های Prometheus :دارای قدرت خاص در دنیای MicroService ها جهت جمع آوری داده ها و پرس و جو های چند بعدی با استفاده از زبان  PromQL.قابلیت تنظیم Alert برای نظارت و کنترل سرویس ها.قابلیت افزودن خودکار داده ها به نرم افزار از طریق  Service Discovery یا Static Configuration.قابل دسترس از طریق هر نوع سیستمی.دارای سرور مستقل.عدم وابستگی به ذخیره سازی تحت شبکه یا خدمات از راه دور.دارای چندین فرم از نمودار و داشبورد پشتیبانی.نظارت با Prometheusبهترین راه برای یادگیری Prometheus، نصب آن بر روی سرور dev و کار کردن با آن است. می­توانید برای نظارت end-to-end cluster از ابزار Kube Prometheus، برای نمایش وضعیت اشیا ازKube State Metri و برای تجسم داده ها، از Grafana استفاده کنید.با استفاده از ابزار Grafana میتوانmetric های موجود در پلتفرم Prometheus را جستجو و مشاهده کرد، یک داشبورد ایجاد و با توجه به نیاز ها یک alert تنظیم کرد. Grafana می تواند در کانال های ارتباطی مثل slack، webhook یا mail، ایشو اضافه و به طور همزمان در چندین موجودیت جستجو کند.با ترکیب ابزارهایPrometheus وGrafana، می توانید سطح نظارت Kubernetes را در سیستم تولید خود به بالاترین حد برسانید.نحوه کار سرویس مانیتورینگ و معماری Prometheusابزار Prometheus معیارها را از برنامه‌های ابزاردار، مستقیماً یا از طریق یک دروازه فشار میانی، خراش می‌دهد. به این به عنوان نوعی بافر فکر کنید. سنجه‌های تحت فشار را می‌پذیرد و ذخیره می‌کند، و یکAPI قابل خراش برای پرومتئوس را در معرض نمایش می‌گذارد.بخش عمده ای از پایگاه کد و تلاش نویسندگان صرف نحوه ذخیره داده های سری زمانی می شود. این به طور پیش‌فرض شامل یک ذخیره‌سازی داده مبتنی بر فایل است که به خوبی مقیاس‌پذیر و کارآمد است.ابزار Prometheus حاوی یک زبان پرس و جو ساده است که به شما امکان می دهد داده های سری زمانی را ارزیابی و جمع آوری کنید. یک پرس و جو اساس تمام وظایف نظارتی را تشکیل می دهد که شامل تجسم آمار فعلی و هشدار می باشد. در نهایت، Prometheus یک REST API را برای مصرف کنندگان خارجی، مانند داشبورد، در معرض دید قرار می دهد.معماری Prometheusدر تصویر بالا مشخص است که قسمت اصلی و مرکزی Prometheus server می‌باشد که تمام متریک‌ها از طریق Exporterها آماده می‌شود و خود Prometheus server آن‌ها را Pull می‌کند. اگر جایی محدودیتی وجود داشته باشد و نیاز باشد که حتما متریک‌ها توسط exporterها push شود از ابزاری به نامpushgateway استفاده می‌شود که exporterها به آن سرویس push می‌کنند و بعد خود سرور prometheus مجدد از سرورpushgateway آن‌ها را pull می‌کند.سرویس prometheus انواع روش‌های کانفیگ را دارد که بنا به استفاده‌ی شما، می‌توان یکی از آن روش‌ها را انتخاب و از آن استفاده کرد. می‌توان تمام موارد را در کانفیگ‌ فایل‌ها نوشت یا از قابلیت service discovery آن استفاده کرد و هر زمان که نود با مشخصات مورد نظر وارد شد به صورت خودکار وارد فرآیند مانیتورینگ شود و متریک‌های آن ارسال، ذخیره و نمایش داده شود.یکی از موارد دیگه که در prometheus کانفیگ می‌شود ruleهای مربوط بهalerting می‌باشد که با استفاده از آن‌ها مشخص می‌کند که اگر چه شرایطی پیش‌ آمد یکalert ایجاد شود. مثلا اگر رم سرور بیشتر از ۸۰ درصد پر شد به من خبر بدهد یا اینکه اگر لود سرور بیشتر از ۷۰ درصد شد به من خبربدهد. این موارد تماما در فایل‌هایی به صورت rule آماده می‌شود و در کانفیگ مربوط به prometheus می‌باشد.این موارد به سمت alertmanager ارسال می‌شود. این ابزار با استفاده از قابلیتی که دارد می‌تواند به ابزارهای مختلف متصل شود و از طریق آن‌ها به ما خبر دهد وAlert را ارسال کند. از متداول‌ترین ابزارهایی که برای اطلاع‌رسانی استفاده می‌شود می‌توان به ایمیل، slack، rocketchat و sms اشاره کرد.انواع متریک هاپرومتئوس با داشتن چهار نوع معیار مختلف، انواع مختلفی از اندازه گیری ها را برآورده می کند.شمارنده(Counter): یک متریک تجمعی که فقط افزایش می یابد. (به عنوان مثال درخواست های ارائه شده، وظایف تکمیل شده، خطاهای رخ داده)گیج(Gauge): معیاری که می تواند خودسرانه بالا یا پایین برود. (به عنوان مثال دما، استفاده از حافظه)هیستوگرام(Histogram): اندازه گیری Binned یک متغیر پیوسته. (به عنوان مثال تأخیر، مدت زمان درخواست، سن)ارزیابی(Summary): مشابه هیستوگرام، با این تفاوت که سطل ها بلافاصله به یک جمع (مثلاً صدک 99%) تبدیل می شوند.اگر در حال توسعه خدمات مبتنی بر REST هستید، معمولاً می توانید بیشتر مواردی را که به آنها علاقه دارید با هیستوگرام اندازه گیری کنید. این به این دلیل است که شما نه تنها یک سری سطل، بلکه تعداد و مجموع کل داده ها را نیز دریافت می کنید. بنابراین می توانید از هیستوگرام برای محاسبه نرخ درخواست، نرخ خطا و مدت زمان تنها با یک متریک استفاده کنید.مدل دادهتمام داده ها به صورت سری زمانی ذخیره می شوند. یعنی اندازه گیری با مهر زمانی اندازه گیری ها به عنوان متریک شناخته می شوند. هر سری زمانی منحصراً با یک نام متریک و مجموعه‌ای از جفت‌های کلید-مقدار، با نام مستعار برچسب‌ها مشخص می‌شوداین بدان معناست که برچسب ها ابعاد چندگانه یک متریک را نشان می دهند. ترکیبی از یک نام متریک و یک برچسب یک متریک واحد را به دست می دهد. به عبارت دیگر، هر بار که یک جفت کلید-مقدار جدید بر روی یک متریک ایجاد می کنید، یک سری زمانی جدید در پایگاه داده دریافت خواهید کرد. بنابراین، بسیار مراقب باشید که جفت‌های کلید-مقدار شما محدود باشند. مواردی مانند شناسه یا آدرس ایمیل را که نامحدود هستند ذخیره نکنید.با توجه به نام متریک و برچسب‌های مقدار کلید، قالب زیر برای نشان دادن معیارها استفاده می‌شود:&lt;metric name&gt;{&lt;label name&gt;=&lt;label value&gt;, ...}کجا خوب کار می کند؟این ابزاربه دلیل سادگی ذاتی آن برای اجرای برنامه های کاربردی مبتنی بر ریزسرویس حیاتی مناسب است. هنگامی که همه برنامه های شما با شکست مواجه می شوند، Prometheus همچنان در حال اجرا خواهد بوداز طریق استفاده از برچسب‌های ارزش کلیدی، داده‌های چند بعدی را به خوبی مدیریت می‌کند. فیلتر کردن داده ها بر اساس برچسب آنها سریع و آسان است. به عنوان مثال، شما می‌توانید از یک نام متریک برای همان نوع داده استفاده کنید و فقط زمینه (مانند کد وضعیت) را از طریق برچسب‌ها متمایز کنید.کجا خوب کار نمی کند ؟به یاد داشته باشید که پرومتئوس داده ها را خراش می دهد. زمانی که پرومتئوس آن خراش را انجام می دهد تضمینی نیست. بنابراین، اگر یک مورد استفاده دارید که نیاز به خراش های دقیق ثانیه به ثانیه دارد، ممکن است انتخاب خوبی نباشد.همچنین، Prometheus بدون قید و شرط بر HTTP متمرکز است. اگر در یک محیط یکپارچه مبتنی بر SOAP یا RPC که در آن از HTTP استفاده نمی شود کار می کنید، ممکن است مشکلات یکپارچه سازی داشته باشید.چگونه لاگ های پرومتئوس را بررسی کنیم؟پرومتئوس بیشتر نظارت بر جعبه سفید را انجام می دهد. برنامه‌ها نقاط پایانی متریک را برای Prometheus پیاده‌سازی می‌کنند تا آن را خراش دهد یا با اجرای یک برنامه صادرکننده جداگانه. برای مشاهده گزارش‌ها از برنامه‌ها، از صادرکنندگان Prometheus مانند Prometheus grok_exporter برای تجزیه فایل‌های گزارش و استخراج معیارها از داده‌های گزارش بدون ساختار استفاده کنید. معیارهای استخراج شده در جعبه ابزار نظارت Prometheus قابل مشاهده خواهد بود.انواع مانیتورینگ موجود در پرومتئوس چیست؟انواع نظارت انجام شده توسط پرومتئوس ابزار دقیق و عامل/صادر کننده است. ابزار دقیق با درج کد سفارشی در کد منبع برنامه نظارت شده، معیارها را ضبط می کند. Agent ها در کنار برنامه ها در یک محیط مشترک اجرا می شوند تا به طور خودکار داده های برنامه یا لاگ ها را به معیارهای Prometheus ترجمه کنند.چه چیزی را می توانید با پرومتئوس مانیتور کنید؟ابزارPrometheus معیارهای برنامه مانند توان عملیاتی (TPS) و زمان پاسخ را نظارت می کند. همچنین می‌توانید از صادرکننده Node برای نظارت بر سخت‌افزار میزبان و معیارهای هسته استفاده کنید.داده های Prometheus کجا ذخیره می شود؟ابزارPrometheus یک پایگاه داده محلی بر روی دیسک سری زمانی دارد. همچنین با سیستم های ذخیره سازی از راه دور ادغام می شود. پایگاه داده محلی Prometheus اطلاعات را در قالبی سفارشی و بسیار کارآمد با زمان نگهداری پیش فرض 15 روز ذخیره می کند. فضای ذخیره‌سازی محلی خوشه‌بندی یا تکراری نیست. اگر می‌خواهید ذخیره‌سازی بادوام طولانی‌مدت داشته باشید، باید داده‌های جمع‌آوری‌شده را با استفاده از یکی از ادغام‌های ذخیره‌سازی پشتیبانی‌شده به راه‌حل‌های ذخیره‌سازی راه دور منتقل کنید.چگونه از Prometheus Metrics استفاده کنیم؟معیارهای جمع آوری شده توسط Prometheus با برجسته کردن حوادث امنیتی، عملکرد ضعیف و سایر مسائل، بینشی در مورد عملکرد سیستم شما ارائه می دهد. می توانید از این بینش ها برای بهبود کارایی سازمان خود و موارد دیگر استفاده کنید.در ایران نیز در زمینه نظارت و مانیتورینگ شرکت های بسیاری فعالیت دارند از جمله:شرکت سدید آفرین، که اولین نمایندگی رسمی نرم افزار مانیتورینگ شبکه zabbix است.ویا داناپرداز که نرم افزار اختصاصی خود را به نام بینا را ارائه می دهد.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابعhttps://winder.ai/introduction-to-monitoring-microservices-with-prometheus/https://sensu.io/blog/introduction-to-prometheus-monitoringhttps://sematext.com/guides/kubernetes-monitoring/</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Fri, 17 Dec 2021 02:55:33 +0330</pubDate>
            </item>
                    <item>
                <title>گذرگاه  خدمات سازمانی (ESB)چیست و جایگزین های آن کدامند؟</title>
                <link>https://virgool.io/@m_33569022/%DA%AF%D8%B0%D8%B1%DA%AF%D8%A7%D9%87-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86%DB%8C-esb%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86-%D9%87%D8%A7%DB%8C-%D8%A2%D9%86-%DA%A9%D8%AF%D8%A7%D9%85%D9%86%D8%AF-fp2mgeqxmhi6</link>
                <description>مقدمهشاید برای اولین بار است که این اصطلاح را می شنوید، اما ایده جدیدی نیست. گذرگاه خدمات سازمانی (ESB) که امروزه می شناسیم، در ابتدا توسط معمار گرگور هوپ در سال 2000 طراحی شد. و آن را روتر خدمات سازمانی نامید.و برای مدت طولانی این مفهوم درباره(ESB)  به کار می­رفت .  با توجه به اینکه شرکت‌ها در تلاش هستند سیستم‌های خود را چابک‌تر و پاسخگوتر به تغییرات در بازار کنند، ESB نیزمحبوب‌تر می‌شود.اساساً، کاری که(ESB)  انجام می دهد کمک به اتصال دو بخش مختلف یا فرآیندهای تجاری با یکدیگر است تا بتوانند با استفاده از داده های مشترک با یکدیگر ارتباط برقرار کنند. هدف یک گذرگاه خدمات سازمانی ایجاد ارتباط بین سرویس‌های فناوری اطلاعات و برنامه‌های کاربردی مختلف در سازمان شما بدون نیاز به تغییر کد است.یک ESB (Enterprise Service Bus) به شما امکان می دهد برنامه ها و سرویس های متفاوتی را که سازمان شما را اداره می کنند یکپارچه کنید.  با اتصال همه این مؤلفه ها از طریق یک ESB، کار سخت ادغام نقطه به نقطه کدنویسی سفارشی را حذف می کنید. به این ترتیب، یک ESB یک ستون فقرات ایمن، سریع و قابل اعتماد برای زیرساخت فناوری اطلاعات شما فراهم می کند.با این حال، مهم است که به یاد داشته باشید که ESB تنها راه حل یکپارچه سازی برنامه نیست. شرایط خاصی وجود دارد که در آن یک iPaaS (سکوی ادغام به عنوان یک سرویس) می تواند به عنوان جایگزین ESB ارزان تر و با استفاده آسان تر عمل کند.گذرگاه  خدمات سازمانی (ESB)در مقابل SOAدر حالی که یک ESB (Enterprise Service Bus) به عنوان یک معماری نرم‌افزاری شناخته می‌شود که می‌تواند چندین برنامه را در یک زیرساخت واحد ادغام کند، SOA یک معماری سرویس‌گرا است که برای ایجاد برنامه‌های کاربردی تجاری که عمدتاً بر توسعه مبتنی بر خدمات تمرکز دارند، استفاده می‌شود. اگرچه هر دو معماری نرم افزاری هستند، ESB به عنوان ستون فقرات یک معماری SOA عمل می کند. SOA امکان تعامل سرویس های جدا شده با یکدیگر را فراهم می کند. تنها راهی که این تبادل داده امکان پذیر است، از طریق ESB است. به عبارت دیگر، ESB ابزاری است که برای یکپارچه سازی برنامه ها استفاده می شود و برای دستیابی به ایده ها و اصولی که در واقع SOA را تشکیل می دهند، استفاده می شود.گذرگاه  خدمات سازمانی (ESB)چگونه کار می کند؟قبل از ESBها، کسب‌وکارها با یکپارچه‌سازی برنامه‌های کاربردی با کد سفارشی و نقطه به نقطه مشکل داشتند. این ادغام های نقطه به نقطه منجر به آشفتگی، &quot;کد اسپاگتی&quot; و به سختی باز کردن وابستگی های برنامه شد. امروزه یک ESB این چالش ها را با خدمت به عنوان یک گذرگاه ارتباطی پایدار بین برنامه ها حذف می کند.و (ESB)از طریق مجموعه‌ای از آداپتورهای نرم‌افزاری از پیش ساخته‌شده، که یک راه‌حل یکپارچه‌سازی برنامه «قابل اتصال» را ایجاد می‌کند، به این امر دست می‌یابد - راه‌حلی که ادغام برنامه‌های جدید، ارتقای سیستم و رشد کسب‌وکار را تسهیل می‌کند. یکی دیگر از مزایایESB ها سرعت آنها است که به اندازه کافی سریع است تا از یکپارچه سازی داده های بلادرنگ پشتیبانی کند.یک ESB معمولی دارای اجزا و ویژگی های زیر است:سرور پیام: به عنوان یک گذرگاه ارتباطی بین برنامه‌ها، یک ESB از ارتباط مستقیم برنامه‌ها با یکدیگر از طریق یک واسطه پیام (معمولا AMQP یا JMS )جلوگیری می‌کند. کارگزار پیام استانداردی را ایجاد می کند که ESB از آن برای ارسال و دریافت پیام در درون خود استفاده می کند.فرمت پیام رسانی متعارف (معمولاً XML ): پیام هایی که از ESB عبور می کنند در قالب متعارف (سازگار) هستند - معمولاً XML. این امر باعث ایجاد ثبات در هنگام درخواست مسیر از طریق اتوبوس می شود. برخی ازESB ها فرمت های پیام رسانی اضافی را مجاز می دانند - مانند JSON، فایل های مسطح، باینری، اشیاء جاوا و موارد دیگر آداپتورهای نرم افزار: ESB از آداپتورهای نرم افزاری برای تبدیل پیام های برنامه به قالب پیام رسانی متعارف ESB (معمولاً XML) استفاده می کند. قبل از تحویل، ESB پیام ها را برای بار دوم به پروتکل برنامه دریافت کننده تبدیل می کند. ESB ها شامل مجموعه ای از آداپتورهای از پیش ساخته شده برای محبوب ترین پلتفرم ها، پروتکل ها و برنامه های قدیمی هستند. آداپتورها همچنین می توانند نظارت بر امنیت، مدیریت خطا، مسیریابی پیام و مدیریت تراکنش را انجام دهند.سرور بدون تابعیت: ESB ها معمولاً بدون تابعیت هستند. سرور بدون حالت از اطلاعات درخواست‌های قبلی استفاده نمی‌کند یا آن را حفظ نمی‌کند. در عوض، وضعیت را در پیام‌ها در مسیر عبور ازESB حفظ می‌کند. این بدان معناست کهESB ها پیام ها را فقط بر اساس اطلاعات ارائه شده در خود پیام پردازش می کنند.زمان صحیح استفاده از ESBمهمترین موارد استفاده برای ESB به شرح زیر است: ادغام بیش از دو سرویس یا برنامه: هنگام ادغام بیش از دو سرویس یا برنامه، یک ESB ساختار یکپارچه سازی برنامه ها را ساده می کند و اتصالات مطمئن، ایمن و اغلب فوری را فراهم می کند - در حالی که از درهم تنیدگی/وابستگی برنامه نیز جلوگیری می کند.یکپارچه سازی یک پلت فرم خدمات خارجی: هنگام ادغام یک پلت فرم خدمات خارجی، یکESB اتصال قابل اعتمادی را در حین مدیریت و کنترل تعهدات سطح خدمات برای به حداقل رساندن تأثیر تنظیمات قراردادهای خدمات شما فراهم می کند. تبدیل و ادغام چندین پروتکل ارتباطی: ESBها به ویژه در تبدیل چندین پروتکل به یک پروتکل خوب هستند - مانند تبدیلFTP و HTTP به SOAP یا ترکیب کردن SMTP، IIOP، MQ/JMS. آنها همچنین می توانند بسیاری از فرمت های داده های مختلف را مدیریت کنند. افزودن مکرر برنامه‌ها یا خدمات جدید: وقتی دائماً برنامه‌ها و سرویس‌ها را اضافه، تغییر یا ارتقا می‌دهید، «قابلیت اتصال» آداپتورهای از پیش ساخته شدهESB این تغییرات را تسهیل می‌کند.·یکپارچه سازی برنامه های قدیمی: ESB ها همچنین شامل انواع آداپتورهای از پیش ساخته شده برای ادغام برنامه های قدیمی با برنامه ها و خدمات مدرن هستند. زمانی که امنیت و قابلیت اطمینان اتصال مورد نیاز است: یک ESB راه ساده و ایمنی را برای اتصال و تبدیل پیام‌های تراکنش در حین عبور بین دو منبع داده متفاوت ارائه می‌کند. برخورد با پروتکل های خاص صنعت: هنگامی که نیاز به ادغام پروتکل های خاص صنعت با سیستم های دیگر دارید، ESB شما باید آداپتورهای از پیش ساخته شده ای را که پروتکل صنعتی شما به آن نیاز دارد، داشته باشد. به عنوان مثال، یک ESB می‌تواند پروتکل HL7 صنعت مراقبت‌های بهداشتی را با سایر برنامه‌های شما تبدیل و ادغام کند.چه زمانی نباید از ESB استفاده کنید؟در اینجا به مواردی که نباید از ESB استفاده کنید،  اشاره می­کنیم:یکپارچه سازی حجم زیادی از داده ها: اگر شما نیاز به ارسال حجم زیادی از داده دارید - شاید در حین استخراج و بارگذاری داده ها از یک پایگاه داده یا انبار داده به دیگری - ESB شما جایگزین ابزارETL نمی شود. ESBها برای ادغام برنامه‌ها و پلتفرم‌ها ساخته شده‌اند که نیازی به انتقال داده‌های عظیم ندارند. یک پلت فرم ETL برای ادغام داده های با حجم زیاد مناسب تر است. پیاده سازی فرآیندهای کسب و کار حالت دار: اگر نیاز به پیاده سازی فرآیندهای تجاری طولانی مدت، حالت دار دارید، احتمالاً ESB مناسب نیست. شما می‌خواهید از BPMS (سیستم مدیریت فرآیند کسب‌وکار) استفاده کنید که پیاده‌سازی را از طریق BPMN (مدل و علامت‌گذاری فرآیند کسب‌وکار) یا BPEL (زبان اجرای فرآیند کسب‌وکار) ارائه می‌دهد.یکپارچه‌سازی برنامه‌های مبتنی بر ابر: اگر برنامه‌های مبتنی بر ابر، برنامه‌های کاربردی وب، داشبوردهای وب، برنامه‌های کاربردی تلفن همراه، شبکه‌ای از برنامه‌های اینترنت اشیا یا برنامه‌های SaaS را ادغام می‌کنید، باید به جای ESB یک iPaaS را در نظر بگیرید.انتخاب پلتفرم مناسب برای ESBانتخاب پلت فرمESB باید بر اساس نیازهای سازمان شما باشد. پس از اینکه نیازهای شرکت از پیش تعریف شد، ارزیابی اینکه کدام پلتفرم بهترین انتخاب خواهد بود آسان تر می شود.اغلب اوقات، راه حل های اختصاصی مشابه هستند و دقیقاً با پلتفرم های ESB ارائه شده توسط رقبای منبع باز شناسایی می شوند.قبل از تصمیم گیری باید معیارهای زیر را در نظر گرفت:· نصب: تعیین کنید که آیا نصب پلت فرم ESP مورد نظر شما آسان است، آیا به ابزار خاصی نیاز است یا خیر، یا اینکه محیط توسعه بصری است یا خیر· تبدیل پیام: به دنبال راه حلی باشید که هم بتواند پیام ها را وارد کند و هم فرمت های مختلف را تغییر دهد (مانندREST، EDI X12، JSON، CSV)· اتصال دهنده ها: مطمئن شوید که راه حل ESB شما می تواند اتصال یک سیستم به سیستم دیگر را انجام دهد زیرا کانکتورهای همراه بلوک های ساختمانی قابل استفاده مجدد هستند که مسئول ایجاد جریان داده از طریق گذرگاه هستند. اتصال دهنده ها همچنین باید دارای گزینه انتقال فایل با سرعت بالا باشند تا پیام ها به سرعت بین مکان ها منتقل شوند.· حفاظت های امنیتی: احراز هویت ایمن کاربر، مدیریت و انتقال فایل، دسترسی ایمن، رمزگذاری، مدیریت گواهی و سایر الزامات امنیتی از اهمیت بالایی برخوردار است که در نظر بگیرید کدام راه حل می تواند تمام نیازهای سازمان شما را برآورده کند.· پشتیبانی در دسترس: مهم است که مطمئن شوید خدمات مورد نیاز در دسترس است و بدانید چه گزینه هایی برای شما مناسب است (پشتیبانی ایمیل در مقابل در محل، ساعات کاری در مقابل خط تلفن 24 ساعته و غیره)· عملکرد: آیا پلتفرم ESB همه قابلیت هایی را که شرکت شما به آن نیاز دارد ارائه می دهد؟· نظارت: پلتفرم ESB که انتخاب می‌کنید باید بتواند به طور دقیق و کارآمد بر جریان داده‌ها نظارت کند و سازمان شما را قادر می‌سازد تا هر گونه مشکلی را سریع و آسان شناسایی کند.· سفارشی سازی: تصمیم بگیرید که آیا عملکردهای محصول به اندازه کافی انعطاف پذیر هستند تا با نیازهای سازمان شما مطابقت داشته باشند· مدل اشتراک: بیاموزید که پلتفرم ESB از چه مدل مجوز یا اشتراکی استفاده می‌کند و هنگام تغییر نیازمندی‌ها چه عواقبی دارد (CPU بیشتر، رایانه‌های بیشتر، ارتقاء و غیره).· مقیاس پذیری: پلت فرم ESB که تصمیم به استفاده از آن دارید باید گزینه های متعادل کننده بار و در دسترس بودن بالا را ارائه دهد تا بتوانید مقیاس کنید.· هزینه: هزینه کامل (هزینه مالکیت، هزینه های تعمیر و نگهداری، در صورت نیاز به محصولات جانبی اضافی، یا اتصال دهنده ها و غیره) را ارزیابی کنید.فناوری iPaaSیک جایگزین ESBیکپارچه‌سازی پلت‌فرم به‌عنوان سرویس(iPaaS) یک راه‌حل یکپارچه‌سازی اپلیکیشن است که می‌تواند مکمل یا جایگزین ESB در هنگام ادغام پلتفرم‌های مبتنی بر ابر، برنامه‌های­کاربردی وب، برنامه‌های تلفن همراه، دستگاه‌های IoT و موارد دیگر باشد. هنگامی که یک iPaaS برای مورد استفاده شما مناسب است، از مزایای زیر بهره مند خواهید شد:· سرعت، سهولت استفاده و مقرون به صرفه بودن: یک iPaaS شما را سریع‌تر راه‌اندازی می‌کند، بدون منحنی یادگیری، نیاز به نیروی انسانی، یا سرمایه‌گذاری‌های مالی بزرگ مرتبط با ESB .· ایجاد خودکار REST API: پیشرفته‌ترین راه‌حل‌های iPaaS - مانند DreamFactory iPaaS - می‌توانند فوراً APIهایREST را بدون نیاز به برنامه‌نویسی وقت‌گیر تولید کنند(کاری که راه‌حل‌های ESB بدون کدنویسی گسترده نمی‌توانند انجام دهند).· امنیت و انطباق بهتر: راه‌حل‌های iPaaS فناوری امنیت و مدیریت پیشرفته‌تری را نسبت به ESB ارائه می‌دهند.موارد استفاده اصلی برایiPaaS :1. یکپارچه‌سازی‌های نرم‌افزار به‌عنوان سرویس: یک«ESB ابری» پلت‌فرم‌های SaaS مبتنی بر ابر شما را با یک پروتکل پیام‌رسانی پیچیده مانندMOM (میان‌افزار پیام‌گرا) یکپارچه می‌کند. با این حال، iPaaS ادغام‌های یکسانی را با استاندارد پیام‌رسانی سبک‌تر مانند JSON، REST وAPI انجام می‌دهد و راه‌اندازی ادغام‌هایiPaaS را راحت، ایمن و آسان‌تر می‌کند.2. یکپارچه‌سازی چند اجاره‌ای نرم‌افزار: چند مستاجری نرم‌افزار - یا معماری چند مستاجر - زمانی است که یک نمونه نرم‌افزاری واحد روی یک سرور کار می‌کند در حالی که به چندین بخش خدمات می‌دهد. در حالی که یکESB برای مدیریت پیچیدگی معماری چند مستاجر تلاش می کند، یک iPaaS می تواند افزونگی یکپارچه سازی را کاهش دهد و در عین حال نیازمندی های سخت افزاری و نرم افزاری شما را کاهش دهد.3. یکپارچه‌سازی برنامه‌های کاربردی: برنامه‌های ویژه معمولاً مبتنی بر ابر، برنامه‌های SaaS هستند و به راحتی بدون دخالت فناوری اطلاعات راه‌اندازی می‌شوند. با این حال، شما همچنان باید آنها را ادغام کنید. راه‌اندازی اتصالESB به تخصص فنی گسترده نیاز دارد، اما هر کسی می‌تواند از iPaaS برای ادغام برنامه‌های SaaS موقت در چند دقیقه استفاده کند.4. ادغام برنامه های تلفن همراه اینترنت اشیا(IoT): ویژگی های iPaaS - مانند استانداردهای پیام رسانی سبک تر (JSON، REST، وAPI)، تأخیر کم، اتصالات بلادرنگ، و پشتیبانی از ادغام های خارجی- مقیاس پذیری افقی را فراهم می کند. برای اتصال شبکه ای از برنامه ها و دستگاه های IoT مورد نیاز است. در بیشتر موارد، ESB برای پاسخگویی به این نیازها بسیار کند و سنگین است.معرفی ابزارپلتفرم MuleSoft Anypoint (ESB/iPaaS)پلتفرم Anypoint MuleSoft یک راه حل ترکیبی ESB/iPaaS برای اتصال و ادغام شبکه شما از برنامه‌ها، داده‌ها و دستگاه‌های IoT در محل یا مبتنی بر ابر است. این پلتفرم به توسعه‌دهندگان این امکان را می‌دهد تا برنامه‌های کاربردی جدید را بدون توجه به فناوری - خواه JDBC، JMS، خدمات وب، HTTP یا چیزهای دیگر، سریع و آسان ادغام کنند.اگرچه MuleSoft یک پلت فرم غنی از ویژگی ها است، اما با منحنی یادگیری شیب دار همراه است. قبل از اینکه توسعه‌دهندگان بتوانند از پلتفرم با ظرفیت کامل خود استفاده کنند، به آموزش گسترده و تجربه کدنویسی نیاز دارند - چیزی که با راه‌حل iPaaS مانند DreamFactory که به شما امکان می‌دهد فوراً APIهای REST را از طریق یک رابط بدون کد ایجاد کنید، لازم نیست.در نهایت، MuleSoft گران است و صدها هزار دلار در سال (و گاهی اوقات میلیون ها) هزینه دارد. با این حال، اگر نیاز به پشتیبانی از استانداردهای پیام رسانی قدیمی، سیستم های قدیمی در محل، برنامه های کاربردی مبتنی بر ابر یا ادغام یک زیرساخت پیچیده فناوری اطلاعات سازمانی دارید، این هزینه ها ممکن است ارزشش را داشته باشد.ابزار IBM App Connectابزار IBM App Connect یکی دیگر از ESB/iPaaS هیبریدی با قابلیت‌های مشابه با پلتفرم MuleSoft Anypoint است. به عنوان یک پلت فرم ترکیبی، IBM App Connect اتصالات فوری را برای برنامه‌ها، داده‌ها، سیستم‌های قدیمی، پلتفرم‌های مبتنی بر ابر و دستگاه‌های IoT ارائه می‌کند. همچنین به کاربران امکان می دهد API های REST ایجاد کنند، اما این فرآیند به کدگذاری دستی گسترده نیاز دارد. در نهایت، IBM App Connect انواع سبک‌های یکپارچه‌سازی، مانند کپی/همگام‌سازی داده‌های دسته‌ای زمان‌بندی‌شده، مبتنی بر رویداد و برنامه‌ریزی‌شده را به اضافه صدها کانکتور برنامه از پیش ساخته شده، دارد.درست مانند پلتفرم MuleSoft Anypoint، IBM App Connect نشان دهنده سرمایه گذاری مالی و آموزشی قابل توجهی است قبل از اینکه بتوانید از طیف گسترده ای از قابلیت های آن استفاده کنید. در صورت نیاز، توانایی‌های این پلتفرم بیش از هزینه‌های خود را پرداخت می‌کنند، اما زمانی که آنها ضروری نیستند، در نظر بگیرید که آیا یک پلتفرم ارزان‌تر iPaaS می‌تواند نیازهای یکپارچه‌سازی اپلیکیشن شما را برآورده کند یا خیر.نتیجهگذرگاه خدمات سازمانی یا ESBها - مانند MuleSoft Anypoint و IBM App Connect - می‌توانند یکپارچه‌سازی برنامه‌های کاربردی پایدار را ارائه دهند و در عین حال به عنوان ستون فقرات &quot;قابل اتصال&quot; به زیرساخت فناوری اطلاعات شما عمل کنند. با این وجود، اگر برنامه‌های مبتنی بر ابر، برنامه‌های تلفن همراه، دستگاه‌های IoT یا داشبوردهای وب را ادغام می‌کنید، فناوری iPaaS می‌تواند راه‌حل ساده‌تر و کم‌هزینه‌تری ارائه دهد. همچنین، این واقعیت که یک iPaaS پیشرفته مانند DreamFactory می تواند فوراً API های REST بدون هیچ گونه کدنویسی ایجاد کند، یک مزیت متمایز است.معرفی چند شرکت ایرانی که در این زمینه فعالیت دارند:· شرکت دانش بنیان پلتکوارائه دهنده خدمات تخصصی در حوزه وب سرویس‌ها می‌باشند. این خدمات در چند زمینه مختلف نظیر یکپارچه سازی ، نظارت و گزارش دهی به سازمان‌ها ارائه می‌شود. پلتفرم پلتکو مطابق با دانش روز دنیا پیاده سازی شده و کارشناسان ارشد ما تلاش کرده اند تا کلیه نیازهای بومی سازمان ها در آن گنجانده شود.· شرکت دانش بنیان داده پرداز پویای شریففعالیت خود را بیش از یک دهه باهدف تولید و توسعه سامانه های تحت وب و موبایل همچون پرتالهای سازمانی، پلتفرم یکپارچه سازی برنامه های کاربردی، پلتفرم جامع مدیریت پروژه شبکه های رادیویی، انواع اپلیکیشن های موبایل و ... آغاز نموده است. این شرکت از ابتدای تاسیس با به کارگیری استانداردهای تولید نرم افزار و به پشتوانه نیروهای متخصص توانسته پروژه های موفق بسیاری را انجام دهد..سامانهESB داده‌پرداز بستری است یکپارچه، توسعه‌پذیر و مناسب برای مدیریت جریان‌های اطلاعاتی بین برنامه‌های کاربردی سازمانی.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابعhttps://blog.dreamfactory.com/what-is-an-esb-and-its-alternatives/https://www.itcentralstation.com/categories/enterprise-service-bus-esbhttps://www.ibm.com/topics/esb</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Thu, 16 Dec 2021 21:38:59 +0330</pubDate>
            </item>
                    <item>
                <title>درباره سیستم های مدیریت قوانین کسب و کار (BRMS) بیشتر بدانید</title>
                <link>https://virgool.io/@m_33569022/%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%82%D9%88%D8%A7%D9%86%DB%8C%D9%86-%DA%A9%D8%B3%D8%A8-%D9%88-%DA%A9%D8%A7%D8%B1-brms-%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D8%AF-rxbm6islteyr</link>
                <description>مقدمهقوانین تجاری اساساً بلوک های ساختاری سازمانی سیاست شرکت هستند که برای دستیابی به اهداف استراتژیک استفاده می شوند. قوانین کسب و کار پارامترهایی را برای نحوه اجرای وظایف و نحوه اجرای عملکردهای سازمانی تعیین می کند. هنگامی که قوانین کسب و کار را ایجاد، مدیریت و خودکار می کنید، در واقع درگیر مدیریت قوانین تجاری با هدف استفاده از منابع کمتر برای دستیابی به اهداف مشابه هستید.سیستم مدیریت قوانین کسب و کار (BRMS) برای توسعه، ذخیره، ویرایش و اجرای قوانین تجاری استفاده می شود. قوانین کسب و کار گزاره های منطقی هستند که رفتار و عملکرد یک کسب و کار را تعریف می کنند. به عنوان مثال، &quot;اگر کاربر اشتراک خود را لغو کرد، یک ایمیل برای او ارسال کنید.&quot; این قوانین ممکن است در اسناد فرآیند نوشته شده یا در برنامه های کاربردی تعبیه شده باشد. با این حال، این پیاده سازی در هنگام به روز رسانی، مقیاس بندی یا شبیه سازی قوانین مستعد خطا است.یک BRMS که توسط موتور قوانین کسب و کار تامین می شود، به عنوان یک مخزن مرکزی و تابع اتوماسیون برای قوانین تجاری عمل می کند. صاحبان تصمیم و کارمندان فناوری اطلاعات می توانند برای توسعه، نسخه و ویرایش قوانین در یک محیط تک منبع همکاری کنند. یک BRMS به کسب و کارها کمک می کند وظایف را خودکار کنند، ثبات را بهبود بخشند، و چرخش تغییرات سیاست را کوتاه کنند.مدیریت قوانین کسب و کار در مقابل مدیریت فرآیند کسب و کار(تفاوت عملکردی مهم بین BPM و BRM)مدیریت قوانین کسب و کار و مدیریت فرآیند کسب و کار اغلب با هم ترکیب می شوند، اما عملکردها یا محصولات یکسانی نیستند. قوانین کسب و کار عبارات منطقی هستند که در سراسر فرآیندهای تجاری، گردش کار و عملکردها اعمال می شوند و BRMS بر مدیریت آن قوانین فراگیر تأکید دارد. در مقابل، مدیریت فرآیند کسب‌وکار بر مدیریت گردش کار بسیار قابل تنظیم در عملکردها، بخش‌ها و سیستم‌های تجاری تأکید دارد. به عبارت دیگر، مدیریت قوانین کسب و کار دیکته‌های مربوط به وضعیت عملیات و عملکردهای تجاری را کنترل می‌کند، در حالی که مدیریت فرآیند کسب‌وکار نحوه انجام آن عملیات و عملکردها را کنترل می‌کند.یک تفاوت عملکردی مهم بین BPM و BRM این است که قوانین خاص خود اغلب در معرض تغییر هستند، در حالی که فرآیندهای تجاری از نظر ساختار و جریان فرآیندها پایدارتر هستند. این بدان معناست که تعبیه منطق قواعد تجاری در سیستم‌های BPM نگهداری هر دو ساختار را دشوارتر می‌کند و اگر به دقت تنظیم نشود، دچار خطا می‌شود. برای سازمان هایی که به محصولاتی برای سازماندهی و خودکارسازی قوانین و فرآیندهای آن نیاز دارند، استفاده از محصولاتی که به طور خاص به هر مورد متفاوتی خدمت می کنند توصیه می شود.چرا از BRMS استفاده کنیم؟شرکت ها می توانند از یک پلت فرم BRMS برای حفظ قوانین تجاری خود و تعیین اقدامات از یک مخزن مرکزی استفاده کنند. منطق تصمیم گیری خارج از کد برنامه نویسی است و BRMS را به یک کاتالیزور برای منطق دقیق، کارایی فرآیند، بهبود بهره وری و چابکی تبدیل می­کند. می‌توانید در هر زمان و در صورت نیاز، تغییرات سریع‌تری در قوانین کسب‌وکار انجام دهید. روش های مختلفی برای ذخیره و تعریف قوانین تجاری وجود دارد، از جمله موارد زیر:· دوستانه و غیر رسمی· مکتوب از قبل· رسمی· خودکارهر کسب‌وکاری که قوانین تجاری خود را جدی می‌گیرد، پلتفرم BRMS مناسب می‌تواند از رسمی و خودکار بودن آنها اطمینان حاصل کند. ارسال قوانین روی کاغذ یا از طریق ایمیل دیگر کارآمد نیست و ایمن نیست.آیا به BRMS نیاز دارید؟هر صنعت، توسط مجموعه­ای از قوانین اداره می­شود. بنابراین، پیاده سازی یک سیستم BRMS در اکثر سازمان ها نیاز است، ازجمله:· هر کسب و کار، سازمان یا نهاد دولتی که توسط قوانین اداره می شود.· هر نهادی که توسط قوانین اداره می شود.· مشاغل با سیاست های داخلی برای کارمندان، مشتریان و شرکا.· سازمان هایی که می خواهند دقت و کارایی را در تصمیم گیری بهبود بخشند.· مدیرانی که می خواهند با سرعت بیشتری تصمیمات آگاهانه بگیرند.· شرکت هایی که می خواهند انطباق را بهبود بخشند.اکنون، بیایید 5 مزیت سیستم های مدیریت قوانین کسب و کار را بررسی کنیم:· بهبود کارایی فرآیندبرای رونق هر کسب و کاری مستلزم رعایت مهلت ها، معیارها و سهمیه ها است. با این حال، در پیش گرفتن کارآمدترین مسیر بدون مجموعه ای مناسب از قوانین تجاری چالش برانگیز می شود. با این وجود، فرض کنید کسب و کار شما کارایی فرآیند را بهبود نمی بخشد. در این صورت، ممکن است به زودی از یک عرصه رقابتی محو شود و به دلیل عدم ارائه محصولات و خدمات مورد تقاضا در یک بازه زمانی معقول، از بازار خارج شود. بنابراین، بسیار مهم است که فرآیندهای کاری موجود خود را ارزیابی کنید و میزان موفقیت فعلی آنها را با معیارهای کلیدی مانند کیفیت، زمان انجام کار، اتلاف، افزونگی کار و موارد دیگر اندازه گیری کنید.یک پلت فرم BRMS به شرکت شما اجازه می دهد تا قوانین کسب و کار را از یک منبع حقیقت مدیریت، به روز رسانی و حفظ کند تا تعیین کند که در کجا باید تغییرات ایجاد شود. این کمک می کند که با ترسیم فرآیندهای موجود خود با استفاده از نمودار جریان، نمودار شناور یا با نوشتن آنها شروع کنید.در مرحله بعد، تنگناها را مشخص کنید و همچنین به دنبال مواردی باشید که در حال حاضر به خوبی کار می کند. فرآیندهایی را که می توانند از بهینه سازی بهره مند شوند علامت گذاری کنید. همانطور که فرآیندهای ایده‌آل خود را تجسم می‌کنید، بهتر می‌توانید حفره‌هایی را ببینید که باید برطرف شوند. اکنون، فرآیند کامل خود را کامل کنید که دقیقاً چگونه ترجیح می دهید جریان داشته باشد و چه وظایفی برای تکمیل موفقیت آمیز حیاتی هستند.شاید بتوان ارتباطات را بهبود بخشید - هنگام جستجوی راه حل خلاقانه فکر کنید. به یاد داشته باشید، بهبود فرآیندهای کسب و کار شما هم زمان و هم کمی آزمایش می خواهد. شما یک ایده آل مطرح می کنید، نظریه خود را اجرا می کنید و آن را آزمایش می کنید. اگر متوجه شدید که روند ایده آل شما آنطور که می خواهید کار نمی کند، از نو شروع کنید. هنگامی که به یک نتیجه موفقیت آمیز رسیدید، قوانین کسب و کار خود را با استفاده از BRMS اعمال کنید.· ویژگی های امنیتی پیشرفتهیک پلت فرم BRMS می‌تواند مجموعه‌ای از ویژگی‌ها را ارائه دهد که در آن کاربران نهایی غیرفنی می‌توانند قوانین تجاری را ایجاد، حفظ و اجرا کنند. قوانین کسب و کار را می توان برای مدیریت گردش کار و همچنین اتخاذ تصمیمات تجاری مناسب مورد استفاده قرار داد. به عنوان موتور قواعد، یک پلت فرم BRMS از روش استنتاج زنجیره‌ای رو به جلو استفاده می‌کند که توسط الگوریتم Rete پشتیبانی می‌شودبنابراین، زنجیره جلویی تضمین می کند که موتور در هر فرآیند کاری تا رسیدن به هدف تکرار می شود. این منافذ از طریق هر واقعیت تا زمانی که عبارت IF به عنوان درست تعیین شود. وقتی این قانون پیدا شد، موتور قوانین نتیجه را اجرا می کند و اطلاعات جدیدی را به مجموعه داده اضافه می کند. ویژگی‌های امنیتی برای تضمین عدم تغییر قوانین تجاری توسط بدافزارها یا مجرمان سایبری ساخته شده‌اند. فقط کاربران مجاز می توانند قوانین کسب و کار را تغییر دهند. منطق تصمیم گیری را با دقت بیان کنیدهنگام خودکارسازی و مدیریت تصمیمات تجاری از طریق BRMS، مزایای زیادی نسبت به مسیرهای سنتی به شرح زیر دریافت می کنید:1. کاربران غیرفنی تجاری می توانند به بهبود همکاری های تجاری و فناوری اطلاعات کمک کنند و بار کاری را برای همه ذینفعان کاهش دهند.2. هر یک از قوانین تجاری را می توان به طور مستقل مدیریت کرد زیرا آنها اظهاری هستند. نتیجه، مدیریت ساده‌تر منطق تصمیم‌گیری است و در عین حال ارزیابی دقیق‌تری از کیفیت و سازگاری را القا می‌کندقوانین تجاری می توانند یک عنصر شرطی را به کار گیرند که مشخص می کند آیا بند IF برای یک فرآیند درست است یا خیر. منطق تصمیم گیری دقیقی را منتقل می کند که از تصمیم گیری و تجزیه و تحلیل بهبود یافته پشتیبانی می کند.· کاهش اتکا به فناوری اطلاعات برای تغییراتبا استفاده از پلتفرم BRMS، کاربران تجاری غیرفنی تایید شده می‌توانند در صورت لزوم به‌روزرسانی‌ها یا تغییراتی را ایجاد کنند که به فناوری اطلاعات زمان آزاد بیشتری برای تمرکز بر پروژه‌ها و توسعه با ارزش بالاتر بدهند. در عین حال، فناوری اطلاعات می تواند از یک پلت فرم BRMS برای القای تغییرات سریع استفاده کند که مکان یابی و آزمایش منطق تصمیم گیری را در صورت نیاز آسان تر می کند. هنگامی که چندین بخش می توانند یک پلت فرم BRMS را به اشتراک بگذارند و به روز کنند، همه برنده می شوند زیرا می توانند زمان و منابع بیشتری را برای تخصیص به طرح های دیگر پس بگیرند.· قوانین تصمیم گیری مقیاس در سراسر برنامه های تجاریهنگامی که یک BRMS به خوبی طراحی شده باشد، می تواند قوانین تصمیم گیری را در بسیاری از برنامه های کاربردی که در آن فرآیندهای کاری و گردش کار مدیریت می شوند، مقیاس کند. BRMS می تواند به عنوان یک منبع منفرد از حقیقت پیاده سازی شود که در آن کاربران نهایی می توانند به راحتی قوانین تصمیم گیری را به چندین برنامه به طور همزمان مقیاس کنند.· فکر نهاییبه‌اندازه کافی ساده به نظر می‌رسد که بهبود کارایی فرآیند باعث افزایش سودآوری، زمان چرخش، مشارکت مشتری و کاهش هزینه‌های عملیاتی می‌شود. با این حال، مزایای دیگری نیز وجود دارد که باید در نظر گرفت. برای نشان دادن، اگر بتوانید محصولات و خدمات را سریعتر ارائه دهید، می توانید تقاضای مشتری بیشتری را برآورده کرده و جذب کنید و در بازار مربوطه خود رقابتی تر شویدو سوالی که با آن روبرو می­شویم این است که. آیا زمان استفاده از مزایای BRMS فرا نرسیده است؟معرفی چند شرکت ایرانی که در این زمینه فعالیت دارند:· شرکت پگاه آفتابپگاه آفتاب مجموعه‌ای دانش‌بنیان در حوزه فناوری اطلاعات است که از سال ۱۳۷۸ تا به امروز با اتکا به نیروی انسانی پویا و مجرب خود محصولات و خدمات ارزش‌آفرینی را در قالب راهکار‌های نرم‌افزاری؛ برنامه‌ریزی منابع سازمان، مدیریت منابع انسانی و مدیریت فرایند‌های کسب‌و‌کار (BPMS) به صنایع و بنگاه‌های کسب‌و‌کار‌ بزرگ و متوسط ارائه کرده است. و با ارتباط با صنعت و با یکی از زیربنایی‌ترین صنایع کشور یعنی صنعت تولید برق آغاز کرده است. ابتدا نرم‌افزاری برای حیاتی‌ترین نیاز این صنعت، مدیریت نگهداری و تعمیرات و فرایند مدیریت درخواست کار، ارائه داده­اند، که در این مسیر، تعامل با کارشناسانِ خبره و بدنه تخصصی صنعت تولید برق به شکل‌گیری راهکار برنامه‌ریزی منابع سازمان نیروگاهی - ERP منجر شد. و امروز ERP نیروگاهی پگاه آفتاب بیش از ۱۳۰ فرایند کسب و کار نیروگاهی را تحت پوشش قرار داده که شاهد به‌کارگیری آن در ۱۸ استان کشور توسط بیش از ۳۰ نیروگاه است. و محصول agileBPMS که یک ابزار چابک کدیریت فرایند کسب وکار است را با همکاری یک تیم آلمانی –اسپانیایی در اختیار سازمان ها وشرکت ها قرار داده است.· جويا افزار ماندگار پرسيا(جام پرسياERP )در واقع فعالیت اصلی این شرکت، در توليد نرم افزارهاي يكپارچه سازماني(ERP) است؛ مبتني بر وب بوده و به شركتها در همه ابعاد و در صنايع مختلف كمك مي كند تا به بهترين وجه كسب و كار خود را اجرا نمايند. راهكار، تكنولوژي و فناوري هاي پيشرفته تحليلي جام كمك مي كنند مشاغل به كسب و كارهاي هوشمند تبديل شده و با سودآوري فعاليت كنند؛ به طور مرتب بروزرساني شده و با همه ابزارهاي سخت افزاري سازگار گردند. كاربرد جام در اين صنايع محدود به فرايندهاي عمومي نبوده و براي هر يك از صنايع ، داراي راهكارهاي ويژه اي مي باشد. جام در كنار محصولات اصلي، برخي محصولات جانبي از قبيل نرم افزارهاي تحليلي، BI، DW،… را نيز دارا مي باشد. جام قابل اجراء در كليه ي درگاه هاي موبايل (تلفن همراه، تبلت و … ) بوده و راهكارهاي مبتني بر رايانش ابري را نيز ارايه كرده است.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابعhttps://www.trustradius.com/business-rules-management-brmshttps://www.processmaker.com/blog/5-benefits-of-a-business-rules-management-system-brms/</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Thu, 16 Dec 2021 19:53:54 +0330</pubDate>
            </item>
                    <item>
                <title>هر آنچه که لازم است در مورد (BPMS)  بدانیم</title>
                <link>https://virgool.io/@m_33569022/%D9%87%D8%B1-%D8%A2%D9%86%DA%86%D9%87-%DA%A9%D9%87-%D9%84%D8%A7%D8%B2%D9%85-%D8%A7%D8%B3%D8%AA-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-bpms-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D9%85-dv8sxm3ebsgw</link>
                <description>هر آنچه که باید در مورد سیستم مدیریت فرآیند کسب وکارها(BPMS) لازم است بدانیم.مقدمهدر روزگار فرا رقابتی امروز، هر کسب و کاری تلاش می­کند تا با افزایش بهره‌وری تا حد ممکن از صفحه رقابت عقب نماند؛ انجام فرآیندها به روشهای سنتی و دستی در سازمان­ها، سرعت را در انجام کارها از آنها گرفته است، زمان زیادی را صرف کارهای عموما تکراری می­کنند و این کار تمرکز فعالیت ها را از بین می­برد. پس برای از بین نرفتن منابع و سرمایه ها، (Business Process Management System)BPMS وارد صحنه می­شود اما BPMS چیست؟نرم افزار مدیریت فرآیندهای کاری یا همان BPMS راهکاری است که فرآیندهای سنتی سازمان را با استفاده از ابزارهای مختلف به فرآیندی الکترونیکی تبدیل می‌کند، در واقع، به کمک آن فرآیندهای کاری به سادگی و با سرعت، روال کاری سازمان را با استفاده از زبان گرافیکی ترسیم، و بدون نیاز به دانش برنامه نویسی آن را به نرم افزار تحت وب تبدیل می کنید. یعنی راه حلی ارائه می­کند تا بدون داشتن تیم تولید نرم افزار و صرف هزینه­های فراوان برای آن، ایده­های نرم افزاری خود را در سازمان پیاده کنید.لازم به ذکر است که با پیشرفت تکنولوژی و حرکت به سمت هوشمندسازی، BPMS فرمت جدید و پیشرفته‌ای به نام iBPMS را معرفی کرده است .که این قالب از مفاهیم زمان واقعی و هوش عملیاتی برای بهبود یکپارچگی فرآیندهای تجاری استفاده می­کند.علت انتخاب BPMS  برای سازمان­ها؟در دنیای پر رقابت امروزی، هر کسب و کاری، صرف نظر از اندازه، باید تلاش کند تا سهمی برابر با رقبای خود داشته باشد تا بتواند در بازار بماند و رشد کند. تمرین و بازتولید فرآیندهای سنتی و دستی باعث می شود صاحبان مشاغل وقت ارزشمند خود را هدر دهند و پول زیادی را برای عناصر بی فایده کسب و کار هدر دهند. اینجاست که BPMS وارد عمل می شود.پیاده سازی BPMS مزایای زیادی به همراه دارد که مهمترین آنها عبارتند از:1. افزایش هوش عملیاتی: به بهبود کارایی فرآیندهای تجاری شما کمک می­کند. این کار با کاهش کارهای تکراری و خسته کننده که معمولاً ناخواسته اتفاق می افتد، انجام می شود. BPMS همچنین بینش روشنی در مورد تنگناهای هر فرآیند ارائه می­دهد. این به شما امکان می­دهد تصمیمات آگاهانه ای بگیرید تا آنها را حذف کنید و در نتیجه عملیات را هوشمندانه هدایت کنید.2. افزایش چابکی سازمان: انعطاف ناپذیری فرآیندهای تجاری می تواند باعث شود که سازمان شما در اقیانوس رقابت با سایر شرکت ها غرق شود. چابکی سازمانی یک عامل کلیدی است که به بقای هر کسب و کاری کمک می کند. اگر سازمان شما نتواند با تغییر تقاضا به سرعت تغییر کند، حتی مشتریان بزرگ شما به سمت رقبای شما خواهند رفت.استفاده از BPMS به شما کمک می­کند تا سریع تغییر کنید و مشتریان بهتری را بدون مشکل جذب کنید.حداقل ویژگی­هایی که BPMS باید داشته باشند:· نقشه برداری فرآیند: (process mapping) وجود یک رابط یا زبان نشانه برای تشریح فرآیند.· موتور فرآیند: یک پلت فرم است که جریان اطلاعات را از کاری به کار دیگر کنترل و فرماندهی می‎کند.· گردش کار مبتنی بر قانون : توانایی اضافه کردن قوانین کسب و کار برای تغییر جریان اطلاعات را بسته به شرایط خاص داشته باشد.· طراحی فرم: مکانی برای طراحی مکانیزم ورودی تا بتوان داده ‎ها را ذخیره‎ سازی نموده و نمایش داد.· قابلیت ادغام با سایر سیستمها: تقریبا تمام فرآیندها باید بتوانند اطلاعات را با سایر سیستمهای مهم به اشتراک بگذارند.· تجزیه و تحلیل: گزارشهایی برای شناسایی فرآیند، مشکلات، عقب افتادگی، و بهینه سازی فرآیند.· ارتباطات: سیستمها و افراد باید بتوانند اطلاعاتی را که در حاشیه به روند اضافه شده است، ارسال کنند.چک لیست اجرای موفق BPMSاما باید توجه داشت که، موفقیت در استفاده از BPMS تنها به انتخاب نرم افزار مناسب برای سازمان شما ختم نمی­شود. این در واقع یک نقطه شروع است. عامل اصلی که بر میزان موفقیت یک نوآوری در مدیریت فرآیند تأثیر می گذارد، اجرای آن است. در اینجا 10 مورد که باید قبل از اجرای BPMSلازم است برسی شود را ذکر می ­کنیم:1. انتخاب پلت فرم2. انتخاب فرآیند3. مالک فرآیند را شناسایی کنید4. معیارها را تعیین کنید5. نمودار گردش کار6. مشارکت همه ذینفعان7. مدیریت گردش کار BPM8. ادغام آسان9. آموزش کاربر10. اندازه گیری و بهینه سازیاما چگونه باید BPMS را ارزیابی کرد؟باید موارد زیادی را برای انتخاب مجموعه مدیریت فرآیند کسب و کار مناسب مورد سنجش قرار داد اما سه مورد وجود دارد که از بقیه گزینه­ها مهم­تر هستند و باید نسبت به آنها آگاهی لازم را داشته باشیم، که در ادامه به آنها می­پردازیم.1. مدلسازی انسان محور در مقابل BPMN و در مقابل برنامه نویسینرم افزار انسان محور مانندKissflow از یک رابط نقشه برداری فرآیند بسیار ساده شده استفاده می کند که به صاحب فرآیند غیر فنی اجازه می دهد فرآیند را به ساده ترین شکل ممکن ایجاد کند. این نرم افزار کار پس زمینه ایجاد شرایط برای رد و جریان های متناوب را انجام می دهد.و اما، BPMN یک سیستم نشانه گذاری است که از نمادهای استاندارد شده برای نشان دادن رویدادها، فعالیت ها، وظایف، اتصالات و غیره استفاده می کند. این نماد باید توسط خالق گردش کار به منظور وارد کردن آن به یک سیستم یاد شود.برنامه نویسی شامل ایجاد خطوط کدی است که گردش کار و انتقال داده را ایجاد می کند. برنامه نویسی بیشترین امکانات را ارائه می دهد و می تواند فرآیندهای بسیار پیچیده را مدیریت کند، اما تنها فردی که در این زمینه به شدت آموزش دیده باشد، قادر به ایجاد و اصلاح یک فرآیند خواهد بود.2. نرم افزارهای cloud در مقایسه با On-premiseنرم افزار Cloud بر روی سرورهایی میزبانی می شود که از طریق یک مرورگر وب از هر مکانی قابل دسترسی است. جدا از قابلیت دسترسی، BPMS مبتنی بر ابر مسئولیت مدیریت نرم افزار را نیز بر عهده فروشنده می گذارد. راه حل­های ابری معمولاً در مدل SaaS ارائه می­شوند که هزینه کمتری را برای مشتری فراهم می­کند.نرم افزار داخلی On-premise بر روی یک سیستم خاص نصب می شود. مزیت اصلی در این است که تمام داده های یک شرکت در داخل ذخیره می شود و به شرکت توانایی بیشتری برای محافظت و دسترسی به آن داده ها می­دهد.3. نرم افزار Open-source در مقابل Licesedراه حل های منبع باز BPM به این معنی است که فروشنده کد منبع خود را در دسترس عموم قرار داده است. این بدان معنی است که یک شرکت می تواند کد منبع را دانلود کند و هر تغییری را که می خواهد برای سفارشی کردن نرم افزار اعمال کند. نرم افزارهای دارای مجوز محدودیت هایی در میزان سفارشی سازی خواهند داشت.در دنیای فرآیند کسب و کار، راه‌حل‌های منبع باز پیچیده‌تر هستند و نیاز به برنامه‌نویس دارند که هر گونه تغییری در آن اعمال کنند. نرم افزارهای دارای مجوز بیشتر انسان محور هستند.از سوی دیگر این نوع از ابزارها با توجه به اینکه در اختیار خودمان هستند پس امنیت خوبی دارند. حال باید دید کدام یک از این ابزارهای از استاندارهای مطرح مدلسازی مثلBPMN 2.0 پشتیبانی می کنند.ویژگی های ضروری که هر نرم افزار BPM شایسته (BPMS) باید ارائه دهد:قبل از اینکه یک BPMS از بین صدها موردی که در اینترنت انجام می شود انتخاب کنید، مطمئن شوید که این ویژگی های ضروری را بررسی کرده اید.· ابزار نمودارسازی فرآیند بصرییک ابزار طراحی فرآیند بصری با نقاط قوت کاربر تجاری که معمولاً این فرآیند را بسیار بهتر از یک کدگذار «تفنگ استخدامی» یا حتی تیم فناوری اطلاعات داخلی درک می‌کند، عمل می‌کند.· طراح فرم کشیدن و رها کردننرم افزار BPM را انتخاب کنید که طراحی فرم ها را آسان می کند. ابزارهای طراحی فرم پیچیده می توانند کارمندان شما را از پذیرش کامل ابزار BPM شما منصرف کنند.· کنترل دسترسی مبتنی بر نقشاطلاعات کسب و کار در فرم ها و زمینه ها معمولا حساس هستند، بنابراین راه حل BPM را انتخاب کنید که از اطلاعات از طریق دسترسی انتخابی محافظت می کند.· پشتیبانی موبایلاطمینان حاصل کنید که این ابزار حداقل برای اندروید و iOS پشتیبانی تلفن همراه ارائه می دهد. اکثر BPM های ابری این توانایی را ارائه می دهند.این ویژگی‌ها ،و 6 مورد دیگر، مانند یک علامت، یکپارچه‌سازی، و گزارش‌ها و تجزیه و تحلیل‌ها را باید قبل انتخاب مورد بررسی قرار داد وبعد در مورد نوع ابزار تصمیم گرفت.مقایسه 5  نرم افزار برتر BPM سال 2020 با هم:اکنون که می دانید چرا دقیقاً یک سیستم BPM ضروری است، سؤال این است که کدام یک را باید تهیه کنید. برای کمک به شما در انجام این انتخاب نسبتاً دشوار، در اینجا می­توان از جدول مقایس­این 5 ابزار در زیر کمک گرفت.قدم بعدی ؟اگر هنوز BPMS را برای سازمان خود انتخاب نکرده­اید، وقت آن رسیده است که این کار را انجام دهید. انتخاب نرم افزار مدیریت فرآیند مناسب برای هر شرکتی که می خواهد فرآیندهای خود را چه از نظر وظایف فردی و چه از نظر وظایف سیستمی ساده کند، یک تصمیم مهم است. مطمئن شوید که پلتفرمی را انتخاب کرده اید که متناسب با نیازهای شما باشد و شرکت شما آماده پذیرش باشد.معرفی چند شرکت ایرانی که در این زمینه فعالیت دارند:· شرکت فراگسترشرکت پژوهشی مهندسی فراگستر که تجربه های فراوانی در زمینه برگزاری سمینارهای BPMS در کارنامه خود دارد، اولین آکادمی BPM را در ایران تاسیس کرد. هدف از راه اندازی این آکادمی ارتقاء سطح عملکرد سازمان ها و شرکت هاست. در آکادمیBPM دوره های آموزش تخصصی مدیریت فرآیند بهمراه کتابخانه دیجیتال مرتبط با این حوزه و سمینار های مختلف مجموعه ای فراهم کرده است تا کاربران بتوانند به طور حرفه ای فرآیندهای اداری خود را مدیریت کنند.· شرکت مشاوره مدیریتی بهین سازان فرآیند امین (بهفا)در سال‌های اخیر فعالیت‌های این گروه با ثبت شرکت بهفا گسترش پیدا کرده و پروژه‌های موفقیت‌آمیزی را انجام داده است. لازم به ذکر است که این شرکت در مرکز رشد واحدهای فناوری دانشگاه علم وصنعت ایران استقرار یافته و از این حیث ارتباط مستمر و مفیدی با اساتید و دانشجویان این دانشگاه برقرار کرده است. هفالب در مدت ۸ سال فعالیت حرفه ای خود ، توانسته است با بهره گیری از دانش تخصصی و تیم حرفه ای خود مشکلات سازمان های بزرگ در این زمینه را شناسایی و در جهت رفع و بهبود آن قدم بردارد. از جمله ویژگی های بهفا می­توان به موارد زیر اشاره کرد :توانمندی و تخصصتیم حرفه ای و قویفرآیندگرا و متعهدپشتیبانی و خدمات حرفه ای BPMS«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است» منابعhttps://www.creatio.com/page/bpmshttps://kissflow.com/workflow/bpm/business-process-management-systems-top-features/https://getbreakout.com/bpm/business-process-management-system/</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Thu, 16 Dec 2021 16:29:35 +0330</pubDate>
            </item>
                    <item>
                <title>مقدمه ای بر MVVM(Model - View - viewModel)</title>
                <link>https://virgool.io/@m_33569022/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1-mvvmmodel-view-viewmodel-a8zwjzkgtcid</link>
                <description>الگوی MVVM ، یک الگوی طراحی نرم افزاری است که برای جداسازی منطق برنامه و کنترل های رابط کاربری ساخته شده است، MVVM همچنین به عنوان model-view-binder شناخته می شود و توسط معماران مایکروسافت کن کوپر و جان گاسمن ساخته شده است.مانند بسیاری از الگوهای طراحی دیگر، MVVM به سازماندهی کد و تبدیل برنامه ها به ماژول ها کمک می کند تا توسعه، به روز رسانی و استفاده مجدد از کد را ساده تر و سریع تر کند. این الگو اغلب در ویندوز و نرم افزارهای ارائه گرافیک وب استفاده می شود.الگوی MVVM در Windows Presentation Foundation (WPF) استفاده می شود که بر روی دات نت مایکروسافت اجرا می شود حتی در. Silverlight، که یک پلاگین چند رسانه ای معادل اینترنت مایکروسافت WPF، از MVVM استفاده شده است.حالا چرا به این الگوهای معماری نیاز داریم؟ و اینکه چرا امروزه لازم است همه با آنها آشنایی داشته باشیم؟، تنها یک پاسخ وجود دارد، ساده کردن زندگی. بله، این الگوها به شما کمک می‌کنند تا معماری پیچیده پشت برنامه‌های بزرگ را، در لایه‌ها ساده کنید. این لایه ها به حدی از هم جدا شده اند که اشکال زدایی، تست و نگهداری اپلیکیشن را بسیار آسان می کند.یکی از این الگوها که امروز بررسی می‌کنیم MVVM هست که شباهت زیادی به الگوی MVC دارد.(چنانچه در زمینه MVC آشنایی ندارید ابتدا پیشنهاد می‌کنم  توضیح اختصاصی الگویMVC را مطالع کنید.)این الگو از سه بخش(Model,View,ViewModel) تشکیل شده است:این سه بخش، برنامه ی شما را به سه بخش اصلی تقسیم میکند. سه بخشی که هر کدام می توانند به صورت جدا توسعه داده شود تا وابستگی بخش ها به هم دسیگر کمتر شود وهمچنین توسعه ی موازی قابل اجرا شود. در زیر به بررسی هر بخش می پردازیم:وویو(View): مجموعه ای از عناصر قابل مشاهده است که ورودی کاربر را نیز دریافت می کند. این شامل رابط های کاربری (UI)، انیمیشن ها و متن است. اینکه اطلاعات مدل چگونه و به چه سبکی نمایش داده شود، وظیفه ویوو است. محتوای View مستقیماً برای تغییر آنچه ارائه شده است، در تعامل نیست. در واقع به ظاهر و پوسته‌ی و جایی که یک کاربر می تواند ببیند می گویند. و با ان در ارتباط و تعامل است .ویوو شامل رفتارها و سرویس‌هایی (مثل رویدادهای کلیک، لمس) است که طی ان اطلاعات مدل می‌تواند تغییر کنند. مثلا یک فرم برای ثبت یک کاربر جدید. وقتی کاربر اطلاعاتی را از طریق فرم ارسال کرد، دستوراتی دربرنامه تعریف می شود که این اطلاعات در مدل ذخیره گردد.وویومدل(ViewModel): بین لایه های View و Model قرار دارد، یعنی  همان واسط مدل و ویوو است. چیزی شبیه نقش کنترلر در. MVC اینجا جایی است که کنترل‌های تعامل با View قرار می‌گیرند، در حالی که از binding برای اتصال عناصر UI در View به کنترل‌های ViewModel استفاده می‌شود .ویوومدل اطلاعات مدل، عملکردها و ویژگی‌هایی ارائه میدهد که توسط ویوو استفاده می شود و همچنین عملکردهایی (مثل متدها، توابع و ...) که با انها اطلاعات مدل دستکاری می شود را شامل می شود. به بیان ساده‌تر، ویوومدل تبدیل‌کننده اطلاعات است. می‌تونه اطلاعات رو طوری به ویوو تحویل بده که ویوو می‌خواد. همچنین اطلاعات رو طوری به مدل تحویل میده که مدل می‌خواد. فرض کنیم توی ویوو یک رویداد(مثلا submit فرم کاربر جدید) رخ دهد. خب انتظار داریم این اطلاعات در مدل ثبت شود. ویوو این اطلاعات را به متدی می‌فرستد که در ویوومدل وجود دارد. وظیفه‌ی این متد این است که اطلاعات را از ویوو بگیرد، یک سری کارها (مثلا اعتبارسنجی) انجام دهد و نهایتا انها رو به مدل اضافه کند.مدل (Model): منطق برنامه را در خود جای می دهد که توسط ViewModel پس از دریافت ورودی خود از کاربر از طریق View بازیابی می شود. مدل جایی است که فقط اطلاعات نگهداری می شود. برای مثال اطلاعات یک مدل، کاربرها، پست‌ها و دسته‌بندی‌های برنامه ا‌ست. وظیفه‌ی مدل این نیست که رفتارها و سرویس‌هایی برای ویرایش و دستکاری اطلاعات ارائه دهد. همچنین مدل مسئول نحوه‌ی نمایش اطلاعات نیست. وظیفه‌ی مدل نگهداری، حفظ و ارائه اطلاعات مورد نیاز است. در یک برنامه اینکه اطلاعات چگونه دریافت شود و چگونه نمایش داده شود، بر عهده مدل نیست. مدل مسئول نگهداری اطلاعات تا حد امکان خام است.تفاوت زیادی بین الگوی MVP و MVVM وجود ندارد به جز اینکه Presenter اکنون با viewModel جایگزین شده است. این انعطاف پذیری زیادی را به همراه دارد زیرا View اکنون از طریق مفهومی به نام Data Binding با مدل ارتباط برقرار می کند. View Model مسئول نمایش روش‌ها، دستورات و سایر ویژگی‌هایی است که به حفظ وضعیت نما، دستکاری مدل به عنوان نتیجه اقدامات روی نما، و راه‌اندازی رویدادها در خود view کمک می‌کند.مزایا:· قابلیت نگهداری : می تواند چابک باقی بماند و نسخه های متوالی را به سرعت منتشر کند· توسعه پذیری: قابلیت جایگزینی یا اضافه کردن کدهای جدید را داشته باشید· تست پذیری : نوشتن تست های واحد در برابر منطق اصلی آسان تر است.· ارتباط شفاف :مدل view یک رابط شفاف برای کنترل‌کننده view ارائه می‌کند که از آن برای پر کردن لایه view و تعامل با لایه مدل استفاده می‌کند که منجر به یک ارتباط شفاف بین لایه‌های برنامه شما می‌شود.معایب:· برخی از مردم فکر می کنند که برای رابط های کاربری ساده، MVVM می تواند زیادی باشد.· در موارد بزرگتر، طراحی ViewModel ممکن است سخت باشد.· هنگامی که پیوندهای پیچیده داده ای داریم، اشکال زدایی کمی دشوار خواهد بود.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابع:https://www.linkedin.com/pulse/mvc-mvp-mvvm-architecture-patterns-shashank-guptahttps://www.geeksforgeeks.org/introduction-to-model-view-view-model-mvvm/https://whatis.techtarget.com/definition/Model-View-ViewModel</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Tue, 07 Dec 2021 01:56:40 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی طراحی دامنه محور(Domain Driven Design )</title>
                <link>https://virgool.io/@m_33569022/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D8%AF%D8%A7%D9%85%D9%86%D9%87-%D9%85%D8%AD%D9%88%D8%B1domain-driven-design-gy1pslqhvooy</link>
                <description>فلسفه طراحی دامنه محور برای اولین بار در سال ۲۰۰۳، در کتابی با عنوان Domain-Driven Design،توسط Eric Evans مطرح گردید و در آن از لزوم تمرکز بر روی پیچیدگی ذاتی دامنه فعالیت نرم افزار (Domain) صحبت شد. برای درک وفهم اینکه معماری Domain Driven Design یا به اختصار DDD چیست در ابتدا بهتر است به  تعریفی از معماری نرم افزار بپردازیم:معماری نرم افزار : هر پروژه ای که انجام می شود نیازمند ساختار خاصی است. مثلا باید مشخص باشد بخش های مختلف نرم افزار چه ارتباطی با هم دارند و چگونه این ارتباطات تعریف شده است. ویا باید مشخص گردد دیتابیس و کلاسهای داده چگونه با لایه های UI در ارتباط هستند. به طور کلی تعاریف ساختار نرم افزار یا پروژه را معماری نرم افزار می گویند.اما اینکه چگونه معماری مناسب برای پروزه را انتخاب کنیم ؟ نکته بسیار مهمی است که باید حتما قبل از شروع یک پروژه به آن توجه کرد، این است که حتما بایستی معماری مناسب برای پروژه را به صورت صحیح انتخاب کنید. برای انتخاب معماری به صورت صحیح به مواردی  همچون(زمان انجام پروژه، هزینه انجام پروزه، بزرگی و حجم پروژه، نیروی کار دخیل در پروژه، تشخیص تیم برنامه نویسی)توجه شود.معماری های زیادی برای نرم افزارها تعریف شده است. برخی از این معماری ها که کاربرد بیشتری دارند عبارتند از :· معماری چند لایه یا nTier· معماری تمیز (Clean Architecture)· معماری Broker· معماری Event-Bus· معماری DDDطراحی دامنه محور ، در واقع درک نیازهای واقعی کسب و کار مشتری است. طراحی دامنه محور صرفا بر اساس این فرضیات برای ترسیم کردن نیازهای کسب و کار در مدل دامنه است. طراحی دامنه محور همه چیز درباره چگونگی طراحی مدل دامنه شماست.  به این معنا که هر کلاس دامنه باید یک رابطه مستقیم با  آنچه که در دامنه کسب و کار است داشته باشد. DDD آدرس دهی چه در دنیای واقعی چه در دنیای فیزیکی است.برای شروع نوشتن یک سیستم ، باید بدانیم که مشتری چه چیزی را مد نظر دارد ، در حین فاز اولیه هیچگاه  درباره برنامه نویسی و معماری آن فکر نمیکنید. هدف اصلی شما درک تمام شرایط کسب و کار مشتری و چگونگی مدل دامنه مورد نیاز او است.بنابراین چیزی که ما به دنبال آن هستیم بحث با مشتری درباره نیازهای کسب و کار او است .برای درک بهتر وقتی با، سوال اینکه طراحی دامنه محور چیست؟ مواجه می شویم،شش مفهوم مهم را با هم در قالب 6 سوال مرور کنیم. چون DDD یک مفهوم بسیار گسترده است.1. دامنه(Domain)چیست؟حوزه موضوعی که برنامه در حال توسعه روی آن اعمال می شود دامنه نامیده می شود. هنگام توسعه یک برنامه، همیشه خوب است که زمینه ای را که در آن کاربرد دارد، بدانید. گاهی اوقات چندین دامنه وجود دارد که یک سازمان می تواند در آنها فعال باشد. به عنوان مثال، یک شرکت می تواند در فروش، حمل و نقل و تعمیرات به طور همزمان فعال باشد.یک سازمان می تواند خود را به گونه ای متفاوت برای زیر دامنه ها سازماندهی کند. اگر در حال توسعه یک برنامه کاربردی برای فروش هستید، بهتر است از «فروش» به آن نگاه کنید. زبان برنامه توسعه‌یافته با کسب‌وکار همسو می‌شود و برنامه به طور کلی معنادارتر خواهد بود (E. Evans, 2003).2. زمینه محدود (Bounded context)چیست؟در توسعه دامنه محور، «زمینه محدود» یک مفهوم مهم است. این اطلاعات بیشتر در مورد نحوه برخورد با مدل های دامنه بزرگ و یک سازمان بزرگ می دهد. برای مقابله با یک مدل بزرگ، می‌توانید مدل را به مناطق مختلف تقسیم کنید که ما آن را «زمینه محدود» می‌نامیم.یک سازمان را می توان به یک بخش فروش و یک بخش پشتیبانی تقسیم کرد که هر کدام در چارچوب خود عمل می کنند. با کار در یک زمینه محدود یا محدود، کار آسان تر و بهتر سازماندهی می شود (M. Fowler, 2014).3. زبان همه جا حاضر(Ubiquitous Language) به چه معناست؟به عبارت اولیه، یک زبان همه جا حاضر، زبانی است که توسط تیم توسعه و کارشناسان دامنه مشترک است. از آنجا که آنها باید برای ایجاد یک حلقه بازخورد کوتاه با یکدیگر همکاری کنند، این کاملا منطقی استاین زبان نه تنها در مدل دامنه، بلکه در کد برنامه نیز باید استفاده شود. اگر تیم توسعه و تیم تجاری با هم کار نکنند، این شانس افزایش می‌یابد که زبان خود را توسعه دهند. این می تواند یک مانع زبانی بین آنها ایجاد کند (DDD2019).بیایید برخی از ویژگی های کلیدی زبان فراگیر را خلاصه کنیم:· باید در مدل دامنه بیان شود.· زبان توسعه‌دهنده «فنی» را از مدل دامنه دور نگه می‌دارد، که توسط کارشناسان دامنه قابل درک نیست.· تضادها و نادرستی هایی را که باید توسط متخصصان دامنه به مدل دامنه معرفی شود، کاهش می دهد.· با رشد برنامه تکامل می یابد4. لایه ضد فساد(Anti Corruption Layer) چیست؟برای جلوگیری از آلودگی دو دامنه، باید بین آنها مرز ایجاد کنید. هر دامنه زبان فراگیر و مدل دامنه خود را دارد. یک لایه ضد فساد بین دو مدل دامنه ترجمه می شود. لایه می تواند یک طرفه یا دو جهته باشد و اغلب توسط الگوهای شناخته شده (مانند آداپتور، نما، مترجم) اجرا می شود. باید در نظر داشته باشیم که ایجاد یک لایه ضد فساد می تواند زمان بر باشد. فقط در صورتی باید استفاده شود که بخواهید از دامنه خود در برابر تأثیرات بیرونی محافظت کنید (A Shirin, 2018).5.  تفاوت بین موجود و شیء ارزش(“Entity” and a “Value Object”) چیست؟درک تفاوت بین Entities و Value Objects برای مدل‌سازی دنیای واقعی در یک برنامه بسیار مهم است. من تفاوت های اصلی بین آنها را در اینجا لیست می کنم (V Khorikov,2016)هویت: اشیاء ارزش هویت ندارند، در حالی که یک موجودیت دارای هویت است. ارزش اشیایی که مقادیر یکسانی دارند ذاتاً برابر هستند. موجودیت ها به تنهایی وجود دارند.چرخه حیات: اشیاء ارزشی به تنهایی زندگی نمی‌کنند و به یک موجودیت تعلق دارند. آنها را می توان به راحتی از بین برد و ایجاد کرد. موجودیت ها زندگی می کنند و تاریخ دارند.6. مجموعه(Aggregate) چیست؟جمع یک الگوی طراحی دامنه محور است. این مجموعه ای از اشیاء دامنه (به عنوان مثال نهاد، شی ارزش) است که به عنوان یک واحد واحد در نظر گرفته می شود. خودرو مثال خوبی است. از چرخ ها، چراغ ها و یک موتور تشکیل شده است. آنها از نظر مفهومی به هم تعلق دارند.هر انباشته ای یک ریشه ی کل دارد. در مثال ما، این ممکن است شماره شاسی باشد. این یکپارچگی کل را تضمین می کند. هر مجموع بیانگر یک مرز معاملاتی است. (M. Fowler)نتیجهپاسخ به این سؤالات به شما کمک می کنند که ایده خوبی از اینکه دقیقاً منظور از طراحی دامنه محور چیست بدهد.البته این مطالب را  به عنوان یک راهنمای کامل نمی توان در نظر گرفت به علت اینکه،آنقدر در مورد این موضوع مطالب زیاد است به طوری که چندین منبع مطالعاتی انتخاب و آنها را مطالعه نمود.منابعhttps://towardsdatascience.com/what-is-domain-driven-design-5ea1e98285e4https://www.linkedin.com/learning/software-architecture-domain-driven-design/what-is-dddhttps://www.linkedin.com/pulse/domain-driven-design-dddin-microservice-architecture-deffo-fotso«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Mon, 06 Dec 2021 23:46:07 +0330</pubDate>
            </item>
                    <item>
                <title>مدل c4 در معماری نرم افزار</title>
                <link>https://virgool.io/@m_33569022/%D9%85%D8%AF%D9%84-c4-%D8%AF%D8%B1-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-ws4npgbvcklq</link>
                <description>مقدمه:یکی از جدی­ترین چالش­ های پیش رو در زمینه توسعه نرم­ افزار، طراحی و مستندسازی معماری نرم­ افزار به شکلی قابل فهم استفاده توسط ذینفعان مختلف می­ باشد.منظور از مستندسازی معماری نرم ­افزار تولید مجموعه ­ای است از محصول­ هایی که یک معماری را به روشی که برای ذینفعان قابل فهم بوده و نشان دهد که معماری دغدغه ­هایشان را تأمین می ­نماید، مستند کند. معماران نرم ­افزار همواره در کتاب­های متعدد تلاش کرده ­اند که معماری سیستم را از طریق یک نمودار با دیاگرام نشان دهند، و چه بسا کاری دشوار است تا مفهومی که می­خواهند به خواننده انتقال دهند.اگر به این روند دقیق شویم با سوالات متعددی روبرو می­ شویم، مانند:آیا واقعا چند تا باکس و شکل میتوانند نرم افزاری که قرار است کار کند و اجرا شود را توصیف کنند؟ یا این نمودار ها و خطوط میتوانند کدهای برنامه نویسی را شبیه سازی کنند؟ سیستم های سخت افزاری را چطور؟ یا حتی گروهی از عملیات منطقی که این نرم افزار قرار است انجام دهد را چطور؟ آیا واقعا این نمودار میتوانند وابستگی های کامپایل Compilation Dependencies نرم افزار را نشان دهد؟ در مورد جریان کنترل Control Flow چطور؟ و یا جریان دیتا و داده های نرم افزار Data Flow؟تقریبا در مورد همه اجزای نرم افزار و بخش های پیچیده آن واقعا یک نمودار یا دیاگرام نمی توانند گویای همه چیز باشد.اما در توسعه نرم­ افزار تیم­ های مختلفی نیز دخیل هستند که نیاز به برقراری ارتباط با هم دارند، موضوعی که در اینجا قابل اهمییت است فارغ از اینکه نرم ­افزار کوچک یا بزرگ باشد، این است که نحوه ارتباط بین تیم ­ها ساده و کارآمد و در طول زمان متداوم باشد.از جمله کانال­های ارتباطی استفاده از متن ونموداراست. اما بعد از اینکه متدولوژی Agileمحبوب شد، اکثر اسناد ونمودارها کمتر مورد استفاده قرار گرفتند چون هدف اصلی کسب رضایت مشتری بود. دیگر استفاده از UML برای توصیف نرم ­افزار آن کارایی گذشته را به دلیل پیچیدگی در ارتباطات بین اعضا تیم ندارد و به دنبال نمونه­ های جدید با کارایی بهتر و مصنوعات کم وساده برای مستندسازی هستیم. حال سوال این است که، آیا راه آسانی برای ارتباط مختصر و بدون ابهام معماری یک سیستم نرم افزاری وجود دارد؟ چیزی که بتواند الزامات را روشن سازد و همچنان مختصر نیز باشد؟مدلC4:ما می توانیم با استفاده از مدل معماری C4 به این امر دست یابیم. C4 مخفف، context (زمینه) ، containers (کانتینرها) ، components (مؤلفه‌ها) و code (کد) است ، مجموعه‌ای از نمودارهای سلسله مراتبی که می‌توانید از آنها برای توصیف معماری نرم‌افزار خود در سطوح بزرگنمایی مختلف استفاده کنید که هر کدام برای مخاطبان مختلفی مفید است.  C4 یک مدل ایستا است،که راه آسانی برای برقراری ارتباط در طراحی سیستم در موارد پیچیده را فراهم می­ کند و همچنین توضیحات طبیعی برای جستجو یک راه حل در معماری نرم افزاری را به وجود می آورد. این مدل با شروع از بالاترین سطح که (سیستم چیست و چگونه به کسب و کار ارزش می دهد)، تا سطح بسیار پایین کارایی به جزئیات می پردازد.( این مدل معماری توسط سایمون براون ایجاد شده است و شما می توانید جزئیات بیشتر و ارائه های او را در وب سایت شخصی simonbrown.je دنبال کنید.)اما چرا مدلC4 ؟این مدل، روشی سلسله مراتبی برای تفکر در مورد ساختارهای یک سیستم نرم افزاری است. و ترکیبی ازUML ، دیدهای معماری 4 + 1 و سایر موارد دیگر است. سایر مزایای آن شامل:· خواندن آسان نمودارها:معمولاً نمودارهای یک سیستم نرم­افزاری بخشی از زمینه داده­ها هستند و برداشت و فهمیدن معنی کامل آنها بدون خواندن مشخصات دشوارتر است. مدل C4 نوشتن، متن توضیحات مختصر را در نمودار توصیه می ­کند و درک استفاده از آنها را حتی خارج از نمودار و داده آسان می ­سازد.· قابلیت بزرگنمایی وکوچک­نمایی:برای افراد/نقش های مختلف درگیر در پروژه جزئیات متفاوتی را ارائه می­ دهد که مناسب آنها باشد. از یک زمینه یا نمودار کلی شروع و به جزئیات مقادیر بیشتری می­ پردازد (یک یا چند کانتینر مانند برنامه ­های کاربردی وب، برنامه ­های تلفن همراه، برنامه­ های کاربردی مستقل، پایگاه ­های داده، سیستم­ های فایل و غیره). که هر یک از کانتینرها دارای یک یا چند جزء هستند که به نوبه خود توسط یک یا چند طبقه پیاده ­سازی می ­شوند.· کاهش شکاف بین طراحی و اجرای واقعینمودارها را می توان در هر ابزاری ایجاد کرد. با این حال، با استفاده از چند خط کد، ساخت و نگهداری آنها در طول پروژه توسعه محصول نرم ­افزاری را امکان پذیر می ­کند.در ادامه ببینیم در این مدل چه سطوحی را داریم:سطح اول(System Context diagram):مخاطبان در این سطح افراد فنی و غیر فنی هستند، و سیستم در این سطح به گونه ­ای توصیف می­ شود که مردم بدانند سیستم چگونه با عوامل خارجی تعامل دارد. مثل اینکه یک بلوک دیاگرام ساده رسم کنیم و سیستم نرم ­افزاری را به صورت جعبه ­ای در مرکز نشان داده که توسط کاربران آن سیستم و سایر سیستم­های نرم ­افزاری که با آنها در تعامل است احاطه شده است. جزئیات در اینجا مهم نیستند زیرا این نمای بزرگ شده ­ای از سیستم است که تصویر بزرگی از چشم ­انداز کلی سیستم را به نمایش می­ گذارد. در واقع تمرکز باید روی افراد (بازیگران، نقش‌ها، شخصیت‌ها و غیره) و سیستم‌های نرم‌افزاری باشد تا فناوری‌ها، پروتکل‌ها و سایر جزئیات سطح پایین. این همان نموداری است که می‌توانید به افراد غیر فنی نشان دهید. این نمودار به سوالات زیر پاسخ می­ دهد:چه نوع سیستم نرم ­افزاری را می ­سازیم؟چه افرادی از این سیستم استفاده می ­کنند؟چگونه با محیط موجود مطابقت دارد؟تذکر: نمودار فقط یک نمونه است و یک محصول و یا خروجی واقعی را نشان نمی­ دهد. آنچه در اینجا حائز اهمییت است، دیدن نمودارهایی با اطلاعات بیشتر بدون نیاز به اسناد وداده ­های گسترده برای توضیح سیستم است.Context diagram سطح دوم(Container diagram):مخاطبان این نمودار می­توانند افراد فنی داخل و خارج از تیم توسعه نرم افزار باشند. از جمله معماران نرم­ افزار، توسعه دهندگان، و کارکنان عملیات/پشتیبانی. نموداری ساده و متمرکز بر روی فناوری سطح بالا است. این نوع سطح بالایی از معماری نرم افزار محسوب می ­شود و نشان می­ دهد که چگونه مسئولیت­ها بین مجموعه توزیع می­شود. این نمودار به سوالات زیر پاسخ می­ دهد:شکل کلی سیستم نرم ­افزار چگونه است؟در رده ­های بالای سیستم چه نوع تصمیمات فناوری گرفته می­ شود؟مسئولیت­ها چگونه در سراسر سیستم توزیع می ­شوند؟کانتینرها چگونه با یکدیگر ارتباط برقرار می ­کنند؟به عنوان یک برنامه ­نویس و توسعه دهنده برای پیاده ­سازی این ویژگی­ ها کجا باید کد بنویسیم؟Second part, Container diagram توجه:  در ترسیم نمودارها، می­توان از فناوری­ها و رویکردهای متفاوت استفاده کرد. شاید فناوری مورد استفاده در اینجا چیزی نباشد که شما آن را ترجیح می ­دهید. با این حال، نمایش کامل سیستم (یا زیرسیستم، در صورت بزرگ بودن) در یک صفحه (A3/A4) می تواند دید واضحی را از کار به وجود آورد و تصمیم­ گیری­های مختلف را آسان­تر کند. حتی برای سیستم‌های بسیار بزرگ، می‌توانیم نمودارهای مشابهی ترسیم کنیم. در اینجا نمونه ای از معماری StackOverflow (از Nick Craver – 2016 Architecture) که می تواند به یک نمودار Container تبدیل شود را مشاهده می ­کنیم.(  StackOverflow سیستمی با 1.3 میلیارد بازدید صفحه در ماه است).StackOverflow architecture سطح سوم(Component diagram):مخاطبان در این مرحله، معماران و توسعه­ دهندگان نرم­ افزار هستند. در این مرحله شاهد بزرگنمایی و تجزیه حجم بیشتری از سیستم برای نشان دادن اجزای داخلی هستیم. این مجموعه از نمودارها باید به سوالات زیر پاسخ دهد:سیستم از چه مولفه ­هایی تشکیل شده است؟آیا واضح است سیستم در سطح بالا چگونه کار می ­کند؟آیا همه اجزا /سرویس­ ها در یک ظرف ومجموعه قرار دارند؟در این سطح شکل­ گیری همه نمودارهای مربوط به سیستم موردنظر از ابتدا مهم نیست بلکه به محض ایجاد اجزا خاصی نوشته می ­شوند وزمانی که اجزا به روز می ­شوند، نمودارها تغییرات را منعکس می­ کنند.Third part, Component diagram(s) سطح چهارم(Code):مخاطبان در این مرحله، معماران و توسعه ­دهندگان نرم ­افزار هستند. برای ساده نگه داشتن ، نمودارها در این سطح فقط برای نشان دادن جزئیات خاص مورد استفاده قرار می­ گیرند. اینها نمودارهای استاندارد UML هستند و می توانند با ابزارهای زیادی ایجاد شوند. در اینجا به یک نمونه کوچک اشاره شده است.Last part, Class diagrams سخن پایانی:مدل C4 یک راه ساده برای برقراری ارتباط با معماری نرم ­افزار در سطوح مختلف انتزاع می­ باشد، به طوری که می­توان سناریوهای مختلفی را برای مخاطبان مختلف تعریف نمود. با استفاده از این مدل ، می ­توان معماری کافی برای برقراری ارتباط با ذینفعان را بدون نیاز به تعریف جزئیاتی که با تغییر معماری دستخوش تغییر می ­شوند،را به ثبت رسانده و باعث درک و اگاهی بهتر تیم شد.&quot;این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است&quot;&quot;معماری_نرم_افزار_بهشتی&quot;منابع1. https://github-wiki-see.page/m/eforte/architecture/wiki/C4-Model2. https://www.diagrams.net/blog/c4-modelling3. https://developpaper.com/introduction-of-software-architecture-c4-model/4. https://dev.to/simonbrown/diagramming-distributed-architectures-with-the-c4-model-51cm5. https://franz-ajit.medium.com/the-c4-model-for-software-architecture-eab85e8f04916. https://www.cinimex.ru/en/solutions/the-c4-software-architecture-model/7. https://www.linkedin.com/pulse/c4-model-base-luis-carlos-cruz-carballo</description>
                <category>مریم ملکی</category>
                <author>مریم ملکی</author>
                <pubDate>Wed, 17 Nov 2021 16:47:31 +0330</pubDate>
            </item>
            </channel>
</rss>