<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های S.Amin nayeri</title>
        <link>https://virgool.io/feed/@m_49289735</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 18:15:43</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>S.Amin nayeri</title>
            <link>https://virgool.io/@m_49289735</link>
        </image>

                    <item>
                <title>معماری نتفلیکس و لینکدین</title>
                <link>https://virgool.io/@m_49289735/%D9%85%D8%AF%D9%84-c4-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%86%D8%AA%D9%81%D9%84%DB%8C%DA%A9%D8%B3-%D9%88-%D9%84%DB%8C%D9%86%DA%A9%D8%AF%DB%8C%D9%86-qccj9oujp73s</link>
                <description>در ابتدا میکروسرویس ها، مزایا و ارزیابی آن مورد بررسی قرار گرفت، بعد از آن معماری نتفلیکس وسپس معماری لیندین مورد بررسی قرار گرفت.در ادامه، ما قصد داریم به چند ویژگی کیفی برای نتفلیکس و لیندین بپردازیم و یک مقایسه ای از این دو معماری با نشان دادن مدل C4 نتفلیکس و لیندین داشته باشیم با این مقایسه معماری نتفلیکس و لیندین قابل ملاحظه است.چند ویژگی کیفی مربوط به لینکدین، چابکی: باید به صورت چابک و سریع تغییرپذیری صورت بگیرد، اعمال تغییرات کمتر از ۲۴ ساعت، آزمایش پذیری: باید قابل تست باشد تا سریعتر تغییرات اعمال شده را انجام داد و به صورت چابک در دسترس قرار گیرد.در  دسترس بودن: باید در دسترس باشد تا از دستگاه های مختلف قابل دسترسی باشد. مقیاس پذیری: چقدر سیستم می تواند رشد کند تا کاربران، سرورها یا سایر برنامه های افزودنی بیشتری را مدیریت کند.عملکرد: سیستم چقدر سریع و قابل پیش بینی به ورودی های کاربر یا رویدادهای دیگر پاسخ می دهد.قابلیت اطمینان: چه مدت سیستم قبل از تجربه خرابی کار می کند.استحکام: اینکه سیستم چقدر به شرایط عملیاتی غیرمنتظره پاسخ می دهد.ایمنی: چقدر سیستم در برابر آسیب یا آسیب محافظت می کند.امنیت: تا چه اندازه سیستم در برابر دسترسی غیرمجاز به برنامه و داده های آن محافظت می کند.چند ویژگی کیفی مربوط به نتفلیکس،در دسترس بودن: نتفلیکس تقریباً در همه کشورها (به استثنای چین، سوریه، کره شمالی و کریمه) در دسترس است.صحت: نتفلیکس فیلم یا نمایش تلویزیونی را که انتخاب کرده ایم نمایش می دهد و بنابراین همیشه ویژگی کیفیت صحت را در خود جای می دهد.کارایی: تماشای نمایش‌های تلویزیونی یا فیلم‌ها در نتفلیکس حدود 1 گیگابایت داده در ساعت برای هر جریان ویدیو با کیفیت استاندارد و حداکثر 3 گیگابایت در ساعت برای هر جریان ویدیوی HD مصرف می‌کند. این داده‌های زیادی است که استفاده می‌شود و بنابراین، پتانسیل کاهش آن به منظور کارآمدتر کردن آن وجود دارد.انعطاف‌پذیری: نتفلیکس به اضافه کردن نمایش‌ها و فیلم‌های جدید ادامه می‌دهد که احساس می‌کنند در بین مخاطبان محبوب خواهند بود. نتفلیکس با استفاده از تجزیه و تحلیل داده ها سعی می کند پیش بینی کند که آیا یک نمایش مورد پسند مردم خواهد بود یا خیر و سپس بر اساس تجزیه و تحلیل داده ها اضافه می شود یا خیر. همچنین، نتفلیکس یک ویژگی تعاملی را معرفی کرده است که به کاربر امکان انتخاب و در نتیجه تصمیم گیری در مورد جریان فیلم را می دهد.قابلیت حمل: نتفلیکس از 2200 دستگاه مختلف از جمله تلویزیون هوشمند، اندروید، IOS، کنسول های بازی، برنامه های وب و غیره پشتیبانی می کند و در نتیجه نشان می دهد که بسیار قابل حمل است. همه این برنامه ها در کد مخصوص پلتفرم نوشته شده اند.قابلیت اطمینان: سرورهای Netflix به ندرت از کار می افتند، و در موارد عجیب و غریب کار نمی کنند، تیم فنی آن را به سرعت پشتیبان می گیرد و بسیار قابل اعتماد است.قابلیت استفاده: نتفلیکس توضیح بسیار دقیقی در مورد نحوه عملکرد خود از طریق &quot;مرکز کمک&quot; خود ارائه کرده است که می تواند کاربران جدید را قادر سازد تا به سرعت با ویژگی های آن آشنا شوند.ایمنی: هیچ شانسی برای کاربر وجود ندارد که آسیب ببیند زیرا آنها فقط نشسته اند و از نمایش/فیلم لذت می برند و در نتیجه ویژگی کیفیت ایمنی را در خود جای داده اند.معماری لایه ای لیندین:یک صفحه وب اطلاعات A و B در خواست می شود، این لایه روی ساخت UI تمرکز دارد، این لایه با درخواست های موازی به سرویس BST صفحات را به هم مونتاژ می کند. لایه سرویس بیزینس، بیزینس لاجیک را کپسوله می کند. این لایه می تواند دیگر خوشه های BST و خوشه DST خودش را صدا می زند. منطق DAL رو کپسوله می کند و به لایه آخر دسترسی راحت به داده ها را فراهم کند. تکنولوژی پایگاه داده مثل (, Espresso, Oracle, Voldemort)، تکنولوژی مرتبط با Data replication مثل، (Kafka, Database)،  تکنولوژی جستجو مثل (Zoie-real-time search, Bobo, SenseiDB-fast real time که سریع و real time عمل می کند.)معماری لایه ای لینکدینمعماری نتفلیکس:در ادامه بخشی از معماری backend نتفلیکس را  می توان ملاحظه نمود:‌Backend Netflix Architectureوسایل مختلف از طریق ELB به API Gateway متصل می شود. از طریق API Gateway به Application API دسترسی پیدا می کند که از طریق آن کاربر می تواند رجیستر کندُ پرداخت ها را انجام دهد، فیلم را اجرا کند و فیلم مورد نظر را جستجو کند،  Application API به آرایه ای از میکروسرویس ها دسترسی می یابد که در صورت وجود اطلاعات در کش از آن استفتده می کند در غیر این صورت باید از طریق ذخیره داده استفاده کند. مولفه Zull برای فلتر کردن فیلم ها مورد استفاده قرار می گیرد، میکروسرویس ها در انتهای هر End point قرار گرفته است که در خواست ها را از این طریق به میکرو سرویس ها منتقل می کند. هر منطقه کش خود را دارد و هر منطقه تعدادی Endpoint دارد برای دسترسی به میکروسرویس ها، دو نوع دیتا بیس مورد استفاده قرار می گیرد، (NOSQL و MYSQL) که MYSQL برای نگهداری اطلاعات کاربران (برای ارسال پیشنهادات جهت دیدن فیلم ها و سریال های مورد علاقه)، تراکنش ها و .. قرار می گیرد و NOSQL  که نوع Casandra مورد استفاده قرار گرفته است برای دانلود و استریم فیلم ها مورد استفاده قرار می گیرد.نتقلیکس سه مولفه اصلی دارد، مثل Client ,Cloud AWS, openConnect (OC) که در آن Client ها همان دیوایس هایی هستند که از جاهای مختلف به نتفلیکس متصل می شوند.  هر چیزی که Video streaming  را درگیر نمی کند توسط Cloud AWS مدیریت می شود. openConnect یک content delivery network است و هر آنچه مربوط به streaming‌است توسط آن مدیریت می شود.مدل C4 برای لینکدین:- بخش اول Context System:شامل محیط کلی لینکدین است. در این محیط  کاربران و المان هایی هستند که با لیندین در ارتباط اند.نمودار زمینه سیستم (System Context) که نقطه شروع خوبی برای نمودارسازی و مستندسازی یک سیستم نرم افزاری است. شکل ۱ یک نمونه نمودار زمینه سیستم برای لینکدین نشان داده شده است. بخش های مختلف لیندین (پیام ها، نوتیفیکیشن ها، پست ها، تغییرات اعمال شده، شغل های معرفی شده و ...) و نحوه ارتباط کاربر با این بخش ها نشان داده شده است.Context System&#40;LinkedIn&#41;- بخش دوم Container diagram:شکل زیر، سطح بالای معماری نرم افزار لیندین و نحوه ی توزیع مسئولیت ها  نشان داده شده است.Container Diagram(LinkedIn)- بخش سوم Component diagram:مولفه های مختلف در لیندین را در شکل زیر می توان دید، این مولفه ها شامل (sign in, Reset password, Security, job find, find people, find group &amp; company, find info &amp; post)Component Diagram(LinkedIn)- بخش چهارم Class diagram:بخشی از کلاس های اصلی لینکدین در شکل زیر قابل ملاحظه است.Class Diagram(LinkedIn)- بخش اول Context System:شامل محیط کلی نتفلیکس است. در این محیط  کاربران و المان هایی هستند که با نتفلیکس در ارتباط اند.نمودار زمینه سیستم (System Context) که نقطه شروع خوبی برای نمودارسازی و مستندسازی یک سیستم نرم افزاری است. شکل زیر یک نمونه نمودار زمینه سیستم برای نتفلیکس نشان داده شده است. بخش های مختلف نتفلیکس (جستجو برای فیلم، عضویت، قیلم و سریال آنلاین، دانلود فیلم و سریال، و ...) و نحوه ارتباط دستگاه های مختلف با این بخش ها نشان داده شده است.Context System&#40;Netflix&#41;- بخش دوم Container Diagram:شکل زیر، سطح بالای معماری نرم افزار نتفلیکس و نحوه ی توزیع مسئولیت ها  نشان داده شده است.Container Diagram(Netflix)- بخش سوم Component Diagram:مولفه های مختلف در لیندین را در شکل زیر می توان دید، این مولفه ها شامل (sign in, Reset password, Security, find (Movies or Series), Stream Movies/Series, Download Movies/Series, Payment &amp; Suggest)مولفه Suggest بر اساس فیلم هایی که توسط کاربر یا دوستانش دیده می شود، فیلم ها یا سریال هایی را پیشنهاد می دهد.Component Diagram(Netflix)- بخش چهارم Class Diagram:بخشی از کلاس های اصلی نتفلیکس در شکل زیر قابل ملاحظه است.Class Diagram(Netflix)با توجه به مدل C4 در هر دو نمونه لینکدین و نتفلیکس می توان تفاوت کلی معماری هر را مورد ملاحظه قرار داد.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Sat, 12 Feb 2022 23:01:34 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی Business Process Management System (BPMS)</title>
                <link>https://virgool.io/@m_49289735/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-business-process-management-system-bpms-zfxkpj7hkcqm</link>
                <description>بخش ۱: معرفیتعریف ۱: BPM:خانه تحلیل گر، شرکت گارتنر، BPM را به عنوان رشته ای تعریف می کند که از روش های مختلفی برای کشف، مدل سازی، تجزیه و تحلیل، اندازه گیری، بهبود و بهینه سازی فرآیندهای تجاری استفاده می کند. یک فرآیند کسب و کار رفتار افراد، سیستم ها، اطلاعات و چیزها را برای ایجاد نتایج تجاری در حمایت از یک استراتژی تجاری هماهنگ می کند. فرآیندها می توانند ساختاریافته و قابل تکرار یا بدون ساختار و متغیر باشند. اگرچه نیازی نیست، اما اغلب از فناوری ها با BPM استفاده می شود. BPM برای همسو کردن سرمایه گذاری های IT/OT با استراتژی کسب و کار کلیدی است.این رشته شامل هر ترکیبی از مدل‌سازی، اتوماسیون، اجرا، کنترل، اندازه‌گیری و بهینه‌سازی جریان‌های فعالیت تجاری، در حمایت از اهداف شرکت، سیستم‌های فراگیر، کارکنان، مشتریان و شرکا در داخل و خارج از سازمان است. ناتانیل پالمر، کارشناس BPM، وقتی می نویسد بیشتر توضیح می دهد:مدلسازی به شناسایی، تعریف و ساختن نمایشی از فرآیند کامل برای پشتیبانی از ارتباطات در مورد فرآیند اشاره دارد. هیچ راه استاندارد واحدی برای مدل سازی وجود ندارد.اتوماسیون به کار انجام شده از قبل برای اطمینان از اجرای روان نمونه های فرآیند اشاره دارد. اغلب، این به معنای نوشتن نرم افزار است، اما می تواند شامل ساخت ماشین آلات یا حتی ایجاد علائم برای وضوح باشد.اجرا به این معنی است که نمونه هایی از یک فرآیند انجام یا اجرا می شوند که ممکن است شامل جنبه های خودکار باشد.کنترل به این معنی است که جنبه‌ای وجود دارد که اطمینان حاصل شود که فرآیند از مسیر طراحی‌شده پیروی می‌کند. این می تواند کنترل و اجرای دقیق یا کنترل ضعیف در قالب دستورالعمل ها، آموزش و اقدامات دستی باشد.اندازه گیری به این معنی است که تلاش می شود تا به طور کمی مشخص شود که این فرآیند تا چه اندازه برای پاسخگویی به نیازهای مشتریان کار می کند.بهینه سازی به این معنی است که نظم و انضباط BPM یک فعالیت مداوم است که در طول زمان برای بهبود پیوسته اقدامات فرآیند ایجاد می شود. بهبود نسبت به اهداف سازمان و در نهایت برای رفع نیازهای مشتریان است.Enterprise  به یک سازمان تجاری اشاره دارد. این می تواند هر سازمانی باشد که در آن افراد با یکدیگر برای رسیدن به اهداف مشترک کار می کنند. نیازی نیست که یک سازمان بزرگ یا انتفاعی باشد.در ساده ترین شکل آن، BPM راهی برای مشاهده و سپس کنترل فرآیندهای موجود در یک سازمان است. این یک روش موثر برای استفاده در مواقع بحران برای اطمینان از کارآمد و مؤثر بودن فرآیندها است، زیرا این امر منجر به یک سازمان بهتر و مقرون به صرفه تر می شود.مک گرگور آن را به عنوان یک اصطلاح عمومی برای مجموعه‌ای از تکنیک‌ها و روش‌ها برای بهبود نتایج کسب‌وکار از طریق درک بیشتر از نحوه عملکرد یک سازمان و چگونگی کارکرد آن در آینده تعریف می‌کند.مک گرگور می افزاید: «این را به این دلیل می گویم که می توان استدلال کرد که تکنیک هایی مانند شش سیگما، Work Out و Lean همگی نقش مهمی دارند، همراه با شاید استفاده از رویکردهای مد مانند تفکر طراحی.تعریف ۲ BPM: مخفف عبارت Business Process Management است. مدیریت فرآیند کسب و کار بر این اصل استوار است که فرآیندها برای یک سازمان مرکزی هستند. BPM به عنوان یک تکنیک، روش ساختاریافته و نظم و انضباط مورد استفاده برای ساده کردن عملیات و افزایش کارایی تعریف می شود. این تکنیک‌ها و روش‌ها اغلب برای شناسایی، مدل‌سازی، تحلیل، اصلاح، بهبود و استانداردسازی فرآیندهای کسب‌وکار با کمک اتوماسیون استفاده می‌شوند.تعریف ۱ BPMS: یک ابزار نرم افزاری است که برای بهبود فرآیندهای تجاری سازمان از طریق تعریف، اتوماسیون و تجزیه و تحلیل فرآیندهای تجاری استفاده می شود. همچنین به عنوان یک ابزار اتوماسیون ارزشمند برای کسب و کارها عمل می کند تا از طریق کاهش هزینه، تعالی فرآیند و بهبود مستمر فرآیند، مزیت رقابتی ایجاد کند. از آنجایی که BPM رشته ای است که توسط سازمان ها برای شناسایی، مستندسازی و بهبود فرآیندهای تجاری خود استفاده می شود. BPMS برای فعال کردن جنبه های BPM استفاده می شود.تمرین فرآیندهای دستی سنتی باعث می‌شود که صاحبان کسب‌وکار زمان را بکشند و بر روی عناصر بیهوده کسب‌وکارشان پول بسوزانند. اینجا جایی است که BPMS به تصویر کشیده می شود. BPMS به سازمان شما کمک می کند تا فرآیندهای تجاری خود را با کمک تجزیه و تحلیل و اتوماسیون بهبود بخشد. BPMS باید بتواند به شما اجازه مدل سازی، ایجاد، ویرایش و اجرای تمام فرآیندهای تجاری در سازمان شما و همچنین جمع آوری داده ها و تجزیه و تحلیل ها را بدهد.راه‌حل‌های BPM همچنین به هماهنگ کردن بهبود بهره‌وری کارکنان با خودکار کردن وظایف روزانه نیروی کار که اگر سیستم BPM وجود نداشت، به صورت دستی انجام می‌دادند، کمک می‌کند. با پیاده‌سازی BPMS در سازمان، به پاسخ‌های سریع به چالش‌ها و فرصت‌ها کمک می‌کند و در عین حال به رهبران کسب‌وکار کمک می‌کند تا تصمیم‌های درست را برای رشد کلی شرکت بگیرند. تعریف ۲:  BPMS (سیستم مدیریت فرآیند کسب و کار): به سازمان ها کمک می کند تا فرآیندهای کسب و کار خود را با کمک تجزیه و تحلیل و اتوماسیون بهبود بخشند. BPMS باید بتواند برای استفاده کننده، امکان مدلسازی، ایجاد، ویرایش و اجرای تمام فرآیندهای تجاری در سازمان و همچنین جمع آوری داده ها و تجزیه و تحلیل ها را فراهم کند.نرم افزار مدیریت فرآیند کسب و کار نیز شکل جدید و پیشرفته ای به خود گرفته است - iBPMS (من مخفف &quot;هوشمند&quot; است). یک iBPMS از بینش‌های عملی و بی‌درنگ از اطلاعات عملیاتی برای بهبود هماهنگی فرآیندهای تجاری تطبیقی ​​استفاده می‌کند.تعریف ۳: سیستم مدیریت فرآیند کسب و کار : یک مدل نه مرحله‌ای که، شرکت‌ها را قادر می‌سازد تا فرآیندهای کسب‌وکار حیاتی را مدل‌سازی، استقرار و مدیریت کنند و شامل چندین برنامه کاربردی و بخش‌های شرکتی است. BPMS معمولاً برای فرآیندهای کمتر بالغ استفاده می شود تا آنها را قابل تکرار و قابل اعتماد کند. رویکرد نه مرحله ای شامل: ۱)  ایجاد ماموریت فرآیند، ۲) فرآیند مسند، ۳) مستند کردن الزامات مشتری و فرآیند، ۴)  شناسایی اقدامات خروجی و فرآیند، ۵) ساخت سیستم مدیریت فرآیند، ۶) ایجاد طرح جمع آوری داده ها، ۷) نظارت بر عملکرد فرآیند، ۸) تعیین داشبوردهایی را با محدودیت ها و اهداف، و ۹) شناسایی فرصت های بهبود تفاوت بین BPM  و BPMS: بنابراین، تفاوت ها در اینجا کاملاً واضح است. اساساً BPM یک روش، تکنیک یا روش وجود/انجام است و BPMS مجموعه‌ای از فناوری‌ها برای کمک به ساختن سیستم‌های نرم‌افزاری یا برنامه کاربردی برای خودکارسازی فرآیندها است. وقتی به امروز نگاه می کنیم، ممکن است استدلال کنید که BPMS را می توان در طیف وسیعی از فناوری های اتوماسیون فرآیند اعمال کرد، از مفهوم اصلی BPMS، اتوماسیون گردش کار سبک قدیمی که در حال بازگشت به اشکال جدید است، تا مد فعلی اتوماسیون فرآیند رباتیک. (RPA) تا موج بعدی که مردم آن را اتوماسیون هوشمند می دانند.مک گرگور پیشنهاد کرد: «شاید باید به این فکر کنیم که BPM در مورد نحوه انجام آن است، و BPMS (اتوماسیون خواندن) در مورد راه های انجام آن است.دلیل انتخاب BPMS برای سازمان: در دنیای فوق رقابتی امروز، هر کسب و کاری باید تا حد امکان کارآمد باشد تا بتواند پایدار بماند و پیشرفت کند. تمرین فرآیندهای دستی سنتی باعث می‌شود که صاحبان کسب‌وکار زمان را بکشند و بر روی عناصر بیهوده کسب‌وکارشان پول بسوزانند. اینجا جایی است که BPMS به تصویر کشیده می شود.- پیاده سازی BPM Suite مزایای زیادی به همراه دارد، در حالی که مهمترین آنها به شرح زیر است:افزایش هوش عملیاتی: BPMS با کاهش کارهای تکراری و پیش پا افتاده، جایی که بیشتر تلاش و زمان دستی ناخواسته صرف می شود، به بهبود کارایی فرآیندهای تجاری شما کمک می کند. BPMS همچنین بینش هایی در مورد تنگناهای هر فرآیند ارائه می دهد که به شما امکان می دهد تصمیمات آگاهانه ای برای حذف آنها بگیرید و در نتیجه هوش عملیاتی را هدایت کنید.چابکی سازمانی: فرآیندهای تجاری انعطاف ناپذیر باعث می شود سازمان شما در اقیانوس رقابت غرق شود. چابکی عامل اولیه ای است که به بقای هر کسب و کاری کمک می کند. اگر سازمان شما نتواند به سرعت تغییر کند، طبق تقاضا، مشتریان شما بازی خواهند کرد تا پایگاه خود را به سمت رقبای شما تغییر دهند. BPMS به کاربر کمک می کند تا سریعا تغییر کند و تجربه مشتری بهتری را بدون هیچ دردسری ارائه دهد.چگونگی پیاده سازی موفقیت آمیز چک لیست ۱۰ نکته ای BPMS : موفقیت یک ابتکار BPM به انتخاب نرم افزار مناسب برای سازمان شما ختم نمی شود. در واقع از آنجا شروع می شود. با این حال، عامل اولیه ای که بر میزان موفقیت یک ابتکار مدیریت فرآیند تأثیر می گذارد، پیاده سازی است.در اینجا 10 نکته وجود دارد که باید قبل از اجرای BPMS آنها را بررسی کنید: ۱) انتخاب پلتفرم، ۲) انتخاب فرآیند، ۳) مالک فرآیند را شناسایی کنید، ۴) تعیین معیارها، ۵) نمودار گردش کار، ۶) همه ذینفعان را درگیر کنید، ۷) گردش کار BPM خود را آزمایش کنید، ۸) آسان برای ادغام، ۹) آموزش کاربران، و ۱۰) اندازه گیری و بهینه سازیچگونگی ارزیابی BPMS: چیزهای زیادی برای انتخاب مجموعه مدیریت فرآیند کسب و کار مناسب انجام می شود. باید خیلی چیزها را سنجید. در اینجا سه ​​متغیر وجود دارد که باید از آنها آگاه بود.- مدلسازی انسان محور در مقابل BPMN در مقابل برنامه نویسی یا                                                        (Human-Centric Modeling vs. BPMN vs. Programming): نرم افزار انسان محور مانند Kissflow از یک رابط نقشه برداری فرآیند بسیار ساده شده استفاده می کند که به صاحب فرآیند غیر فنی اجازه می دهد فرآیند را به ساده ترین شکل ممکن ایجاد کند. این نرم افزار کار پس زمینه ایجاد شرایط برای رد و جریان های متناوب را انجام می دهد. BPMN، یک سیستم نشانه گذاری است که از نمادهای استاندارد شده برای نشان دادن رویدادها، فعالیت ها، وظایف، اتصالات و غیره استفاده می کند. این نماد باید توسط خالق گردش کار به منظور وارد کردن آن به یک سیستم یاد شود.برنامه نویسی شامل ایجاد خطوط کدی است که گردش کار و انتقال داده را ایجاد می کند. برنامه نویسی بیشترین امکانات را ارائه می دهد و می تواند فرآیندهای بسیار پیچیده را مدیریت کند، اما تنها فردی که به شدت در این زمینه آموزش دیده باشد، قادر به ایجاد و اصلاح یک فرآیند خواهد بود.- ابر (Cloud) در مقابل On-premise: نرم افزار Cloud بر روی سرورهایی میزبانی می شود که از طریق یک مرورگر وب از هر مکانی قابل دسترسی است. جدا از قابلیت دسترسی، BPMS مبتنی بر ابر مسئولیت مدیریت نرم افزار را نیز بر عهده فروشنده می گذارد. راه حل های ابری معمولاً در مدل SaaS ارائه می شوند که هزینه کمتری را برای مشتری فراهم می کند.نرم افزار داخلی بر روی یک سیستم خاص نصب می شود. مزیت اصلی در محل این است که تمام داده های یک شرکت در داخل ذخیره می شود و به شرکت توانایی بیشتری برای محافظت و دسترسی به آن داده ها می دهد.- منبع باز در مقابل مجوز(Open-source vs. Licensed):راه حل های منبع باز BPM به این معنی است که فروشنده کد منبع خود را در دسترس عموم قرار داده است. این بدان معنی است که یک شرکت می تواند کد منبع را دانلود کند و هر تغییری را که می خواهد برای سفارشی کردن نرم افزار اعمال کند. نرم افزارهای دارای مجوز محدودیت هایی در میزان سفارشی سازی خواهند داشت.در دنیای فرآیند کسب و کار، راه‌حل‌های منبع باز پیچیده‌تر هستند و نیاز به برنامه‌نویس دارند که هر گونه تغییری در آن اعمال کنند. نرم افزارهای دارای مجوز بیشتر انسان محور هستند. ویژگی های ضروری که هر نرم افزار BPM شایسته (BPMS) باید ارائه دهد:- ابزار نمودارسازی فرآیند بصری (Visual Process Diagramming Tool): یک ابزار طراحی فرآیند بصری با نقاط قوت کاربر تجاری که معمولاً فرآیند را بسیار بهتر از یک کدنویس «تفنگ استخدامی» یا حتی تیم فناوری اطلاعات داخلی درک می‌کند، عمل می‌کند.- طراح فرم کشیدن و رها کردن(Drag-and-Drop Form Designer): نرم افزار BPM را انتخاب کنید که طراحی فرم ها را آسان می کند. ابزارهای طراحی فرم پیچیده می توانند کارمندان شما را از پذیرش کامل ابزار BPM شما منصرف کنند.-  کنترل دسترسی مبتنی بر نقش (Role Based-Access Control): اطلاعات کسب و کار در فرم ها و زمینه ها معمولا حساس هستند، بنابراین راه حل BPM را انتخاب کنید که از اطلاعات از طریق دسترسی انتخابی محافظت می کند.- پشتیبانی موبایل(Mobile Support): اطمینان حاصل کنید که این ابزار حداقل برای اندروید و iOS پشتیبانی تلفن همراه ارائه می دهد. اکثر BPM های ابری این توانایی را ارائه می دهند.بخش ۲: معرفی چند ابزار متن بازمقایسه تعدادی از ابزارهای متن باز BPMS، در شکل ۱، به صورت زیر است.شکل ۱: ابزار های متن باز BPMSاز بین ابزارهای مقایسه شده در شکل ۱، ویژگی ها و خدماتی ارائه شده توسط دو تا از آن ها را در ادامه می بینیم:۱. ابزار Gluu: با این ابزار پیچیدگی را قبل از اینکه رشد کند می توان از بین برد. با Gluu، هر کارمند یک رابط واحد برای وظایف و دستورالعمل های مناسب در زمان مناسب دریافت می کند. در ساده سازی، اجرا و بهبود کمک می کند. از سال 2015، Gluu به بسیاری از شرکت‌ها کمک کرده است تا کار را ساده‌تر کنند، تکالیف وظایف را بهبود بخشند و صفحات گسترده، ایمیل‌ها و سیستم‌های زیادی را زائد کنند. وقتی مردم سرشان شلوغ است، راحت ترین راه را انتخاب می کنند. Gluu به شما کمک می کند مطمئن شوید که بهترین تمرین شما ساده ترین مسیر است. پلتفرم Gluu، فرد را در مرکز قرار می دهد و به تیم شما کمک می کند تا هر فرآیند تجاری را به یک راهنمای ساده و بصری تبدیل کند که کار را در نقش ها، عملکردها و سیستم ها هدایت می کند.پلتفرم Gluu، نقش های شما و سیستم های تجاری موجود را به هم متصل می کند تا روش های کار شما را تحت کنترل درآورد. منظور ما از این جریان‌های سرتاسر واقعی است که باید در نقش‌ها و سیستم‌های بیشتری به آرامی اجرا شوند. این بدان معناست که هر جریان پیچیده می‌تواند بر اساس بهترین دانشی باشد که شما در دسترس دارید – و توسط کسی که در آن روز در محل کار است تعیین نمی‌شود.به این صورت که، تیم شما می تواند از Gluu برای ترسیم حیاتی‌ترین فرآیند کسب‌وکار استفاده می‌کند، سپس دستورالعمل‌های کاری را برای نشان دادن نحوه انجام کار و در نهایت وظایف و فرم‌هایی برای اجرای آن اضافه می‌کند. سپس کار درست و دستورالعمل درست به کارکنان با نقش های مناسب در زمان مناسب نشان داده می شود. آنها کار را از طریق تلفن همراه یا وب تکمیل می کنند - و ثبت نام محصول جانبی کار به روش صحیح می شود.۲. ویژگی های ابزار monday.com:- تصویر بزرگتر را می بیند: بینش های مهم و یک نمای کلی روشن از هزینه های بودجه خود، وضعیت پروژه ها و موارد دیگر را به دست می آورد.- گردش کار خود را خودکار می کند: کارهای تکراری خود را روی پایلوت خودکار قرار دهید و اجازه دهید این ویژگی اتوماسیون کار را برای شما انجام دهد.- متمرکز کردن فرآیندها: با ابزارهای مورد علاقه خود یکپارچه شوید و داده های خود را در یک مکان متمرکز کنید.خدمات ارائه شده عبارتند از:- نقشه راه پروژه Q3- خط لوله CRM- نقشه راه تحقیق و توسعه (R&amp;D)-  درخواست های بازاریابیبخش ۳: معرفی چند شرکت ایرانی که در این راستا خدمت رسانی می کنندمقدمه: با توجه به رشد روز‌افزون حوزه مدیریت فرایندهای کسب‌وکار در کشور، شرکت‌های متعددی اقدام به ارائه سیستم‌های جامع مدیریت فرایندهای کسب‌وکار(BPMS) نموده‌اند. شرکت‌های فعال ارایه دهنده نرم‌افزار BPMS در ایران به سه گروه ذیل تقسیم می‌شوند.۱) نمایندگی‌های شرکت‌های خارجی ارائه دهنده BPMS: عمدتا شرکت‌های خارجی به دلیل تحریم ایران، به صورت غیر مستقیم و با واسطه، راهکار خود را به دست مشتریان می‌رسانند.۲) شرکت‌های توسعه‌دهنده BPMS‌های متن‌باز: شرکت‌هایی که در بستر راهکارهای متن باز خارجی و با توسعه و بومی‌سازی آن‌ها، BPMS خود را توسعه داده‌ و ارائه نموده‌اند.۳) شرکت‌های تولیدکننده BPMS: شرکت‌هایی که با استفاده از توانمندی داخلی و بدون بهره‌گیری از راهکارهای خارجی، BPMS کاملا ایرانی ارائه داده‌اند.شرکت آی کن، توسعه و استقرار راهکارهای جامع مالی، منابع انسانی و به کارگیری  سیستم مدیریت فرآیندهای کسب و کار ( BPMS ) در وزارت‌خانه‌ها، هلدینگ‌ها و صنایع بزرگ کشور را به عهده دارد. ارائه محصولی کارآمد برای همه سازمان‌ها: ارائه گذرگاهی ارتباطی بین نرم‌افزارها و سرویس‌های سازمانی و فراسازمانی با نام یکپارچه سازی IIF آی کن  که مشکل نرم‌افزارهای جزیره‌ای را مرتفع نموده است که با توجه به معماری استاندارد و زیرساخت سرویس‌گرای محصول، سازمان ها را در جهت نیل به معماری سرویس‌گرا و استاندارد همراهی می‌کند.شرکت فراگستر، به آدرس اینترنتی http://www.faragostar.net یکی از ارائه کنندگان راهکار BPMS در ایران مبتنی بر BizagiBPMS می باشد. این شـــرکت ارائه دهنده ی مجموعه ای از نرم‌افزارهای یکپارچه سازمانی در حوزه مدیریت فرآیندهای کسب و کار (BPMS)، اتوماسیون اداری، منابع انسانی، مالی، بازرگانی و تولید و مهندسی برای سازمان‎هایی با اندازه‎ی متوسط و بزرگ می‎باشد.شرکت مشاوران پاسارگاد، یکی از ارائه کنندگان BPMS است، علاوه بر آن   خدمات زیر ارائه می دهد: - سیستم های سفارشی: تحليل، طراحی و پياده سازی سيستم ها و ماژول های سفارشی و اختصاصی در حوزه تعاملات و ارتباطات سازمانی بر بستر نرم افزار SharePoint ...- ارائه خدمات مشاوره: در زمينه معماری سرويس گرا، يکپارچه سازی سيستم های سازمانی ،مکانيزاسيون فرم ها و فرآيندهای کسب و کار در حوزه تعاملات سازمانی و طراحی و پياده سازی راهکارهای سازمانی بر بستر Microsoft- ارائه خدمات آموزش: بر اساس آخرين استانداردهای جهانی و به روش های خاص در کوتاه ترين زمان ممکن در زمينه نرم افزار SharePoint و ديگر خدمات و راهکارهای قابل ارائه شرکت- نرم افزار QlikView: اين ابزار با ترکيب نمودن قابليت هايی همچون ارائه پويا، تجزيه و تحليل و به کارگيری آنی داده ها، به کاربران توانايی اخذ تصميمات تجاری مبتکرانه را می دهد و به بهترين نحو داده ها را به دانش تبديل می نمايد.اين شرکت با مشارکت جمعی از کارشناسان موفق در زمينه های طراحی و پياده سازی فرآيندهای کسب و کار اداری و سيستم های مديريت اطلاعات سازماني، فعاليت رسمی خود را از سال 1387 با هدف کمک به ارتقاء فرهنگ فناوری اطلاعات در سازمان های دولتی و خصوصی کشور و با شعار «همراه با ما، بدون محدوديت به خواسته هايتان بيانديشيد» آغاز نموده است.اين شرکت با نگاهی متفاوت در ارائه خدمات به مشتری و با استفاده از تجربيات بدست آمده از حضور مستمر و درخشان در پروژه های مشاوره، طراحي، اجرا و استقرار نرم افزارهای يکپارچه سازي، مستند سازی و هوشمند نمودن فرآيندهای سازمانی پا به عرصه گذاشته است و تا کنون پروژه ها موفقی را در فهرست تجربيات خود قرار داده است.شرکت مشاوران نرم افزار پاسارگاد از بدو تاسيس با تمرکز بر روی محصولات و راهکارهای ارائه شده از طرف شرکت مايکروسافت (Microsoft)، خدمات، محصولات و راهکارهای متنوعی را در زمينه تعاملات و نرم افزارهای سازمانی ارائه نموده و دائما حضوری فعال و پررنگ در اين زمينه داشته است.منابع[1] https://www.isixsigma.com/dictionary/business-process-management-system-bpms/[2] https://kissflow.com/workflow/bpm/what-is-bpms/[3] https://solutionsreview.com/business-process-management/understanding-the-difference-bpm-vs-bpms/[4] https://www.capterra.com/sem-compare/business-process-management-software/?utm_source=psgoogle&amp;amp;utm_medium=ppc&amp;amp;gclid=Cj0KCQiAnuGNBhCPARIsACbnLzo_5TZmT3Rd-H55aQ_6sy9zAdWK9eiVn-KgFkG864bgZUBiuMbwNPQaAh9AEALw_wcB[5] https://gluu.biz/[6] https://monday.com/lp/mb/business/comparison2/?utm_medium=capterra&amp;amp;utm_campaign=capterrabusinessprocessmanagement&amp;amp;utm_bdg=exp&amp;amp;utm_source=capterra«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Tue, 14 Dec 2021 15:40:20 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی Log Management Tools</title>
                <link>https://virgool.io/@m_49289735/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-log-management-tools-whsjpsa0kbqo</link>
                <description>بخش ۱: معرفیاصول مدیریت لاگ: فایل لاگ چیست؟فایل گزارش یک فایل متنی است که در آن برنامه‌ها، از جمله سیستم عامل، رویدادها را می‌نویسند. گزارش‌ها به ما نشان می‌دهند که در پشت صحنه چه اتفاقی افتاده است و چه زمانی اتفاق افتاده است، به طوری که اگر مشکلی در سیستم شما رخ دهد، یک رکورد دقیق از هر اقدام قبل از ناهنجاری داشته باشیم.بنابراین، فایل‌های گزارش، دریافت اطلاعات و شناسایی علت اصلی مشکلات برنامه‌ها و زیرساخت‌ها را برای توسعه‌دهندگان، DevOps، SysAdmins یا SecOps آسان‌تر می‌کنند.گزارش ها همچنین زمانی مفید هستند که سیستم ها به طور عادی رفتار کنند. برای بهبود آن، می‌توانید بینش‌هایی در مورد نحوه واکنش و عملکرد برنامه خود دریافت کنید.منابع مختلفی از گزارش ها و همچنین انواع لاگ وجود دارد. در ادامه برخی از منابع گزارش به روز که امروزه استفاده می شود، مورد توجه قرار می دهیم:دنده شبکه (Network Gear): همانطور که ما با برنامه های تلفن همراه، برنامه های وب، وب سایت ها و غیره تعامل داریم، ترافیک شبکه زیادی تولید می کنیم. ابزار شبکه - روترهای شبکه، سوئیچ های شبکه و غیره - می توانند گزارش هایی درباره این ترافیک ایجاد کنند. برخلاف گزارش‌های سرور و برنامه‌هایی که تمایل به استفاده از فرمت‌های مدرن‌تر و گزارش‌های ساختار یافته‌تر دارند، ابزار شبکه همچنان از انواع مختلفی از Syslog استفاده می‌کند.گزارش سرور و برنامه (Server and Application Logs): منابع سنتی رویدادهای گزارش، سرورها و برنامه‌هایی هستند که روی آن سرورها اجرا می‌شوند. هسته پیام‌های گزارشی مانند درایورهایی که بارگیری می‌کند، در صورتی که قاتل OOM فراخوانی شده باشد و غیره منتشر می‌کند. سپس خدمات سیستمی مانند زمانی که کاربر وارد سیستم می شود وجود دارد. این اطلاعات به ما کمک می کند تا مشکلات پایداری و امنیت و همچنین گلوگاه های عملکرد در سطح سیستم را تشخیص دهیم. آیا هسته کوکی های SYN را ارسال می کند؟ ممکن است یک حمله باشد یا شبکه ممکن است بیش از حد بارگذاری شده باشد. در مورد برنامه‌ها، ممکن است گزارش‌های وب سرور Nginx، یک برنامه وب جاوا در یک آپاچی تامکت یا یک برنامه PHP در حال اجرا در وب سرور آپاچی داشته باشید. آنها رویدادهای مختلف اطلاعاتی، خطا یا اشکال زدایی را منتشر می کنند.برخی از این گزارش‌ها از فرمت‌های استاندارد شده مانند Common Log Format استفاده می‌کنند، در حالی که برخی دیگر از قالب‌های سفارشی مختلف، از جمله فرمت‌های گزارش‌گیری ساختاری مختلف، مانند key=value یا حتی گزارش‌های JSON استفاده می‌کنند.گزارش های مربوط به کانتینر (Container Logs): امروزه برنامه های کاربردی بیشتر و بیشتری در کانتینرها مستقر می شوند. به این ترتیب، کانتینرها و برنامه های کاربردی در حال اجرا در داخل آنها منبع بزرگ دیگری از گزارش ها هستند. برخلاف برنامه‌ها و سرورهای سنتی، و مطمئناً تجهیزات شبکه، کانتینرها بسیار &quot;بی‌معنی&quot; هستند. چارچوب‌های ارکستراسیون کانتینر مانند Kubernetes، کانتینرها را از میزبانی به میزبان دیگر منتقل می‌کنند. علاوه بر این، تمرین «ssh in»، زدن به اطراف، دم کردن، و گرفتن گزارش ها برای عیب‌یابی، عمل بدی در دنیای ابری تلقی می‌شد. از این رو، نظارت بر Docker و چالش‌های مدیریت لاگ نیاز به رویکردهای جدید و ابزارهای مدیریت Log جدید Docker دارد.دستگاه‌های موبایل و گزارش‌های برنامه (Mobile Devices and App Logs): اپلیکیشن‌ها و دستگاه‌های موبایل در همه جا وجود دارند. ممکن است آنها را به عنوان منابع گزارش فکر نکنید زیرا نمی توانید (به راحتی) به گزارش های سیستم یا برنامه در دستگاه iOS یا Android دسترسی داشته باشید. فضای دیسک محدود و شبکه نامعتبر به این معنی است که نمی‌توان پیام‌های پرمخاطب را به صورت محلی ثبت کرد، و نمی‌توان فرض کرد که گزارش‌ها را در زمان واقعی به یک مکان مرکزی ارسال می‌شود. علی‌رغم این چالش‌ها، مهم است که دانست آیا یک برنامه تلفن همراه خراب می‌شود و چرا. فراتر از این، نحوه رفتار و عملکرد برنامه. به طور معمول، تا N پیام را به صورت محلی بافر می کنند و آنها را به یک سرویس ثبت مرکزی ارسال می کنند. این کاری است که کتابخانه‌های Sematext Cloud برای اندروید و iOS انجام می‌دهند.حسگرها، اینترنت اشیا، اینترنت اشیاء صنعتی (Sensors, IoT, Industrial IoT): در فضای مصرف‌کننده، حسگرهایی در خودروها، ترموستات‌های هوشمند، یخچال‌های متصل به اینترنت و سایر دستگاه‌های خانه هوشمند و در مقیاس بزرگ‌تر شهرهای هوشمند وجود دارد. اینترنت صنعتی اشیا یا IIoT، ماشین‌ها و دستگاه‌ها را در صنایعی مانند حمل‌ونقل، تولید برق، تولید و مراقبت‌های بهداشتی به هم متصل می‌کند.به طور معمول، ما به معیارهای تولید شده توسط این دستگاه ها علاقه مند هستیم. به عنوان مثال، ما برخی از سطوح آلودگی هوا (PM2.5، PM10) را جمع آوری کرده و به Sematext Cloud ارسال می کنیم. اما لاگ های منتشر شده از این دستگاه ها نیز مهم هستند: آیا این سنسور به درستی شروع به کار کرد؟ آیا نیاز به کالیبراسیون مجدد دارد؟ حسگرها در 6 ماه گذشته چند بار از کار افتاده اند؟ بر اساس این اطلاعات، مطمئن ترین سازنده کدام است؟ اینها تنها نمونه هایی از ابرداده هستند که می توان از لاگ های اینترنت اشیا استخراج کرد.چرا مدیریت گزارش مهم است: مزایای کلیدی و موارد استفادهمدیریت لاگ بینشی در مورد سلامت و انطباق سیستم ها و برنامه های شما ارائه می دهد.بدون آن، هنگام تلاش برای عیب یابی مشکلات تولید، مجبور می شویم چندین فایل گزارش را به صورت دستی بازرسی کنیم. این مسئله به طرز وحشتناکی کند، مستعد خطا، گران بود و مقیاس پذیر نخواهد بود.مدیریت لاگ به دلیل ماهیت پویا، توزیع شده و زودگذر آنها برای برنامه های کاربردی ابری مهم است. بر خلاف برنامه‌های کاربردی سنتی، برنامه‌های بومی ابری اغلب در کانتینرها اجرا می‌شوند و به‌جای نوشتن گزارش‌ها در فایل‌های گزارش، گزارش‌ها را به خروجی استاندارد منتشر می‌کنند. این به این معنی است که کاربر، &quot;گزینه پیش فرض&quot; ثبت دستی گزارش ها را ندارد. به طور معمول، ما لاگ ها را ضبط،  و آنها را به یک راه حل متمرکز مدیریت گزارش ارسال می کنیم.به طور خلاصه، مدیریت لاگ به اپراتورهای برنامه و زیرساخت (توسعه دهندگان، DevOps، SysAdmins و غیره) امکان عیب یابی مشکلات را می دهد و به سهامداران تجاری (مدیران محصول، بازاریابی، BizOps و غیره) اجازه می دهد تا بینش هایی را از داده های تعبیه شده در رویدادهای گزارش استخراج کنند. گزارش‌ها همچنین یکی از منابع کلیدی داده‌ها برای تجزیه و تحلیل امنیتی هستند - تشخیص تهدید، تشخیص نفوذ، انطباق، امنیت شبکه و غیره که در مجموع به عنوان SIEM (اطلاعات امنیتی و مدیریت رویداد) شناخته می‌شوند.بخش ۲: معرفی چند ابزار متن باز ابزار Graylog: یکی از نام‌های پیشرو در صنعت در مورد قابلیت‌های ثبت و تجسم در سطح صنعتی است. همچنین منحصر به فرد است که گزارش های جمع آوری شده شما را برای نشانه هایی از آسیب پذیری های امنیتی اسکن می کند و فوراً به شما اطلاع می دهد. در حالی که Graylog یک سیستم ثبت متمرکز است، اما انعطاف‌پذیری لازم را دارد و به ما امکان می‌دهد تا هشدارها، داشبوردها و موارد دیگر را سفارشی کنیم. ابزار Greylog منبع باز است، اما اگر نیازهای شما پیچیده باشد، یک برنامه سازمانی وجود دارد.۲. ابزار Logstash: این ابزار، اگر کاملاً منبع باز باشد، به کاربر اجازه می دهد تا هر طور که می خواهد از استقرار   استفاده کند. این ابزار، می‌تواند حجم زیادی از داده‌ها را از چندین پلتفرم جمع‌آوری کند، به کاربر امکان می‌دهد خطوط لوله داده‌های خود را تعریف و اجرا کند، اطلاعات بی‌ساختار log dumps را درک کند و موارد دیگر.البته، تنها محدودیت این است که فقط با مجموعه محصولات Elastic کار می کند، و مقیاس را نیز افزایش، می دهد.۳. ابزار Fluentd: در میان ابزارهای ثبت متمرکز که به عنوان یک لایه میانی برای جذب داده ها کار می کنند، Flutend اولین در بین آنهاست. با یک کتابخانه عالی از پلاگین ها، Fluentd می تواند داده ها را تقریباً از هر سیستم تولیدی جمع آوری کند، آن را در ساختار مورد نظر مرتب کند، یک خط لوله سفارشی بسازد و آن را به پلتفرم تجزیه و تحلیل مورد علاقه کاربر، خواه MongoDB یا Elasticsearch باشد، تبدیل کند. Fluentd بر روی Ruby ساخته شده است، کاملاً منبع باز است و به دلیل انعطاف پذیری و ماژولار بودن آن بسیار محبوب است. ۴. ابزار Flume: اگر واقعاً، در چالش مجموعه داده‌های واقعاً بزرگ،  Flume یکی از بهترین انتخاب‌ها است. این یک پروژه منبع باز &quot;خالص&quot; است، به این معنا که توسط بنیاد محبوب آپاچی ما نگهداری می شود، به این معنی که هیچ برنامه سازمانی وجود ندارد.کد منبع Flume که به زبان جاوا نوشته شده است، کد منبع Flume کاملاً باز است. اگر به دنبال یک پلت فرم انتقال داده توزیع شده و قابل تحمل خطا برای چیزهای سنگین باشیم، Flume بهترین است.۵. ابزار Octopussy: در صورت ساده بودن نیازهای کاربر، Octopussy می‌تواند انتخاب خوبی باشد.  Octopussy نیازهای بیشتر محصولات موجود را پوشش می دهد (آمار تخمینی بی ارزش هستند، اما اگر مجبور باشیم حدس بزنیم، می توان به جرأت گفت که 80٪ موارد استفاده در دنیای واقعی را برطرف می کند). Octopussy به هیچ وجه رابط کاربری عالی ندارد ، اما از نظر سرعت و قابلیت نگهداری آن را جبران می کند.۶. ابزار Rsyslog: کلمه Rsyslog مخفف یک سیستم موشکی سریع برای پردازش گزارش است.این یک ابزار برای سیستم عامل های مشابه یونیکس است. از نظر فنی، یک مسیریاب پیام با ورودی ها و خروجی های قابل بارگذاری پویا است و بسیار قابل تنظیم است.می تواند ورودی را از چندین منبع داده بگیرد، آن را تبدیل کند و خروجی را به چندین مقصد ارسال کند. با Rsyslog، می‌توان یک میلیون پیام در ثانیه را در مقصدهای محلی ارسال کرد. Rsyslog همچنین یک عامل (agent) ویندوز را ارائه می دهد که بسیار نزدیک با عامل لینوکس Rsyslog کار کند. برای ادغام بین دو محیط استفاده می شود. این عامل ویندوز برای ارسال گزارش رویدادهای ویندوز و سرویس نظارت بر فایل راه اندازی استفاده می شود.در ادامه سایر ویژگی‌های ارائه شده توسط Rsyslog ارئه شده است: تنظیمات انعطاف‌پذیر، ارائه قابلیت‌های چند رشته‌ای، حفاظت از دستکاری فایل گزارش، استفاده از امضای گزارش و رمزگذاری، پشتیبانی از پلتفرم‌های Big Data، ارائه قابلیت‌های فیلتر مبتنی بر محتوا.۷. ابزار LOGalyze :یک محصول تجاری است که اخیراً به صورت منبع باز ساخته شده است.  ابزار LOGalyze یک پیشنهاد نسبتاً منعطف و قدرتمند است که برای استقرارهای تک سیستمی که به دنبال ترکیب ورود به سیستم از منابع شناخته شده مانند Postfix، Apache و غیره هستند و خروجی را در CSV، PDF، HTML یا فرمت‌های مشابه تولید می‌کنند، به خوبی کار می‌کند. ۸. ابزار Grafana Loki: با الهام از Prometheus یک راه حل جمع آوری گزارش های مربوط به چند مستاجر است.راه حل Loki مقرون به صرفه است، فقط ابر داده را نمایه می کند و می تواند به سیستم محبوبی مانند Kubernetes، Prometheus، Linux، SQL و غیره متصل شود. ۹. ابزار Logwatch: مناسب برای کار کردن با سرورهای منفرد، و نه سیستم یکپارچه و متمرکز. پس از نصب، LogWatch می توان گزارش های سیستم را اسکن کرده و گزارشی از نوع مورد نظر کاربر را ایجاد کند. البته این یک نرم‌افزار قدیمی است، و به زبان Perl نوشته شده است. بنابراین، برای اجرای آن به Perl 5.6+ روی سرور نیاز است.۱۰. ابزار Syslog-ng: این ابزار به عنوان راهی برای پردازش فایل های داده Syslog (یک پروتکل سرویس گیرنده-سرور ایجاد شده برای ثبت سیستم) در زمان واقعی توسعه داده شد. با گذشت زمان، با گذشت زمان، از فرمت های داده دیگری پشتیبانی می کند: بدون ساختار، SQL، و NoSQL. نحوه عملکرد پروتکل Syslog تقریباً در تصویر زیر به طور دقیق خلاصه شده است.ابزار syslog-ng، یک ابزار جمع‌آوری و طبقه‌بندی لاگ درجه تولید و قابل اعتماد است که به زبان C نوشته شده است. بهترین بخش توسعه پذیری آن است، که به کاربر این امکان می دهد تا افزونه ها را در C، Python، Java، Lua یا Perl بنویسید.۱۱. ابزار lnav: مخفف (Log Navigator)، lnav یک ابزار پایانی خالص است که روی یک ماشین واحد، دایرکتوری واحد کار می کند. این ابزار برای کسانی است که ثبت‌نام خود را در یک فهرست واحد یکپارچه کرده‌اند یا می‌خواهند گزارش‌های بلادرنگ را از یک منبع منفرد فیلتر و نمایش دهند. از ویژگی های آن می توان به، نمایش سری زمانی، چاپ زیبا (برای JSON و فرمت های دیگر)، منابع گزارش با کد رنگی، فیلترهای قدرتمند، توانایی درک چندین پروتکل گزارش و ... اشاره نمود. بخش ۳: معرفی چند شرکت ایرانی که در این راستا خدمت رسانی می کنندشرکت دانش بنیان آتین آتیه اندیش، مستقر در پارک علم و فناوری دانشگاه تهران، در سال 1396 فعالیت خود را به طور تخصصی درحوزه ارائه خدمات احراز هویت آغاز کرد. این شرکت با بررسی نمونه های مشابه خارجی و بر اساس نیازهای داخلی کشور درحوزه احراز هویت، اقدام به توسعه سامانه مدیریت هویت و دسترسی نموده است. تیم فنی آتین از فارغ التحصیلان دانشگاه های برتر کشور در حوزه نرم افزار و امنیت اطلاعات و با پشتوانه سابقه چندین ساله در حوزه احراز هویت و کنترل دسترسی تشکیل شده است. در واقع آتین یک سرویس مدیریت هویت و دسترسی است که با تمرکز ویژه بر رضایت مشتری بر بستر زیرساخت ابری توسعه یافته است. با استفاده از سامانه آتین مراکز و سرویس دهنده های فناوری اطلاعات به راحتی می توانند دسترسی دستگاه های مختلف داخل سازمان یا اشخاصی از جمله کارمندان، شرکای تجاری و مشتریان را به تمامی سامانه ها به صورت متمرکز مدیریت نمایند. آتین تضمین می کند که دسترسی همه کاربران بر اساس سیاست واحد صورت گیرد و تمامی افراد و سرویس ها، احراز هویت، مجوزدهی و نظارت شوند. محصولاتی که این شرکت ارائه می کند عبارتند از: SSO احراز هویت و ورود یکپارچه مرکزی، MFA احراز هویت چند عاملی ، مدیریت لاگ و مانیتورینگ کاربران، احراز هویت تطبیقی، مدیریت دسترسی به API ها.شرکت داده کاوان تصمیم یار به شماره ثبت: 576694 و شناسه ملی: 14009978163 در زمینه ارائه ، مشاوره و آموزش خدمات نرم افزاری به سازمان‌های دولتی و خصوصی فعالیت می‌نماید. شرکت داده کاوان تصمیم یار خدمات مختلف نرم افزاری ارائه می‌دهد که یکی از آنها “کوالاتک” نام دارد که “تست اتوماتیک نرم افزار و تضمین کیفیت” می‌باشد. تیم کوالاتک متشکل از کارشناسان ارشد دانشگاه صنعتی شریف است که کیفیت دغدغه آن‌هاست. مجموعه ما به سازمان‌ها و تیم‌های توسعه نرم‌افزار کمک می‌کند، از مزایای تست و تضمین کیفیت بهره مند شوند. در همین راستا از سال ۹۶، خدمات مشاوره،‌ آموزش و برون‌سپاری تست، تضمین کیفیت و اتوماتیک‌سازی را ارائه می دهد. مهندسین QA و Test مجموعه کوالاتک به شما کمک مي‌کنند تا به طور سیستماتیک و مطابق نیازمندی شما، از ریسک‌های کیفی و هزینه‌های اضافی ناشی از عدم تست اصولی در مرحله توسعه و تولید جلوگیری کنید. خدماتی که این شرکت ارائه می دهد عبارتند از: تست اتوماتیک عملکردی، تست اتوماتیک کارایی، تست اتوماتیک امنیت، راه اندازی و مشاوره CI/CD، راه اندازی مدیریت لاگ،راه اندازی مانیتورینگ، راه اندازی آنالیز سورس کد.منابع[1] https://sematext.com/guides/log-management/[2] https://geekflare.com/open-source-centralized-logging/«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Tue, 14 Dec 2021 11:21:34 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی Monitoring Tools:</title>
                <link>https://virgool.io/@m_49289735/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-monitoring-tools-e34l8fhxogfy</link>
                <description>بخش ۱: معرفیروش های نظارت یا پایشبرنامه ریزی فعالیت های نظارتی با جزئیات بیشتر مستلزم اتخاذ تصمیمات مهم در مورد اینکه کدام داده ها جمع آوری شوند، می باشد. چنین تصمیماتی باید با ملاحظاتی در مورد داده هایی که می توانند به عنوان معیارهای مرتبط و قابل اعتماد دستاوردها، عملکرد و پیشرفت در نظر گرفته شوند، آگاه شوند. روش های مورد استفاده برای جمع آوری داده ها معمولاً بین ارزیابی و نظارت متفاوت است.نظارت با بررسی‌های موقت یا دوره‌ای و ارزیابی‌های سریع و سبک از عملکرد و مسائل عملیاتی یک مداخله، توسط افراد داخلی برنامه مداخله یا سازمانی که در آن اجرا می‌شود، همراه بوده است. از سوی دیگر، ارزیابی اغلب شامل ارزیابی‌های دقیق‌تر و روش‌شناسی دقیق‌تر است که توسط ارزیابان مستقل ارزیابی را اغلب از یک رویکرد کمی با شاخص‌های عملکردی مشخص برای اندازه‌گیری نتایج مورد انتظار استفاده می‌شود. از سوی دیگر، نظارت می‌تواند از یک رویکرد کیفی و استقرایی‌تر استفاده کند که مبتنی بر مشاهدات مستمر از فعالیت‌ها در پروژه تغییر است. با این حال، فونل و راجرز ، بیشتر پیشنهاد می کنند، نظارت بر جنبه های کیفی به طور معمول دشوار است و در عوض باید از طریق نظرسنجی های گاه به گاه ارزیابی شوند.علاوه بر این، لینکلن و گوبا، بر اهمیت رویکرد قوم نگاری و استفاده از روش های کیفی برای نظارت تأکید کردند. استفاده از روش‌های کیفی برای پایش داده‌های غنی تولید می‌شود و روش‌های کیفی نیز در ارزیابی ارتقا یافته‌اند  به عنوان یک قاعده، توصیه می‌شوند، برای جمع‌آوری انواع داده‌ها، با استفاده از ابزارهای نظارتی پیچیده با ویژگی‌های کمی و کیفی: پرسشنامه‌ها، نظرسنجی‌ها، دستورالعمل‌های مصاحبه، چک‌لیست‌ها، گروه‌های متمرکز، مشاهدات شرکت‌کنندگان، آمار، الگوها و مفاهیم کارگاهی توصیه می‌شوند. اتخاذ یک رویکرد ترکیبی، که اطلاعات مربوط به اثربخشی مداخلات، دستاوردها و پیشرفت ها تا حد امکان قابل اعتماد است احتمال را افزایش می دهد. و شامل تصمیم گیری آگاهانه در مورد اینکه چه کسی باید بر اساس ملاحظاتی که کدام بازیگران اطلاعات مهمی در رابطه با مداخلات و اجرا دارند، نظارت شود.مزایای نظارت (Monitoring)ضروری است که یک سیستم قوی از ارزیابی و نظارت بر فعالیت‌ها در برنامه‌ها و پروژه‌هایی که برای ایجاد نوعی تغییر در رفتارها، رویدادها، فرهنگ‌ها یا شرایط در جامعه، بخش‌ها یا در سازمان‌ها انجام می‌شوند، باشد. هدف از اتخاذ چنین سیستم‌هایی این است که بفهمیم آیا برنامه همانطور که انتظار می‌رود کار می‌کند یا خیر و اطلاع‌رسانی در مورد توسعه سیاست‌ها و شیوه‌های آتی.علیرغم مشکلاتی که در تمایز بین نظارت و ارزیابی وجود دارد، مزایای مهمی در دو نوع فعالیت پروژه وجود دارد که باعث می شود هر دو در برنامه های مداخله گنجانده شوند.به طور کلی، هدف اصلی ارزیابی، ارائه اطلاعات برای سیاست گذاری است. علاوه بر این، در صورت استفاده استراتژیک و سیستماتیک، مزایای بسیاری از نظارت می تواند برای موفقیت یک پروژه تغییر ضروری باشد.-  یکی از این مزایا این است که نظارت به سیستم‌بندی مداخلات تغییر و فرآیند اجرا کمک می‌کند.- پیاده سازی فرآیندها در پروژه های تغییر، اغلب پیچیده و چند لایه هستند و گاهی اوقات می توانند برای افراد درگیر گیج کننده باشند. نظارت مفید است زیرا، می تواند اطلاعات دقیق و ساختار یافته ای را در مورد آنچه در پروژه تغییر اتفاق می افتد و نحوه انجام مداخلات را تولید کند. این برنامه پیشرفت را دنبال می کند و دستاوردها را در زمان های مختلف پروژه گزارش می کند و در عین حال مشکلات را نیز شناسایی می کند.-  اطلاعات نظارتی، اگر به دست اندرکاران درگیر در فرآیند تغییر بازخورد داده شود، می تواند به افزایش انگیزه آنها و بهبود یادگیری سازمانی و فردی کمک کند . با انجام این کار، نظارت می تواند سیستماتیک شود بازتاب فردی و مشترک و می تواند برای ارائه چارچوبی برای تسهیل اشتراک دانش بین شرکت کنندگان و سهامداران در یک پروژه استفاده شود. این بازتاب‌ها می‌توانند برای بهبود مداخلات و اجرای طرح‌های تغییر، و همچنین برای توسعه طرح‌هایی برای چگونگی تطبیق مداخلات با سایر شرایط و انتقال به سایر تنظیمات مورد استفاده قرار گیرند.- جمع‌آوری داده‌های اطلاعات پایش، در حالی که آن‌ها را با خط مبنا و نتایج مورد انتظار مقایسه می‌کند، این امکان را فراهم می‌آورد که جایی برای بهبود وجود داشته باشد. نظارت مشخص می کند که آیا نتایج مورد نظر به دست آمده است یا خیر و می توان از آن برای توسعه اقدامات اصلاحی برای بهینه سازی دستاوردهای آینده استفاده کرد. این دانش سیستماتیک را می توان بیشتر برای تنظیم مجدد اهداف و واقعی نگه داشتن آنها مورد استفاده قرار داد.- بنابراین نظارت می تواند اصلاحات و بهبودهای تدریجی را تسهیل کند.- علاوه بر این، نظارت همچنین سرنخ هایی را در مورد نیاز یا عدم نیاز به یک برنامه ارزیابی به دلیل درک این موضوع ارائه می دهد, -  فرآیند پیاده سازی می تواند به توسعه استراتژی های متناسب با اندازه گیری آن کمک کند. - نظارت می تواند به سیستماتیک کردن فرآیند ارزیابی کمک کند، زیرا می تواند نیاز به ارزیابی را شناسایی کند و اجازه دهد شاخص ها و معیارهای مهم جدید به صورت استقرایی ظاهر شوند. - بنابراین نظارت، ارزیابی را تسهیل می کند و پایه و اساس آن را می گذارد .- در نهایت، اگرچه ارزیابی همچنین به حفظ برنامه تغییر در مسیر کمک می کند، نظارت در مورد منابع مزیتی دارد. ارزیابی مؤثر می تواند هم گران و هم زمان بر باشد. فونل و راجرز  نظارت را به عنوان &quot;هزینه کمتر  و سریعتر از ارزیابی&quot; توصیف می کنند. توجهات: - ملاحظات مربوط به منابع مالی برای در نظر گرفتن یک برنامه واقعی، مناسب و مفید برای نظارت حیاتی است و لیپینسکی و شافر تاکید می کنند که جمع آوری داده ها می تواند زمان بر باشد. بنابراین، زمان و منابع همیشه باید هنگام برنامه ریزی برای نظارت بر فعالیت ها در نظر گرفته شوند روسی و همکاران نیز، محدودیت هایی برای این فعالیت ها تعیین می کنند. - منابع ناکافی می تواند به طور جدی کیفیت نظارت را مختل کند. با این وجود، برخی از روش‌ها نسبت به سایر روش‌ها منابع کمتری مصرف می‌کنند.- نظارت کارآمد، سیستماتیک و به خوبی برنامه ریزی شده خطر افزایش هزینه و تاخیر زمانی را در طول برنامه مداخله کاهش می دهد.ابزارهای نظارت کیفی و کمیشکل ۱،  نشان می دهد که ابزارهای نظارتی نسبتاً در طول طیف کمی/کیفی متعادل هستند، اگرچه ابزارهای کیفی غالب اند.  معیارها و شاخص‌های کمی مکمل مهم ابزارهای کیفی هستند و برخی از ابزارهای نظارتی با اتخاذ رویکرد چند روشی، فرصت ترکیب روش‌های کیفی با روش‌های کمی را فراهم می‌کنند.شکل ۱:ابزارهای نظارت کیفی و کمیبخش ۲: معرفی چند ابزارهای متن بازنظارت برای کسب و کارها ضروری است تا مطمئن شوند که سیستم مورد نیاز آماده و کار می کند. نظارت بر جنبه های مختلف زیرساخت فناوری اطلاعات می تواند بسیار آزاردهنده باشد و اگر به درستی انجام نشود، مشکلات زیادی ایجاد می کند.صرف نظر از اندازه شرکت، نمی توان نیاز به نظارت بر سرور، شبکه و زیرساخت را با استفاده از بهترین ابزار نظارت نادیده گرفت. تمام زیرساخت‌های ابری مدرن و داخلی با بهترین راه‌حل‌های نظارتی ارائه می‌شوند.همچنین، وقتی صحبت از DevOps می شود، نظارت و قابلیت مشاهده نقش کلیدی در عملکرد تیم ایفا می کند.در زیر زمینه های کلیدی در مورد نظارت وجود دارد.- نظارت بر سرور در زمان واقعی- نظارت بر عملکرد شبکه- مانیتورینگ کانتینر (Docker/Kubernetes/Mesos و غیره)- نظارت بر زیرساخت ابری (عمومی و خصوصی)- نظارت بر برنامهفهرست بهترین ابزارهای نظارت بر منبع باز:راه حل های فنی حرفه ای یا تجاری معمولاً پرهزینه تلقی می شوند، اما لزوماً همیشه اینطور نیست. در زیر لیست کلیدی شاخص های کلیدی برای بهترین نرم افزار مانیتورینگ آورده شده است:- ارائه شاخص هایی در مورد قطعی و کاهش خدمات- تشخیص قطعی خدمات و فعالیت های غیرمجاز- مقیاس پذیر- قادر به رسیدگی و پردازش حجم عظیمی از داده های نظارتی است- معیارهای سیستم/برنامه را در زمان واقعی جمع آوری کنید- قادر به ارائه بینش های بلند مدت برای برنامه ریزی ظرفیت بهتر.- بسیار در دسترس- پشتیبانی از همه برنامه های ابری مدرن و کانتینری.- پشتیبانی از ابزارهای تجسم متریک- قابلیت ردیابی خوب- داشتن رابط کاربر پسند خوبی هنگام جستجوی راه حل های نظارتی، می توان چندین ابزار کاملا رایگان و منبع باز نظارت بر شبکه را در نظر گرفت.  پرومتئوس (Prometheus ): یک راه حل نظارتی منبع باز است که در درجه اول بر روی جمع آوری و تجزیه و تحلیل داده ها بر اساس داده های سری زمانی متمرکز شده است. این به کاربران امکان می دهد تا با استفاده از مجموعه ابزار داخلی، قابلیت های نظارت را تنظیم کنند.این یک راه اندازی مانیتورینگ ایده آل برای محیط های کانتینری مانند kubernetes و بهترین ابزار نظارت بر سرور منبع باز است. این می‌تواند چندین معیار را روی سرورها، کوبرنت‌ها و دستگاه‌های مختلف با استفاده از پینگ‌های SNMP جمع‌آوری کند و استفاده از پهنای باند شبکه را از نظر دستگاه، همراه با سایر عملکردها بررسی کند. سیستم PromQL داده ها را تجزیه و تحلیل می کند و به برنامه اجازه می دهد تا نمودارها، جداول و سایر گرافیک ها را روی سیستم هایی که نظارت می کند تولید کند. مدیر هشدار یکی دیگر از اجزای پرومتئوس است. این هشدار را برای همه قوانین هشدار پیکربندی شده در Prometheus کنترل می کند. Prometheus می‌تواند معیارهای سیستم، معیارهای کاربردی و معیارها را از برنامه‌های کاربردی مدرن جمع‌آوری کند. همچنین، ادغام بسیار خوبی با ابزارهایی مانند Grafana برای تجسم معیارها دارد. Grafana یکی از بهترین داشبوردهای مانیتورینگ منبع باز است.زبیکس (Zabbix): یک نرم افزار نظارت بر منبع باز با رابط کاربری آسان برای کاربران با منحنی یادگیری پایین است که راه حل های کلاس سازمانی را برای سازمان های بزرگ ارائه می دهد. این یک سیستم متمرکز است که داده ها را در یک DB رابطه ای برای پردازش کارآمد ذخیره می کند. کاری است که Zabbix می تواند انجام دهد: نظارت بر شبکه، مانیتورینگ سرور، مانیتورینگ ابری، نظارت بر برنامه، نظارت بر خدماتناگیوس (Nagios): یک ابزار نظارتی منبع باز است که از سال 1999 در بازار وجود داشته است. این ابزار امکانات متعددی مانند ادغام با برنامه های شخص ثالث را با استفاده از یک افزونه اضافی فراهم می کند. با توجه به مدت زمانی که Nagios در این صنعت بوده است، افزونه های زیادی برای آن نوشته شده است. این می تواند اجزای مختلفی از جمله Oss، برنامه ها، وب سایت ها، میان افزارها، وب سرورها و غیره را نظارت کند. ریمان (Riemann): یک ابزار مانیتورینگ منبع باز ایده آل برای سیستم های توزیع شده است. این یک سیستم پردازش حتی با تأخیر کم است که قادر به جمع آوری معیارها از انواع سیستم های توزیع شده است. این طراحی شده است تا میلیون ها حتی در ثانیه را با تأخیر کم مدیریت کند. این یک ابزار نظارتی مناسب برای سیستم های مقیاس پذیر بسیار توزیع شده است. سنسو (Sensu): به عنوان یک ابزار نظارتی تمام پشته معرفی شده است. با استفاده از یک پلتفرم واحد، می‌توانید خدمات، برنامه‌ها، سرورها و گزارش‌های مربوط به KPIهای تجاری را نظارت کنید. نظارت بر آن نیاز به گردش کار جداگانه ای ندارد. از تمامی سیستم عامل های محبوب مانند ویندوز، لینوکس و غیره پشتیبانی می کند. ایسینگا (Icinga ): یک ابزار نظارت بر شبکه منبع باز است که در دسترس بودن و عملکرد شبکه را محاسبه می کند. از طریق یک رابط وب، کسب و کار شما می تواند برنامه ها و میزبان ها را در اطراف زیرساخت کامل شبکه شما مشاهده کند. این ابزار مقیاس پذیر است و به راحتی برای عملکرد با هر نوع دستگاه قابل تنظیم است. چند ماژول Icinga برای قابلیت‌های نظارتی بسیار خاص وجود دارد، مانند نظارت بر محیط ابری vSphere VMWare و مدل‌سازی فرآیند کسب‌وکار.7. کاکتوس (Cacti): یک ابزار نظارت بر شبکه منبع باز است که بر اساس سیستم طبقه بندی و ترسیم داده های RRD Tool ساخته شده است. این ابزار از عملکرد جمع‌آوری داده و نظرسنجی شبکه برای جمع‌آوری اطلاعات در دستگاه‌های مختلف در شبکه‌های با هر دامنه استفاده می‌کند. این شامل قابلیت ایجاد اسکریپت های سفارشی برای جمع آوری داده ها به همراه تسهیلات برای نظرسنجی SNMP است. سپس این اطلاعات را در نمودارهایی به راحتی قابل درک نشان می دهد که می توانند در هر سلسله مراتبی مطابق با راحتی کسب و کار شما سازماندهی شوند.ابزار (LibreNMS): یک سیستم نظارت بر شبکه منبع باز است که از چندین پروتکل شبکه برای مشاهده هر دستگاه در شبکه شما استفاده می کند. LibreNMS API می‌تواند داده‌هایی را که جمع‌آوری می‌کند بازیابی، مدیریت و ترسیم کند و مقیاس افقی را تسهیل می‌کند تا توانایی‌های نظارتی خود را همراه با شبکه شما افزایش دهد. این ابزار یک سیستم هشدار منعطف را ارائه می دهد که به صورت سفارشی ساخته شده است تا با روشی که برای شرکت شما مناسب است با شما ارتباط برقرار کند. آنها iOS و Android خود را ارائه می دهندابزار Observium Community: همتای رایگان ابزار نظارت بر شبکه Observium است. در نسخه رایگان Observium Community، می‌توانید تعداد نامحدودی از دستگاه‌ها را همراه با استفاده کامل از ویژگی‌های نقشه‌برداری شبکه Obersvium نظارت کنید. ابزار نظارت بر شبکه Observium دارای کشف برنامه ریزی شده دستگاه های متصل است. همچنین با پروتکل‌های اکتشاف به خوبی تجهیز شده است تا مطمئن شوید که نقشه شبکه شما جدیدترین است. به این ترتیب، می‌توانید دستگاه‌های جدید را هنگام اتصال به شبکه پیگیری کنید.ابزار Pandora FMS: یک ابزار مانیتورینگ منبع باز است که به کسب و کارها کمک می کند تا کل زیرساخت IT خود را مشاهده کنند. این نه تنها دارای قابلیت های نظارت بر شبکه است، بلکه سرورهای یونیکس و ویندوز و رابط های مجازی را نیز دارد. برای شبکه‌ها، Pandora FMS از ویژگی‌های درجه یک مانند پشتیبانی از SNMP، نظرسنجی ICMP، نظارت بر تأخیر شبکه و همچنین اضافه بار سیستم تشکیل شده است. همچنین می‌توان عامل‌ها را روی دستگاه‌ها نصب کرد تا جنبه‌هایی مانند دمای دستگاه و گرمای بیش از حد و همچنین برای رویدادهای logfile مشاهده شود.ابزار LogRhythm NetMon Freemium:  یک نسخه رایگان از LogRhythm NetMon است که مانند نسخه کامل، توانایی های ضبط و تجزیه و تحلیل ماژول های درجه تجاری مشابه را ارائه می دهد. اگرچه محدودیت‌ها یا محدودیت‌هایی در پردازش داده‌ها و ذخیره‌سازی ماژول وجود دارد، نسخه فریمیوم همچنان به کاربران اجازه می‌دهد تا عملکردهای تشخیص ریسک و پاسخ شبکه را که بر اساس تجزیه و تحلیل بسته داده‌ها ساخته شده‌اند، انجام دهند. همچنین سیستم هشدار تهدید شبکه مشابه نسخه کامل را ارائه می دهد و به شما امکان می دهد از عملکرد و امنیت شبکه خود مطلع باشید.ابزار Famatech Advanced IP Scanner: اسکنر IP پیشرفته Famatech بدون هزینه نظارت بر شبکه و همچنین یک ابزار اسکن است که تجزیه و تحلیل را در شبکه های محلی و دستگاه های LAN ارائه می دهد. اسکنر IP پیشرفته امکان اسکن دستگاه های موجود در شبکه را فراهم می کند و رایانه های متصل و سایر منابع را از راه دور تنظیم می کند. در صورتی که دستگاه در حال استفاده نباشد و از منابع استفاده می کند، این امکان را فراهم می کند تا رایانه ها را از ابزار خاموش کنید. این ابزار با راه حل Radmin Famatech برای مدیریت فناوری اطلاعات از راه دور متصل می شود، بنابراین می توانید IP ها را در هر کجا که هستید مدیریت کنید.ابزار AppNeta PathTest: یک ابزار تست حجم شبکه رایگان است که به کسب و کارها کمک می کند تا توانایی واقعی شبکه خود را درک کنند. PathTest به دنبال ارتقای عملکرد لایه سه و لایه چهار با نمایش تصویری دقیق از حداکثر قابلیت‌های شبکه شما است. این به عمد شبکه شما را با بسته های داده پر می کند تا شبکه به ظرفیت کامل خود پر شود. کاربران می توانند مدت زمان این تست را حداکثر تا 10 ثانیه تنظیم کرده و در هر زمان تست ها را اجرا کنند.بخش ۳: معرفی چند شرکت ارائه دهنده این خدمتشرکت مشاورین فناوری اطلاعات چینود، با استفاده از خدمات مانیتورینگ این شرکت می توان در مجموعه خود از تمامی مسائلی که در شبکه رخ می دهد , مطلع شد. این اتفاقات می تواند سخت افزاری باشد یا نرم افزاری. سرویس مانیتورینگ شبکه می تواند مشکلات را پایش نماید و کمک می کند تا از میزان دانلود کاربران و استفاده ی آن ها از اینترنت , فضاهای اشغال شده توسط ایمیل های اسپم و  سرورهای که احتمالا دچار مشکل شده اند مطلع شد. همینطور می توان میزان ترافیک شبکه را چک کرد و موارد غیرعادی را پیدا کنید و علاوه بر نرم افزار ها, سخت افزارها را نیز پایش میکند. برای استفاده از خدمات مانیتورینگ نیاز به ابزارهایی داست که این شرکت بهترین ابزارهای مانیتورینگ شبکه را ارائه می دهد. این شرکت فعالیت خود را به صورت رسمی در سال ۱۳۹۵ آغاز کرده است و این مجموعه با هدف ارتقاء سطح شبکه های کامپیوتری شروع به فعالیت کرده است. خدمات دیگری که این شرکت ارائه می دهد عبارتند از: خدمات شبکه، پشتیبانی شبکه، هوش تجاریشرکت سدید آفرین، اولین نماینده رسمی زبیکس در ایران، ارائه دهنده مانیتورینگ زیرساخت ها و سرویس ها، نرم افزار مانیتورینگ شبکهZABBIX، زبیکس در ساختار ابری کلادینو، مانیتورینگ آنلاین از طریق زبیکس، مانیتورینگ محیط های مجازی سازی، مانیتورینگ بانکهای اطلاعاتی، مانیتورینگ UPS، مانیتورینگ شرایط محیطی، سیستم های اعلام هشدار.منابع:[1] Peterson, Helen &amp; Dahmen-Adkins, Jennifer. (2018). MONITORING HANDBOOK - Methods and tools for monitoring developed in the GenderTime project. Gothenburg Studies in Work Science.[2] https://devopscube.com/best-opensource-monitoring-tools/«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Tue, 14 Dec 2021 10:14:21 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی Continuous Delivery (CD)</title>
                <link>https://virgool.io/@m_49289735/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-continuous-delivery-cd-q5vexsipkbqt</link>
                <description>بخش ۱: تعریفتعریف ۱: تحویل مداوم (CD) یک رویکرد مهندسی نرم‌افزار است که در آن تیم‌ها نرم‌افزاری را در چرخه‌های کوتاه تولید می‌کنند و اطمینان حاصل می‌کنند که نرم‌افزار می‌تواند به طور قابل اعتماد در هر زمان منتشر شود و هنگام انتشار نرم‌افزار، بدون انجام دستی این کار را انجام دهد. هدف آن ساخت، آزمایش و انتشار نرم افزار با سرعت و فرکانس بیشتر است. این رویکرد به کاهش هزینه، زمان و ریسک ارائه تغییرات کمک می‌کند و به‌روزرسانی‌های تدریجی برنامه‌های کاربردی در تولید را امکان‌پذیر می‌سازد. یک فرآیند استقرار ساده و قابل تکرار برای تحویل مداوم مهم است. CD با استقرار مداوم در تضاد است، رویکرد مشابهی که در آن نرم افزار نیز در چرخه های کوتاه اما از طریق استقرار خودکار به جای موارد دستی تولید می شود.تعریف ۲: تحویل مستمر توانایی دریافت انواع تغییرات - از جمله ویژگی‌های جدید، تغییرات پیکربندی، رفع اشکال‌ها و آزمایش‌ها - به تولید یا در دستان کاربران، ایمن و سریع به روشی پایدار است.هدف این است که استقرارها را - خواه یک سیستم توزیع شده در مقیاس بزرگ، یک محیط تولید پیچیده، یک سیستم تعبیه شده یا یک برنامه - انجام شود- امور معمول و قابل پیش بینی که می توانند در صورت تقاضا انجام شوند.همه اینها را با اطمینان از اینکه کد مان همیشه در وضعیت قابل استقرار است، حتی در مواجهه با تیم‌هایی متشکل از هزاران توسعه‌دهنده که روزانه تغییراتی ایجاد می‌کنند، باید به دست آورد. بنابراین، فازهای ادغام، آزمایش و سخت شدن را که به طور سنتی به دنبال «dev full» دنبال می‌کردند، و همچنین فریز کردن کد باید کاملاً حذف شوند.چرا تحویل مداوم؟اغلب فرض بر این است که اگر می‌خواهیم نرم‌افزار را به دفعات بیشتری مستقر کنیم، باید سطوح پایین‌تری از ثبات و قابلیت اطمینان را در سیستم‌های خود بپذیریم. در واقع، تحقیقات بررسی شده نشان می دهد که اینطور نیست - تیم های با عملکرد بالا به طور مداوم خدمات را سریعتر و قابل اطمینان تر از رقبای کم عملکرد خود ارائه می دهند. این امر حتی در حوزه های بسیار تحت نظارت مانند خدمات مالی و دولتی نیز صادق است. این قابلیت، مزیت رقابتی باورنکردنی را برای سازمان هایی که مایل به سرمایه گذاری برای پیگیری آن هستند، فراهم می کند.- اقداماتی که در قلب تحویل مستمر وجود دارد به ما کمک می کند تا به چندین مزیت مهم دست یابیم:۱) انتشار کم خطر هدف اولیه از تحویل مداوم، این است که استقرار نرم‌افزار را بدون دردسر و رویدادهای کم خطری که می‌توان در هر زمان و بنا به درخواست انجام داد، انجام داد. با استفاده از الگوهایی مانند استقرارهای سبز-آبی، دستیابی به استقرارهای زمان توقف صفر که برای کاربران غیرقابل شناسایی هستند، نسبتاً ساده است.۲) زمان سریعتر، برای بازاریابی غیرمعمول نیست که مرحله ادغام و آزمایش/تثبیت چرخه عمر تحویل نرم افزار مرحله ای سنتی هفته ها یا حتی ماه ها طول بکشد. هنگامی که تیم ها برای خودکارسازی ساخت و استقرار، تهیه محیط و فرآیندهای تست رگرسیون با هم کار می کنند، توسعه دهندگان می توانند تست یکپارچه سازی و رگرسیون را در کار روزانه خود بگنجانند و این مراحل را به طور کامل حذف کنند. ما همچنین از حجم زیاد دوباره کاری که رویکرد مرحله‌ای را آزار می‌دهد اجتناب می‌کنیم.۳) کیفیت بالاتر، وقتی توسعه‌دهندگان ابزارهای خودکاری دارند که در عرض چند دقیقه رگرسیون‌ها را کشف می‌کنند، تیم‌ها آزاد می‌شوند تا تلاش خود را بر روی تحقیقات کاربر و فعالیت‌های تست سطح بالاتر مانند آزمایش اکتشافی، تست قابلیت استفاده، و تست عملکرد و امنیت متمرکز کنند. با ایجاد یک خط لوله استقرار، این فعالیت ها می توانند به طور مداوم در طول فرآیند تحویل انجام شوند و اطمینان حاصل شود که از ابتدا کیفیت در محصولات و خدمات تعبیه شده است.۴) هزینه های پایین تر، هر محصول یا خدمات نرم افزاری موفقی در طول عمر خود به طور قابل توجهی تکامل می یابد. با سرمایه‌گذاری در ساخت، آزمایش، استقرار و اتوماسیون محیط، با حذف بسیاری از هزینه‌های ثابت مرتبط با فرآیند انتشار، هزینه ایجاد و ارائه تغییرات تدریجی در نرم‌افزار را به‌طور قابل‌توجهی کاهش می‌دهیم.۵) محصولات بهتر تحویل مداوم کار را در دسته های کوچک اقتصادی می کند. این بدان معنی است که ما می توانیم در طول چرخه عمر تحویل بر اساس نرم افزار کار از کاربران بازخورد دریافت کنیم. تکنیک‌هایی مانند تست A/B ما را قادر می‌سازد تا رویکردی مبتنی بر فرضیه را برای توسعه محصول در پیش بگیریم که به موجب آن می‌توانیم ایده‌ها را با کاربران قبل از ایجاد ویژگی‌های کامل آزمایش کنیم. این بدان معناست که می‌توانیم از 2/3 ویژگی‌هایی که می‌سازیم که ارزش صفر یا منفی را به کسب‌وکارمان ارائه می‌کنند، اجتناب کنیم.۶) تیم های شادتر تحقیقات بررسی شده نشان داده است که تحویل مداوم باعث کاهش درد و کاهش فرسودگی تیم می شود. علاوه بر این، زمانی که ما بیشتر منتشر می‌کنیم، تیم‌های تحویل نرم‌افزار می‌توانند فعال‌تر با کاربران درگیر شوند، بیاموزند که کدام ایده‌ها کار می‌کنند و کدام نه، و از نزدیک نتایج کاری را که انجام داده‌اند ببینند. با حذف فعالیت‌های دردناک کم‌ارزش مرتبط با تحویل نرم‌افزار، می‌توانیم روی چیزی که بیش از همه به آن اهمیت می‌دهیم تمرکز کنیم - به طور مداوم کاربران خود را خوشحال کنیم.۷) اگر این خیلی خوب به نظر می رسد که درست نباشد، به خاطر داشته باشید: تحویل مداوم جادو نیست. این در مورد بهبود مستمر و روزانه است - نظم و انضباط ثابت برای دنبال کردن عملکرد بالاتر با پیروی از اکتشافی &quot;اگر دردناک است، آن را بیشتر انجام دهید و درد را به جلو ببرید.&quot;ارتباط با DevOps:تحویل مداوم و DevOps از نظر معانی مشابه هستند و اغلب با هم ترکیب می شوند، اما آنها دو مفهوم متفاوت هستند. DevOps دامنه وسیع تری دارد،  و حول محور تغییرات فرهنگی، به ویژه همکاری تیم های مختلف درگیر در تحویل نرم افزار (توسعه دهندگان، عملیات، تضمین کیفیت، مدیریت، و غیره)، و همچنین خودکارسازی فرآیندها در تحویل نرم افزار متمرکز است. از سوی دیگر، تحویل مستمر رویکردی برای خودکارسازی جنبه تحویل است و بر گردآوری فرآیندهای مختلف و اجرای سریعتر و مکرر آنها تمرکز دارد. بنابراین، DevOps می تواند محصول تحویل مداوم باشد و CD مستقیماً به DevOps جریان می یابد.ارتباط با استقرار مداوم:تحویل مستمر توانایی ارائه نرم افزاری است که می تواند در هر زمان از طریق انتشار دستی مستقر شود. این برخلاف استقرار مداوم است که از استقرار خودکار استفاده می کند. به گفته مارتین فاولر، استقرار مداوم مستلزم تحویل مداوم است. دستی در مقابل خودکار تحویل مستمر. مفهوم رایج خط لوله استقرار را به عنوان یک Poka-Yoke ناب تلقی می‌کند: مجموعه‌ای از تأییدیه‌ها که از طریق آن یک نرم‌افزار باید در مسیر انتشار قرار گیرد. کد در صورت لزوم کامپایل می شود و سپس هر بار که تغییری به یک مخزن کنترل منبع متعهد می شود توسط یک سرور ساخت بسته بندی می شود، سپس توسط تعدادی تکنیک مختلف (احتمالاً از جمله آزمایش دستی) آزمایش می شود تا بتوان آن را به عنوان قابل انتشار علامت گذاری کرد.توسعه دهندگانی که به چرخه زمانی طولانی عادت دارند ممکن است نیاز داشته باشند که طرز فکر خود را هنگام کار در یک محیط CD تغییر دهند. درک این نکته مهم است که هر تعهد کد ممکن است در هر نقطه ای برای مشتریان منتشر شود. الگوهایی مانند جابجایی ویژگی‌ها می‌تواند برای ارسال زودهنگام کد که هنوز برای استفاده توسط کاربران نهایی آماده نیست بسیار مفید باشد. استفاده از NoSQL می تواند مرحله مهاجرت داده ها و تغییرات طرحواره را حذف کند، اغلب مراحل دستی یا استثنائات یک گردش کار تحویل مداوم. سایر تکنیک‌های مفید برای توسعه کد به صورت مجزا مانند شاخه‌بندی کد در دنیای CD منسوخ نشده‌اند، اما باید با اصول CD سازگار شوند - برای مثال، اجرای چندین شاخه کد با عمر طولانی می‌تواند غیرعملی باشد، زیرا یک مصنوع قابل انتشار باید اگر قرار است از تمام مراحل خط لوله عبور کند، در اوایل فرآیند CD از یک شاخه کد واحد ساخته شود.خط لوله استقرارتحویل مداوم از طریق خط لوله استقرار فعال می شود. هدف خط لوله استقرار دارای سه جزء است: دید، بازخورد و استقرار مداوم.قابلیت مشاهده - تمام جنبه های سیستم تحویل از جمله ساخت، استقرار، آزمایش و انتشار برای همه اعضای تیم برای ارتقای همکاری قابل مشاهده است.بازخورد - اعضای تیم در صورت بروز مشکلات در اسرع وقت از آنها مطلع می شوند تا بتوانند در اسرع وقت آنها را برطرف کنند.استقرار مداوم - از طریق یک فرآیند کاملاً خودکار، می توانید هر نسخه از نرم افزار را در هر محیطی استقرار و منتشر کنید.ابزار/انواع ابزار:تحویل مداوم، اتوماسیون را از کنترل منبع تا پایان تولید می‌گیرد. ابزارهای مختلفی وجود دارد که به انجام تمام یا بخشی از این فرآیند کمک می کند. این ابزارها بخشی از خط لوله استقرار هستند که شامل تحویل مداوم است. انواع ابزارهایی که بخش های مختلف فرآیند را اجرا می کنند عبارتند از: یکپارچه سازی مداوم، اتوماسیون انتشار برنامه، اتوماسیون ساخت، مدیریت چرخه عمر برنامه.معماری برای تحویل مداوم:برای تمرین موثر تحویل مداوم، برنامه‌های نرم‌افزاری باید مجموعه‌ای از الزامات مهم معماری (ASR) مانند قابلیت استقرار، تغییرپذیری و آزمایش‌پذیری را برآورده کنند.میکروسرویس ها اغلب هنگام معماری برای تحویل مداوم استفاده می شوند. استفاده از میکروسرویس ها می تواند قابلیت استقرار و تغییرپذیری یک سیستم نرم افزاری را افزایش دهد. پیشرفت‌های قابل استقرار مشاهده‌شده عبارتند از: استقلال استقرار، زمان استقرار کوتاه‌تر، روش‌های استقرار ساده‌تر، و استقرار زمان توقف صفر. پیشرفت‌های قابل تغییر مشاهده‌شده عبارتند از: زمان چرخه کوتاه‌تر برای تغییرات عملکردی افزایشی کوچک، تغییرات آسان‌تر در انتخاب فناوری، تغییرات ویژگی کیفیت افزایشی، و ارتقای زبان و کتابخانه آسان‌تر.اجرا و استفاده:کتاب سی دی نوشته شده توسط Jez Humble و David Farley (2010) این اصطلاح را رایج کرد، اما از زمان ایجاد آن، این تعریف به پیشرفت خود ادامه داده است و اکنون معنای توسعه یافته تری دارد. امروزه شرکت ها این اصول و بهترین شیوه های تحویل مستمر را اجرا می کنند. تفاوت در دامنه ها، به عنوان مثال. پزشکی در مقابل وب، هنوز قابل توجه هستند و بر اجرا و استفاده تأثیر می گذارند. شرکت های معروفی که این رویکرد را دارند عبارتند از یاهو، آمازون، فیس بوک، گوگل، پدی پاور و ولز فارگو.مزایا و موانع:چندین مزیت تحویل مداوم گزارش شده است.زمان تسریع به بازار: CD به سازمان اجازه می دهد ارزش تجاری ذاتی در نسخه های نرم افزار جدید را سریعتر به مشتریان ارائه دهد. این قابلیت به شرکت کمک می کند تا یک قدم جلوتر از رقبا باقی بماند.ساخت محصول مناسب: انتشارات مکرر به تیم های توسعه برنامه اجازه می دهد بازخورد کاربر را سریعتر دریافت کنند. این به آنها امکان می دهد فقط روی ویژگی های مفید کار کنند. اگر متوجه شوند که یک ویژگی مفید نیست، تلاش بیشتری برای آن نمی کنند. این به آنها کمک می کند محصول مناسبی بسازند.بهره وری و کارایی بهبود یافته: صرفه جویی قابل توجهی در زمان برای توسعه دهندگان، آزمایش کنندگان، مهندسان عملیات و غیره از طریق اتوماسیون.انتشار قابل اعتماد: خطرات مرتبط با انتشار به طور قابل توجهی کاهش یافته است و روند انتشار قابل اعتمادتر شده است. با CD، فرآیند استقرار و اسکریپت ها قبل از استقرار تا تولید به طور مکرر آزمایش می شوند. بنابراین، بیشتر خطاها در فرآیند استقرار و اسکریپت ها قبلاً کشف شده اند. با انتشار بیشتر، تعداد تغییرات کد در هر نسخه کاهش می یابد. این امر یافتن و رفع هر گونه مشکلی را که رخ می دهد آسان تر می کند و زمان تأثیر آنها را کاهش می دهد.بهبود کیفیت محصول: تعداد اشکالات باز و حوادث تولید به طور قابل توجهی کاهش یافته است.بهبود رضایت مشتری: سطح بالاتری از رضایت مشتری به دست می آید.موانع نیز بررسی شده است.ترجیحات مشتری: برخی از مشتریان به روز رسانی مداوم سیستم های خود را نمی خواهند. این امر به ویژه در مراحل بحرانی عملیات آنها صادق است.محدودیت‌های دامنه: در برخی حوزه‌ها، مانند مخابرات و پزشکی، مقررات نیاز به آزمایش گسترده قبل از ورود نسخه‌های جدید به فاز عملیاتی دارند.عدم اتوماسیون تست: عدم اتوماسیون تست منجر به عدم اطمینان توسعه دهنده می شود و می تواند از استفاده مداوم از تحویل جلوگیری کند.تفاوت در محیط ها: محیط های مختلف مورد استفاده در توسعه، آزمایش و تولید می تواند منجر به لغزش مسائل ناشناخته به محیط تولید شود.آزمایش‌هایی که به اوراکل انسانی نیاز دارند: همه ویژگی‌های کیفیت را نمی‌توان با اتوماسیون تأیید کرد. این ویژگی‌ها به انسان‌ها در حلقه نیاز دارند و خط لوله تحویل را کاهش می‌دهند.بخش ۲: معرفی چند ابزار:- ابزار Argo CD: یک ابزار CI/CD برای توسعه Kubernetes است. این یک پروژه منبع باز است که در حال حاضر در وضعیت نهفتگی در بنیاد محاسبات بومی ابری (CNCF) قرار دارد. از مخازن Git برای ذخیره وضعیت برنامه‌های Kubernetes استفاده می‌کند، برنامه‌ها را نظارت می‌کند و می‌تواند خوشه‌ها را به حالت دلخواه مجدداً همگام‌سازی کند، همانطور که در پیکربندی git نشان داده شده است.این رویکرد نوآورانه همچنین به شما امکان می‌دهد چندین حالت دلخواه یک برنامه Kubernetes را با استفاده از شاخه‌ها، برچسب‌ها یا با پین کردن نسخه‌های مانیفست با استفاده از یک Git commit ذخیره کنید. این یک محیط انعطاف پذیر برای مدیریت پیکربندی های Kubernetes در طول فرآیند توسعه فراهم می کند.- ابزار CircleCI: یک ابزار منبع باز CI/CD است. این شامل ویژگی هایی برای هماهنگی کار، پیکربندی منابع، ذخیره سازی، اشکال زدایی، امنیت و گزارش های داشبورد است. CircleCI با ابزارهای مختلفی از جمله GitHub، Heroku، Slack و Docker ادغام می شود. CircleCI در سه سطح موجود است که یکی از آنها رایگان است. می‌توانید آن را در فضای ابری یا در محل با ماشین‌های لینوکس، مک یا ویندوز استفاده کنید.- ابزار GitHub Actions:  یک ویژگی ابزار منبع باز است که اخیراً منتشر شده است که می توانید از آن برای خودکارسازی گردش کار استفاده کنید. این به شما امکان می‌دهد تا کد را مستقیماً از GitHub بسازید، آزمایش کنید و اجرا کنید. شما می توانید اتوماسیون خود را بر اساس هر رویداد GitHub، از جمله ایجاد فشار یا مشکل، قرار دهید. GitHub Actions شامل ویژگی‌هایی برای جریان‌های کاری ماتریس، اجراهای میزبانی شده برای همه سیستم‌عامل‌های اصلی، ذخیره‌سازی اسرار داخلی و بررسی گزارش‌های زنده است. از تمامی زبان های برنامه نویسی رایج پشتیبانی می کند.اکشن‌های GitHub شامل محیط‌های زمان اجرا میزبانی شده است که برای 2000 دقیقه اول استفاده در ماه رایگان هستند. اگر به زمان بیشتری برای آزمایش نیاز دارید، می توانید زمان را به صورت دقیقه ای یا عمده خریداری کنید. می‌توانید با قرار دادن اکشن‌های GitHub در فایل‌های YAML خود، از آن‌ها استفاده کنید.- ابزار GoCD: یک ابزار ساخت متن باز است که به شما امکان می دهد خطوط لوله توسعه CI/CD بسازید. در هسته خود، یک سرور یکپارچه سازی پیوسته (CI) است که به شما امکان می دهد با جریان های کاری انتشار پیچیده کار کنید. این فراتر از CI کلاسیک است که به شما امکان می‌دهد یک خط لوله تحویل کامل (CD) از استقرار خودکار و ایمن تا تولید بسازید. GoCD خطوط لوله را با استفاده از کد بررسی شده در کنترل منبع تعریف می کند - این رویکرد زیرساخت به عنوان کد (IaC) به شما امکان می دهد خطوط لوله را در چندین پروژه آزمایش، مدیریت و استفاده مجدد کنید. خطوط لوله را می توان با قالب های JSON یا YAML نشان داد.یکی دیگر از ویژگی های GoCD توانایی اجرای خطوط لوله به صورت متوالی و موازی با وابستگی های قابل تنظیم است. می‌توانید کل گردش‌های کاری را از توسعه تا تولید مشاهده کنید و با استفاده از نگاشت جریان ارزش، یک ویژگی را از تعهد اولیه تا استقرار تولید ردیابی کنید. همچنین، GoCD بسیار منعطف است و اکوسیستمی از پلاگین ها را ارائه می دهد و این ابزار همچنین به شما امکان می دهد خودتان را توسعه دهید و مشارکت دهید.بخش ۳: معرفی چند شرکت ارائه دهنده ی این سرویس در ایران:شرکت کوالاتک با بهره‌گیری از متخصصان ارشد حوزه QA و انجام ده‌ها پروژه مختلف آماده کمک به سازمان‌های مختلف برای راه اندازی فرایند CI/CD است.خدماتی که ارائه می دهد، علاوه بر راه اندازی و مشاوره،  کمک به جلوگیری از ضرر مالی و زمان https://virgool.io/d/q5vexsipkbqt/%DA%A9%D9%85%DA%A9%D8%A8%D9%87%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C%D8%A7%D8%B2%D8%A8%D8%B1%D9%88%D8%B2%D8%AE%D8%B7%D8%A7%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C%D9%86%D8%B3%D8%AE%D9%87%D8%AC%D8%AF%DB%8C%D8%AF%D8%8C%DA%A9%D9%85%DA%A9%D8%A8%D9%87%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4%DA%A9%D8%A7%D8%B1%D8%A7%DB%8C%DB%8C%D9%86%D8%B1%D9%85%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7  https://virgool.io/d/q5vexsipkbqt/%DA%A9%D9%85%DA%A9%D8%A8%D9%87%D8%AD%D8%B0%D9%81%DA%A9%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C%D8%AF%D8%B3%D8%AA%DB%8C%D8%AA%D9%88%D8%B3%D8%B7%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%D8%8C%DA%A9%D9%85%DA%A9%D8%A8%D9%87%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C%D8%A8%D8%A7%DA%AF%E2%80%8C%D9%87%D8%A7%D8%AF%D8%B1%D8%B2%D9%85%D8%A7%D9%86%DA%A9%D9%88%D8%AA%D8%A7%D9%87  https://virgool.io/d/q5vexsipkbqt/%F0%9F%93%B7 شرکت مشاوره مدیریت رایزن سامانه گستر، ارائه کننده خدمات آموزش، مشاوره و نرم­ افزار در حوزه چارچوبها و استانداردهای مدیریت فناوری اطلاعات (ITIL, Cobit, PRINCE2, SCRUM, DevOps, Service Desk, …) پس از گذشت 10 سال فعالیت و کسب تجربیات ارزشمند در دو حوزه آموزش و مشاوره، دوره ها و کارگاههای آموزشی خود را بشکل عمومی و درون سازمانی برای شرکت ها و سازمانها برگزار خواهد نمود. لازم به ذکر است که مرکز آموزش رایزن سامانه گستر به عنوان نماینده رسمی معتبرترین موسسات آموزشی بین‌المللی، با سابقه برگزاری بیش از 750 کارگاه/دوره آموزشی در حوزه­های مورد اشاره، به عنوان یکی از پیشگامان و فعالترین مراکز آموزش تخصصی در رابطه با چارچوبها و استانداردهای مدیریت فناوری اطلاعات محسوب می­ گردد.منابع:[1] Chen, Lianping (2015). &quot;Continuous Delivery: Huge Benefits, but Challenges Too&quot;. IEEE Software. 32 (2): 50–54. doi:10.1109/MS.2015.27. S2CID 1241241.[2] Shahin, Mojtaba; Ali Babara, Muhammad; Zhu, Liming (2017). &quot;Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices&quot;. IEEE Access. 5: 3909–3943. arXiv:1703.07019. Bibcode:2017arXiv170307019S. doi:10.1109/ACCESS.2017.2685629. S2CID 11638909.[3] Hammond, Jeffrey (9 September 2011). &amp;amp;amp;quot;The Relationship between DevOps and Continuous Delivery&amp;amp;amp;quot;. Forrester Research. Forester.[4] Humble, Jez; Farley, David (2011). Continuous Delivery: reliable software releases through build, test, and deployment automation. Pearson Education Inc. ISBN 978-0-321-60191-9.[5] Swartout, Paul (2012). Continuous Delivery and DevOps: A Quickstart guide. Packt Publishing. ISBN 978-1849693684.[6] Chen, Lianping (2017). &amp;amp;amp;quot;Continuous Delivery: Overcoming adoption challenges&amp;amp;amp;quot;. Journal of Systems and Software. 128: 72–86. doi:10.1016/j.jss.2017.02.013.[7] &amp;amp;amp;quot;bliki: ContinuousDelivery&amp;amp;amp;quot;. martinfowler.com. Retrieved 2015-10-29.[8] https://continuousdelivery.com/[9] https://devops.com/7-popular-open-source-ci-cd-tools/«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Tue, 14 Dec 2021 00:06:55 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی API Gateway:</title>
                <link>https://virgool.io/@m_49289735/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-api-gateway-wjifsnyjhg7c</link>
                <description>مفهوم API Gateway:  nnnjjdd
۱. رابط های برنامه نویسی کاربردی (API):یک interface یا رابط مشترک است که، به برنامه‌ها اجازه می‌دهد با یکدیگر صحبت کنند، بنابراین هر بار که از برنامه‌هایی مانند اینستاگرام استفاده می‌کنید، و از طریق آن پیام ارسال می‌کنید یا قیمت سفر را برای تعطیلات بعدی خود بررسی می‌کنید، در واقع شما دارید از API استفاده می‌کنید.امروزه interface های مدرن روی  API ها به عنوان فراهم کننده سرویس به مشتریان حساب باز می کنند. ارتباط بین شرکا و تامین کنندگان، و اتصال  برنامه های داخلی را فراهم می کنند. API های می‌توانند برنامه‌های کاربردی را ایجاد یا بشکنند. آنها به زیرساخت‌های اضافی برای ایمن‌سازی، مقیاس‌بندی و سرعت بخشیدن احتیاج دارند، در حال حاضر این مسئله بیش از هر زمان دیگری که سازمان‌ها در حال مدرن شدن هستند، دیده می‌شود. API ها، برنامه های کاربردی یکپارچه بزرگ را به میکروسرویس های مجزا کوچکتر تبدیل می کنند. (شکل ۱)شکل ۱: برنامه کاربردی یکپارچهاین میکروسرویس‌ها برای اینکه برنامه‌ها را مقیاس‌پذیرتر، در دسترس‌تر، و منابع آن را کارآمدتر کنند، به‌هم متصل هستند. با این حال، نتیجه استفاده از معماری مبتنی بر میکروسرویس با تعداد زیادی فراخوانی API بین مشتریان و میکروسرویس‌های زیاد است.بنابراین، چگونه امنیت ترافیک API را برای یک سیستم توزیع شده می توان مدیریت کرد؟با  نگاهی عمیق‌تر می توان فهمید که چگونه یک API Gateway می‌تواند تجربه کاربر و توسعه‌دهنده یک فروشگاه آنلاین (مثال) را بهبود بخشد. با یک مثال از یک  فروشگاه تجارت الکترونیک ساختگی API Gateway را بیشتر توضیح می دهیم: همان طور که در شکل ۲، می توان دید، این فروشگاه تعدادی میکروسرویس دارد مثل Product Info که سرویس ارائه اطلاعات کالا را برای مشتری فراهم می کند و یا سرویس Pricing که سرویس خرید کالا را فراهم می کند و …،  همه از طریق یک Web برای مشتریان سرویس خود را ارائه می دهند. که API Gateway قرار است بین Web و میکرو سرویس ها قرار بگیرند و مزایایی را را برای مشتریان و توسعه دهندگان فراهم می کند.(شکل ۲)مزایای یک دروازه APIدروازه‌های API در پیاده‌سازی تست A/B، ذخیره‌سازی، مدیریت سهمیه‌های دسترسی، نظارت بر سلامت API، نسخه‌سازی API، تست Chaos monkey، کسب درآمد و بسیاری موارد دیگر به ما سود می‌رسانند. - امنیت ?️ ، هر بار که یک تماس API انجام می شود، باید با استفاده از آدرس های IP عمومی به خدمات دسترسی پیدا کند. این خطرات را آشکار می کند. با روشن کردن API Gateways، این میکروسرویس ها فقط با استفاده از آدرس های IP خصوصی قابل دسترسی هستند. این منجر به روش امن تر تراکنش داده ها می شود. علاوه بر این، استفاده از API Gateway از داده ها در برابر حملات مخرب و DDoS محافظت می کند. برای اطمینان از امنیت، گواهی TLS ضروری است، API Gateway با نگه داشتن تمام API های ما در پشت یک IP ثابت یا دامنه و کمک به محافظت از آنها با کلیدها، توکن ها و فیلتر IP، همه آنها را مدیریت می کند.- احراز هویت، مجوز، و تحمل خطا ?، مهم است که از احراز هویت و مجوز کاربری که وارد برنامه ها می شود اطمینان حاصل شود. API Gateway با یک نقطه ورودی بودن کار را آسان‌تر می‌کند و همه الزامات را به راحتی برآورده می‌کند. بنابراین، فقط به کاربران مجاز اجازه ورود به سیستم و کاربران تأیید شده را می دهد تا تغییرات را ایجاد کنند، بنابراین تحمل خطا به دست می آید.- تعادل بار و مسیریابی ?، در مورد درخواست های متعدد و افزایش ترافیک، API Gateway به رسیدگی به آن کمک می کند. این کار با ایجاد چندین سرویس و فراخوانی آنها مانند Round-Robin انجام می شود. این می تواند درخواست های مشتری را بر اساس تقسیم بندی کاربر مدیریت و مسیریابی کند. بنابراین کیفیت یا سرعت متفاوتی از محتوا برای کاربران مختلف ارائه می شود.یک مورد استفاده را در نظر بگیرید که در آن دو میکروسرویس به ترتیب برای بازگرداندن تصاویر/فیلم‌های با کیفیت پایین و تصاویر/ویدئوهای با کیفیت بالا برای دسکتاپ و موبایل تعریف شده‌اند. در این حالت، می‌توانیم یک دروازه API را به گونه‌ای پیکربندی کنیم که یک روتر عمل کند و اگر درخواست از تلفن همراه باشد، آن درخواست را به سرویس تصاویر/ویدئوهای با کیفیت پایین هدایت کند، و اگر درخواست از طرف دسکتاپ، می تواند به سمت سرویس تصاویر/فیلم های با کیفیت بالا هدایت شود. این مسیریابی را می توان بر اساس هدرها، مسیرها و پارامترها و غیره انجام داد.- عایق، اگر یک یا چند میکروسرویس به برنامه اضافه یا حذف شده باشد، کد مشتری را به روز نمی کنیم. در این صورت باید تغییراتی را در خود دروازه API انجام دهیم تا مطابق میکروسرویس های به روز شده تماس برقرار کنیم.- معکوس پروکسی و ذخیره سازی، ارائه یک فایل استاتیک (HTML، JS، CSS، فونت ها) توسط یک میکروسرویس بهترین استفاده نیست، در این صورت می توانیم این فایل ها را به دروازه API منتقل کنیم.یک دروازه API می تواند تمام محتویات ثابت را نگه دارد و می تواند مستقیماً به مشتری سرویس دهد. به طور مشابه، سرویسی را در نظر بگیرید که محصولات پرطرفدار را ارزیابی می کند و این روندها به صورت ساعتی یا روزانه محاسبه می شوند. بنابراین هنگامی که روند برای بقیه زمان محاسبه شد، سرویس به طور مکرر همان پاسخ را برمی‌گرداند. در این مورد، یک دروازه API دارای یک ویژگی به نام پاسخ کش است، که در آن می‌توان به URL و زمان آستانه اشاره کرد که برای آن نیاز به ذخیره پاسخ‌ها دارد.- آداپتور پروتکل،اگر بخواهیم از مزایای پروتکلی مانند سوکت وب یا نسخه جدیدتر HTTP، یعنی HTTP/2 استفاده کنیم، و حتی اگر سرویس‌های پشتیبان ما آماده نیستند یا با HTTP/2 یا سوکت وب سازگار نیستند، یک دروازه API می‌تواند مسئولیت تبدیل پروتکل جدیدتر به قدیمی تر می تواند به عنوان یک آداپتور پروتکل عمل کند.- کارایی مشتریان یا Client performance،به مشتریان کمک می کند که به جای ارسال درخواست های متفاوت از سمت کاربر به میکروسرویس ها یک درخواست برای API Gateway ارسال می کنند. و به این صورت مشتری راحت می تواند از هر سرویس استفاده کند.-  ترجمه پروتکل یا Protocol Translation، پروتکل بینuser و API Gateway، می تواند با پروتکل سمت میکرو سرویس ها و API Gateway، متفاوت باشد، API Gateway می تواند آنها را ترجمه کندوشکل ۲: نمایش اتصالات سرویس ها به وب بدون API Gatewayنقش دروازه API در مدیریت APIدروازه API بخشی از سیستم مدیریت API است. دروازه API تمام درخواست های دریافتی را رهگیری می کند و آنها را از طریق سیستم مدیریت API ارسال می کند که انواع توابع ضروری را مدیریت می کند.دقیقاً کاری که دروازه API انجام می دهد از یک پیاده سازی به اجرای دیگر متفاوت است. برخی از عملکردهای رایج عبارتند از احراز هویت، مسیریابی، محدود کردن نرخ، صورتحساب، نظارت، تجزیه و تحلیل، خط‌مشی‌ها، هشدارها و امنیت.چرا از دروازه API استفاده کنیم؟اکثر API های سازمانی از طریق دروازه های API مستقر می شوند. برای دروازه‌های API معمول است که وظایف مشترکی را که در یک سیستم از سرویس‌های API استفاده می‌شوند، مانند احراز هویت کاربر، محدود کردن نرخ و آمار انجام دهند. در ابتدایی ترین حالت، یک سرویس API یک درخواست راه دور را می پذیرد و یک پاسخ را برمی گرداند. اما زندگی واقعی هرگز به این سادگی نیست. نگرانی های مختلف خود را هنگام میزبانی API در مقیاس بزرگ در نظر بگیرید.اگر می خواهید از API های خود در برابر استفاده بیش از حد و سوء استفاده محافظت کنید، پیشنهاد می شود که از یک سرویس احراز هویت و محدودیت نرخ استفاده کنید.اگر بخواهید بدانید که مردم چگونه از API های شما استفاده می کنند، پیشنهاد می شود که ابزارهای تجزیه و تحلیل و نظارت را به آن اضافه کنید. مطالعه موردیمطالعه موردی یک صفحه پیچیده (مثلاً صفحه محصول) یک برنامه تجارت الکترونیک را در نظر بگیرید. اگر به صفحه زیر لیست محصولات آمازون نگاه کنیم، می توانیم اطلاعات زیادی را که برای ارائه توسط این صفحه خاص مورد نیاز است، مشاهده کنیم.برای اهداف تصویری، بیایید تمام ریزسرویس هایی را که ممکن است برای ارائه صفحه خاص بالا نیاز داشته باشیم، فهرست کنیم.محصول جستجو، موجودی، حمل و نقل، رتبه بندی و بررسی ها، موتور توصیه، بازرگانان، و امور مالی و بیمه را در نظر بگیرید هفت  ریزسرویس متفاوتی هستند که برای ارائه صفحه فوق استفاده می شوند. بالای هفت  میکروسرویس فقط یک فرض برای توضیح مفهوم دروازه API است. در واقعیت، آمازون می تواند تعداد متفاوتی از ریزسرویس ها را داشته باشد.مشکلاز آنجایی که اگر مشتری بخواهد به این خدمات دسترسی داشته باشد، این میکروسرویس ها به طور جداگانه در سرور دیگری مستقر شده اند، حداقل هفت  تماس باید برای یک صفحه درخواست شود.سوال: اما آیا واقعا رویکرد خوبی است؟پاسخ: فکر نمی‌کنم این یک رویکرد توصیه‌شده باشد، زیرا ما باید هفت تماس مختلف داشته باشیم، که قطعاً بر عملکرد، مصرف منابع، زمان بارگذاری و غیره تأثیر می‌گذارد. کلاینت نیز به شدت با همه خدمات مرتبط است، و فرض کنید اگر مجبور باشیم میکروسرویس های Reviews و Rating را در دو سرویس مختلف جدا کنید، باید کد مشتری را به روز کنیم. مشتری باید یک تماس برای دریافت نظرات و یک تماس برای دریافت رتبه بندی داشته باشد، که واقعاً بهترین راه برای مقابله با آن نیست.راه حل: بنابراین، رویکرد توصیه شده چیست؟این یک دروازه API است.در این رویکرد، ما یک لایه بین مشتری و میکروسرویس ها داریم به نام دروازه API. این یک سرویس جلویی برای همه میکروسرویس ها است. اکنون هر کلاینتی که بخواهد به میکروسرویس ها دسترسی پیدا کند، مشتری باید با دروازه API تماس بگیرد. اکنون دروازه API به نوبه خود با همه میکروسرویس ها تماس می گیرد و هر پاسخی را که ممکن است نیاز داشته باشیم دریافت می کند. این فرآیند ترکیب API نامیده می شود.(به طور خلاصه، یک دروازه API بین مشتری و میکروسرویس ها قرار دارد و به عنوان یک دروازه برای همه میکروسرویس ها عمل می کند.)۲. معرفی چند ابزار متن باز برای فناوری API Gateway :۲-۱) ابزار Kong Gateway، محبوب ترین دروازه API مبتنی بر ابر منبع باز است که بر روی یک پروکسی سبک وزن ساخته شده است. این ابزار به زبان Lua نوشته شده است که با کمک Nginx اجرا می شود. Kong Gateway یک موتور قالب دارد که به سرعت بخشیدن به زمان رویداد کمک می کند. و تضمین می‌کند که عملکرد تأخیر و مقیاس‌پذیری بی‌نظیری را برای همه برنامه‌های میکروسرویس ما بدون توجه به جایی که اجرا می‌کنند، ارائه دهد.شرکت هایی مانند Nasdaq، Honeywell، Cisco، FAB، Expedia، Samsung، Siemens و Yahoo Japan به طور گسترده از دروازه API Kong استفاده می کنند.برخی از ویژگی های ارائه شده توسط Kong عبارتند از:احراز هویتکنترل ترافیکتجزیه و تحلیلتحولاتورود به سیستمبدون سرورقابل توسعه با استفاده از معماری پلاگینکنگ اسناد و ادغام بسیار خوبی داشت.می‌توانید Kong را بر روی پلتفرم ابری دلخواه خود اجرا کنید.۲-۲) ابزار Apache APISIX، آپاچی APISIX ابتدا در فناوری ZhiLiu چین متولد شد و در مرحله بعد وارد انکوباتور آپاچی شد و منبع باز شد. مینگ ون، معاون پروژه، بیان می‌کند که این دروازه API چالش‌های مختلفی را که توسط سرویس‌های بومی ابری و میکروسرویس‌ها ایجاد می‌شود، حل می‌کند.ابزار Apache ApiSix، توسط شرکت هایی مانند 360، HelloTalk، NetEase، TravelSky و بسیاری دیگر استفاده می شود.۲-۳) ۳. معرفی دو شرکت که در ایران در این زمینه خدمات می دهند:۳-۱) شرکت ارتباطات سیار ایران: اس ام اس به Gateway API، ساده ترین راه برای ارسال پیامک به ایران (جمهوری اسلامی) است. راه اندازی API آسان است، هزینه پایین آن، و به کاربراین امکان را می دهد که برای تمامی مشتریان خود در ایران (جمهوری اسلامی) و سراسر جهان پیامک ارسال کند. همچنین به شرکت هااجازه می‌دهد تا گزارش‌های تحویل دقیق را دریافت کند، لیست‌ها را ایجاد کند، از طریق HLR اعتبارسنجی کند و پیام‌ها یا کمپین‌های شخصی‌شده ارسال کی کند. این می‌تواند دروازه پیامک ها را به ابزاری مفید برای رایانه مشتریان تبدیل کند.۳-۲) شرکت پلتکو (شرکت دانش بنیان):  Gateway API ارائه می دهد و در این راستا خدماتی را در جهت مدیریت API انجام می دهد. مدیریت API  یک راه حل مدیریتی و انعطاف پذیر است که یکپارچه سازی زیر ساخت وب سرویس‌های سازمان را انجام می‌دهد و به مشتریان کمک می کند تا بدانید دقیقاً چه کسی، چه زمانی و چگونه به وب سرویس‌های مشتریان دسترسی پیدا می‌کند. همچنین ابزارهای کاربردی و جذابی در اختیار مدیران و اپراتورها قرار می‌دهد که باعث بالا رفتن کارایی کل سرویس‌های سازمان می‌شود و از خطاها و اتلاف زمان به طرز چشمگیری جلوگیری می‌کند. علاوه بر این موارد میزان توسعه پذیری کل وب سرویس‌ها بالا می‌رود و به سازمان امکان استفاده از وب سرویس‌های قدیمی را بدون کد نویسی می‌دهد. از دیگر خدمات دیگری که  Gateway API ارائه می دهد عبارتند از:کنترل سطح دسترسیاحراز هویتکنترل نرخ دسترسیمدیریت سطح دسترسیمدیریت توزیع بارتقویت امنیت سیستممنابع:[1] https://www.youtube.com/watch?v=hWRRdICvMNs[2] https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do[3] https://geekflare.com/api-gateway/«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Mon, 13 Dec 2021 22:19:27 +0330</pubDate>
            </item>
                    <item>
                <title>تعریف DDD، MVVM و Event Sourcing :</title>
                <link>https://virgool.io/@m_49289735/%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-ddd-mvvm-%D9%88-event-sourcing-of2pcprhqfvs</link>
                <description> Domain-Driven Design یا DDD به معنی، طراحی دامنه محور:طراحی دامنه محور (Domain-Driven Design یا DDD):     یک رویکرد طراحی نرم‌افزاری است که بر نرم‌افزار مدل‌سازی تمرکز می‌کند تا دامنه را مطابق با ورودی کارشناسان آن دامنه مطابقت دهد.    برای تعریف طراحی مبتنی بر دامنه، ابتدا باید منظور خود از دامنه را در این زمینه (و به طور کلی توسعه) مشخص کنیم. تعریف رایج فرهنگ لغت از دامنه این است: &quot;حوزه ای از دانش یا فعالیت&quot;. کمی از این موضوع، دامنه در قلمرو مهندسی نرم افزار معمولاً به حوزه موضوعی اشاره دارد که برنامه در نظر گرفته شده در آن اعمال شود. به عبارت دیگر، در طول توسعه برنامه، دامنه «حوزه دانش و فعالیتی است که منطق برنامه حول آن می چرخد».    طراحی دامنه محور که در ابتدا توسط برنامه نویس اریک ایوانز در کتاب خود با عنوان طراحی دامنه محور: مقابله با پیچیدگی در قلب نرم افزار در سال 2004 معرفی و محبوب شد، توسعه و کاربرد مفهوم دامنه است، زیرا در توسعه نرم افزار کاربرد دارد. هدف آن تسهیل ایجاد برنامه­های کاربردی پیچیده با اتصال قطعات مرتبط نرم افزار به یک مدل همیشه در حال تکامل است.طراحی دامنه محور (DDD) بر سه اصل اصلی تمرکز دارد:- تمرکز کردن روی دامنه اصلی و منطق دامنه- قرار دادن طرح­های پیچیده بر اساس مدل­های دامنه- همکاری مداوم با کارشناسان دامنه، به منظور بهبود مدل برنامه و حل مشکلات مرتبط با دامنه    طراحی دامنه محور ایوانز چند اصطلاح رایج را تعریف می­کند که هنگام توصیف و بحث در مورد اقدامات DDD مفید هستند:زمینه یا context: تنظیماتی که در آن یک کلمه یا عبارت ظاهر می­شود که معنای آن را تعیین می­کند. اظهارات مربوط به یک مدل را فقط می­توان در یک زمینه درک کرد.مدل: سیستمی از انتزاعات که جنبه­های انتخابی یک دامنه را توصیف می­کند و می­تواند برای حل مسائل مربوط به آن حوزه استفاده شود.زبان فراگیر یا Ubiquitous Language: زبانی است که حول مدل دامنه ساختار یافته و توسط همه اعضای تیم برای اتصال تمامی فعالیت­های تیم با نرم افزار استفاده می­شود.زمینه محدود یا Bounded Context: توصیفی از یک مرز (معمولاً یک سیستم فرعی یا کار یک تیم خاص) که در آن یک مدل خاص تعریف شده و قابل اجرا است.طراحی دامنه محور نیز تعدادی از مفاهیم سطح بالا را تعریف می کند که می­توانند در ارتباط با یکدیگر برای ایجاد و اصلاح مدل­های دامنه استفاده شوند که عبارتند از:موجودیت: شیئی که با رشته پیوستگی خود مشخص می­شود، در مقابل اشیاء سنتی که با ویژگی هایشان تعریف می­شوند.شئ ارزشی یا Value Object: یک شیء تغییرناپذیر (غیر قابل تغییر) که دارای صفات است، اما هویت متمایز ندارد.دامنه رخداد یا Domain Event: شیئی که برای ثبت یک رویداد گسسته مربوط به فعالیت مدل در سیستم استفاده می شود. در حالی که همه رویدادهای داخل سیستم قابل ردیابی هستند، یک رویداد دامنه فقط برای انواع رویدادهایی ایجاد می­شود که کارشناسان دامنه به آن اهمیت می­دهند.تجمیع یا Aggregate: خوشه­ای از موجودیت­ها و اشیاء ارزش با مرزهای مشخص در اطراف گروه. به جای اینکه به هر موجودیت یا شی مقداری اجازه داده شود که همه اقدامات را به تنهایی انجام دهد، به مجموعه جمعی اقلام یک آیتم ریشه جمعی منفرد اختصاص داده می شود. اکنون، اشیاء خارجی دیگر دسترسی مستقیم به هر موجودیت منفرد یا شیء ارزشی در مجموع ندارند، بلکه فقط به آیتم ریشه مجموع منفرد دسترسی دارند و از آن برای ارسال دستورالعمل‌ها به گروه به عنوان یک کل استفاده می‌کنند. این عمل با بسیاری از شیوه های کدگذاری واقعی که در سری الگوهای طراحی خود پوشش می دهیم، مرتبط است.خدمات یا Service : اساساً یک سرویس یک عملیات یا شکلی از منطق تجاری است که به طور طبیعی در قلمرو اشیاء نمی­گنجد. به عبارت دیگر، اگر برخی از عملکردها باید وجود داشته باشد، اما نمی تواند به یک موجودیت یا شی ارزش مرتبط باشد، احتمالاً یک سرویس هستند.مخازن یا Repositories: نباید با مخازن رایج کنترل نسخه اشتباه گرفته شود، معنی DDD مخزن سرویسی است که از یک رابط جهانی برای دسترسی به تمام موجودیت ها و اشیاء ارزشی که در یک مجموعه انبوه خاص هستند استفاده می­کند. روش‌هایی باید تعریف شوند تا امکان ایجاد، اصلاح و حذف اشیاء در مجموعه را فراهم کنند. با این حال، با استفاده از این سرویس مخزن برای ایجاد پرس و جوهای داده، هدف حذف چنین قابلیت­های پرس و جوی داده از درون منطق تجاری مدل­های شی است.کارخانه‌ها یا Factories: همانطور که قبلاً از طریق تعدادی از مقالات الگوهای طراحی بحث کرده‌ایم، DDD استفاده از یک کارخانه را پیشنهاد می‌کند که منطق ایجاد اشیاء و مصالح پیچیده را در بر می‌گیرد و تضمین می‌کند که مشتری از عملکرد درونی دستکاری اشیا اطلاعی ندارد..طراحی دامنه محور نیز به شدت بر رویه محبوب تر یکپارچه سازی مداوم تأکید می­کند، که از کل تیم توسعه می خواهد که از یک مخزن کد مشترک استفاده کنند و روزانه (اگر نه چندین بار در روز) به آن تعهد بدهند. یک فرآیند خودکار در پایان روز کاری اجرا می‌شود که یکپارچگی کل پایه کد، اجرای تست‌های واحد خودکار، تست‌های رگرسیون و موارد مشابه را بررسی می‌کند تا به سرعت هرگونه مشکل احتمالی که ممکن است در آخرین commit‌ها معرفی شده باشد را شناسایی کند. مزایای طراحی دامنه محور:- ارتباطات را آسان می کند: با تأکید اولیه بر ایجاد یک زبان مشترک و همه جا حاضر مرتبط با مدل دامنه پروژه، تیم ها اغلب ارتباط در کل چرخه عمر توسعه را بسیار آسان­تر می­بینند. به طور معمول، DDD هنگام بحث در مورد جنبه­های برنامه به اصطلاحات فنی کمتری نیاز دارد، زیرا زبان فراگیر که در اوایل ایجاد شد، احتمالاً اصطلاحات ساده تری را برای اشاره به جنبه های فنی تر تعریف می­کند.- انعطاف‌پذیری را بهبود می‌بخشد: از آنجایی که DDD به شدت حول مفاهیم تحلیل و طراحی شی گرا است، تقریباً همه چیز در مدل دامنه مبتنی بر یک شی خواهد بود و بنابراین کاملاً ماژولار و محصور شده است. این اجازه می دهد تا اجزای مختلف، یا حتی کل سیستم به عنوان یک کل، به طور منظم و مداوم تغییر و بهبود یابد.- بر روی اینترفیس دامنه تاکید می کند: از آنجایی که DDD تمرین ایجاد مفاهیم دامنه و آنچه متخصصان دامنه در پروژه توصیه می کنند، DDD اغلب برنامه­هایی را تولید می­کند که دقیقاً برای دامنه مورد نظر مناسب و نماینده آن هستند، برخلاف آن برنامه­ها. که در درجه اول بر UI/UX تاکید دارند. در حالی که یک تعادل آشکار مورد نیاز است، تمرکز بر دامنه به این معنی است که یک رویکرد DDD می­تواند محصولی تولید کند که به خوبی با مخاطبان مرتبط با آن دامنه طنین انداز شود.معایب طراحی دامنه محور:- به تخصص قدرتمند دامنه نیاز دارد: حتی با وجود ماهرترین ذهن‌های فنی که روی توسعه کار می‌کنند، اگر حداقل یک متخصص دامنه در تیم وجود نداشته باشد که از جزئیات دقیق حوزه موضوعی که برنامه در نظر گرفته شده است مطلع نباشد، همه چیز بیهوده است. بکار گرفتن. در برخی موارد، طراحی دامنه محور ممکن است به ادغام یک یا چند عضو تیم خارجی نیاز داشته باشد که می­توانند به عنوان متخصص دامنه در طول چرخه عمر توسعه عمل کنند.- تمرین‌های تکراری را تشویق می‌کند: در حالی که بسیاری این را یک مزیت می‌دانند، نمی‌توان انکار کرد که تمرین‌های DDD قویاً بر تکرار ثابت و یکپارچگی مداوم برای ساختن یک پروژه انعطاف‌پذیر است که می‌تواند در صورت لزوم خود را تنظیم کند. برخی از سازمان‌ها ممکن است با این شیوه‌ها مشکل داشته باشند، به‌ویژه اگر تجربه گذشته آنها تا حد زیادی با مدل‌های توسعه کمتر انعطاف‌پذیر، مانند مدل آبشار یا موارد مشابه مرتبط باشد.- برای پروژه های بسیار فنی مناسب نیست: در حالی که DDD برای برنامه­هایی که پیچیدگی دامنه زیادی دارند (که منطق کسب و کار نسبتاً پیچیده و پیچیده است) عالی است، DDD برای برنامه هایی که پیچیدگی دامنه حاشیه ای دارند چندان مناسب نیست، اما برعکس پیچیدگی فنی زیادی دارند. از آنجایی که DDD به شدت بر نیاز (و اهمیت) متخصصان دامنه برای تولید زبان مناسب همه جا حاضر و سپس مدل دامنه ای که پروژه بر اساس آن استوار است تأکید می کند، پروژه ای که از نظر فنی فوق العاده پیچیده است ممکن است برای کارشناسان دامنه چالش برانگیز باشد و مشکلاتی را ایجاد کند. شاید زمانی که الزامات یا محدودیت های فنی به طور کامل توسط همه اعضای تیم درک نشده بود. الگوی Model-View-ViewModel (MVVM):یک الگوی طراحی نرم افزاری است که برای جداسازی منطق برنامه و کنترل های رابط کاربری ساخته شده است. MVVM همچنین به عنوان model-view-binder شناخته می شود و توسط معماران مایکروسافت کن کوپر و جان گاسمن ساخته شده است.مانند بسیاری از الگوهای طراحی دیگر، MVVM به سازماندهی کد و تبدیل برنامه ها به ماژول ها کمک می کند تا توسعه، به روز رسانی و استفاده مجدد از کد را ساده تر و سریع تر کند. این الگو اغلب در ویندوز و نرم افزارهای ارائه گرافیک وب استفاده می شود.الگوی MVVM در Windows Presentation Foundation (WPF) استفاده می شود که بر روی دات نت مایکروسافت اجرا می شود. Silverlight، پلاگین چند رسانه ای معادل اینترنت مایکروسافت WPF، همچنین از MVVMاستفاده می کند.شکل ۱: نمایی از MVVM، توجه: پیوند بین Model و View Model، دستکاری داده ها و بین ViewModel و View، اتصال دو طرفه داده است.شکل ۱: نمایی از MVVM، توجه: پیوند بین Model و View Model، دستکاری داده ها و بین ViewModel و View، اتصال دو طرفه داده است. توضیحات مدل:مدل: ( کد قابل استفاده مجدد – داده ها) اشیاء تجاری که داده ها و رفتار دامنه برنامه را محصور می کنند، به سادگی داده ها را نگه می دارند.نما: ( کد ویژه پلتفرم – رابط کاربری ) آنچه کاربر می بیند، داده های قالب بندی شده.ویو مدل یا VIEWMODEL: (کد قابل استفاده مجدد - LOGIC) پیوند بین Model و View یا داده ها را از Model بازیابی می کند و در معرض View قرار می دهد. این مدلی است که به طور خاص برای Viewطراحی شده است.امکانات:- وضعیت چرخه عمر برنامه حفظ خواهد شد.- برنامه در همان موقعیتی قرار می گیرد که کاربر آن را ترک کرده است.- اجزای UI از منطق تجاری دور نگه داشته می شوند.- منطق تجاری از عملیات پایگاه داده دور نگه داشته می شود.    آسان برای درک و خواندن. مدل، نشان دهنده داده ها و/یا اطلاعات واقعی است که ما با آن سروکار داریم. نمونه‌ای از یک مدل ممکن است یک مخاطب (شامل نام، شماره تلفن، آدرس و غیره) یا ویژگی‌های یک نقطه انتشار پخش مستقیم باشد.    نکته کلیدی که باید با مدل به خاطر سپرد این است که اطلاعات را در خود نگه می­دارد، اما رفتارها یا خدماتی را که اطلاعات را دستکاری می کنند، نگه نمی دارد. مسئولیتی در قبال قالب بندی متن برای زیبا به نظر رسیدن روی صفحه، یا واکشی فهرستی از آیتم ها از یک سرور راه دور نیست (در واقع، در آن لیست، هر آیتم به احتمال زیاد مدلی برای خودش خواهد بود). منطق تجاری معمولاً جدا از مدل نگهداری می شود و در کلاس های دیگری که بر روی مدل عمل می کنند، محصور می شود. این همیشه درست نیست: به عنوان مثال، برخی از مدل ها ممکن است دارای اعتبار سنجی باشند.اغلب تمیز نگه داشتن یک مدل یک چالش است. منظور من از این بازنمایی واقعی از «دنیای واقعی» است. به عنوان مثال، یک سابقه تماس ممکن است حاوی آخرین تاریخ اصلاح و هویت کاربر اصلاح کننده (اطلاعات حسابرسی) و یک شناسه منحصر به فرد (پایگاه داده یا اطلاعات پایدار) باشد. تاریخ اصلاح شده هیچ معنای واقعی برای یک تماس در دنیای واقعی ندارد، بلکه تابعی از نحوه استفاده، ردیابی و تداوم مدل در سیستم است.مزایا:قابلیت نگهداری: می تواند چابک باقی بماند و نسخه های متوالی را به سرعت منتشر کند.توسعه پذیری: قابلیت جایگزینی یا اضافه کردن کدهای جدید را داشته باشید.تست پذیری: نوشتن تست های واحد در برابر منطق اصلی آسان تر است.ارتباط شفاف: مدل view یک رابط شفاف برای کنترلر Viewارائه می دهد که از آن برای پر کردن لایه viewو تعامل با لایه مدل استفاده می کند که منجر به یک ارتباط شفاف بین لایه های برنامه شما می شود.معایب:- برای رابط­های کاربری ساده، MVVM می­تواند بیش از حد باشد.- در موارد بزرگتر، طراحی ViewModelممکن است سخت باشد.- هنگامی که پیوندهای پیچیده داده ای داریم، اشکال زدایی کمی دشوار خواهد بود.الگوی منبع یابی رویداد منبع یابی رویداد یا Event Sourcing:الگویی برای ذخیره داده‌ها به‌عنوان رویداد در یک گزارش فقط پیوست است. این تعریف ساده این واقعیت را نادیده می گیرد که با ذخیره وقایع، زمینه رویدادها را نیز حفظ می­کند.هر تغییر ایجاد شده به عنوان یک رویداد نشان داده می شود و به گزارش رویداد اضافه می­شود. وضعیت فعلی یک موجودیت را می­توان با پخش مجدد همه رویدادها به ترتیب وقوع ایجاد کرد. منبع اطلاعات سیستم از رویدادها است. همانطور که رویداد قبلاً اتفاق افتاده است.معماری منبع رویداد: یک الگوی طراحی معماری است که داده ها را در یک گزارش فقط ضمیمه ذخیره می کند. این بخشی از یک اکوسیستم گسترده‌تر از الگوهای طراحی است که به روش‌های مختلف با هم کار می‌کنند تا به توسعه‌دهندگان اجازه می‌دهند تا مؤثرترین معماری را برای نیازهای خود ایجاد کنند.با استقرار ذخیره رویداد به عنوان یک الگوی طراحی در یک معماری وسیع‌تر، امکان گنجاندن سایر الگوهای طراحی را در سیستم فراهم می‌کند که برای نیازهای دامنه مناسب‌تر هستند. به عنوان مثال، یک سیستم منبع رویداد به خوبی در یک معماری CQRS کار می کند، اما استفاده از آنها با هم ضروری نیست. Event Sourcingرا می توان در کنار معماری رویداد محور، یا در ارتباط با CQRS، یک الگوی انبوه، یک الگوی کنترل کننده فرمان یا یکی از بسیاری از الگوهای دیگر مستقر کرد. هر الگوی فردی به تنهایی ابزار مفیدی است که می‌تواند در هماهنگی با سایر الگوهای مرتبط برای ایجاد الگوهای قوی‌تر و خاص‌تر برای مورد استفاده خاص شما کار کند.شکل ۲: جایگاه معماری  Event Sourcing  در بین سایر الگوها    ذخیره رویداد می‌تواند یک عنصر کلیدی یک سیستم باشد و آن سیستم می‌تواند به همان اندازه ساده یا پیچیده باشد که دامنه کسب‌وکار به آن نیاز دارد. در نظر گرفتن قرار دادن یک سیستم منبع رویداد در بخشی از معماری که به حفظ زمینه برای همه رویدادها نیاز دارد، مفید است، زیرا در اینجاست که Event Sourcingبیشترین تأثیر را دارد.توجه: CQRSتوسعه یافته CQS است که یک الگوی معماری است و مخفف عبارت Command Query Separation است. CQSمفهوم اصلی است که دو نوع عملیات انجام شده در یک سیستم را تعریف می کند: فرمانی که یک وظیفه را اجرا می کند، پرس و جوی که اطلاعات را برمی گرداند، و هرگز نباید یک تابع برای انجام هر دوی این کارها وجود داشته باشد. با استفاده از CQRS، باید بین مدل نوشتن و مدل خواندن، جداسازی دقیقی داشته باشید. این دو مدل باید توسط اشیاء جداگانه پردازش شوند و از نظر مفهومی با هم مرتبط نباشند. این اشیاء ساختارهای ذخیره سازی فیزیکی نیستند، اما به عنوان مثال کنترل کننده فرمان و کنترل کننده پرس و جو هستند. آنها به مکان و نحوه ذخیره داده ها مرتبط نیستند. آنها به رفتار پردازش مرتبط هستند. کنترل کننده های فرمان مسئول کنترل دستورات، تغییر وضعیت یا انجام سایر عوارض جانبی هستند. کنترل کننده پرس و جو مسئول بازگرداندن نتیجه پرس و جو درخواست شده است.مزایا:حسابرسی: یک سیستم منبع رویداد، داده‌های شما را به‌عنوان مجموعه‌ای از رویدادهای تغییرناپذیر در طول زمان ذخیره می‌کند و یکی از قوی‌ترین گزینه‌های گزارش حسابرسی موجود را فراهم می‌کند.سفر در زمان: همه تغییرات حالت حفظ می شوند، بنابراین می توان سیستم ها را در زمان به عقب و جلو برد که برای اشکال زدایی و تجزیه و تحلیل &quot;چه می شود&quot; بسیار ارزشمند است.تحلیل علل ریشه­ای: رویدادهای تجاری را می توان به رویدادهای اصلی خود گره زد که قابلیت ردیابی و دید کل گردش کار را از ابتدا تا انتها فراهم می کند.تحمل خطا: جریان های رویداد اساساً فقط گزارش هایی با ویژگی های پشتیبان و بازیابی قوی هستند. فقط نوشتن داده های اصلی &quot;منبع رکورد&quot; در جریان رویداد، بازسازی پیش بینی های پایین دست را امکان پذیر می کند. EventStoreDB یک فناوری پایگاه داده توزیع شده با failoverدر صورت شکست رهبر است.معماری رویداد محور: رویکردهای سنتی داده ها را در مناطق مجزا جمع آوری می کنند تا فقط در صورت نیاز فراخوانی شوند. یک رویکرد رویداد محور می تواند با واکنش فوری به اطلاعات منتشر شده جدید کارآمدتر باشد. جریان‌های رویداد می‌توانند اعلان‌هایی درباره رویدادهای جدید ایجاد کنند و با اشتراک در جریان، کسب‌وکار می‌تواند به این تغییرات در زمان واقعی واکنش نشان دهد. این امکان مدل‌سازی آسان‌تر و ایجاد گردش‌های کاری پیچیده تجاری را فراهم می‌کند.ابتدا ناهمزمان: سیستم های منبع رویداد برای حداقل میزان تعامل همزمان تلاش می کنند. مرزهای سازگاری آگاهانه انتخاب می شوند تا الزامات کسب و کار برآورده شوند و هر چیز دیگری در نهایت سازگار باشد. این منجر به سیستم های پاسخگو، با کارایی بالا و مقیاس پذیر می شود.استقلال سرویس: اگر سرویسی از کار بیفتد، سرویس‌های وابسته می‌توانند زمانی که منبع برگشت داده می‌شود، «تقویت کنند». از آنجایی که رویدادها در یک توالی در جریان ذخیره می شوند، زمانی که هر سرویس دوباره آنلاین شود، می توان همگام سازی را به دست آورد.بازپخش و شکل‌دهی مجدد: مجموعه‌ای از رویدادها در یک جریان را می‌توان مجدداً پخش و تغییر داد تا بینش و تحلیل‌های جدیدی ارائه شود، به عنوان مثال. جریان رویداد را می‌توان تا یک نقطه از زمان بازپخش کرد و می‌توان از تحلیل «چه می‌شد اگر» برای پیش‌بینی نتایج بالقوه آینده استفاده کرد.قابلیت مشاهده: در سیستم‌های منبع رویداد، رویدادها از طریق صف‌ها و جریان‌ها جریان می‌یابند و امکان مشاهده بی‌سابقه را فراهم می‌کنند. آنچه منحصر به فرد است این است که رویدادها می توانند زمینه کسب و کار را داشته باشند که امکان تجزیه و تحلیل در زمان واقعی را فراهم می کند.گاه به گاه متصل: از آنجایی که گزارشی از تمام تغییرات وضعیت یک برنامه وجود دارد، می توان از آن در سناریوهای سیستمی که گاه به گاه متصل می شوند استفاده کرد. هنگامی که یک دستگاه قطع می شود، می تواند به کار بر روی داده های خود به صورت محلی ادامه دهد و پس از اتصال همگام سازی شود.جریان داده یک طرفه: داده ها در یک سیستم CQRS/منبع رویداد از طریق مدل های مستقل برای به روز رسانی یا خواندن اطلاعات یک طرفه جریان می یابند. این یک توانایی بهبود یافته برای استدلال در مورد داده ها و اشکال زدایی را به ارمغان می آورد زیرا هر جزء در جریان داده یک مسئولیت واحد دارد.مهاجرت میراث: انتقال سیستم‌های قدیمی به معماری‌های توزیع‌شده مدرن می‌تواند به صورت تدریجی انجام شود و به تدریج بخش‌های خاصی از عملکرد را با سرویس‌های منبع رویداد جایگزین کند. مسیرهای خواندن موجود سیستم قدیمی می‌توانند در زمانی که نوشته‌ها به سرویس‌ها هدایت می‌شوند، باقی بمانند.منابع:[1] https://airbrake.io/blog/software-design/domain-driven-design[2] https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing[3] https://www.eventstore.com/event-sourcing[4] https://whatis.techtarget.com/definition/Model-View-ViewModel[5] https://www.wintellect.com/model-view-viewmodel-mvvm-explained/[6] https://www.geeksforgeeks.org/introduction-to-model-view-view-model-mvvm/«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Thu, 02 Dec 2021 21:39:13 +0330</pubDate>
            </item>
                    <item>
                <title>روش C4 (یکی از روش های مستند سازی معماری نرم افزار)</title>
                <link>https://virgool.io/@m_49289735/%D8%B1%D9%88%D8%B4-c4-%DB%8C%DA%A9%DB%8C-%D8%A7%D8%B2-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D9%85%D8%B3%D8%AA%D9%86%D8%AF-%D8%B3%D8%A7%D8%B2%DB%8C-%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-jpiyfjleqsli</link>
                <description>یک سیستم نرم افزاری از یک یا چند Container (برنامه های کاربردی وب، برنامه های موبایل، برنامه های کاربردی دسکتاپ، پایگاه های داده، سیستم های فایل و غیره) تشکیل شده است که هر کدام شامل یک یا چند جزء است که به نوبه خود توسط یک یا چند عنصر کد پیاده سازی می شوند. (به عنوان مثال کلاس ها، رابط ها، اشیاء، توابع و غیره). مدل C4 ساختارهای ایستا یک سیستم نرم افزاری را از نظر Container ها، اجزا و کد در نظر می گیرد. مدل C4 یک رویکرد &quot;انتزاعی-اول&quot; (abstraction-first) برای نمودارسازی معماری نرم افزار است که بر اساس انتزاعات نشان می دهد که معماران و توسعه دهندگان نرم افزار چگونه در مورد نرم افزار فکر می کنند و آن را می سازند. هدف روش c4 در معماری نرم افزار، توصیف پروسیژرها (مراحل) مستندسازی و طراحی معماری نرم افزار است.این مدل از چهار سطح تشکیل می شود. همان طور که از نام آن مشخص است این سطوح از چهار C تشکیل شده اند:سطح (۱) و سطح (۲) نمای کلی را نشان می دهند.1) System Contextکه شامل محیط سیستم است. محیط در واقع کاربران و المان هایی هستند که با سیستم در ارتباط اند.نمودار زمینه سیستم (System Context) نقطه شروع خوبی برای نمودارسازی و مستندسازی یک سیستم نرم افزاری است  و، نموداری را ترسیم می کند که سیستم ما را به صورت جعبه ای در مرکز نشان می دهد که توسط کاربران آن و سایر سیستم هایی که با آنها تعامل دارد احاطه شده است. در این سطح جزئیات  مهم نیست زیرا این نمای کوچک شده ای است که تصویر بزرگی از چشم انداز سیستم را نشان می دهد. تمرکز باید بر روی افراد (بازیگران، نقش ها، شخصیت ها و ...) و سیستم های نرم افزاری باشد تا فناوری ها، پروتکل ها و سایر جزئیات سطح پایین. این همان نموداری است که می توان به افراد غیر فنی نشان داد. شکل ۱ یک نمودار زمینه سیستم را برای یک سیستم اینترنت بانک نشان می دهد.شکل ۱: یک نمودار زمینه سیستم از یک سیستم اینترنت بانک2) Containersیک واحد ایزوله است و بستری را برای مؤلفه های نرم آفزار و  وابستگی های آن ها فراهم می کند. این واحد به صورت یکپارچه قابلیت اجرا دارد. یک &quot;کانتینر&quot; چیزی است مانند یک برنامه وب سمت سرور، برنامه تک صفحه ای، برنامه دسکتاپ، برنامه تلفن همراه، طرح پایگاه داده، سیستم فایل، و غیره. در اصل، یک کانتینر یک واحد قابل اجرا/قابل استقرار جداگانه است (به عنوان مثال یک فضای فرآیند جداگانه ) که کد را اجرا می کند یا داده ها را ذخیره می کند.شکل ۲: یک دیاگرام کانتینر برای یک سیستم اینترنت بانکنمودار Container شکل ۲ سطح بالای معماری نرم افزار و نحوه توزیع مسئولیت ها در آن را نشان می دهد. همچنین گزینه های اصلی فناوری و نحوه ارتباط کانتینرها با یکدیگر را نشان می دهد. این یک نمودار ساده و متمرکز بر فناوری سطح بالا است که برای توسعه دهندگان نرم افزار و کارکنان پشتیبانی/عملیات به طور یکسان مفید است.سطح (۳) نمای متمرکز و فیلتر شده را نشان می دهد.3) Componentsیا مؤلفه که از نظر دانه بندی از Container ها ریز دانه تر اند و از نظر سطح انتزاع، در سطح بالاتری از کلاس ها قرار می گیرند. مؤلفه ها توسط یک یا چند کلاس در بستر Container قادر به اجرا است، و با Container در ارتباط هستند.نمودار کامپوننت نشان می دهد که چگونه یک Container از تعدادی &quot;مولفه&quot; تشکیل شده است، هر یک از آن اجزا چیست، مسئولیت های آنها و جزئیات فناوری/اجرای آنها چه است.شکل ۳ یک نمونه از این نمودار را برای یک سیستم اینترنت بانک نشان می دهد.شکل ۳: یک دیاگرام مؤلفه برای یک سیستم اینترنت بانک - API Applicationسطح (۴) نمایی است که جزئیات را نشان می دهد.4) Classes (or Code)که شامل کلاس ها و کدهای برنامه است.در نهایت، می‌توان روی هر مؤلفه بزرگ‌نمایی کرد تا نحوه پیاده‌سازی آن به‌عنوان کد را نشان داده شود. این سطح با استفاده از نمودارهای کلاس UML، نمودارهای رابطه موجودیت یا موارد مشابه قابل پیاده سازی است.این یک سطح اختیاری، و نمایش دهنده ی جزئیات است. در حالت ایده‌آل، این نمودار به طور خودکار با استفاده از ابزار (به عنوان مثال یک ابزار مدل‌سازی IDE یا UML) تولید می‌شود. این سطح از جزئیات برای هیچ چیز، جز مهم ترین یا پیچیده ترین اجزا توصیه نمی شود.شکل ۴: یک نمونه از دیاگرام کلاس برای یک سیستم اینترنت بانک - Mainframe Internet Bank Façadeتوجه:  نیازی به استفاده از هر 4 سطح نمودار نیست. فقط آنهایی که ارزشمند هستند مورد استفاده قرار می گیرند - نمودارهای System Context و Container برای بسیاری از تیم های توسعه نرم افزار کافی است.در ادامه از یک مثال استفاده شده است که به کمک آن این روش توضیح داده می شود. شکل ۵ بخشی از یک مثال است که، روش C4 و سطوح آن را نشان می دهد.شکل ۵: نمایش سطوح C4 - یک سیستم اینترنت بانکدر این مثال  روش C4‌ را برای یک سیستم اینترنت بانک ساده انجام شده است. همان طور که در شکل ۵ نیز ملاحظه می شود، در سطح Context، مربع آبی سیستم اینترنت بانک را نشان می دهد که با محیط خود (کاربر، سیستم ایمیل، سیستم پردازنده بانک) در ارتباط است. در این سطح باید این نکته را مد نظر قرار داد که، چه عناصر محیطی با سیستم ما در ارتباط خواهند بود پس ابتدا باید آن ها را مشخص کرد.برای اینکه وارد سطح دوم شویم یک  بزرگنمایی (Zoom in)  در سیستم اینترنت بانک صورت می گیرد تا بتوان جزئیات این سیستم را در این سطح مورد ملاحظه قرار داد، این سطح که سطح Containers نام دارد شامل یک یا چند  Container است، در مثال مورد بررسی یک Container که شامل،Web Application، Single Page Application، Mobile App، API Application و Database است که این Container‌ها هم با هم و هم با کاربر و دیگر المان های محیطی در ارتباط هستند. حال اگر یک بزرگنمایی روی  API Application داشته باشیم وارد سطح سوم یعنی Components می شویم این سطح نگاه جزئی تری نسبت به سطح قبل دارد و قرار است شامل مؤلفه هایی باشد که با هم کاری می کنند و شامل مؤلفه هایی چون Sign in Controller، Security Component،  Reset password و ... هستند. با همکاری این مؤلفه ها API Application کار می کند و سرویس می دهد. با اگر بزرگنمایی  کنیم و جزئیات بیشتری را می توان در سطح Class یا Code ملاحظه کرد. این Class ها قرار است نحوه ی عملکرد Component را به عهده بگیرند. این سطح ریزدانه ترین سطح از بین این چهار سطح می باشد.نکاتی که در مستند سازی به روش C4‌  باید به آن توجه کرد این است که حرکت از سطح درشت دانه به سطح ریز دانه است. ارتباطات بین المان ها باید مشخص شود و نام گذاری مناسب برای هر قسمت در نظر گرفته شود.ابزارها : دو ابزار مناسب برای ترسیم به روش  C4 عبارتند از:  c4-plantUML و Structurizrیکی از کاربردهای مدل C4، استفاده از آن به عنوان مکمل نمودارهای UML مورد استفاده قرار گرفته شده است. که، از دو سطح اول مدل C4 برای تکمیل فرآیند استخراج نیازمندی‌ها استفاده می‌کند، و اجازه می دهد طراحی سیستم‌ها بدون پرداختن به جزئیات فنی بیشتر انجام شود.نشانه گذاری: در مورد نشانه گذاری مدل C4 می توان این طور گفت که به مجموعه ای از قوانین سختگیرانه محدود نمی شود. در واقع، نشانه گذاری بیشتر به تقسیم سیستم در چهار سطح ذکر شده و به ایجاد نمودارهای قابل فهم می پردازد تا استانداردسازی یک syntax. مدل C4 هیچ علامت خاصی را تجویز نمی کند. یک نماد ساده که به خوبی روی تخته‌های سفید، کاغذ، یادداشت‌های چسبناک، کارت‌های فهرست و انواع ابزارهای نمودار استفاده می شود. همچنین می توان از رنگ و اشکال برای تکمیل نمودار ها استفاده کرد (یا برای افزودن اطلاعات اضافی یا صرفاً برای زیباتر کردن نمودار). هر نمادی که استفاده می‌شود باید تا حد امکان قابل توصیف‌ باشد، اما همه نمودارها باید دارای یک کلید/راهنما باشند تا نشانه‌گذاری واضح باشد. اگرچه مدل C4 یک رویکرد انتزاعی-اول و مستقل از نماد است، با این حال هنوز باید مطمئن شد که نمادها در نمودار  منطقی و  قابل درک هستند. یک راه خوب برای فکر کردن به این موضوع این است که از خود بپرسید که آیا هر نمودار می تواند به تنهایی و بدون نیاز به یک تفسیر، قابل درک باشد. یکی از نقاط قوت مدل C4 استفاده مداوم از توضیحات صریح در هر عنصر درگیر در نمودارها است، و از ابهامی که می‌توان از طریق UML با توجه به نحو دقیق آن معرفی کرد، اجتناب کرد.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است» «معماری_نرم_افزار_بهشتی»منابع [1] S. Brown. (2018),The C4 Model for Software Architecture, Available https://c4model.com[2] https://www.youtube.com/watch?v=x2-rSnhpw0g[3] A. Vázquez-Ingelmo, A. García-Holgado and F. J. García-Peñalvo, &quot;C4 model in a Software Engineering subject to ease the comprehension of UML and the software,&quot; 2020 IEEE Global Engineering Education Conference (EDUCON), 2020, pp. 919-924.</description>
                <category>S.Amin nayeri</category>
                <author>S.Amin nayeri</author>
                <pubDate>Tue, 16 Nov 2021 12:57:02 +0330</pubDate>
            </item>
            </channel>
</rss>