<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های پوریا صلاحی ایلخانی</title>
        <link>https://virgool.io/feed/@pourya.salahi76</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 06:41:38</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1908922/avatar/ySUsIc.jpg?height=120&amp;width=120</url>
            <title>پوریا صلاحی ایلخانی</title>
            <link>https://virgool.io/@pourya.salahi76</link>
        </image>

                    <item>
                <title>بررسی معماری های مبتنی بر میکروسرویس و کانتینرها</title>
                <link>https://virgool.io/@pourya.salahi76/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%87%D8%A7%DB%8C-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%88-%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1%D9%87%D8%A7-gaclaiasndvg</link>
                <description>چکیده :امروزه با توجه به نیاز روبه‌رشدی که در اپلیکیشن‌های بزرگ سازمان‌ها به‌وجودآمده است، مفهومی تحت عنوان میکروسرویس هم در صنعت توسعه نرم‌افزار رواج یافته ،چراکه توسعه‌دهندگان برای توسعه سیستم‌های بزرگ تجاری چاره‌ای به‌جز بکارگیری از معماری میکروسرویس را ندارند. معماری میکروسرویس به یک سبک معماری برای توسعه اپلیکیشن‌ها اطلاق می‌شود که بر روی انواع سرور مجازی و سرور ابری قابل پیاده‌سازی می‌باشد. درواقع معماری میکروسرویس(Microservices Architecture)رویکردی در زمینه توسعه برنامه‌های کاربردی است که در آن یک برنامه کاربردی بزرگ به مؤلفه‌ها یا سرویس‌های ماژولار شکسته می‌شود، به‌طوری‌که هر ماژول مسئول اجرای یک وظیفه است، رابط کاربری ساده‌ای دارد و از طریق واسط های برنامه‌نویسی کاربردی(API) با سرویس‌های دیگر ارتباط برقرار می‌کند. مارتین فاولر، توسعه‌دهنده‌ی مشهور نرم‌افزار، اولین فردی بود که فلسفه شکستن برنامه‌های بزرگ به سرویس‌ها و ماژول های کوچک و گذر از معماری سرویس گرا(SOA)به معماری میکروسرویس ها را مطرح کرد. این روزها مهاجرت به سبک و سیاق میکروسرویس‌ها امری حساس و خطیر تلقی می‌شود. بسیاری از شرکت‌ها و سازمان‌های عظیم مشغول ریفکتورینگ سیستم‌های سمت سرور خود هستند تا با آسانی های پارادایم جدید میکرو سرویس‌ها خود را تطبیق دهند. درحالی که سازمان‌هایی هم هستند که از همان ابتدا توسعه نرم‌افزاری خود را مطابق با معماری میکروسرویس ها بنا نهادند.مقدمه :اصطلاح میکرو سرویس به‌طور گسترده از مارچ ۲۰۱۲ مطرح شد و به مجموعه‌ای از سرویس‌های نسبتاً کوچک، پایدار، مجرد و خودمختار اشاره داشت که به‌طور مستقل با یک هدف مشخص و از پیش تعیین‌شده استقرار می‌یابند،امروزه میکرو سرویس‌ها یکی از موضوعات جذاب در دنیای نرم‌افزار و معماری محسوب می‌شوند و در دنیای تجاری نیز شرکت‌های مطرحی از جملهSound Cloud،Ebay،Amazonو... پیشگام پیاده‌سازی و استقرار آن بوده‌اند.معماری میکروسرویس یک رویکرد مهندسی مبتنی بر شکست یک نرم‌افزار به ماژول های تک_ کاربردی است که مستقلاً تولید و مستقر می‌شوند و با واسطه‌های خوش تعریف با دیگر سرویس‌ها ارتباط دارند. این سرویس‌ها توسط تیم‌های کوچکی تولید و پشتیبانی می‌شوند که از تمام چرخه حیات سرویس پشتیبانی می‌کند.بهترین راه استقرار برنامه‌های مبتنی بر میکروسرویسContainerها می‌باشند. کانتینرها که بر بسترDocker قرار می‌گیرند به توسعه‌دهندگان وتیم های Devops این اجازه را می‌دهند تا تمام بخش‌های مورد نیاز مانند کتابخانه‌ها و دیگر وابستگی‌ها را بسته‌بندی کرده و به‌عنوان یک پکیج مستقل روی سیستم‌های دیگر استفاده کند.در ابتدا لازم است با برخی تعاریف و اصطلاحات کلیدی در رابطه با مقاله آشنا شویم._ معماری نرم‌افزار : به فرایند تعریف یک راهکار ساختاری که تمامی نیازمندی‌های عملیاتی و فنی نرم‌افزار را برطرف می‌سازد ، اطلاق می شود که به بهبود ویژگی‌های کیفی نرم‌افزار ازجمله امنیت و عملکرد می‌پردازد . درواقع معماری نرم‌افزار توصیفی از زیرسیستم‌ها و مؤلفه‌های یک سیستم نرم‌افزاری و ارتباطات بین آن‌هاست._ سبک معماری : توصیفی از انواع مؤلفه‌ها و توپولوژی آن‌هاست. همچنین به تشریح الگوی داده و کنترل تعامل بین مؤلفه‌ها می‌پردازد و توصیفی غیررسمی از مزایا و معایب استفاده از یک سبک بخصوص در معماری است._ میکروسرویس : میکروسرویس راهکاری برای تقسیم یک برنامه کاربردی به بخش‌ها یا سرویس‌های کوچک، سبک، مستقل از یکدیگر و قابل مدیریت است. به بیان دقیق‌تر، میکروسرویس یک معماری توسعه نرم‌افزار توزیع‌شده (Distributed)  است. برای درک بهتر مفهوم میکروسرویس به شکل زیر دقت کنید.شکل 1 – نمایی از معماری میکروسرویساین سرویس‌ها تنها برای مدیریت یک وظیفه خاص طراحی شده‌اند ؛به‌عنوان مثال یک سرویس وظیفه مدیریت کاربران را برعهده دارد درحالی‌که سرویس دیگر برای جستجو در سایت طراحی‌شده است و با توجه به این‌که میکرو سرویس‌ها مجزا و مستقل از یکدیگر هستند ، امکان نوشتن آن‌ها به زبان‌های برنامه‌نویسی مختلف وجود دارد و در اصطلاح معروف Language _agnostic هستند و می‌توانند توسط تیم‌های گوناگون با سبک و سیاق خاص خودشان مورد استفاده قرار گیرند. همچنین، برای ذخیره‌سازی داده‌های مرتبط با آن‌ها، امکان استفاده از سیستم‌های مدیریت بانک‌های اطلاعاتی مختلف وجود دارد.به بیان دقیق‌تر برای برخی از سرویس‌ها امکان ذخیره‌سازی سنتی داده‌ها در پایگاه داده‌ای مثل MYSQL وجود دارد و در شرایط دیگری که ساختار غیر قابل‌پیش‌بینی از داده‌ها داریم، امکان استفاده از بانک‌های اطلاعاتیNOSQL وجود دارد.و محاوره‌هایی از نوع پروتکل HTTP و یکسری واسطه‌های کاربردی مبتنی بر الگوی طراحیRestful مسئولیت برقراری ارتباط را برعهده دارند._ سبک معماری میکروسرویس : مارتین فاولر معتقد است سبک معماری میکروسرویس رویکردی برای توسعه یک نرم‌افزار متشکل از تعدادی سرویس کوچک و مستقل است که هر سرویس به اتکاء منابع و زیرساخت خودش اجرا شده و از طریق پروتکل‌های سبک مبتنی بر HTTP با دیگران ارتباط دارد. این سرویس‌ها براساس قابلیت‌های کسب‌وکار طراحی و ساخته می‌شوند و بر بسترهای فناوری با زبان‌های برنامه‌نویسی مختلفی قابل استقرار هستند. این سرویس‌ها حداقل نیاز به مدیریت متمرکز را دارند و هر سرویس پایگاه داده مخصوص به خود را مدیریت می‌کند._ معماری میکروسرویس : به‌طورکلی می‌توان گفت که معماری میکروسرویس سبک خاصی از معماری نرم‌افزار و مشتق شده از معماری سرویس گرا است که هدف آن خودمختاری بالای سرویس‌ها از نظر منطق کارکردی_ داده‌ای و نیز پلتفرم و پیاده‌سازی و اجرا است. این سبک معماری علاوه‌بر معماری سرویس گرا از مفاهیم معماری رخداد محور و سیستم‌های توزیع شده نیز بهره برده است.معماری میکروسرویس (Microservices Architecture)دربرابر معماری یکپارچه(Monolithic)  : منظور از یکپارچگی برنامه‌ای نرم‌افزاری تشکیل شده از ماژول هایی که نمی‌توانند به‌طور مجزا و مستقل اجرا شوند. این عدم توانایی، بکارگیری معماری یکپارچه در محیط‌های توزیع شده بدون وجود چارچوب با مشکل روبرو می‌کند.شکل 2 – معماری میکروسرویس &amp; معماری یکپارچهمشکلات معماری یکپارچه عبارتند از :۱ ) حجم زیاد کد برنامه، بهره‌وری را کاهش می‌دهد و ازآن‌جایی‌که در برنامه‌های مبتنی بر یکپارچگی اعضای تیم از کارکردن به‌صورت مستقل منع می‌شوند و تمامی تیم می‌بایست امر توسعه و استقرار مجدد را به‌صورت هماهنگ با هم انجام دهند ،همین مسئله نیز باعث افت سرعت خواهد شد.۲) فهم و تغییر برنامه سخت خواهد شد. و زمانی‌که برنامه بزرگتر می‌شود ،افزودن توسعه‌دهندگان جدید و جابجایی اعضای تیم مشکل خواهد بود.۳) تغییر پشته فناوری برنامه در معماری یکپارچه به‌شدت مشکل و تقریباً غیرممکن است. چراکه تمام مؤلفه‌های وابسته به برنامه با همان تکنولوژی‌ که از ابتدای برنامه بر مبنای آن شروع شده اند، هماهنگ شده و تقریباً هیچ راهی برای تغییر در چارچوب برنامه وجود ندارد. لذا انطباق برنامه با یک فناوری جدید بسیار سخت خواهد بود.۴) توسعه مداوم مشکل خواهد داشت. برنامه‌های یکپارچه مانعی برای بروزرسانی‌های متنوع و پی‌درپی خواهند بود. بدین صورت که اگر بخواهیم چند مؤلفه‌ کوچک را بروزرسانی کنیم باید کل برنامه را به‌صورت یکجا مجدداً استقرار دهیم.۵) مقیاس پذیری برنامه با سختی روبرو خواهد شد، چراکه برنامه یکپارچه تنها در یک بعد مقیاس داده می‌شود. اگرچه می‌توانیم حجم تبادلات میان برنامه را از طریق اجرای کپی‌های متعدد افزایش دهیم اما از طرف دیگر این نوع معماری نمی‌تواند توسط افزایش حجم داده‌ها مقیاس پذیر باشد. و این بدین دلیل است که هر نمونه از کپی‌های برنامه به تمام داده‌ها دسترسی دارد و همین مسئله سبب افت تأثیرگذاری عملیات ذخیره‌سازی می‌شود.ازسویی‌دیگر افزایش مصرف حافظه و بدنبالش افزایش ترافیک ورودی و خروجی برنامه را به‌همراه خواهد داشت بنابراین در معماری یکپارچه مقیاس پذیری مؤلفه‌ها به‌صورت مجزا غیرممکن خواهد بود. بطور کلی با توجه به مشکلاتی که برای معماری یکپارچه بیان شد و اینکه در سیستم‌های یکپارچه مجموعه مؤلفه‌ها، سرویس‌ها، داده‌ها چنان درهم آمیخته است که نمی‌توان بلوک‌های سازنده این سیستم‌ها را مستقلاً از هم جدا کرده و یا تغییر داد ولی در معماری میکروسرویس هدف این است که یک سیستم به مجموعه‌ای از ماژول (سرویس) کاملاً مستقل(خودمختار ) تقسیم می‌شود که هر سرویس همه محاسبات، داده‌ها و قوانین مورد نیاز را در خود داشته باشد و برای اجرا به سایر سرویس‌ها نیاز نداشته باشد یا حداقل وابستگی وجود داشته باشد.مزایای معماری میکرو سرویس:امروزه ماژولار بودن یک مزیت رقابتی بزرگ در دنیای توسعه نرم‌افزار به شمار می‌رود. به‌طوری‌که تجهیزات گران‌قیمت دنیای فناوری اطلاعات مثل سرورها نیز به سمت ماژولار بودن متمایل شده‌اند. میکروسرویس ها با این هدف به دنیای نرم‌افزار وارد شدند تا به توسعه‌دهندگان اجازه دهند برنامه‌های کاربردی خود را بر مبنای مؤلفه‌ها یا سرویس‌هایی که مستقل از یکدیگر هستند و به‌سادگی قابل تغییر، حذف و بروزرسانی هستند توسعه دهند؛ بدون این‌که ساختار کلی برنامه با مشکل روبه‌رو شود. طراحی‌ها و استقرار میکروسرویس‌ها به لطف ابر و کانتینرسازی رشد قابل‌توجهی کرده‌اند. در مجموع باید بگوییم که میکرو سرویس‌ها مزایای قابل‌توجهی در اختیار توسعه‌دهندگان نرم‌افزار قرار داده‌اند که ازجمله آن می‌توان به موارد زیر اشاره کرد:_ زمان توسعه بدلیل امکان توسعه و استقرار هر میکروسرویس به‌طور مستقل از سایر میکروسرویس‌ها و امکان توسعه هر میکروسرویس توسط یک تیم توسعه، کاهش می‌یابد._ میکروسرویس‌ها در فرایند گسترش پذیری سرعت بیشتری ایجاد کرده و فرآیند اشکال زدایی را تسهیل می بخشند._ یکی از اهداف اصلی از توسعه سرویس‌ها همانند معماری سرویس گرا امکان استفاده مجدد و ترکیب سرویس‌های موجود برای ایجاد سرویس‌های جدید است._ در معماری میکرو سرویس امکان مقیاس پذیری مؤثر به ازای هر سرویس دلخواه میسر است. بنابراین هر بخش از سیستم که بار کاری بیشتری داشته باشد، به تناسب می‌تواند منابع پردازشی بیشتری نیز در اختیار گیرد و نیازی نیست برای همه مؤلفه‌های سیستم مقیاس پذیری یکنواخت انجام شود._ در معماری میکروسرویس می‌توان از ابزارها و فناوری‌های متنوعی برای تیم‌های طراحی و پیاده‌سازی استفاده کرد به صورتی که می‌توان در فرآیند تولید یک سیستم، برای میکروسرویس‌های مختلف از ابزارهای مختلفی استفاده کرد، بدون این‌که نگرانی از مشکلات بعدی یکپارچگی وجود داشته باشد._ در معماری میکروسرویس بدلیل خودمختاری و عدم وابستگی سرویس‌ها امکان ادامه فعالیت سایر سرویس‌ها در صورت از کار افتادن یک سرویس و در صورت نیاز جایگزینی سرویس ازکارافتاده با نمونه مشابه یا پشتیبان وجود دارد، همچنین می‌توان یک سرویس را که عملکردش مناسب نبوده را با نمونه بهتر جایگزین نمود یا یک سرویس را به‌تنهایی به یک محیط دیگر منتقل کرد.معایب و چالشهای معماری میکرو سرویس‌:در شرایطی که میکرو سرویس‌ها مزایای درخشانی در اختیار ما قرار می‌دهند اما معایبی نیز دارند که عبارتنداز:_ فرایند آزمایش آن‌ها پیچیده و نیز فرآیند مدیریت آن‌ها به زمان بیشتری نیاز دارد._ با توجه به این‌که ارتباط سرویس‌ها با یکدیگر از طریق API است، تعدادrequestها نسبت‌به یک معماریmonolithic به‌مراتب بیشتر خواهد بود._ ازآن‌جاکه هر سرویس مسئول انجام task خاصی است، در اپلیکیشن‌های بسیار بزرگ تعداد سرویس‌های بیشماری خواهیم داشت و ازهمین‌رو برقراری ارتباط مابین این سرویس‌ها و از همه مهم‌تر مانیتور کردن آن‌ها کاری بسیار دشوار خواهد بود._ با توجه به این‌که ممکن است از چندین زبان برنامه‌نویسی و تکنولوژی مختلف در چنین اپلیکیشن هایی استفاده شود، هزینه‌ی نگهداری چنین سیستم‌هایی گاهی اوقات زیاد می شود._ ازآن‌جایی‌که برطبق ماهیت مستقل هر ماژول، سرویس‌ها باید به‌طور کامل مستندسازی شوند درنتیجه مستندسازی چنین اپلیکیشن‌هایی مشکل‌تر است._ با توجه به این‌که سرویس‌ها برای برطرف کردن نیازهای خود دیگر سرویس‌ها را فراخوانی می‌کنند، رصد کردن آن‌ها و بالطبع فرآیند دیباگینگ بسیار دشوار خواهد شد ._ اپلیکیشن‌هایی که با استفاده از معماری میکرو سرویس طراحی‌شده اند را به‌سختی می‌توان به‌صورت دستی Deploy کرد و در چنین شرایطی نیاز به ابزارهای اتوماسیون پیشرفته خواهد بود._ امروزه اکثر اپلیکیشن‌ها نیاز دارند تا در لحظه چندین رکورد را در دیتابیس حذف یا بروزرسانی کنند. در چنین مواقعی باتوجه به این‌که در معماریmonolithic صرفاً یک دیتابیس وجود دارد، این کار به‌سادگی صورت خواهد گرفت اما در میکرو سرویس‌ها چندین حذف یا بروزرسانی ها چالش‌های خواهند داشت چراکه ممکن است رکوردی در دیتابیس یکی از سرویس‌ها در یک سرور خاص به‌همراه رکورد دیگری در سرویس دیگری روی سرور دیگری بخواهند با یکدیگر سینک شوند._ نسخه بندی میکرو سرویس‌ها باید به شکل مجزا از یکدیگر انجام شود درنتیجه به راهکار نیاز داریم تا مشخص کنیم کدام نسخه سرویس با کدام نسخه سرویس دیگر باید ارتباط برقرار کند و مستقر شود._ هر سرویس لاگ گیری اختصاصی خود را داراست و ازهمین‌رو هیچ سیستم مانیتورینگ مرکزی برای بررسی لاگ ها وجود ندارد و در چنین شرایطی نیاز به یک سیستم مدیریت لاگ مرکزی وجود خواهد داشت.بنابراین با توجه به مطالب ذکرشده می‌توان چالش‌های پیاده‌سازی معماری میکرو سرویس را در سه دسته چالش‌های معماری، چالش‌های سازمانی و چالش‌های فناوری و ابزار طبقه‌بندی نمود.چالش‌های معماری :_ بدلیل این‌که هر میکرو سرویس خودمختاری بالایی دارد، حجم زیادی از دوباره کاری در برنامه‌نویسی هر سرویس برای اعمال مکانیزم‌های کنترلی_ امنیتی_ مشترک باید انجام شود._ پیاده‌سازی معماری‌های توزیع‌شده نیاز به ابزارها و متدهای پیچیده‌تری برای پیاده‌سازی و نگهداشت دارد._ مانیتورینگ ، مدیریت نسخه‌ها، تضمین امنیت و کنترل میکرو سرویس‌ها به‌مراتب سخت‌تر از سایر معماری‌ها و سیستم‌های متمرکز یا لایه‌ای است.چالش‌های سازمانی:_ انتخاب سبک مناسب معماری بنابر نیاز هر سازمان یکی از چالش‌های قدیمی است. هر صورت مسئله نیاز به راهکار مناسب خود دارد و قرار نیست هر سیستم کوچک یا بزرگ مبتنی بر میکرو سرویس باشد.انتخاب بین معماری‌ها-راهکارهای مختلف و نحوه یکپارچگی بین آن‌ها ازجمله دغدغه‌های مدیران و تصمیم‌گیران است._ پیاده‌سازی معماری میکرو سرویس نیازمند نیروی انسانی بسیار ماهر و توانمند است که تأمین آن برای هر سازمانی ممکن نیست._ ساختار سازمانی بیشتر واحدهای فناوری اطلاعات و تیم‌های توسعه نرم‌افزار مبتنی بر تقسیم افقی فناوری‌ها-ابزار ها (UI_Application_Database )شکل‌گرفته است و تغییر این ساختار به تیم‌های مبتنی برDevops با یک دامنه محدود کسب‌وکار سخت و زمان‌بر است.چالش‌های فناوری/ ابزار:_ معماری میکرو سرویس مجموعه جدیدی از ابزار و فناوری‌ها را برای پشتیبانی از نیازمندی‌های خود معرفی کرده‌است که خود باعث افزایش پیچیدگی و افزایش زمان و هزینه تولید سیستم می‌شود._ابزارهای جدید به‌سرعت ارائه می‌شوند و توسط برنامه نویسان در پروژه‌های واقعی مورد استفاده قرار می‌گیرند درحالی‌که مسائل مهمی مانند امنیت و پایداری این ابزارها به‌صورت کامل ارزیابی نشده است ._تنوع بیش‌ازحد ابزارها و فناوری‌های جدید اگرچه یک مزیت است اما از نگاه دیگر تهدیدی برای تیم‌های برنامه‌نویسی است که تا مهارت کافی برای استفاده از یک ابزار را به دست می‌آورند،، ابزارها و فناوری‌های جدیدی ظهور کرده و فرصت مسلط شدن کافی روی یک ابزار را از دست می‌دهند.علل مهاجرت به معماری میکرو سرویس:اگر بخواهیم به بررسی دلایل مهاجرت به معماری میکرو سرویس بپردازیم با مسائلی چون قابلیت نگهداری بالا، مقیاس پذیری، مهاجرت سازمان‌های عظیم به این سبک معماری، تحمل خطا، آزمایش آسان فناوری و مسئولیت های نرم‌افزاری مجزا روبرو می‌شویم و با بررسی بیشتر متوجه خواهیم شد که علت اصلی مهاجرت به میکرو سرویس‌ها مزیت بهبود قابلیت نگهداری است. وقتی پیچیدگی سیستم پایین باشد درنتیجه قابلیت نگهداری هم بهبود پیدا می‌کند.مورد بعدی افزایش عملکرد سیستم است چراکه طبیعت بیشتر سیستم‌های نوظهور مبتنی بر ابر می‌باشد و بدین‌جهت مقیاس پذیری هم افزایش پیدا می‌کند. همچنین سیستم‌های مبتنی بر میکروسرویس‌ها در اجرای بلندمدت به نسبت‌به سیستم‌های یکنواخت هزینه کمتری خواهند داشت. اما در کوتاه‌مدت نتیجه برعکس خواهد بود.معماری سرویس گرا(Service Oriented Architecture)چیست و چه ارتباطی با معماری میکرو سرویس دارد:معماری سرویس گرا رهیافتی برای ساخت سیستم‌های توزیع شده‌است که کارکردهای نرم‌افزاری را در قالب سرویس ارائه می‌کند. این سرویس‌ها هم توسط دیگر نرم‌افزارها قابل فراخوانی هستند و هم برای ساخت سرویس‌های جدید مورداستفاده قرار می‌گیرند، این رهیافت برای یکپارچه‌سازی فناوری در محیطی که انواع مختلفی از سکوهای نرم‌افزاری و سخت‌افزاری وجود دارد ایده‌آل است.معماری سرویس گرا در یک دهه‌ی گذشته، مورد توجه تیم‌های نرم‌افزاری قرار داشته است، اما انعطاف‌پذیری خیلی زیادی ندارد. درحالی‌که میکرو سرویس نسبت‌به معماری سرویس گرا انعطاف‌پذیرتر است، زیرا به‌سادگی می‌توان یک سرویس یا ماژول را از پروژه‌ای برداشت و بدون اعمال تغییرات خاصی آن را به پروژه‌ی دیگری انتقال داد. همچنین معماری سرویس گرا خود در معماری monolithic پیاده‌سازی می‌شود. به بیان دقیق‌تر در معماری سرویس گرا، مؤلفه‌ها یا ماژول هایی داریم که سرویس‌هایی در اختیار مؤلفه‌هایی دیگر قرار می‌دهند. این مؤلفه‌ها می‌تواند منحصر به یک برنامه کاربردی خاص باشند. در معماری میکرو سرویس این مؤلفه‌ها به‌عنوان سرویس‌های مستقلی هستند که امکان استقرار آن‌ها به شکل منفرد وجود دارد ،همچنین اندازه سرویس‌ها یا ماژول های میکرو سرویس‌ها کوچک‌تر از ماژول های سرویس گرا است که مدیریت آن‌ها را ساده‌تر می‌کند.معماری سرویس گرا یک معماری نرم‌افزاری است که در آن هر یک از سرویس‌ها از پروتکل‌هایی برای برقراری ارتباط با یکدیگر استفاده می‌کنند .اگرچه معماری سرویس گرا نزدیک به دو دهه به‌عنوان یک روش استاندارد توسعه به رسمیت شناخته می‌شد، با این حال در تعامل با رایانش ابری با چالش‌هایی روبرو شد ، به‌عنوان مثال قادر به پشتیبانی از مقیاس پذیری نبوده و پاسخگویی دیرهنگام نسبت‌به تغییرات دارد که روند توسعه‌ی برنامه را محدود می‌کند.بیشتر توسعه‌دهندگان بر این باورند که میکرو سرویس‌ها مکانیزم دقیق‌تری نسبت‌به معماری سرویس گرا ارائه می‌دهند. همچنین آن‌ها معتقدند که معماری میکرو سرویس تکامل طبیعی معماری سرویس گرا است که برای تطابق با رایانش ابری و پاسخگویی به تقاضاهای فزاینده‌ی چرخه‌های توسعه نرم‌افزار پدید آمده‌است.معماری و طراحی میکرو سرویس‌ها چه ویژگی‌های شاخصی دارند؟معماری میکرو سرویس ها از مؤلفه‌ها و سرویس‌های مجزایی تشکیل شده که نیازمند کانال‌های ارتباطی برای برقراری ارتباط و تبادل داده‌ها هستند. به‌طورکلی، برنامه‌های مبتنی بر معماری میکرو سرویس ها یکسری ویژگی‌های مشترک دارند که عبارتند از :_ منحصربه‌فرد هستند : به‌گونه‌ای که یک سرویس برای انجام یک کار خاص طراحی و نصب می‌شود._ غیرمتمرکز هستند : در حالت ایده‌آل، سرویس‌ها وابستگی های کمی دارند، البته برای انجام برخی فرآیندها و به‌ویژه اتصال به اینترنت به وابستگی‌های مختلفی نیاز دارند ._ ارتجاعی هستند : بزرگترین ویژگی معماری میکرو سرویس آستانه تحمل خطای آن است. به بیان دقیق‌تر، اگر یک سرویس با خرابی روبرو شود، برنامه هنوز هم قادر به اجرا است._ توانایی تفکیک داده ها : هر سرویس به پایگاه داده یا فضای ذخیره‌سازی مخصوص به خود دسترسی دارد._ از واسط های برنامه‌نویسی کاربردی استفاده می‌کند : یک معماری میکرو سرویس به‌شدت به واسط های برنامه‌نویسی کاربردی وAPI Gatewayها برای تسهیل ارتباطات متکی است.طراحی و استخراج میکرو سرویس‌ها:در معماری میکرو سرویس مهم‌ترین مسئله نحوه‌ی استخراج و دانه بندی سرویس ها است، به‌گونه‌ای که سرویس‌ها کاملاً خودمختار بوده و حداقل نیاز به مدیریت مرکزی در سیستم وجود داشته باشد. برای استخراج سرویس و انتخاب دامنه‌ها در معماری میکرو سرویس معمولا از چندین روش و تکنیک استفاده می‌شود که معروف‌ترین آن‌ها طراحی مبتنی بر دامنه (Domain Driven Design) است، به‌گونه‌ای که دامنه متشکل از چندین زیر دامنه است و هر کدام از این زیر دامنه‌ها معادل یکی از بخش‌های آن کسب‌وکار است .زیر دامنه‌ها می‌توانند به‌صورت زیردسته بندی شوند:_ هسته : وجه تمایز کسب‌وکار از دیگر کسب‌وکارها به شمار می‌رود که به نوعی باارزش‌ترین بخش آن نرم‌افزار است ._ پشتیبان‌ها : بخش‌هایی که برای سرویس‌دهی هسته مورد نیاز هستند، اما بخش مختص به کسب‌وکار شما نیستند. این بخش‌ها می‌توانند به‌صورت داخلی پیاده‌سازی یا برون سپاری شوند._ بخش‌های عمومی : این بخش‌ها مخصوص کسب‌وکار نیستند و به‌صورت ایده‌آل توسط نرم‌افزارها یا سرویس‌های آماده پیاده‌سازی می‌شود .به‌طورکلی طراحی مبتنی بر دامنه(DDD)  پیچیدگی‌های قواعد و منطق کسب‌وکار را درون تعدادی مدل پنهان می‌کند و هدف اصلی آن مدیریت پیچیدگی‌ها است که یکی از پیچیدگی‌ها نحوه پیاده‌سازی دامنه برنامه است که به روشی باید برنامه را توضیح دهیم که برای نیازهای آینده قابل توسعه باشد مدل‌های مختلفی همانند Rich Domain modelوActive Record برای پیاده‌سازی دامنه وجود دارد.الگوهای جدید طراحی میکرو سرویس‌ها:تیمAzureCATدر پایگاه معماریAzure تعداد۹ الگو را به‌طور خاص به‌منظور طراحی میکرو سرویس‌ها منتشر کرده‌اند. علت اصلی مستندسازی این الگوها، افزایش میل و رغبت به سمت این سبک معماری در صنعت بوده‌است. هدف اصلی معماری میکرو سرویس ها افزایش سرعت انتشار نرم‌افزار عنوان شده‌است و این سرعت را با تجزیه سازی یک برنامه به سرویس‌های کوچک خودمختار انجام می دهد که می‌توانند به‌تنهایی و بدون هیچ‌گونه وابستگی استقرار یابند. یک معماری میکرو سرویس همانند بسیاری نوآوری‌های دیگر چالش‌هایی را با خود همراه دارد که الگوهای نه‌گانه سبب کاهش این چالش‌ها می‌شود.این الگوها عبارتند از:ا(1) Gateway Aggregation  : درخواست‌های ارسالی به سوی میکرو سرویس‌های چندگانه مستقل را درون یک درخواست واحد تجمیع می‌کند که همین امر باعث کاهش تبادل بین مصرف‌کننده و سرویس‌های مربوطه می‌شود.ا(2)Gateway Routing  : درخواست مسیرها به میکرو سرویس‌های مختلف از طریق یک نقطه‌ی انتهایی منفرد انجام می‌شود. به‌همین جهت مصرف‌کننده نیاز ندارد تا تعداد زیادی از نقاط انتهایی پایانی را مدیریت کند.ا(3)Anti_Corruption layer  : یک جبهه بین برنامه جدید و برنامه موروثی ایجاد می‌کند تا مطمئن شود طراحی یک برنامه جدید محدود به وابستگی‌هایش به سیستم‌های موروثی نیست.ا(4)Bulkhead  : منابع حیاتی سیستم مانند مخزن اتصالات، حافظه، واحد پردازش مرکزی را برای هر سرویس یا بار کاری به‌صورت جدا از هم ایزوله می‌کند. با استفاده از این الگو، یک‌بار کاری تمامی منابع سیستم را به‌تنهایی مصرف نمی‌کند تا دیگران دچار قحطی و گرسنگی در دسترسی به منابع شوند و با پیشگیری از خطاهای دنباله‌داری که توسط یک سرویس رخ می‌دهد، باعث انعطاف‌پذیری سیستم می‌شود.ا(5)Backends for frontends  : سرویس‌های سمت سرور مجزا برای انواع مختلف کلاینت می‌سازد مانند دستگاه و موبایل. دراین‌صورت یک سرویس سمت سرور منفرد نیاز ندارد تا تمامی نیازمندی‌های پیچیده انواع مختلف کلاینت را پوشش دهد. این الگو همچنین با جداسازی دغدغه‌های اختصاصی کلاینت باعث می‌شود هر میکرو سرویس را به‌طور ساده و به‌دور از پیچیدگی نگهداری کرد.ا(6)Gateway Offloading  : میکرو سرویس‌ها را قادر می‌سازد تا عملکرد اشتراکی سرویس راOffload کنند، مانند استفاده از گواهینامه امنیتیSSL به جهت ارائه به دروازه رابط برنامه‌نویسیAPI Gatewayا(7)Strangler  : از مهاجرت افزایشی به‌وسیله‌ی جداسازی قسمت‌های خاص یک خدمت به‌همراه سرویس‌های جدید پشتیبانی می‌کند.ا(8)Sidecar  : استقرار مؤلفه‌های کمکی یک برنامه را به‌عنوان کانتینرها یا پردازش‌های جداگانه به‌منظور ایزوله سازی و کپسوله کردن را برعهده دارد.ا(9)  Ambassador : به‌منظورOffload وظایفی مانند نظارت، مسیریابی و امنیت مانند  TLS(امنیت لایه انتقال) استفاده می‌شود.به‌تازگی الگوی جدیدی هم تحت عنوانDatabase_Is_the service patternارائه‌شده است که در آن سیستم مدیریت پایگاه داده غیر رابطه‌ای درون یک خوشه به‌همراه منطق کاری ارائه‌شده است.شکل 3 - نمودار فوق نشان میدهد که چطور این الگوها در معماری میکروسرویس ها بکار گرفته میشوند.پیاده‌سازی میکرو سرویس با اتکا بر زبان برنامه‌نویسی(Jolie)  :زبان برنامه‌نویسیJolie زبانی است که به‌صورت کاملاًNative از این نوع معماری پشتیبانی می‌کند. در این زبان هر برنامه‌ یک میکرو سرویس است که تشریح و توصیف آن توسط یک رفتار خاص و یک سری اطلاعات استقراریافته ساخته و ارائه می‌شود که در تلاشند تا چگونگی برقراری ارتباطشان را با دیگر میکرو سرویس‌ها ممکن سازند. باید توجه داشت که مفهوم توزیع جزء جدایی‌ناپذیر برنامه می‌باشد و ازآن‌جایی‌که هر برنامه قادر است ویژگی‌ها و عملکردش را در قالب یک URL بخصوص داشته باشد که این آدرس خاص می‌تواند توسط دیگر میکرو سرویس‌ها فراخوانی شود. مقیاس پذیری غیر یکنواخت هم به‌خوبی قابل‌مشاهده است. به‌هرحال میکرو سرویس‌هایJolie به‌آسانی قابل پیاده‌سازی و استقرار درDocker هستند همچنین Jolie مکانیزمهای پیشرفته‌ای را در ارتباط با آگاه‌سازی خطاهایی که فی‌مابین میکرو سرویس ها رخ می‌دهد را ایجاد می کند.ا API Gateway :در مفهومAPI Gateway  یک واسط کاربری است که میان کلاینت و سرویس قرار می‌گیرد و سطح انتزاعی را بین آن‌ها ایجاد می‌کند و با وجود آن دیگر نیازی نیست که کلاینت برای دریافت داده‌های مورد نیاز با چندین سرویس تعامل کند. بطورکلی با این‌که هر سرویس با حداکثر خودمختاری مسئول انجام یک کارکرد مشخص در دامنه سیستم است اما مدیریت کل سیستم و انجام اموری مثل احراز هویت، تقسیم بار، مجوزدهی، لاگ گیری، مانیتورینگ و غیره نیاز به مدیریت و ابزار متمرکز غیر از سرویس ها دارد که می‌تواند توسطAPI Gateway پیاده‌سازی شود.درصورتی‌که این الگو استفاده نشود کلیه موارد مدیریتی ذکر شده به‌صورت کاملاً توزیع شده توسط سرویس‌ها مدیریت خواهد شد.شکل 4 - کاربرد و جایگاه  API Gatewayبزرگ‌ترین مزیت استفاده ازAPI Gateway ، از بین بردن معایب روش دسترسی مستقیم است. عدم وابستگی به معماری داخلی سیستم ما باعث می‌شود کارRefactoringساده‌تر قابل اجرا باشد و دیگر برای ترکیب یا تجزیه سرویس‌های مختلف دغدغه‌های قبل را نداشته باشیم، اما بزرگ‌ترین ایراد این روش اضافه شدن یک ماژول بزرگ به سیستم است که باید همیشه آنلاین باشد و درصورتی‌که عملکرد درستی ارائه نکند کل سیستم با مشکل مواجه خواهد شد . با توجه به این‌که تعامل با هر کدام از میکرو سرویس‌ها باید درAPI Gateway  پیاده‌سازی شود و به ازای هر کلاینت هم نیاز داریم که پیاده‌سازی اختصاصی داشته باشیم، این احتمال وجود دارد که همین API Gateway  به سدی برای تیم توسعه تبدیل شود.کانتینرها(Containers)  :یک بسته نرم‌افزاری منفرد و اجرایی است که شامل تمام وابستگی‌های مورد نیاز یک برنامه کاربردی است. کانتینرها با ارائه یک مکانیزم ایزوله و منفرد اجازه استقرار انواع مختلفی از کانتینرها در یک محیط تولیدی را می‌دهند. در معماری میکرو سرویس، هر سرویس به شکل جداگانه از سرویس‌های دیگر در محیط مستقر می‌شود.کانتینرها، نرم‌افزار را از محیط اجرا ایزوله می‌کنند و این اطمینان را می‌دهند که برنامه‌های یکنواخت و بی‌نقص در هنگام توسعه و ساختاربندی کار کنند. از خصوصیات کانتینرها می‌توان به مواردی چون استاندارد واحد، سبکبالی، چابکی در ایجاد و استقرار اپلیکیشن‌ها و جداسازی منابع اشاره کرد.شکل 5 – ساختار کانتینرکانتینرها به سه بخش تقسیم می‌شوند که عبارتند از :_ سازنده (builder) : فناوری مورد استفاده برای ساخت کانتینر_ موتور (Engine)  : فناوری مورداستفاده برای راه‌اندازی کانتینر_ تنظیم(Orchestration)  : فناوری مورداستفاده برای مدیریت و تنظیمات کانتینرازجمله ابزارها و فناوری‌های مدیریت کانتینرها مبتنی بر ابرCloudمی‌توان به موارد زیر اشاره کرد:_ Kubernetes_ Docker Swarm_ Amazon ECS_ Azure service Fabric_ Cloud Foundry_ Google Cloud Functions_ IBM Bluemix OpenWhisk_ Oracle Application Containerماشین مجازی ( Virtual machine) :به‌صورت مجازی یک اکوسیستم سخت‌افزاری را ایجاد می‌کند که سیستم‌عامل روی آن مستقر و یک یا چند برنامه کاربردی را اجرا می‌کند.ماشین مجازی می‌تواند به‌عنوان جایگزینی برای کانتینرها برای ساخت میکرو سرویس‌ها استفاده شود. در این حالت، هر سرویس می‌تواند از یک ماشین مجازی برای میزبانی یک ویژگی استفاده کند. بااین‌حال، ماشین‌های مجازی ممکن است برای میکروسرویس ها ایده‌آل نباشند، زیرا هر کدام به یک سیستم‌عامل جداگانه نیاز دارند و هزینه‌های سرباری زیادی را به وجود می‌آورند. کانتینرها از نظر صرف منابع بسیار کارآمدتر هستند ،زیرا فقط به کد زیربنایی و وابستگی‌های مربوط برای اجرای سرویس نیاز دارند.آن‌ها محیط‌های اجرایی را جدا کرده و هسته سیستم‌عامل را به اشتراک می‌گذارند ،همچنین خیلی سریع قابلیت اجرا پیدا می‌کنند.شکل 6 – تفاوت کانتینر و ماشین مجازیداکر(Docker)  :ابزاری متن باز جهت ساده‌سازی در ساخت و اجرای برنامه‌ها با استفاده از کانتینرها می‌باشد و این اجازه را به ما می‌دهد تا برنامه و تمام کامپوننت های آن را به شکل یک بسته درآورده و در هر ماشینی بدون نیاز به انجام تنظیماتی که ماشین مبدأ داشته آن را اجرا کنیم. مهم‌ترین هدف ایجاد داکر این بود که کاربران به‌راحتی بتوانند با کانتینر ارتباط برقرار کنند یا به نوعی دیگر با آن تعامل داشته باشند باید توجه داشت که کانتینرها قبل‌از پدید آمدن داکر نیز وجود داشتند اما این داکر بود که مفهوم کانتینر را متحول کرد.از جمله ویژگی‌های داکر می‌توان به مواردی چون قابلیت حمل‌ونقل و بهبود یکپارچه، حجم کم و بروزرسانی بسیار دقیق و صرفه‌جویی در هزینه ،امنیت، مدیریت قدرتمند مصرف منابع اشاره نمود.اجزای اصلی داکر عبارتند از:ا(۱) Docker Daemon ( مدیر و مجری محفظه‌ها ) : براساس دستورات، تصاویر و کانتینرهای داکر را ایجاد و مدیریت می‌کند. این سرویس به‌عنوان مرکز کنترل اجرایی داکر عمل می کند.ا(۲)  Docker CLI ( رابطه دستوری مرتبط باDaemon ) : شرایط لازم برای تعامل کاربر با اپلیکیشن های کانتینری را فراهم میکند. با استفاده از یکCLI  میزبان داکر را کنترل می‌کند و دستورات لازم را وارد می‌کند.ا(۳) Docker Image ( Imageهای برنامه مربوطه) : تصاویر داکر حاوی سورس کد اپلیکیشن و تمام ابزارها، کتابخانه‌ها و بسته‌های مورد نیاز هستند که همه این‌ها برای اجرا به محیط ایزوله یا همان کانتینر نیاز دارند.شکل 7 – معماری داکرمدیریت و سازماندهی کانتینرها(Container Orchestration)  :اگر در مقیاس بزرگ تعداد بسیار زیادیDocker و با انواع مختلفی داشته باشیم و بخواهیم آن‌ها را مدیریت کنیم، ابزارهای سازماندهی کانتینرها برای خودکارسازی فرایندها به کمک ما می‌شتابند. ابزارهای مدیریت و سازماندهی کانتینرها که لغت ارکستراسیون کانتینرها نیز برای آن‌ها بکار می‌رود، فرایند مدیریت، مقیاس پذیری، نگهداری و استقرار کانتینرها خودکارسازی می‌کند. این ابزارها می‌تواند برای زمانبندی اجرا و ساخت کانتینرها، نحوه‌ی اختصاص منابع به آن‌ها، میزان سلامت هر یک از کانتینرها، نحوه مقیاس پذیری آن‌ها و راه‌اندازی دوباره‌ی هر کانتینر، نحوه توزیع بار، کاهش خطای انسانی در مدیریت داکرها، ساده‌سازی عملیات‌های مرتبط با داکرها و بسیاری موارد دیگر بکار روند.یکی از موارد مهم و پرکاربرد ابزارهای ارکستراسیون کانتینرها  Kubernetesمی باشد که در ادامه درباره این ابزار صحبت خواهد شد.کوبرنتیز(Kubernetes)چیست؟شکل 8 - کوبرنتیزا  Kubernetesیک سیستم ارکستراسیون منبع باز برای خودکار کردن مدیریت، قرار دادن، مقیاس گذاری و مسیریابی کانتینرهایی است که در سال‌های اخیر مورد توجه توسعه‌دهندگان و تیم‌های عملیاتی فناوری اطلاعات قرار گرفته است.کوبرنتیز به پلتفرم استاندارد ارکستراسیون کانتینرها تبدیل شده‌است. تمام ارائه‌دهندگان اصلی ابر از آن پشتیبانی می‌کنند، و این گزینه منطقی برای سازمان‌هایی است که به‌دنبال انتقال برنامه‌های بیشتر به ابر هستند.کوبرنتیز یک فریمورک مشترک برای اجرای سیستم‌های توزیع‌شده ارائه می‌دهد تا تیم‌های توسعه زیرساخت‌های ثابت و غیرقابل تغییر از توسعه تا تولید برای هر پروژه داشته باشند. در واقع کوبرنتیز می‌تواند نیازهای مقیاس بندی، در دسترس بودن، خرابی سیستم، الگوهای استقرار و موارد دیگر را مدیریت کند.کوبرنتیز قابلیت‌هایی نظیر خدمات و تعریف فرایند، کشف خدمات و توازن بار، ارکستراسیون ذخیره‌سازی، مدیریت منابع درسطح کانتینر، استقرار و بازگشت خودکار،مدیریت سلامت کانتینر و مدیریت پیکربندی را دارد. در تصویر زیر کانتینرها و ماشین‌های مجازی در یک معماری هیبریدی به‌کارگرفته شدند یک اپلیکیشن که با کانتینر ایزوله شده در یک کلاستر ماشین‌های مجازی در حال استقرار و بروزرسانی است. در چنین معماری نیاز به یک هماهنگ ساز دارید تا مدیریت، استقرار، اسکیل ،شبکه و دسترسی پذیری یک اپلیکیشن کانتینر شده را به‌عهده بگیرد، اینجاست که کوبرنتیز وارد می‌شود و بسیاری از روندها را خودکار کرده و خودکارسازی های مورد نیاز را منظم و به‌ترتیب و در بهینه ترین حالت اجرا می‌کند.شکل 9 –ارکستریشن با کوبرنتیزمعماریKubernetes  :زمانی‌که کوبرنتیز را مستقر می‌کنید یک Cluster (مجموعه‌ای از چندین گره که در کنار هم قرار می‌گیرند و معمولاً اگر یکی از گره‌ها دچار مشکل شود نرم‌افزار از طریق بقیه گره‌ها همچنان می‌تواند بدون مشکل کار کند) خواهید داشت. کوبرنتیز با استفاده از یک شبکه مشترک برای برقراری ارتباط بین هر سرو، ماشین‌های مجازی یا فیزیکی جداگانه را در یک کلاستر جمع می‌کند. این مجموعه، یک بستر فیزیکی است که در آن تمام اجزایKubernetes، قابلیت‌ها وWorkload ها پیکربندی شده‌است.شکل 10 – معماری کوبرنتیزمعماری‌های میکرو سرویس در موضوعات خاص:معماری میکرو سرویس در چند حوزه کاربردی مورداستفاده قرار می‌گیرد که دراین‌رابطه محققان تلاش‌هایی برای ادغام مفاهیم میکرو سرویس با برنامه‌های کاربردی در دامنه های مختلف از جمله اینترنت اشیاء و رایانش ابری انجام داده‌اند.شکل 11 – دسته بندی معماری میکروسرویس در موضوعات خاصسیستم‌های توزیع شده:معماری میکرو سرویس مورد پذیرش جامعه محاسبات توزیع‌شده قرار گرفت؛ رایانش ابری و سیستم‌های ذخیره‌سازی توزیع شده از مزایای معماری‌های میکرو سرویس می‌توانند بهره ببرند.رایانش ابری :در رابطه با استفاده از میکرو سرویس‌ها برای ارائه خدمات شبکه در مراکز داده ابری تحقیقاتی صورت‌گرفته است. روشBigVM  برای کاهش مسئولیت توسعه‌دهندگانSaaS با خودکارسازی توسعه برنامه‌های کاربردیSaaS مبتنی بر میکرو سرویس ارائه‌شده است BigVM می‌تواند کارایی سیستم را با افزودن مؤلفه‌های خاص ازجمله یک موتور ارکستراسیون میکرو سرویس برای هماهنگی میکرو سرویس‌ها و یک موتور گردش کار که به وسیله آن، می‌توان ریزسرویس‌ها را در طول زمان اجرا ،طراحی و به‌صورت پویا سفارشی کرد ؛ افزایش دهد. BigVM بر شناسایی میکرو سرویس هایی تمرکز دارد که در کاربردهای متعدد به‌شدت مورد استفاده مجدد قرار می‌گیرند. مجموعه‌ای از رابط‌های مؤلفه استاندارد شده و پروتکل‌های ارتباطی سرویس به‌گونه‌ای پیاده‌سازی شده‌اند که این میکرو سرویس تا می‌توانند به‌طور کامل درBigVM نگهداری شوند. علاوه‌بر این، BigVM  یک سلسله‌مراتب میکرو سرویس چندلایه را فعال می‌کند که در آن میکرو سرویس‌های لایه پایین به‌عنوان جعبه سیاه مشخص می‌شوند؛ به‌طوری‌که توسعه‌دهندگان SaaSفقط باید با سفارشی‌سازی خودکار میکرو سرویس‌های لایه پایین‌تر، با میکرو سرویس‌های لایه بالاتر سروکار داشته باشند .در نتیجه، توسعه‌دهندگان SaaS می‌توانند از استقرار تعدادی از میکرو سرویس‌ها به‌عنوان مثال میکرو سرویس‌های مبتنی بر منابع سیستم‌عامل خودداری کنند.شکل 12 – معماری BigVM  و محیط استقرارسیستم‌های ذخیره‌سازی توزیع شده :سیستم‌های فایل توزیع شده مانند Azure Data lake store برای ارائه خدمات سیستم فایل، به معماری‌های میکرو سرویس متکی هستند. میکرو سرویس‌های مختلفی برای ارائه عملکردهای مدیریتی برای پشتیبانی از عملیات تجزیه‌وتحلیل داده ها درBig Data  استفاده می‌شوند. میکرو سرویس‌هایAzure Data lake store  با ارائه‌دهندگان سیستم‌های ذخیره‌سازی برای انجام عملیات بر روی داده‌های ذخیره‌شده در سیستم فایل ارتباط برقرار می‌کنند.اینترنت اشیاء:با توسعه فناوری اینترنت اشیاء، معماری سنتی نمی‌تواند الزامات سیستم‌های ناهمگن، قابل همکاری، سفارشی‌سازی و مقیاس پذیر را برآورده کند. برای مقابله با چالش فوق یک چارچوب باز اینترنت اشیاء را با تجزیه سیستم اینترنت اشیاء به میکرو سرویس‌ها برای انجام انواع مختلف وظایف ارائه می‌کند. با استفاده از ارتباط پیام محور و مکانیسم رجیستری ،کشف در سرویس اصلی، چارچوب به‌راحتی می‌تواند برنامه‌های شخص ثالث را برای پشتیبانی از قابلیت همکاری و مقیاس پذیری گسترش و تکامل داده و ادغام کند. علاوه‌بر این، سیستم از پلاگین های دستگاه برای محافظت از تفاوت امکانات سخت‌افزاری به‌منظور پشتیبانی از پلتفرم‌های ناهمگن تر استفاده می‌کند. به‌ویژه، همان‌طور که با یک سری ازریز سرویس‌های یکپارچه شده‌است، این چارچوب مکانیسم قوی برای ترکیب داده‌های ناهمگن از طریق پیش‌پردازش سلسله‌مراتبی داده‌های حسگرهای انبوه ارائه می‌دهد.مراقبت‌های پزشکی :به عنوان نمونه پلتفرمSPIDEP برای استفاده از میکرو سرویس‌ها در سناریوهای پزشکی بیماری‌های عفونی ارائه‌شده است. هدف این پلتفرم، تفسیر تغییرات در علایم حیاتی افراد مسن ساکن در مراکز مسکونی است؛ بنابراین تیم پزشکی را قبل‌از عفونت‌های احتمالی آگاه می‌کند. این پلتفرم، دارای یک سیستم توصیه کننده برای بهبود پشتیبانی تصمیم در پیش تشخیص بیماری‌های عفونی می‌باشد. معماری این پلتفرم شامل معماری لبه، ارتباط با کاربر و معماری ابر می‌باشد.معماری لبه :وظیفه جمع‌آوری، پیش‌پردازش و ارسال داده از حسگرهای بیومتریک مختلف مانند ECG، فشارخون و غیره را برعهده دارد. از داده‌های جمع‌آوری‌شده به‌صورت محلی نسخه پشتیبان تهیه می‌شود .ارتباط با کاربر:مکانیسم‌های لازم را برای ارتباط صحیح بین لایه‌ها و زیرلایه‌های مختلف فراهم می‌کند این ارتباط از طریق پروتکلREST  بدست می‌آید بااین‌حال این پروتکل نیاز به استفاده از یک دروازه API دارد.معماری ابر :خدماتی را برای کاربران نهایی در قالب میکرو سرویس‌های اصلی و کمکی، با توجه به نیازهای آن‌ها و سطوح نقش‌ها و مجوزهای آن‌ها، فراهم می‌کند. به‌علاوه داده‌ی ذخیره‌شده در پایگاه‌های داده اختصاصی میکرو سرویس‌ها را برای رساندن مزایایی به کاربران هدف ازجمله بیماران، پرسنل پزشکی و مقامات بهداشتی، مدیریت می‌کند.برنامه‌های زندگی هوشمند :امکان استفاده از معماری میکرو سرویس و محاسبات مه برای فراهم‌سازی امکان استفاده از توابع مرجع صدور گواهی، سیستم مدیریت بلیط راه‌آهن و غیره استفاده می‌شود. از طریق آن، سطوح حمله و تأخیر احراز هویت را به حداقل رسانده و منجر به طرحی سریع و مقیاس پذیری در احراز هویت حجم زیادی از دستگاه‌ها با منابع محدود می‌شود. سپس پروتکل‌های سبک‌وزنی را برای رسیدن به سطح بالایی از امنیت و بارهای محاسباتی کم، ارائه می‌دهد.ارزیابی‌ها، کارایی و اثربخشی طرح ارائه‌شده در رسیدگی و احراز هویت تعداد زیادی گره را نشان می‌دهد و درعین‌حال از آن‌ها در برابر تهدیدات مختلف در زندگی هوشمند، محافظت می‌کند.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»«معماری_نرم_افزار_بهشتی»منابع :1. https://microservices.io2. Thönes, J., Microservices . IEEE Software,2015.32(1):.116_116.3. Taibi, D.,V.Lenarduzzi, and C. Pahl,Processes, Motivations and Issues for Migrating to Microservices Architectures: AnEmpirical Investigation. IEEE Cloud Computing, 2017.4. Mazzara .M., et al.,Towards Microservices and Beyond.2017 at https:/arxiv.org/abs/1610.017785. https://martinfowler.com/articles/microservices.html6. Abbott, Martin L., and Michael T. Fisher. The art of Scalability: Scalable web architecture, Processes, and organizations for The Modern enterprise. pearson Education, 2009.7. https://www.nginx.com/learn/microservices8. https://articles.microservices.com/monolithic-vs-microservices-architecture-5c4848858f599. Wasson, M., Design patterns for Microservices, in Microsoft, https:/azure.Microsoft.Com/en_us/blog/design_patterns_for_Microservices/2017.10. Dragoni , N., et al.,Microservices: How to Make your application Scale. arXiv preprint arXiv:1702.07149,2017.11. Merkel, D., Docker: lightweight Linux Containers for Consistent development and deployment. Linux Journal, 2014. 2014(239): 2.12. Microservices:The Journey So Far and challenges Ahead, Pooyan Jamshidi, C. Pahl,N. mendonca,J.Lewis, S. Tilkov(2018)13. https://developer.ibm.com/articles/challenges-and-benefits-of-the-microservice-architectural-style-part-1/14. https://codezup.com/what-is-domain-driven-design-ddd-pros-cons/15. https://www.docker.com/resources/what-container/16. https://avinetworks.com/what-are-microservices-and-containers/17. https://www.redhat.com/en/topics/containers/what-is-container-orchestration18. https://www.docker.com/solutions/microservices19. https://docs.docker.com/get-started/overview/20. https://kubernetes.io/21. https://containerjournal.com/topics/container-ecosystems/kubernetes-vs-docker-a-primer/22. https://www.cloudfoundry.org/microservices23. Guidi, C., et al.,Dynamic error handling in service Oriented applications. Fundamenta Informaticae, 2009. 95(1): P. 73_102.24. Zheng T, Zhang Y, ZhengX, FU M, Liu x. BigVM: a multi_layer_Microservice_based platform for deploying SaaS.Paper Presented at: Fifth International Conference on Advanced Cloud and Big data (CBD);2017; Shanghai, China.25. Le, V. D., Neff, M.M., Stewart, R. V., kelley, R., Fritzinger, E., Dascalu, S. M., &amp; Harris, F . C.(2015,July) Microservice_based architecture for The NRDC .In 2015 IEEE 13th International Conference on Industrial Informatics (INDID)(PP. 1659_1664). IEEE.26. Ramakrishnan, R., Sridharan, B., Douceur, J. R., Kasturi, P. Krishnamachari_Sampath, B., Krishnamoorthy,K.,...&amp; Venkatesan, R.(2017,may). Azure data lake store. a hyperscale distributed file service for big data ananlytics .In Proceedings Of the 2017 ACM International Conference on management of Data (PP.51_63).27. Sun, L., Li, Y., &amp; memon, R. A .(2017).An open IOT framework based on Microservices architecture. china Communications, 14(2) , 154_162.28. Li , J., Jin ,J., Lyu, L., Yuan, D , Yang, Y., Gao, L., &amp; Shen, C. (2021). A fast and scalable authentication Scheme in IOT for smart living. Future Generation Computer Systems, 117,125_137.29. Calderón-Gómez, H., mendoza-pittí , L., vargas- Lombardo, M., Gómez- Pulido, J. M., Rodríguez-Puyol, D., Sención , G. &amp; Polo- Luque ,M. L.( 2021). Evaluating service-oriented and Microservice Architecture Patterns to Deploy eHealth Applications in Cloud Computing Environment. Applied Sciences, 11(10), 4350.30. Baldominos, A., Ogul, Colomo-Palacios, R., Sanz-Moreno, J., &amp; Gómez-pulido, J. M.(2020). Infection Predication Using Physiological and Social data in Social environments. Information Processing &amp; Management, 57(3) , 102213.</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 01 Feb 2023 18:56:35 +0330</pubDate>
            </item>
                    <item>
                <title>مقدمه ای برمدیریت لاگ (Log Management) و معرفی ابزارهای مطرح در این حوزه</title>
                <link>https://virgool.io/@pourya.salahi76/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%84%D8%A7%DA%AF-log-management-%D9%88-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D9%85%D8%B7%D8%B1%D8%AD-%D8%AF%D8%B1-%D8%A7%DB%8C%D9%86-%D8%AD%D9%88%D8%B2%D9%87-wpmnvkcc91w8</link>
                <description>مقدمه:داده‌های موجود در لاگ ها حاوی اطلاعات ارزشمندی است که می‌تواند به تیم فنی در مورد عملکرد برنامه اطلاع دهد و به آن‌ها کمک کند تا مشکلات را پیدا کنندبا درک بهتر عملکرد متخصصان سازمان (توسعه دهندگان ، مهندسین DevOps) می‌توانند منابع مناسب را برای بهبود تجربه کاربر نهایی اختصاص دهند. مدیریت لاگ درواقع عمل جمع‌آوری ، قالب‌بندی ، تجمیع و تجزیه‌ و تحلیل داده‌های لاگ برای بهینه‌سازی برنامه‌ها است. درواقع مدیریت لاگ بینشی درمورد صحت و درستی عملکرد سیستم‌ها و برنامه‌ها ارائه می‌کند.لاگ(Log) چیست؟جالب است بدانید که یکی از معنی‌های Log به‌طورکلی بخشی از تنه یا شاخه بزرگ از درخت است که افتاده یا قطع شده‌است ،ولی در علوم کامپیوتر با معنای دیگری ازآن‌رو برو می‌شویم که می‌گوید این یک ثبت رسمی از وقایعی است که در نرم‌افزار ما اتفاق افتاده است. در دنیای محاسبات ، لاگ فایلی است که هر بار که رویدادی خاص در سیستم شما رخ دهد به‌صورت اتوماتیک تولید می‌شود. فایل‌های لاگ معمولاً شامل مهر زمانی هستند و هر آن‌چه در پس سیستم عامل‌ها یا برنامه‌های نرم‌افزاری اتفاق می‌افتد را ضبط و ثبت می‌کنند. درواقع آن‌ها همه مواردی که در سرور ، شبکه ، سیستم‌عامل و برنامه‌های کاربردی برای پیگیری مسیر رویداد مهم است را ثبت می‌کنند،و به متخصصان فناوری اطلاعات و توسعه‌دهندگان برای درک بهتر اتفاقات رخ داده و همچنین زمان آن کمک می‌کند.لاگ ها می‌توانند انواع رویدادها از قبیل پیام‌ها و تعاملات بین کاربران، اتفاقات رخ داده در نسخه پشتیبان ، خطاهایی که هنگام اجرای برنامه موجب توقف برنامه می‌شود و یا درخواست‌های کاربران از یک سامانه را مستند کنند. انواع مختلفی از لاگ وجود دارد. برخی از آن‌ها توسط انسان قابل بازکردن و خواندن هستند ، درحالی‌که برخی دیگر برای اهداف حسابرسی نگهداری می‌شوند و قابل خواندن برای انسان نیستند. لاگ های حسابرسی ، لاگ های معاملات ، لاگ های رویداد ، لاگ های خطا و لاگ های پیام تنها چند نمونه از انواع فایل‌های لاگ هستند که هرکدام هدف متفاوتی دارند. لاگ ها با طیف وسیعی از افزونه‌های گوناگون مانند.log, .txt و یا افزونه‌های اختصاصی دیگر ارائه می‌شوند. با توجه به نوع افزونه و خوانایی آن‌ها می‌توان لاگ ها را با یک ویرایشگر متن مانند(notepad) یا برنامه پردازش کلمه ( Microsoft Word  یا Open Office  ) باز کرد و البته ممکن است نیاز به برنامه‌های خاصی برای باز کردن آن‌ها باشد.نمونه ای از یک فایل لاگایده مدیریت لاگ(Log Management) :سال‌ها قبل در دهه ۱۹۹۰ شما نرم‌افزاری داشتید که اطلاعات مربوط به خود را در یک فایل بنام لاگ می‌نوشت و زمانی‌که شما به‌عنوان کاربر به مشکلی برمی‌خوردید، فایل لاگ را به‌همراه اطلاعاتی که سیستم‌عامل در اختیار او می‌گذاشت به‌صورت فشرده (Zip) شده برای شما می‌فرستاد تا مورد بررسی قرار گیرد. اما بطور مثال امروز شما یک نرم‌افزار دارید که شامل بیست میکرو سرویس RESTFUL هست که برروی چندین سرور مختلف قرار دارد، چندین کانتینر (Container) دارید که بسته به نیاز از آن‌ها استفاده می‌کنید. همچنین چند اپلیکیشن وب اضافی به‌همراه یک Service bus و بسیاری موارد دیگر که همگی آن‌ها به‌همراه یکدیگر در قالب یک سیستم به کاربر خدمات ارائه می‌دهند. هر کدام از این موارد به‌خودی‌خود جامع، مستقل ،ساده و البته مفید هستند و در کنار یکدیگر یک سامانه‌ی بزرگ‌تر را ایجاد می‌کنند .حالا فرض کنید، مشکلی پیش‌آمده و نیاز دارید که آن را بررسی کنید، تشخیص دهید این مشکل در کدام سرویس اتفاق افتاده و به‌سرعت در مورد آن تصمیم بگیرید. جمع‌آوری لاگ های مرتبط در میان این‌همه سرویس‌های مستقل که روی سرورهای مختلفی در حال اجرا هستند، بزرگ‌ترین مشکل یک CTO خواهد بود. این‌جا همان جایی است که ایده مدیریت لاگ به وجود آمد. زمانی‌که شما یک اپلیکیشن دسکتاپ یا یک سرویس ساده وب دارید، می‌توانید از روش‌های گذشته استفاده کنید اما زمانی‌که سرویس شما شروع به رشد می‌کند دیگر این کار غیرممکن خواهد بود و باید از یک سرویس جدا برای مدیریت لاگ ها استفاده کنید.مدیریت لاگ چیست؟مدیریت لاگ (Log Management) : یک مفهوم و اصطلاح جامع است که تمام فعالیت‌ها و فرایندهای مورداستفاده برای تولید ، جمع‌آوری ، متمرکز کردن ، تجزیه ، انتقال ، ذخیره ، بایگانی و دفع حجم عظیمی از داده‌های لاگ تولید شده توسط رایانه را توصیف می‌کند. از ابزارهای مدیریت لاگ برای مدیریت کلی لاگ های تولید شده توسط برنامه‌ها ، سیستم‌ها ، شبکه‌ها ، نرم‌افزارها یا کاربران استفاده می‌شود و متناسب با نیازها و سیاست‌های سازمان با آن‌ها برخورد می‌شود. مدیریت لاگ یک موضوع محبوب نه‌تنها در بین مدیران سیستم و SecOps بلکه در بین توسعه‌دهندگان است. این به این دلیل است استفاده از لاگ ها برای حفظ امنیت ، تقویت عملکرد و یا عیب‌یابی در بسیاری از بخش‌های فناوری اطلاعات حائز اهمیت است.به‌طور خلاصه می‌توان گفت مدیریت لاگ به اپراتورهای برنامه و زیرساخت همانند توسعه‌دهندگان و SysAdmins ، Devops و غیره امکانات عیب‌یابی مشکلات را می‌دهد و به سهامداران تجاری همانند مدیران محصول ، بازاریابی و غیره اجازه می‌دهد تا بینش‌هایی را از داده‌های تعبیه‌شده در رویدادهای گزارش استخراج کنند. گزارش‌ها همچنین یکی از منابع کلیدی داده‌ها برای تجزیه‌وتحلیل امنیتی هستند. منابع مختلفی از گزارش‌ها و همچنین انواع لاگ وجود دارد که از میان آن‌ها می‌توان به گزارش سرور و برنامه (Server and Application logs) ، گزارش‌های مربوط به کانتینر (Container logs) ، دستگاه‌های موبایل و گزارش‌های برنامه (Mobile Devices and App logs) ، حسگرها ، اینترنت اشیاء ، اینترنت اشیاء صنعتی (Sensors,IOT,Industrial IOT) و دنده شبکه (Network Gear) اشاره کرد.فعالیت‌هایی که در مدیریت لاگ انجام می‌شود را می‌توان به دسته‌های زیر تقسیم‌بندی کرد:۱)جمع آوری(Collection) : ابزار مدیریت لاگ که داده‌ها را از برنامه‌های کاربردی ، سیستم‌عامل ، سرورها ، کاربران ، Endpointها و یا هر منبع مرتبط دیگری درون سازمان تجمیع می‌کند. در بیان ساده تر یعنی در ابتدا شما باید بتوانید لاگ ها را از منابع مختلفی که در سیستم خود دارید جمع‌آوری کنید و همه آن‌ها را در یک‌جا کنار هم قرار دهید. فایل‌های لاگ حاوی داده‌هایی هستند که از برنامه‌ها ، سرورها ، سیستم‌عامل ، سوئیچ‌ها و فایروال‌ها جمع‌آوری شدند. با استفاده از راه‌حل‌های مربوط به مدیریت لاگ ها می‌توان تنظیمات مربوط به نوع اطلاعاتی که می‌خواهیم جمع‌آوری کنیم را انجام دهیم و داده‌های اضافی را کنار بگذاریم و اطلاعات مورد نیاز و مرتبط را ذخیره کنیم.۲)مانیتورینگ/نظارت(Monitoring) :  ابزار مانیتورینگ لاگ رخدادها، فعالیت‌ها و همچنین زمان رخ دادن آن‌ها را ردیابی می‌کنند. مانیتورینگ به شما کمک می‌کند که اتفاقاتی که در سیستم شما درحال وقوع هستند را متوجه شوید و تمهیدات لازم را در صورت لزوم انجام دهید و یا شرایطی ایجاد کنید که اگر اتفاق خاصی در سیستم افتاد، سیستم به شما هشدار لازم را بدهد در واقع باید لاگ ها را به‌ترتیب زمانی مدیریت کنید و زمان وقوع اتفاقات را نیز داشته باشید، و ارتباطات آنها را نیز در نظر بگیرید. از همه مهم‌تر سیستم مدیریتی لاگ باید بتواند مراتب اهمیت لاگ ها را تشخیص داده و آن‌ها را از هم جدا کند. علاوه‌بر همه این‌ها این سیستم باید توانایی مدیریت مسائل زیر را داشته باشد:اطلاعات به چه صورتی باید تجزیه شوند؟چه اطلاعاتی از لاگ ها را می‌بایست حتماً در اختیار داشته باشیم و کدام اطلاعات اهمیت کمتری دارند؟هر لاگ تا چه زمانی باید در سیستم باشد؟حافظه مورد نیاز برای این لاگ ها چه مقدار است؟چه سرویس‌هایی توسط لاگ ها ارائه خواهند شد؟چه نوع از لاگ ها وجود دارند و چطور باید آن‌ها را ذخیره کرد؟برای مدیریت این حجم از لاگ چه منابعی مورد نیاز است؟اطلاعات مورد نیاز در چه زمانی باید در اختیار ما قرار بگیرد؟۳)تجزیه‌وتحلیل(Analysis) :  ابزار آنالیز لاگ یا Log Analysis که با بررسی جمع‌آوری لاگ از سرور لاگ قادر است به‌صورت پیشگیرانه باگ ها ، تهدیدات امنیتی و مشکلات دیگر را شناسایی کند. باید توجه داشت که تجمیع یک مرحله بسیار مهم ، بزرگ و همزمان ضروری و بحرانی است. این کار زمانی بسیار سخت و پیچیده می‌شود که با شما با تنوع زیادی از لاگ ها روبرو باشید. پس یک سیستم مدیریت لاگ توانایی این را دارد که لاگ ها را بشناسد ، آن‌ها را تجزیه کند ، اطلاعات مشترک را استخراج کند و همه آن‌ها را به فرمت واحدی ذخیره کند. به‌معنای دیگر Log Text باید به‌صورت داده‌های قابل خواندن و با جزئیات قابل دسترسی در این سیستم ذخیره شود. ابزارهای مدیریت لاگ فرایند تجزیه و تحلیل داده‌های لاگ را خودکار و ساده می‌کنند و راه‌های پیشرفته‌ای برای ارائه یافته‌های شما ارائه می‌دهند. گزارش تجزیه‌وتحلیل از نمودارها ، و سایر تصاویر برای تأکید بر همبستگی‌ها و شباهت‌های بین رویدادها و داده‌ها استفاده می‌کند و تشخیص مسائل و ردیابی علل آن‌ها را آسان‌تر می‌کند.۴) نگهداری (retention) :  ابزاری که مشخص می‌کند داده باید تا چه مدتی درون فایل نگهداری شود. گام بعدی در مدیریت لاگ، ذخیره و نگهداری لاگ طولانی‌مدت است. سؤال اصلی در این مرحله این است که چه مدت باید لاگ ها را ذخیره کنید. درحالی‌که آسان‌ترین راه برای ذخیره‌سازی لاگ ها برای مدت نامحدود است تا در صورت نیاز بتوانید داده‌های قدیمی را بازیابی کنید، ذخیره این مقدار داده بسیار پرهزینه خواهد بود، امن‌ترین راه برای انجام این کار پیروی از بهترین شیوه‌ها و مقررات صنعت است.در صورت نیاز به بررسی، داده‌های لاگ را حداقل برای یک‌سال ذخیره می‌کند.۵)جستجو(Indexing) : یک ابزار مدیریت لاگ به واحدفناوری اطلاعات(IT)کمک می‌کند، داده‌ها را روی تمام لاگ ها فیلتر، دسته‌بندی، تجزیه‌وتحلیل و یا جستجو کند. درواقع ابزارهای مدیریت لاگ با داشتن رویکرد جمع‌آوری متمرکز و گزینه‌های جستجوی پیشرفته، جستجوی لاگ را تسهیل می‌کنند و با در نظر گرفتن حجم فایل‌های لاگ، درک این‌که چرا ویژگی‌های جستجو تأثیر زیادی بر کیفیت مدیریت لاگ دارند، دشوار نیست. جستجوی پیشرفته به شما این امکان را می‌دهد به گزارش‌های ساختاریافته و بدون ساختار نگاه کنید و اطلاعاتی درمورد رویدادهای خاصی جمع‌آوری کنید که به تعیین علت اصلی کمک می‌کند.۶)گزارش گیری(reporting) :  ابزار پیشرفته‌ای که گزارش‌گیری از لاگ ممیزی را که به عملکرد عملیاتی، تخصیص منابع، امنیت یا تطبیق‌پذیری قانونی مرتبط می‌شود، خودکارسازی می‌کنند. راه‌حل‌های مدیریت لاگ مجهز به ابزارهایی برای داده کاوی هستند که در میان حجم های داده‌های لاگ برای کشف الگوهایی که در غیر این صورت پنهان باقی می‌ماند ،می‌گردند .این گزارش را بهبود می‌بخشد که خلاصه نهایی جستجو تجزیه‌وتحلیل انجام‌شده ارائه اعداد و ویژگی‌های بصری است که داستانی را درمورد داده‌های گزارش شما بیان می‌کند و زمانی‌که شما می‌خواهید یافته‌های خود را به کسی ارائه دهید که هیچ دانش فنی ندارد و می‌خواهید اهمیت داده‌ها را به‌طور کامل درک کند، بسیار مفید و کارا خواهد بود.مدیریت متمرکز لاگ چیست؟مدیریت متمرکز لاگ عبارت است از تجمیع داده‌های لاگ در یک مکان و فرمت واحد. ازآن‌جایی‌که داده‌ها از منابع مختلفی ازجمله سیستم‌عامل، برنامه‌های کاربردی، سرورها و هاست ها می‌آیند، کل ورودی باید تجمیع و استانداردسازی گردد و سپس سازمان می‌تواند بینش های معناداری بسازد. متمرکز کردن، فرایند تجزیه‌وتحلیل را ساده کرده و سرعت اعمال داده به مدیریت لاگ را نسبت‌به (SIEM)افزایش می‌دهد. بنابراین هم مدیریت رخداد و اطلاعات امنیت یا (SIEM)و هم نرم‌افزار مدیریت لاگ از فایل لاگ یا لاگ رخداد(Event Log) استفاده می‌کنند تا از طریق کاهش میزان آسیب‌پذیری‌ها، شناسایی تهدیدات و بهبود زمان پاسخ در صورت وقوع یک رخداد امنیتی، امنیت را بهبود ببخشند. باید این نکته را مدنظر قرارداد که در ساخت سیستم SIEM، امنیت به‌عنوان عملکرد اصلی در نظر گرفته شده‌است درحالی‌که سیستم‌های مدیریت لاگ را می‌توان به‌صورت کلی‌ و گسترده تری برای مدیریت منابع، عیب‌یابی شبکه یا قطعی برنامه‌های کاربردی و حفظ تطبیق‌پذیری مورد استفاده قرارداد.سیستم‌های مدیریت لاگ یا ( Log Management System) چه کمکی می‌کنند؟یک سیستم مدیریت لاگ(Log Management System )یا به اختصارLMS راهکاری نرم‌افزاری است که داده‌های لاگ و لاگ های رخداد را از منابع مختلف در یک مکان متمرکز جمع‌آوری، مرتب و ذخیره می‌کند. سیستم‌های نرم‌افزاری مدیریت لاگ به تیم‌های فناوری اطلاعات (IT) ،متخصصان Devops،SecOps این امکان را می‌دهد که یک نقطه واحد را ایجاد کنند که می‌توان از آن به تمام داده‌های شبکه و برنامه کاربردی دسترسی پیدا کرد. به‌طور متداول، فایل لاگ کاملاً ایندکس شده و قابل جستجو است،بدین‌معنا که تیم فناوری اطلاعات (IT) می‌تواند به‌سادگی به داده‌های مورد نیاز خود دسترسی پیدا کند تا در مورد سلامت شبکه، تخصیص منابع یا امنیت تصمیم بگیرد.ابزارهای مدیریت لاگ برای کمک به سازمان در مدیریت حجم بالای داده‌های لاگ تولید شده در سازمان مورداستفاده قرار می‌گیرند. این ابزارها به ما کمک می‌کنند موارد زیر را تعیین کنیم:کدام داده‌ها و اطلاعات نیاز به ثبت شدن دارند.داده‌ها باید به کدام فرمت ثبت شوند(قالبی که باید درآنLogشوند)دوره زمانی‌ که داده‌های لاگ باید ذخیره شوند.وقتی به داده نیاز نیست، چطور باید حذف شود یا از بین برود.اهمیت مدیریت لاگ:سیستم و استراتژی مدیریت لاگ کارآمد بینش‌های Real_time یا بلادرنگ درمورد سلامت و عملیات سیستم را امکان‌پذیر می‌کند. باید توجه داشت که بدون مدیریت لاگ یافتن مرجع مشکلات عملکرد برنامه‌ها و علت رفتارهای غیرمنتظره سیستم مشکل خواهد بود. مدیریت لاگ به توسعه‌دهندگان و تیم زیرساخت امکان عیب‌یابی مشکلات را می‌دهد و به مدیران محصول اجازه می‌دهد تا اطلاعات مفیدی را از داده‌های تعبیه‌شده در لاگ ها استخراج کنند ، همچنین لاگ ها یکی از منابع کلیدی داده‌ها برای تجزیه‌وتحلیل امنیتی هستند مواردی مثل تشخیص تهدید ، تشخیص نفوذ و امنیت شبکه و غیره که در مجموع تحت عنوان (Security Information and Event Management)  شناخته می‌شود .یک راه‌حل مؤثر مدیریت لاگ به سازمان‌ها امکانات زیر را ارائه می‌دهد:۱)ذخیره سازی یکپارچه داده‌ها از طریق تجمیع متمرکز لاگ.داشتن همه لاگ ها در یک مکان ، هر تحلیلی را بسیار ساده‌تر می‌کند. اما وضعیت واقعی ذخیره سازی یکپارچه افزایش امنیت سیستم می‌باشد. ازآن‌جایی‌که این زمینه‌ای است که فاصله زمانی بین اولین تهدید تا زمانی‌که شما اقدامی انجام می‌دهید می‌تواند تفاوت را ایجاد کند ، ذخیره‌ی اطلاعات لاگ مهم در کنار هم کل فرآیند را سرعت می‌بخشد. تجمیع متمرکز همچنین به‌معنای داشتن داده‌های لاگ استاندارد است، که در زمان جستجوی اطلاعات در لاگ ها از منابع مختلف در زمان صرفه‌جویی می‌کند. بنابراین به‌طورکلی می‌توان گفت که یکی از مزیت‌های اصلی مدیریت لاگ در ذخیره‌سازی یکپارچه می‌باشد.۲)بهبود امنیت از طریق کاهش میزان آسیب‌پذیری‌ها، مانیتورینگReal_time و بهبود زمان شناسایی و پاسخ.در موارد نقض امنیتی و نفوذ که هر ثانیه می‌تواند به‌معنای آسیب بیشتر به سیستم توسط مهاجم باشد، ابزارهای مدیریت لاگ هشدارهای زمان واقعی قابل تنظیمی را ارائه می‌دهند که به شما این امکان را می‌دهد که به‌محض بروز مشکل واکنش نشان دهید و این بدین معنی است که مدیریت رخداد و اطلاعات امنیت خود را از واکنشی به فعالانه تغییر دهید و توانایی‌های مهار تهدید و امنیت خود را ارتقاء دهید. همچنین محیط فناوری اطلاعات به کمک مانیتورینگ Real_time ایمن‌تر خواهد شد و با انتخاب دقیق رویدادهایی که باید ثبت شوند می‌توانید امنیت را حتی بیشتر کنید.۳)بهبود مشاهده پذیری و قابلیت دید روی شرکت از طریق یک لاگ رخداد.۴)بهبود تجربه مشتری از طریق تجزیه‌وتحلیل داده‌های لاگ و مدل‌سازی پیش‌بینی‌کننده.تجزیه‌وتحلیل گزارش‌های مشتریان یک کسب‌وکار می‌تواند رفتار خاصی را پیش‌بینی کند و به تصمیم تجاری کمک کند، بنابراین شرکت‌ها متوجه شدند که داده‌هایی که ذخیره می‌کنند ممکن است حاوی اطلاعات ارزشمندی باشد.ازآن‌جایی‌که هر فایل لاگ از قطعات مختلف داده تشکیل شده‌است هدف تجزیه فایل لاگ شناسایی ساختارهای مشابه و امکان گروه‌بندی اطلاعات براساس آن ساختارها است. با تجزیه‌وتحلیل داده‌ها که شامل چندین فرایند مانند پاکسازی و تبدیل داده‌ها با هدف ایجاد مدل داده‌ای است که می‌تواند رفتار خاصی را پیش‌بینی کند یا اطلاعات جدیدی ارائه دهد.۵)قابلیت‌های عیب‌یابی سریع‌تر و دقیق‌تر از طریق تجزیه‌وتحلیل شبکه پیشرفته.یکی از پرکاربردترین موارد استفاده از لاگ رویداد (Event Log) برای تشخیص مشکلات ، عیب‌یابی شبکه است. هشدارهای بلادرنگ به‌طور قابل‌توجهی زمان مورد نیاز برای شناسایی و رسیدگی به یک مشکل را کاهش می‌دهد ، نیروی عظیمی از ابزارهای مدیریت لاگ در تجزیه‌وتحلیل لاگ ها (Log Analysis) وجود دارد. حجم زیادی از داده‌های ذخیره‌شده در لاگ ها در معرض جستجو و تجزیه‌وتحلیل سفارشی قرار می‌گیرند که بازآفرینی جدول زمانی رویدادهای مشکل‌ساز ، کشف ارتباط با رویدادهای دیگر و مشخص کردن منبع را آسان‌تر می‌کند درواقع (Log Management) به شما امکان کنترل بهتری بر محیط فناوری اطلاعات می دهد.چالش‌های متداول در مدیریت لاگ :صحبت کردن از داده لاگ یعنی صحبت کردن از داده‌ای گسترده و همیشه در حال تغییر که همواره نیاز به بازنگری دارد، داده های لاگ بسیار متنوع است وانفجار داده‌ها که ناشی از تکثیر دستگاه‌های متصل و همچنین انتقال به فضای ابری است، پیچیدگی مدیریت لاگ را برای بسیاری از سازمان‌ها افزایش داده است. یک راهکار مدیریت لاگ مدرن و کارآمد باید به این چالش‌های اساسی پاسخ دهد:_  استانداردسازی: ازآن‌جایی‌که مدیریت لاگ داده‌ها را از برنامه‌های کاربردی، سیستم‌ها، ابزار و میزبان های مختلفی جمع‌آوری می‌کند، تمام داده‌ها باید در یک سیستم واحد تجمیع شوند که از فرمت یکسانی پیروی می‌کند. این فایل لاگ به متخصصان امنیت اطلاعات وفناوری اطلاعات کمک خواهد کرد که به‌طور کارآمدی، داده‌های لاگ را تجزیه‌وتحلیل کرده و بینش‌هایی را ایجاد نمایند تا بتوانند خدمات حیاتی کسب‌وکار را به انجام برسانند._ حجم: داده‌ها با سرعتی باورنکردنی ایجاد می‌شوند. برای بسیاری از سازمان‌ها، حجم داده‌هایی که به‌طور مداوم توسط برنامه‌های کاربردی و سیستم‌ها ایجاد می‌شوند، جمع‌آوری، فرمت دهی، تجزیه‌وتحلیل و ذخیره نیازمند تلاش‌های بسیار زیادی است .یک سیستم مدیریت لاگ باید برای مدیریت مقدار بسیار زیاد داده و فراهم کردن بینش‌ها در زمان مناسب طراحی شود._ میزان تاخیر: شاخص گذاری یا Indexing در فایل لاگ می‌تواند یک فعالیت محاسباتی پرهزینه باشد که باعث ایجاد تأخیر بین زمان ورود داده به سیستم و زمان نمایش آن در نتایج جستجو و تصویرسازی(Visualization) شود. بسته به این‌که سیستم مدیریت لاگ چگونه داده هاIndexیا شاخص گذاری می‌کند، این تأخیر می‌تواند افزایش پیدا کند._ بار بالای IT : وقتی‌که مدیریت لاگ بطور دستی انجام شود، بسیار زمان‌بر و پرهزینه خواهد بود. ابزار مدیریت لاگ دیجیتال به خودکارسازی برخی از این فعالیت‌ها و سبک کردن مسئولیت متخصصان فناوری اطلاعات کمک می‌کند.بهترین راهکارهای Log Management :با توجه به حجم انبوه داده‌هایی که در دنیای دیجیتال امروز ایجاد می‌شوند، برای متخصصان فناوری اطلاعات مدیریت دستی و تجزیه‌وتحلیل لاگ ها در یک محیط فناوری گسترده غیرممکن شده‌است. به‌این‌ترتیب، آن‌ها به یک سیستمLog Management پیشرفته و ابزارهایی نیاز دارند تا جنبه‌های کلیدی فرایندهای جمع‌آوری، فرمت بندی و تجزیه‌وتحلیل داده‌ها را خودکارسازی کنند.در ادامه به برخی از ملاحظات کلیدی که سازمان‌ها باید در هنگام سرمایه‌گذاری روی یک سیستم(Log Management) به آن‌ها توجه کنند بیان می‌شود:_ اولویت‌بندی ابزار خودکارسازی برای کاهش بار IT :  مدیریت لاگ یک فرآیند زمان‌بر است که می‌تواند منابع را از یک سازمان فناوری اطلاعات(IT) تخلیه کند. بسیاری از کارهای تکراری مربوط به جمع‌آوری و تجزیه‌وتحلیل داده را می‌توان با استفاده از ابزارهای پیشرفته خودکارسازی کرد. سازمان‌ها باید در هر ابزار مدیریت لاگ جدید قابلیت‌های خودکارسازی را در اولویت قرار دهند و راهکارهای قدیمی را بروزرسانی کنند تا میزان تلاش‌های دستی در این فرایند کاهش پیدا کند._ استفاده از یک سیستم متمرکز برای دسترسی بهتر و بهبود امنیت : یک مدیریت لاگ متمرکز فقط دسترسی به داده را بهبود نمی‌بخشد، بلکه شدیداً قابلیت‌های امنیتی سازمان را تقویت می‌کند. ذخیره‌سازی و اتصال داده‌ها در یک مکان متمرکز به سازمان‌ها کمک می‌کند سریع‌تر ناهنجاری‌ها را شناسایی کرده و به آن‌ها پاسخ دهند. بدین صورت، یک سیستم مدیریت لاگ متمرکز می‌تواند به کاهش زمان شیوع یا همان بازه‌ی زمانی‌که هکر ها می‌توانند به‌صورت جانبی به بخش‌های دیگر سیستم راه پیدا کنند کمک کند._ ایجاد یک خط مشی نظارت( مانیتورینگ )و نگهداری سفارشی برای مدیریت بهتر حجم : با توجه به حجم داده‌هایی که ایجاد می‌شود، سازمان‌ها باید نسبت‌به اطلاعاتی که جمع‌آوری می‌شود و این‌که این اطلاعات چطور باید حفظ شود دقت لازم را به عمل آورند. سازمان‌ها باید یک تجزیه‌وتحلیل (آنالیز)در سطح سازمانی انجام دهند تا مشخص شود که چه ورودی‌هایی برای هر عملکرد حیاتی هستند._ استفاده از ابر (Cloud) برای افزایش مقیاس پذیری و انعطاف‌پذیری : با توجه به چشم‌انداز داده که روزبه‌روز در حال رشد است، سازمان‌ها باید مدنظر داشته باشند که برای سیستم مدیریت لاگ خود، روی یک راهکار مبتنی بر ابر سرمایه‌گذاری کنند. استفاده از ابر امکان انعطاف‌پذیری و مقیاس پذیری را فراهم می‌کند و به‌سادگی به سازمان‌ها این امکان را می‌دهد که ظرفیت پردازش و ذخیره‌سازی خود را نسبت‌به نیازهای متغیر افزایش یا کاهش دهند.ابزارها و فناوری هایLog Management :امروزه ابزارهای بسیاری به منظورهای مختلفی برای مدیریت لاگ در بازار عرضه شدند که هر کدام اهداف و جنبه‌های مشترک و مختلفی را تحت پوشش قرار می‌دهند.در ادامه چند ابزارOpen Source معرفی می شود:۱) ابزار(ELK)Elastic Stack : این ابزار یکی از پرکاربردترین ابزارهایی است که برای مدیریت لاگ از آن استفاده می‌شود ، زیرا این مجموعه ابزارها قوی‌ترین پوشش ثبت و تحلیل لاگ را در اختیار برنامه نویسان و DevOps قرار می دهد. این ابزار ترکیبی از سه سرویس جداگانهElasticsearch_Logstash_Kibana  است که همه آن‌ها متن باز هستند و توسط همان تیم توسعه یافته‌اند. این سه تکنولوژی در کنار هم بهترین تجربه‌ی سیستم ثبت رویداد را می‌دهند. به‌طورکلی ELK یک ترکیب همه‌کاره است ، پشته را می‌توان به‌عنوان یک برنامه کاربردی مستقل استفاده کرد یا با برنامه‌های موجود برای دریافت بروزترین داده‌ها یکپارچه شد. استفاده از عبارت Stack برای آن به این دلیل است که شامل چند ابزار است : ا _ Elasticsearch  : یک موتور جستجوی بسیار قدرتمند و مقیاس پذیر است که می‌تواند حجم زیادی از داده را ذخیره کند و به‌عنوان یک خوشه مورداستفاده قرار دهد.ا _  Logstash  : یک مخزن داده واحد است. درواقع جایی است که فایل‌های لاگ ذخیره، تجزیه، فیلتر و تجزیه‌وتحلیل می‌شوند.ازدلایل محبوب بودن آن می‌توان به این اشاره کردکه به‌راحتی با سایر محصولاتElastic ادغام می شود. علاوه‌بر این یک دسته کامل از پلاگین ها وجود دارد که این ابزار را بسیار انعطاف‌پذیر می‌کند.ا _ Kibana : امکان تحلیل داده‌های ذخیره‌شده درElastic و ایجاد داشبورد و نمودارهای مختلف را داراست. درواقع یک رابط کاربری گرافیکی است که امکان جستجو ،تجزیه‌وتحلیل و مصورسازی (Visualizations)مقادیر زیادی از داده‌های پیچیده از پایگاه داده Elasticsearch را می‌دهد.۲) ابزار Graylog : یک ابزار قدرتمند برای مدیریت گزارش‌ها می‌باشد که گزینه‌های زیادی برای تجزیه‌وتحلیل گزارش‌های ورودی از سرورهای مختلف در اختیار قرار می‌دهد. علاوه‌بر آن یک رابط کاربری خوب را به‌همراه ویژگی‌های بسیاری مانند جستجوی پیشرفته، ویژگی هشدار،تحمل خطا برای جلوگیری از دست دادن داده‌ها در صورت بروز مشکلات شبکه ارائه می‌کند.ابزار Graylog بر خلافElasticsearch یک راه‌حل تک برنامه‌ای در جمع‌آوری داده‌ها، تحلیل وVisualization ارائه می‌دهد و نیاز به نصب چند ابزار مختلف ندارد.Graylog داده ها را در MongoDB جمع‌آوری و ذخیره می‌کند و روی داشبورد های کاربر پسند به تصویرسازی داده‌ها می‌پردازد.اما باید توجه داشت که Graylogنمی‌تواند از فایل‌های Syslogبخواند بنابراین شما باید پیام‌های خود را مستقیماً به Graylog ارسال کنید.۳) ابزارLOGalyze : این ابزار یک پیشنهاد نسبتاً قدرتمند است که در زمینه مانیتورینگ شبکه و مدیریت لاگ ها کاربرد دارد و لاگ ها را از شبکه و میزبان‌های ویندوز و لینوکس جمع‌آوری می‌کند و به تجزیه‌وتحلیل آن‌ها می‌پردازد. همچنین برای استقرارهای تک سیستمی که به‌دنبال ترکیب ورود به سیستم از منابع شناخته‌ شده مانندApache،Postfix و غیره هستند و خروجی را درCSV،HTML، PDF یا فرمت‌های مشابه تولید می‌کنند به‌خوبی کار می‌کند .این ابزار بدون هیچ محدودیتی قابل نصب می‌باشد.۴) ابزار Rsyslog : این ابزار برای سیستم‌عامل‌های مشابه یونیکس می‌باشد. از نظر فنی، یک مسیریاب پیام با ورودی‌ها و خروجی‌های قابل بارگذاری پویا است . ابزارRsyslogدارای ویژگی‌هایی از قبیل (تنظیمات انعطاف‌پذیر، ارائه قابلیت‌های چند رشته‌ای، حفاظت از دستکاری فایل گزارش، ارائه قابلیت‌های فیلتر مبتنی بر محتوا، استفاده از امضای گزارش و رمزنگاری، پشتیبانی از پلتفرم‌های Big data)می باشد.۵) ابزار Data dog : این ابزار می‌تواند سرویس هایی مانند سرورها، پایگاه‌های داده و ابزارها را نظارت کند، درواقع یک ابزار نظارت و تجزیه‌ و تحلیل برای تیم‌های فناوری اطلاعات و DevOps است که می‌تواند برای تعیین معیارهای عملکرد و همچنین نظارت بر رویدادها برای زیرساخت‌هاو خدمات ابریCloud استفاده شود.Data dog از سیستم‌عامل‌های ویندوز، لینوکس و مک پشتیبانی می کند. نرم‌افزار مانیتورینگ و مدیریت لاگ Data dog برای استقرار در محل ،یا به‌عنوان یک نرم‌افزار به‌عنوان سرویس(SaaS) در دسترس است.۶) ابزارFlume : اگر به‌دنبال یک پلتفرم انتقال داده‌ی توزیع‌شده و قابل‌تحمل خطا برای چیزهای سنگین باشید ابزار Flume راهکاری عالی می باشد.این ابزار منبع باز که کد منبع آن به زبان جاوا نوشته‌شده است بهترین انتخاب در مجموعه داده‌های واقعاً بزرگ می‌باشد.۷) ابزارSplunk : این ابزار یکی از اولین و محبوب‌ترین ابزارهای متمرکز کننده لاگ می‌باشد. ابزارSplunk دارای زبان پرس وجوی قدرتمند برای جستجو و تجزیه‌وتحلیل است.همچنین استخراج میدان زمان جستجو ،فراتر از تجزیه در زمان مصرف است .این ابزار به‌طور خودکار داده‌هایی که اغلب به آن‌ها دسترسی پیدا می‌کند به ذخیره سازی سریع و داده‌هایی که به‌ندرت به آن‌ها دسترسی دارند را به ذخیره‌سازی کند منتقل می‌کند.درضمن این ابزار دارای ویژگی‌های غنی زیادی بوده و برای اکثر موارد فشرده سازی داده خوبی دارد.۸) ابزار GoAccess : این ابزار یک رابط کاربری مبتنی بر وب مناسب ارائه می‌دهد که از داخل مرورگر قابل‌اجرا است و اطلاعات را به‌صورت real_timeنمایش می‌دهد.ابزارGOAccess که به زبان برنامه‌نویسیC نوشته‌ شده است ، تقریباً از تمام فرمت‌های لاگ مانندApache،Nginx،Amazon S3،Cloudfront پشتیبانی می‌کند و برای کار با آن نیازی به نصب کتابخانه و ابزار دیگری نیست.شرکت‌های ایرانی ارائه‌دهنده خدمات در حوزه مدیریت لاگشرکت داده کاوان تصمیم یار(کوالاتک):شرکت کوالاتک در زمینه ارائه، مشاوره و آموزش خدمات نرم‌افزاری ( خدمات تخصصی تست نرم‌افزار و تضمین کیفیت) به سازمان‌های دولتی و خصوصی فعالیت می‌نماید.این شرکت ابزار مدیریت لاگ خود را این‌گونه توصیف می‌کند :سیستم مدیریت لاگ کوالاتک(Log Management)ابزاری است که به سازمان کمک می‌کند تا لاگ های مختلف نرم‌افزارها، اپلیکیشن‌ها و غیره را در این ابزار جمع‌آوری کند و آن‌ها را متناسب با نیاز خود سازماندهی نماید.خدماتی که این شرکت ارائه می‌دهد عبارتند از: تست اتوماتیک عملکردی، تست اتوماتیک کارایی، تست اتوماتیک امنیت، راه‌اندازی و مشاوره CI/CD، راه‌اندازی مدیریت لاگ، راه‌اندازی مانیتورینگ، راه‌اندازی آنالیز سورس کد. این مجموعه کمک می‌کند تا به‌طور سیستماتیک و مطابق نیازمندی شما، از ریسک‌های کیفی و هزینه‌های اضافی ناشی از عدم تست اصولی در مرحله توسعه و تولید جلوگیری کنید.ویژگی های ابزار مدیریت لاگ شرکت کوالاتکشرکت دانش بنیان پلتکو:پلتکو یک شرکت دانش بنیان است که با بهره‌گیری از کارشناسان ارشد حوزه معماری زیرساخت سرویس‌های سازمانی، خدمات یکپارچه‌سازی و مدیریت وب سرویس نظیر ESB، API MANAGER و غیره ارائه می‌دهد. یکی از محصولات این شرکت ابزار مدیریت لاگ است. یک نرم‌افزار مدیریت لاگ پلتکو دارای مزایایی از قبیل ذخیره‌سازی یکپارچه ، عیب‌یابی بهتر ، سیستم نظارت و هشدار ، تجزیه فایل لاگ ، بهبود امنیت و آنالیز و تحلیل داده‌ها،می باشد.شرکت دانش بنیان آتین آتیه اندیش:این شرکت با معرفی محصولاتی در حوزه مدیریت لاگ های سیستم و سامانه مدیریت هویت دنبال جایگاه مناسبی در صنعت فناوری اطلاعات ایران است. آتین یک سرویس مدیریت هویت و دسترسی است که با تمرکز ویژه بر رضایت مشتری بر بستر زیرساخت ابری توسعه‌یافته است. با استفاده از سامانه آتین مراکز و سرویس‌دهنده‌های فناوری اطلاعات به‌راحتی می‌توانند دسترسی دستگاه‌های مختلف داخل سازمان یا اشخاصی از جمله کارمندان ، شرکای تجاری و مشتریان را به تمامی سامانه ها به‌صورت متمرکز مدیریت نمایند. آتین تضمین می‌کند که دسترسی همه کاربران براساس سیاست واحد صورت گیرد و تمامی افراد و سرویس‌ها، احراز هویت، مجوز دهی و نظارت شوند. یکی از محصولات این شرکت سامانه‌ مدیریت لاگ است که خدمتی اضافه بر سامانه مدیریت هویت و دسترسی ارائه می‌کند.« این مطلب، بخشی از تمرین‌های درس معماری نرم‌افزار در دانشگاه شهید بهشتی است »#معماری _نرم‌افزار_ بهشتیمنابع :https://sematext.com/guides/log-management/https://geekflare.com/open-source-centralized-logging/https://www.crowdstrike.com/cybersecurity-101/observability/log-management/https://sematext.com/blog/best-log-management-tools/https://platco.ir/services/monitoring/log-manager/https://www.graylog.org/post/what-is-log-management-a-complete-logging-guide/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 21 Dec 2022 23:55:44 +0330</pubDate>
            </item>
                    <item>
                <title>Service Mesh</title>
                <link>https://virgool.io/@pourya.salahi76/service-mesh-hjivgod4jriy</link>
                <description>با افزایش محبوبیت میکروسرویس ها، اپلیکیشن‌های اولیه میکرو سرویس ها تحت تأثیر نسل جدیدی از ابزارهای توسعه، استقرار و مدیریت نرم‌افزار قرار گرفتند ، این ابزارها برای پشتیبانی از پایگاه کاربری گسترده‌تر و متنوع‌تر، به تکامل خود ادامه دادند و این امر منجر به ایجاد فناوری‌های پیشرفته‌تر شد.ا    Service Mesh راهی برای کنترل کردن اطلاعات تبادل شده بین بخش‌های مختلف یک اپلیکیشن می‌باشد این لایه که یک لایه زیرساختی برای اپلیکیشن به حساب می‌آید می‌تواند به‌خوبی سیستم را شفاف نماید، در حقیقت مستندات بسیار خوبی برای اپلیکیشن است که نشان می‌دهد قسمت‌های مختلف سیستم به چه نحوی با یکدیگر در ارتباط هستند به‌همین دلیل برای نحوه بهینه کردن ارتباط آن‌ها و جلوگیری از قطعی در اپلیکیشن به‌خصوص وقتی اپلیکیشن بزرگ می‌گردد مفید می‌باشد.ا    Service Mesh  مبتنی بر فناوری‌هایSidecar ساخته می‌شود تا یک محیط نظارت و مدیریت ارتباطات سرویس به سرویس کاملاً یکپارچه را فراهم کند. باید توجه داشت که بدون Service Mesh هر سرویس باید منطق ارتباط با دیگر سرویس‌ها را در خود سرویس ایجاد نماید این کار باعث می‌شود که برنامه‌نویس به‌جای تمرکز بر روی منطق و لاجیک برنامه به چگونگی ارتباط با سرویس مقصد بپردازد. همچنین مشکلات در ارتباط بین سرویس‌ها پشت هر سرویس مخفی می‌شود و فهمیدن آن دشوار می‌گردد.در Service Mesh هر جنبه‌ای از ارتباطات سرویس‌ها با یکدیگر مانند معیار پرمنس ذخیره می‌گردد .در کل اطلاعات جمع شده از Service Mesh این قابلیت را ایجاد می‌کند که اطلاعات قابل رؤیت بود و بتوان قوانین را برای ارتباط بین سرویس‌ها ایجاد نمود که درنتیجه آن پاسخگویی و در دسترس بودن سرویس‌ها بیشتر و در نتیجه ارتباطات بهینه می‌گردد.از ابزارهای آن نیز می توان به Isito،Linkerd،Conduit اشاره کرد.منابع:https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 03:05:58 +0330</pubDate>
            </item>
                    <item>
                <title>Single Sign On(SSO) and Identity Management</title>
                <link>https://virgool.io/@pourya.salahi76/single-sign-onsso-and-identity-management-coxvbddvk5td</link>
                <description>مدیریت هویت(Identity Management) یک بخش کلیدی از هر سازمانی است بدلیل این‌که هر سازمانی نیازمند مراقبت از اطلاعاتش دربرابر افراد بدون سطح دسترسی است و همچنین برای هر کارمند نیز باید محدودیت‌هایی تعیین گردد ، در واقع یک اصطلاح انتزاعی است و هر سازمانی متد و روش خاصی برای مدیریت هویت افراد طراحی کرده‌است.روش‌های احراز هویت و تعیین سطح می‌تواند مبتنی بر نقش، دایرکتوری، ورود به سیستم یا مبتنی بر نشانه باشد. اصطلاحSSO که مخففSingle Sign On می‌باشد یک روش احراز هویت است که کاربران را قادر می‌سازد تا با استفاده از تنها یک مجموعه اعتبارنامه با چندین برنامه و وب‌سایت احراز هویت را به‌صورت ایمن انجام دهند.این روش بر اساس یک رابطه اعتماد ایجاد شده بین یک برنامه کاربردی و یک ارائه دهنده هویت است و این رابطه اعتماد اغلب براساس گواهی ردوبدل شده میان ارائه دهنده هویت و ارائه دهنده خدمات است. این گواهی می‌تواند برای امضای اطلاعات هویتی که از ارائه دهنده هویت به ارائه‌دهنده خدمات ارسال می‌شود استفاده کرد تا ارائه دهنده خدمات از وجود یک منبع مطمئن، اطمینان حاصل کند.به بیان ساده‌تر(SSO) یک سرویس متمرکز تأیید هویت است که در آن کاربر تنها با استفاده از یک حساب کاربری( نام کاربری و رمز عبور) می‌تواند به چندین برنامه یا سایت دسترسی داشته باشد.در این شکل جریان ورود نشان داده شده است :توکن SSO :  مجموعه‌ای از داده‌ها یا اطلاعات است که در طی فرایندSSO  از یک سیستم به سیستمی دیگر منتقل می‌شود .داده‌ها می‌توانند به‌سادگی آدرس ایمیل کاربر و اطلاعاتی در مورد این‌که سیستم کد را ارسال می‌کند ،باشد. توکن ها باید به‌صورت دیجیتالی برای گیرنده توکن امضاء شوند تا تأیید شود که توکن از یک منبع مورد اعتماد می‌آید . گواهی‌نامه‌ای که برای این امضای دیجیتالی استفاده می‌شود در طی فرآیند پیکربندی اولیه مبادله شده‌است.باید توجه داشت که اصطلاحSame Sign On باSingle sign on یکسان نیست، زیرا هیچ رابطه اعتمادی بین نهادهایی که احراز هویت را انجام می‌دهند وجود ندارد و اغلب وابسته‌ به تکرار اعتبارنامه‌ها بین سیستم‌ها است و به اندازه هیچ‌یک از راه‌حل‌هایSingle Sign Onایمن نیست.علاوه بر این SSOدرواقع بخشی از یک مفهوم بزرگ‌تر به نام Federated Identity Management)مدیریت هویت متحد)است. بنابراین گاهی اوقات به‌عنوانFederated SSO نامیده می‌شود.  FIMبه یک رابطه اعتماد که بین دو یا چند دامنه یا سیستم‌های مدیریت هویت ایجاد می‌شود، اشاره دارد.مزایای(SSO) عبارتند از: امنیت قوی‌تر، تجربه کاری بهتر، بهبود بهره‌وری کارکنان، کاهش هزینه‌هامعایبSSO عبارتند از : در صورت دسترسی کاربران غیرمجاز می‌توانند به بیش‌از یک برنامه دسترسی پیدا کنند، اگر دسترسی از بین برود کاربران از چندین سیستم متصل به (SSO)قفل می‌شوند،سطوح خاصی از امنیت که ممکن است ورود هر برنامه به آن نیاز داشته باشد را پاسخگو نیست.منابع :https://www.techtarget.com/searchsecurity/definition/single-sign-onhttps://www.pingidentity.com/en/resources/blog/post/sso-vs-federated-identity-management.html</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 03:03:33 +0330</pubDate>
            </item>
                    <item>
                <title>Continuous Delivery</title>
                <link>https://virgool.io/@pourya.salahi76/continuous-delivery-mkweoa1zghnr</link>
                <description>تحویل مداوم یاContinuous Delivery  :توانایی اعمال تغییرات در محیط عملیات در هر لحظه با روش سریع و مطمئن و به‌طرز کاملاً پایدار می‌باشد. این تغییرات شامل همه انواع آن از جمله تغییرات پیکربندی در نرم‌افزار، زیرساخت و پلتفرم، افزودن ویژگی‌های جدید، رفع باگ و خطاها می‌باشد.به‌طورکلی تحویل مداوم (CD)به‌عنوان توانایی ارائه بروزرسانی‌های محصول به مشتریان در سریع‌ترین زمان ممکن و مکرر تعریف می‌شود، که این بروزرسانی‌ها شامل رفع اشکال ساده، عملکرد بهبود یافته یا یک رابط جدید طراحی شده باشد . CD فرآیند و پروتکل‌هایی را برای ارسال سریع کد در کوتاه‌ترین زمان ممکن تعریف می‌کند.هدف از تحویل مداوم این است که انتشار و تحویل نرم‌افزار را بخصوص برای سیستم‌های توزیع‌شده در مقیاس بسیار بزرگ و محیط‌های عملیاتی پیچیده به یک فرایند قابل‌پیش‌بینی و ساده تبدیل کند و این تنها درصورتی امکان‌پذیر است که کدهای نرم‌افزار همیشه در وضعیت آماده برای انتشار باشند. به‌این‌ترتیب روش سنتی فازهای ادغامIntegration،تست و پیکربندی و Hardening جای خود را به روش‌های اتوماتیک می‌دهد. همچنین زمان آماده شدن برای انتشار، زمان مهاجرت به محیط‌های دیگر و زمان برطرف کردن رخداد در محیط عملیات را کاهش می‌دهد.ارتباطContiuous DeliveryوDevOps: DevOps ترکیبی از فلسفه‌ها ،شیوه‌ها و ابزارهای فرهنگی است که توانایی سازمان را برای ارائه برنامه‌ها و خدمات با سرعت بالا افزایش می‌دهد .توسعه و بهبود محصولات با سرعتی سریع‌تر از سازمان‌هایی که فرایندهای توسعه نرم‌افزار سنتی و مدیریت زیرساخت استفاده می‌کنند ،با فرهنگDevops انجام شود. این سرعت سازمان‌ها را قادر می‌سازد تا به مشتریان خود خدمات بهتری ارائه دهند و به‌طور مؤثرتری در بازار رقابت کنند. بنابراین می توان تحویل مداوم را بخشی از فرهنگ Devopsدانست، منتها دامنه Devopsبسیار گسترده‌تر از CD است، درحالی‌که تحویل مداوم روشی است که برای اتوماتیک سازی زنجیره‌ی تحویل محصول است و بر روی این موضوع تمرکز دارد که فرایندهای مرتبط در کنار هم طوری اجرا شود که منجر شود محصول نرم‌افزاری سریع‌تر، امن‌تر و با تکرار بیشتری به دست مشتری برسد.مزایای استفاده از  Continuous Delivery :_ انتشار نرم‌افزار با حداقل ریسک_بروزرسانی‌ سریع‌تر_ کیفیت بیشتر_ فشار روانی کم‌تر بر روی توسعه دهنده هاچالش‌های موجود در Continuous Delivery :  ارتباط ضعیف بین تیم‌ها ،هزینه‌های زیرساختی، تست ضعیف ،اتکای بیش‌ازحد به اتوماسیون.منابع :https://www.redhat.com/en/topics/devops/what-is-continuous-deliveryhttps://martinfowler.com/bliki/ContinuousDelivery.htmlhttps://continuousdelivery.com/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 03:01:31 +0330</pubDate>
            </item>
                    <item>
                <title>Static Code Analysis (such as SonarQube)</title>
                <link>https://virgool.io/@pourya.salahi76/static-code-analysis-such-as-sonarqube-ksvakmwbk4hn</link>
                <description>در پروسه ساخت یک نرم‌افزار هدف این است که برنامه تولید شده از قابلیت اطمینان بالایی برخوردار باشد و تیم توسعه همواره در نظر دارد که سرعت توسعه بالا رود، لذا برای رسیدن به این مقصود تست کردن نرم‌افزار امری ضروری است و تحلیل کد استاتیک تست کردن را آسان میکند،اما نمی توان آن را جایگزین ابزارهای تست انتها به انتها دانست.تحلیل کد استاتیک بر خلاف روش‌های تست دستی یا اتوماتیک، قبل‌از ساخت برنامه انجام می‌شود .یعنی تحلیل کد استاتیک به ما این امکان را می‌دهد تا باگ های احتمالی، کدهای مشکوک و آسیب‌پذیری‌های امنیتی را حتی قبل‌از این‌که کد وارد محیط تولید شود، شناسایی کنیم.به‌طورکلی تحلیل کد استاتیک روشی برای رفع اشکال با بررسی کد منبع قبل‌از اجرای برنامه است این کار با تجزیه‌وتحلیل مجموعه‌ای از کدها در برابر مجموعه‌ای از قوانین کدگذاری انجام می‌شود .تحلیل استاتیک نمی‌تواند تمام ایرادات یک برنامه را تشخیص دهد همچنین تحلیل استاتیک دربرابر مسائلی چون عدم وجود درک از مقصود توسعه‌دهنده، نقص‌های احتمالی منجر به مثبت کاذب و منفی کاذب و قوانینی که به‌طور ایستا قابل‌اجرا نیستند نمی‌تواند پاسخی ارائه دهد.مزایای ابزارهای تحلیل استاتیک عبارتند از: سرعت ، عمق و دقت باید توجه داشت که در هنگام تصمیم‌گیری اینکه کدام ابزار برای شما مناسب است مواردی چون زبان برنامه‌نویسی واستانداردها را در نظر بگیریم.ابزار SonarQube : یکی از محبوب‌ترین ابزارهای تحلیل کد استاتیک ابزارSonarQube است.این ابزار یک پلتفرم متن باز برای بازرسی مداوم کیفیت کد است و بررسی‌های خودکار را از طریق تجزیه‌وتحلیل کد استاتیک انجام می‌دهد.این ابزار می‌تواند گزارش‌های متنوع ازجمله گزارشات کدهای تکراری، استانداردهای کدگذاری، تست‌های واحد، پوشش کد، پیچیدگی کد، اشکالات و آسیب‌پذیری‌های امنیتی ارائه دهد .همچنین می‌تواند با محیط‌های توسعه معروف همانندVisual studio codeوIntelliJ IDEAاز طریق پلاگینSonar Lint ادغام شود.درضمن این ابزار از بیش‌از۲۵ زبان برنامه‌نویسی قابل‌توجه همانندC#،Java،PHP پشتیبانی می‌کند.منابع :https://www.amazon.com/Secure-Programming-Static-Analysis-Brian/dp/0321424778https://www.wiley.com/en-ie/Static+Analysis+of+Software:+The+Abstract+Interpretation-p-9781848213203https://www.bitegarden.com/static-code-analysis-with-sonarqube</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:59:36 +0330</pubDate>
            </item>
                    <item>
                <title>Monitoring Tools (such as Prometheus)</title>
                <link>https://virgool.io/@pourya.salahi76/monitoring-tools-such-as-prometheus-wjfu6et1vcq0</link>
                <description>نظارت با بررسی‌های موقت یا دوره‌ای و ارزیابی‌های سریع و سبک از عملکرد و مسائل عملیاتی یک مداخله، توسط افراد داخلی برنامه مداخله یا سازمانی که در آن اجرا می‌شود همراه بوده‌است .پایش یک سامانه یک ابزار کلیدی و مهم برای مدیریت منابع نرم‌افزاری و سخت‌افزاری و ارائه اطلاعات مستمر برای آن منابع و همچنین برای برنامه‌های کاربردی در سامانه است.ابزارهای پایش به‌طور جامع موارد و منابع شناسایی شده در سامانه را برای ناهنجاری رصد می‌کند در تشخیص یک رفتار غیرعادی سیستم پایش تلاش می‌کند تا این نمونه یا منبع را به‌طور خودکار تعمیر کند، درصورتی‌که مانیتور مربوطه دارای یک عمل بهبود خودکار باشد.در سامانه‌های ابری و بزرگ نظارت برای حفظ و در دسترس بودن سیستم و عملکرد درست سامانه امری ضروری است، این ضرورت هم برای ارائه‌دهندگان سرویس به مشتری و هم برای مصرف‌کنندگان سرویس مهم و حیاتی می‌باشد نظارت می‌تواند به ۲ شکل متفاوت پایش سطح بالا و پایش سطح پایین انجام شود.مزایای مانیتورینگ:۱ ) نظارت اصلاحات و بهبودهای تدریجی را تسهیل می‌کند.۲) فرآیند پیاده‌سازی می‌تواند به توسعه استراتژی‌های متناسب با اندازه‌گیری آن کمک کند.۳) نظارت می‌تواند به سیستماتیک کردن فرایند ارزیابی کمک کند .۴)در نظارت هزینه کم‌تر و سریع‌تر از ارزیابی است.۵) نظارت پایه و اساس ارزیابی را تعیین و آن را تسهیل می‌کند.۶) نظارت به سیستم بندی مداخلات تغییر و فرآیند اجرا کمک می‌کند.ابزارPrometheus:این ابزار یک راه‌حل نظارتی منبع باز است که در درجه اول بر روی جمع‌آوری و تجزیه‌وتحلیل داده‌ها براساس داده‌های سری زمانی متمرکز شده‌است .این به کاربران امکان می‌دهد تا با استفاده از مجموعه ابزار داخلی قابلیت‌های نظارت را تنظیم کنند. این یک راه‌اندازی مانیتورینگ ایده‌آل برای محیط‌های کانتینری مانندKubernetes و بهترین ابزار نظارت بر سرور منبع باز است .به‌طورکلی سهولت استفاده، تطبیق‌پذیری و گزینه‌های یکپارچه سازی این نرم‌افزار مانیتورینگ آن را در بین دیگر نرم‌افزارهای نظارت و هشدار برجسته کرده‌است. این به‌خوبی با IOT، نظارت ابری و به‌طورکلی هر مورد نظارتی دیگری مناسب است. با همه این‌ها، تنها موقعیتی کهPrometheus در آن رشد نکرده است، درمورد جمع‌آوری معیارهای مبتنی بر روش Push است که البته راه‌حل‌هایی برای آن ارائه‌شده است. اگرچه Prometheusدارای Push gatewayبرای کنترل معیارهای مبتنی بر روش Pushاست، بااین‌حالPush gateway قادر به تبدیلPrometheus به یک سیستم نظارتی مبتنی برPush نیست بلکه تنها هدف آن این است که به عنوان نوعی حافظه پنهان(Catch) برایjob های کوتاه‌مدت عمل کند.منابع:https://devopscube.com/best-opensource-monitoring-tools/https://link.springer.com/article/10.1007/s00607-014-0398-5https://sensu.io/blog/introduction-to-prometheus-monitoring</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:56:40 +0330</pubDate>
            </item>
                    <item>
                <title>Log Management Tools(such as ELK)</title>
                <link>https://virgool.io/@pourya.salahi76/log-management-toolssuch-as-elk-v6rou0q75bgv</link>
                <description>مدیریت لاگ( Log Management) یک اصطلاح جامع است که عبارت است از : جمع‌آوری، ذخیره، پردازش، ترکیب و تجزیه‌وتحلیل داده از برنامه‌های کاربردی جداگانه، با هدف بهینه‌سازی عملکرد سیستم ،شناسایی مشکلات فنی، مدیریت بهتر منابع، تقویت امنیت و بهبود تطبیق پذیری.لاگ یک فایل تولید شده توسط رایانه است که فعالیت درون یک سیستم‌عامل یا برنامه‌های کاربردی نرم‌افزار را ثبت می‌کند.. فایل لاگ بطور خودکار هر گونه اطلاعات طراحی شده توسط مدیر سیستم را ثبت می‌کند از جمله پیام‌ها، گزارش‌های خطا، درخواست‌هاو انتقال فایل. مدیریت لاگ موضوعی محبوب در بین مدیران سیستم و توسعه‌دهنده دهندگان است، به‌همین دلیل استفاده از لاگ برای اهداف امنیتی ،بهبود عملکرد یا فقط عیب‌یابی در بسیاری از بخش‌های فناوری اطلاعات و نقش‌های شغلی گسترده است.مدیریت لاگ (Log Management)معمولاً در یکی از دسته‌های اصلی زیر جای می‌گیرد: جمع‌آوری، مانیتورینگ ، تجزیه‌وتحلیل ،نگهداری، جستجو(Indexing)و گزارش‌گیریاهمیت مدیریت لاگ: یک راهکار مدیریت لاگ کارآمد به سازمان‌ها امکانات زیر را می‌دهد:۱ )ذخیره سازی یکپارچه داده‌ها از طریق تجمیع متمرکز لاگ۲ )بهبود امنیت از طریق کاهش میزان آسیب‌پذیری ها، مانیتورینگReal_Timeو بهبود زمان‌شناسایی و پاسخ۳) بهبود مشاهده پذیری و قابلیت دید روی شرکت از طریق یک لاگ رخداد مشترک۴) بهبود تجربه مشتری از طریق تجزیه‌وتحلیل داده‌های لاگ و مدل‌سازی پیش‌بینی‌کننده5 )قابلیت‌های عیب‌یابی سریع‌تر و دقیق‌تر از طریق تجزیه و تحلیل شبکه پیشرفتهچالش‌های متداول در مدیریت لاگ: استانداردسازی، حجم، میزان تأخیر ، بار IT بالابهترین راهکارهای مدیریت لاگ عبارتند از:_اولویت‌بندی ابزار خودکارسازی برای کاهش بار IT_استفاده از یک سیستم متمرکز برای دسترسی بهتر و بهبود امنیت_ ایجاد یکPolicy مانیتورینگ و نگهداری سفارشی برای مدیریت بهتر حجم_ استفاده ازCloud برای افزایش مقیاس پذیری و انعطاف‌پذیریابزارELK Stack مخفف شده سه کلمهElasticsearch_logstash_Kibana است.این ۳ تکنولوژی متن باز در کنار هم بهترین تجربه‌ی سیستم ثبت رویداد را می‌دهند. logstashرویدادها را به‌صورت بر خط از تکنولوژی‌های مختلف دریافت و پردازش و درElasticsearch ذخیره می‌کند.Kibana امکان تحلیل داده‌های ذخیره‌شده در Elastic و ایجاد داشبورد و نمودارهای مختلف را داراست. ELK پرطرفدار است، زیرا این مجموعه ابزارها قوی‌ترین پوشش ثبت و تحلیل لاگ ها را در اختیار برنامه نویسان و DevOpsقرار می دهد.منابع:https://sematext.com/guides/log-management/https://geekflare.com/open-source-centralized-logging/https://www.crowdstrike.com/cybersecurity-101/observability/log-management/https://sematext.com/blog/best-log-management-tools/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:54:42 +0330</pubDate>
            </item>
                    <item>
                <title>Container Orchestration(such as Kubernetes)</title>
                <link>https://virgool.io/@pourya.salahi76/container-orchestrationsuch-as-kubernetes-qekhnadzoolp</link>
                <description>اگر در مقیاس بزرگ تعداد بسیار زیادی Dockerو با انواع مختلفی داشته باشیم و بخواهیم آن‌ها را مدیریت کنیم، ابزارهای سازماندهی Containerها(Container Orchestration) برای خودکارسازی فرایندها به کمک ما می‌شتابند. ابزارهای مدیریت و سازماندهی Containerها که لغت ارکستراسیون کانتینرها نیز برای آن‌ها بکار می‌رود، فرایند مدیریت، مقیاس پذیری، نگهداری و استقرار کانتینرها را خودکارسازی می‌کند. این ابزارها می‌توانند برای زمان‌بندی اجرا و ساخت کانتینرها، نحوه اختصاص منابع به آن‌ها، میزان سلامت هر یک از کانتینر ها، نحوه مقیاس پذیری آن‌ها و راه‌اندازی دوباره هر کانتینر، نحوه توزیع بار، کاهش خطای انسانی در مدیریت داکرها، ساده‌سازی عملیات‌های مرتبط با داکرها و بسیاری موارد دیگر بکار روند.مزایای استفاده از Container Orchestration :  عملیات‌های ساده شده، قدرت تحمل و تاب آوری، امنیت بیشتر ابزار Kubernetesیک ابزار متن باز برای ارکستراسیون کانتینرها است که با استفاده از آن می‌توان کانتینرها را مدیریت ،مقیاس کرد و استقرار داد. این ابزار وقتی بکار می‌آید که تعداد زیادی کانتینر که ممکن است در سرورهای مختلف مستقر باشند را می‌خواهیم مدیریت کنیم به این منظور این ابزار به توسعه‌دهندگان و متخصصانDevOpsیکAPI ارائه می‌دهد که می‌توان با آن کنترل کرد که هر کانتینر چگونه و کجا run شود .به گروهی از کانتینرها در ادبیات Kubernetes نام Pood داده می‌شود که در واقع واحد عملیاتی برای Kubernetes است یعنی Kubernetesیک یا چند کانتینر که در یک Pood قرار گرفته است را می‌تواند اجرا کند، نه این‌که کانتینر به‌صورت مستقل اجرا شود. یک خوشه(Cluster) مجموعه‌ای از چندین گره است که در کنار هم قرار می‌گیرند. معمولاً اگر یکی از گره‌ها دچار مشکل شود نرم‌افزار از طریق بقیه گره ها همچنان می‌تواند بدون مشکل کار کند.منابع :https://docs.docker.com/get-started/orchestration/https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-kubernetes/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:52:21 +0330</pubDate>
            </item>
                    <item>
                <title>Docker and Containerization</title>
                <link>https://virgool.io/@pourya.salahi76/docker-and-containerization-p2r83fgk9txs</link>
                <description>ا   Containerها راه‌حل‌هایی هستند به‌منظور کسب اطمینان از این‌که نرم‌افزار هنگام جابه‌جایی از یک محیط اولیه به محیط ثانویه به‌صورت مطمئن اجرا شود و بر بستر Docker قرار می‌گیرند.ا   Containerها به توسعه‌دهنده این اجازه را می‌دهد تا تمام بخش‌های مورد نیاز مانند کتابخانه‌ها و دیگر وابستگی‌ها را بسته‌بندی کرده و به‌عنوان یک پکیج مستقل روی سیستم‌های دیگر استفاده کند.باید توجه داشت که Containerها قبل‌از پدید آمدن Docker نیز وجود داشتند اما این Docker بود که مفهوم Containerها را متحول کرد. Container ها نسبت‌به ماشین‌های مجازی از منابع کمتری استفاده می‌کنند و همچنین خیلی سریع قابلیت اجرا پیدا می‌کند.ا   Containerها به ۳ بخش تقسیم می‌شوند :۱)سازنده(builder) :  فناوری مورد استفاده برای ساخت کانتینر.۲)موتور (Engine) : فناوری مورداستفاده برای راه‌اندازی کانتینر۳)تنظیم(Orchestration) : فناوری مورداستفاده برای مدیریت و تنظیمات کانتینرمزایای Container : چابک بودن و کارایی بالا، قابل حمل و سبک بودن، قابل مقیاس پذیری با سرعت بالا و نگهداری، امنیت داکر.ا  Docker  : ابزاری متن باز جهت ساده‌سازی در ساخت و اجرای برنامه‌ها با استفاده ازContainerها می‌باشد و این اجازه را به ما می‌دهد تا برنامه و تمام کامپوننت های آن را به شکل یک بسته درآورده و در هر ماشینی بدون نیاز به انجام تنظیماتی که ماشین مبداء داشته آن را اجرا کنیم.مهم‌ترین هدف ایجادDocker این بود که کاربران به‌راحتی بتوانند باContainerارتباط برقرار کنند یا به نوعی دیگر با آن تعامل داشته باشند.مزایاییDocker :قابلیت حمل‌ونقل و بهبود یکپارچه، حجم کم و بروزرسانی بسیار دقیق، ایجاد کانتینر به‌صورت خودکار، داشتن نسخه پشتیبان از کانتینراجزای اصلیDocker شامل ۳دسته Docker Daemon،DockerCLI،Docker Imageمی باشد.موارد استفاده از Docker :اگر برنامه شما در یکی از شاخه‌های زیر قرار می‌گیرد استفاده ازDocker پیشنهاد می‌شود:۱ )یادگیری تکنولوژی‌های جدید۲) ایزوله کردن برنامه باید توجه داشت در زمانی‌که برنامه پیچیده است و یا مدیر سیستم وجود ندارد و یا نیاز به بهترین کارایی ممکن را دارید استفاده ازDockerتوصیه نمی‌شود.منابع :https://www.docker.com/resources/what-container/https://www.alibabacloud.com/knowledge/what-is-containerization</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:49:27 +0330</pubDate>
            </item>
                    <item>
                <title>Message Queue(such as Kafka and Rabbit MQ)</title>
                <link>https://virgool.io/@pourya.salahi76/message-queuesuch-as-kafka-and-rabbit-mq-q6rigzexuklz</link>
                <description>بطور کلی مهم‌ترین هدف  Message Queueها در صنعت نرم‌افزار ایجاد ارتباط بین سیستم‌های نرم‌افزاری مختلف به‌صورت آسنکرون یا غیر هم‌زمان است. همچنین Message Queueها ایجاد و نگهداری برنامه‌ها را ساده می‌کند و باعث کاهش پیچیدگی می‌شود، وقتی‌که مقیاس نرم‌افزار بزرگ می‌شود و تعداد سیستم‌ها بالا می‌رود استفاده از آن سبب کاهش پیچیدگی و افزایش بهره‌وری می‌گردد. در Message Queueing یا صف‌بندی پیام همه پیام‌ها توسط یک برنامه تولیدکننده(Producer)، تولید می‌شوند و به یک صف پیام، Push می‌شوند. این فرایند به Enqueuingمعروف است. پیام‌های Push شده در این صف باقی می‌مانند تا زمانی‌که یک برنامه مصرف‌کننده(Consumer) متصل شده و این پیام‌ها را واکشی کند. این فرایند به Dequeuingمعروف است. هر دو فرایندDequeueوEnqueue  به‌طور مستقل توسط برنامه‌های ConsumerوProducer انجام می‌شوند و این امکان را داریم که یک پیام را در انتظار دریافت یکConsumer، در یک صف پیام نگه داریم بنابراین فرآیند Push شدن پیام به صف توسط برنامه Consumerبه عنوان Message Queueing صف بندی پیام شناخته می شود. در صنعت نرم‌افزار Message Queue های مختلفی ساخته شدند مثلKafkaوRabbit MQ که هدف اصلی تمام آن‌ها ایجاد ارتباط بین چند برنامه یا سرویس مختلف در بهینه‌ترین زمان ممکن است.Message Queue
ابزارRabbit MQ یک Message broker مانند یک میانجی برای سرویس‌های مختلف عمل می‌کند. هدف از اجرای برنامه‌هایMessage broker کم کردن بار و کاهش زمان پردازش ها در سرور است. و یکی از بهترین انتخاب‌ها برای ارتباط برقرار کردن بینMicroserviceها می‌باشد.به بیان ساده‌تر یک نرم‌افزار برای انتقال پیام بین سیستم‌ها است که با استفاده از آن می‌توانیم بین سیستم‌های مختلف پیام ارسال کنیم و عملیات صف‌بندی به‌خوبی انجام دهیم.و از معایب آن می‌توان به‌سرعت کم آن اشاره کرد.ابزارKafka یک پلتفرم توزیع‌شده برای پردازش داده‌های جریانی بوده و قادر به رسیدگی و پردازش رویدادها بسیار زیاد به‌صورت هم‌زمان است. توانایی Kafka برای ارائه جریان‌های عظیم داده و پیام، همراه با تحمل خطای بالا، آن را جایگزین برخی از سیستم‌های پیام‌رسانی مرسوم مانند AMQPوJMSو غیره کرده‌است.اصلی‌ترین کاربردهای Kafkaشامل موارد زیر است:۱- ایجاد خطوط انتقال داده‌های جریانی و بهنگام که داده‌ها را میان سیستم‌ها و برنامه‌ها به‌صورت قابل‌اطمینانی انتقال داده و ردوبدل می‌کنند.۲-  ایجاد برنامه‌های کاربردی برای داده‌های جریانی و به هنگام که به‌موقع نسبت‌به جریانی از داده‌ها واکنش نشان داده و آن‌ها را انتقال می‌دهد.منابع :https://stiller.blog/2020/02/rabbitmq-vs-kafka-an-architects-dilemma-part-1/https://www.rabbitmq.com/getstarted.htmlhttps://www.cloudamqp.com/blog/what-is-message-queuing.htmlhttps://www.simplilearn.com/kafka-vs-rabbitmq-article</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:45:23 +0330</pubDate>
            </item>
                    <item>
                <title>Business Rules Management Systems (BRMS)</title>
                <link>https://virgool.io/@pourya.salahi76/business-rules-management-systems-brms-a7x1bgelef6p</link>
                <description>در هر سازمانی قوانین تجاری به مثابه بلوک‌های ساختاری سازمانی خط‌مشی و سیاست ها می باشند، که برای دستیابی به اهداف استراتژیک استفاده می‌شود قوانین کسب‌وکار پارامترهایی را برای نحوه اجرای وظایف و نحوه اجرای عملکردهای سازمانی تعیین می‌کند. هنگامی‌که قوانین کسب‌وکار را ایجاد و مدیریت و خودکار می‌کنید درواقع درگیر مدیریت قوانین تجاری با هدف استفاده از منابع کم‌تر برای دستیابی به اهداف مشابه هستید.سیستم مدیریت قوانین کسب‌وکار BRMS پلتفرمی است که برای خودکارسازی منطق تصمیم‌گیری به‌عنوان یک قانون تجاری در بین برنامه‌ها طراحی‌شده است. به‌جای ادغام کد منبع براساس یک برنامه‌ی کاربردی ،یک پلتفرم BRMSقوانین تجاری مدیریت را از کد برنامه بیرون می‌کند درنتیجه چندین برنامه می‌تواند همزمان از قوانین تجاری تعیین‌شده استفاده کنند.دلایل نیاز به استفاده از BRMS:  با توجه به این‌که امروز هر صنعتی توسط مجموعه‌ای از قوانین اداره می‌شود، بنابراین پیاده‌سازی یک سیستم BRMS در اکثر سازمان‌ها نیاز است: ازجمله مدیرانی که می‌خواهند با سرعت بیشتری تصمیمات آگاهانه بگیرند ، شرکت‌هایی که می‌خواهند انطباق را بهبود بخشند ، سازمان‌هایی که می‌خواهند دقت و کارایی را در تصمیم‌گیری بهبود بخشند و همچنین مشاغل با سیاست‌های داخلی برای کارمندان، مشتریان و شرکا و به‌طورکلی هر کسب‌وکار سازمان یا نهادی که توسط قوانین اداره می‌شود.مزایای سیستم مدیریت قوانین کسب‌وکار BRMS :۱- توانایی مقیاس کردن قوانین تصمیم‌گیری در چندین برنامه.۲- افزایش کارایی از طریق تصمیم‌گیری خودکار، کاهش نیاز به پردازش دستی تصمیمات تکراری۳- از رعایت سیاست‌ها و قوانین و مقررات قابل اجرا اطمینان حاصل می‌کنید .۴- خدمات مشتری بهبود می یابد.۵- ویژگی‌های امنیتی پیشرفته قوانین کسب‌وکار را از تغییر، از دست دادن یا دسترسی افراد غیرمجاز محافظت می‌کند . ۶- تجزیه‌وتحلیل و بهبود منطق تصمیم‌گیری افزایش می یابد.منابع:https://www.trustradius.com/business-rules-management-brmshttps://www.processmaker.com/blog/5-benefits-of-a-business-rules-management-system-brms/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:43:36 +0330</pubDate>
            </item>
                    <item>
                <title>Business Process Management Systems(BPMS)</title>
                <link>https://virgool.io/@pourya.salahi76/business-process-management-systemsbpms-gmcas48pdlfg</link>
                <description>مدیریت فرآیند کسب‌وکار  (BPMS):روشی برای بهبود واستانداردسازی فرایندها در سازمان است که می‌تواند خطاهای انسانی و شکاف‌های فرآیند را از بین برده و درعین‌حال کارایی و انطباق و بهره‌وری را بهبود بخشد. سیستم مدیریت فرآیند کسب‌وکار یا( سیستم BPMS ) از ابزارها و روش‌های مختلفی برای طراحی، مدل‌سازی، اجرا ،نظارت، بهینه‌سازی فرآیندهای تجاری استفاده می‌کند.یک فرایند تجاری، رفتار افراد، سیستم‌ها ،اطلاعات و سایر چیزها را برای ایجاد نتایج همسو با استراتژی سازمان هماهنگ کرده و این امکان را می‌دهد تا با سیستم مدیریت گردش کار ،تجزیه‌وتحلیل ، اتوماسیون فرآیندهای کسب‌وکارتان را بهبود بخشید.تفاوت BPMوBPMS:درواقع  BPMیک متد ، تکنیک یا روش کار است و BPMS مجموعه تکنولوژی‌هایی است، برای کمک به ساخت اپلیکیشن‌ها یا سیستم‌های نرم‌افزاری جهت اتوماتیک کردن فرآیندها. امروزBPMS می‌تواند برای طیف وسیعی از تکنولوژی‌های اتوماسیون فرایند بکار رود.دستاوردهای سازمانی پیاده‌سازی BPMS :1-  تولید نرم‌افزارهای مخصوص سازمانی با هزینه کم2- اتوماتیک و مکانیزه کردن فرآیندهای تجاری شرکت‌ها3- حذف امور تکراری و تصمیم‌گیری هوشمندانه‌ ی سیستمی و افزایش بهره‌وری4- نظارت بر چرخه‌های کاری و گردش امور به‌صورت مکمل با نرم‌افزار CPM5-  یکپارچه‌سازی نرم‌افزارهای مختلف و مدیریت آن‌ها6- گزارش‌گیری و بهره‌گیری از هوش تجاری با ارائه گره های مشکل‌زا در فرآیند ها7- افزایش راندمان و بازده، سرعت و دقت گردش کار، رضایت مشتریان و کارمندان8- حذف منابع فیزیکی و هزینه‌های اضافی با قابلیت ایجاد فرایندهای متنوع و بروزرسانی‌ها9- بهبود گردش کارها، الکترونیک شدن فرم‌ها، افزایش بلوغ سیستم و همگام‌سازی با CRMوERPمنابع :https://www.isixsigma.com/dictionary/business-process-management-system-bpms/https://kissflow.com/workflow/bpm/what-is-bpms/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:41:19 +0330</pubDate>
            </item>
                    <item>
                <title>API Gateway</title>
                <link>https://virgool.io/@pourya.salahi76/api-gateway-knheo8ue4vaw</link>
                <description>در مفهوم API Gateway یک واسط کاربری است که میان کلاینت و سرویس قرار می‌گیرد و سطح انتزاعی را بین آن‌ها ایجاد می‌کند .با وجود API Gateway دیگر نیازی نیست که کلاینت برای دریافت داده‌های مورد نیاز با چندین سرویس تعامل کند. درخواست خود را به API Gateway ارسال می‌کند و این API Gatewayاست که تشخیص می‌دهد برای پاسخ به درخواست کلاینت به کدام سرویس‌ها باید درخواست بدهد و سرویس‌ها پاسخ خود را به API Gateway ارسال می‌کنند و API Gateway پاسخ نهایی را برای کلاینت ارسال می‌کند. بنابراین زمانی‌که تعداد درخواست‌ها بالا می‌رود زمان پاسخ به کلاینت ها به شکل چشمگیری کاهش پیدا نمی‌کند و هر یک از کلاینت ها طی مدت زمان مطلوبی می توانند داده های مورد نیازشان را دریافت کنند.توجه داشت که API Gateway به‌خودی‌خود مفهوم کاملی نیست و به‌تنهایی کاربردی ندارد، ولی وقتی درون مجموعه قرار می‌گیرد یک وظیفه‌ی مشخص را انجام می‌دهد و مجموعه را کامل می‌کند . به‌طورکلی اگرچه هر سرویس با حداکثر خودمختاری مسئول انجام یک کارکرد مشخص در دامنه سیستم است ،اما مدیریت کل سیستم و انجام اموری نظیر احراز هویت، تقسیم بار، مجوز دهی، لاگ گیری، مانیتورینگ و غیره نیاز به یک مدیریت/ ابزار متمرکز غیر از سرویس‌ها دارد که می‌تواند توسط API Gateway پیاده‌سازی شود. درصورتی‌که از این الگو استفاده نشود کلیه موارد مدیریتی ذکر شده به‌صورت کاملاً توزیع شده توسط سرویس‌ها مدیریت خواهد شد .از جمله ابزارهای مطرح برای آن می توان بهAmazon API GatewayوIBM API Connect  اشاره کرد.ا API Gateway و client  به عنوان انتزاعی میان service قرار میگیرد.
مزایای استفاده از API Gateway :بزرگ‌ترین مزیت آن از بین بردن معایب روش دسترسی مستقیم است. عدم وابستگی به معماری داخلی سیستم ما باعث می‌شود کارRefactoring  ساده‌تر قابل اجرا باشد و دیگر برای ترکیب یا تجزیه سرویس‌های مختلف دغدغه‌های قبل را نداشته باشیم. ارائه API تخصصی برای هر کلاینت باعث افزایش بهره‌وری و بهبود خروجی‌ها و در یک کلام UX بهتر می‌شود. کاهش تعداد درخواست‌های ارسالی از کلاینت هم مورد بعدی است که بهره‌وری کار را بالاتر می‌برد.معایب استفاده از API Gateway :بزرگ‌ترین ایراد این روش اضافه شدن یک ماژول بزرگ به سیستم است که باید همیشه آنلاین باشد و درصورتی‌که عملکرد درستی ارائه نکند کل سیستم با مشکل مواجه خواهد شد .با توجه به این‌که تعامل با هر کدام از میکرو سرویس‌ها باید در API Gateway پیاده‌سازی شود و به ازای هر کلاینت هم نیاز داریم که پیاده‌سازی اختصاصی داشته باشیم ،این احتمال وجود دارد که همین API Gateway به سدی برای تیم توسعه تبدیل شود. زمانی‌که یک سرویس به‌روز می‌شود کلاینت ها باید منتظر بمانند تا این بروزرسانی در Gateway ارائه شود ،به‌همین دلیل باید توسعهAPI Gateway ما طوری باشد که به‌سادگی قابل تغییر و بروزرسانی باشد.منابع :https://github.com/Sobi1995/ArticleProject/tree/master/Api%20Gateway/Gateway.WebApihttps://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-patternhttps://www.redhat.com/en/topics/api/what-does-an-api-gateway-do</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:37:59 +0330</pubDate>
            </item>
                    <item>
                <title>ESB</title>
                <link>https://virgool.io/@pourya.salahi76/esb-jzgzlfgtdx6k</link>
                <description>گذرگاه سرویس سازمانی( Enterprise Service Bus) بستر مناسبی برای یکپارچگی کل نرم‌افزارهای سازمان فراهم می‌آورد.درواقع ESBیک میان افزار است که برای ادغام سیستم‌ها و برنامه‌های مختلف سازمان استفاده می‌شود و جایگزین ارتباط نقطه به نقطه وب سرویس های سازمان می‌شود . ESB یک لایه انتزاعی است که به‌عنوان یک مترجم سراسری در حوزه وب سرویس ها عمل می‌کند و برقراری ارتباط بین چندین سیستم را که با چند زبان متفاوت صحبت می‌کنند ممکن می‌سازد. هدف یک گذرگاه خدمات سازمانی ایجاد ارتباط بین سرویس‌های فناوری اطلاعات و برنامه‌های کاربردی مختلف در سازمان شما بدون نیاز به تغییر کد است.باید توجه داشت که در موارد یکپارچه‌سازی حجم زیادی از داده‌ها، پیاده‌سازی فرآیندهای کسب‌وکار حالت دار و یکپارچه‌سازی برنامه‌های مبتنی بر ابر نباید از ESBاستفاده کرد.و مهم‌ترین موارداستفاده ازESB به شرح ذیل می باشد:-ادغام بیش‌از دو سرویس یا برنامه_یکپارچه‌سازی یک پلتفرم خدمات خارجی_ تبدیل و ادغام چندین پروتکل ارتباطی_ افزودن مکرر برنامه‌ها یا خدمات جدید_یکپارچه‌سازی برنامه‌های قدیمی_ زمانی‌که امنیت و قابلیت اطمینان اتصال مورد نیاز است_ برخورد با پروتکل‌های خاص صنعت     فواید گذرگاه سرویس سازمانی(ESB)  :_ کاهش نقاط ارتباط وب سرویس‌ها_ پیاده‌سازی قوانین تجاری سازمان_دسترسی هم‌زمان و آنلاین به سرویس‌ها_یکپارچه‌سازی وب سرویس‌ها_ سهولت ارتباط برای سرویس گیرندگان_ تبادل داده برای یکپارچگی وب سرویس ها_استانداردسازی سرویس‌های سازمان_وب سرویس برایQueryهای دیتابیس_ ثبات اطلاعات سرویس ها در چند سرویس_کانال استاندارد تعاملات سرویس‌ها_ارائه چند وب سرویس از یک وب سرویس_ ارتقا و فعال ماندن سرویس‌های قدیمیبرای انتخاب پلتفرم مناسب برای ESBباید قبل‌از تصمیم‌گیری معیارهایی از قبیل : نصب ،تبدیل پیام، اتصال دهنده‌ها، حفاظت‌های امنیتی، پشتیبانی در دسترس، عملکرد ،نظارت، سفارشی سازی، مدل اشتراک، مقیاس پذیری و هزینه را در نظر گرفت.منابع :https://www.techtarget.com/searchapparchitecture/definition/Enterprise-Service-Bus-ESBhttps://www.faragostar.net/what-is-esb/</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:35:28 +0330</pubDate>
            </item>
                    <item>
                <title>Low Code Platforms</title>
                <link>https://virgool.io/@pourya.salahi76/low-code-platforms-ijcy8opuolix</link>
                <description>فورستر در سال ۲۰۱۴ اقدام به بررسی طبقه‌بندی پلتفرم Low_codeکرد و آن را این‌گونه تعریف کرد:پلتفرم‌های که می‌توانند به‌سرعت ،اپلیکیشن یک کسب‌وکار را تقریباً بدون نیاز به کد نویسی دستی و با کمترین سرمایه‌گذاری اولیه، آموزش و پیاده‌سازی، راه‌اندازی کنند.به بیان ساده‌تر Low_codeزبان یا محیطی است که به کسانی که خیلی تجربه کد نویسی ندارند کمک می‌کند تا نرم‌افزار توسعه دهند. به‌جای کدهای بک- اند و کتابخانه‌های پیچیده، Low_code  از الگوهای تصویری و فریم ورک های کشیدنی و رها کردنی استفاده می‌کند و به کسانی که توسعه‌دهنده‌ی نرم‌افزار نیستند این امکان را می‌دهد تا برنامه بنویسند.ساخت یک نرم‌افزار، کار دقیق و دشواری است. نرم‌افزارها مدام در حال تغییر هستند و مدام باید قابلیت‌های جدید به یک پلتفرم اضافه شود و همه‌چیز آپدیت باقی بماند. آپدیت کردن و تغییر دادن یک نرم‌افزار نیز کار ساده‌ای نیست استفاده از Low_codeاین مشکل را حل می‌کند و هر چیزی که مدام به آپدیت شدن نیاز دارد می‌تواند ازLow_code استفاده کند.  به‌طورکلیLow_code هر مرحله از توسعه‌ی نرم‌افزار را خودکار می‌کند تا تحویل سریع نرم‌افزار را امکان‌پذیر کرده و این سیلوهای سنتی را از بین می‌برد. تجارت و فناوری اطلاعات و امکان همکاری مداوم را نیز فراهم می‌کند. دو نوع پلتفرم برای اپلیکیشن‌ها وجود Low_codeوLess_code. در Less_codeنیاز به کد نویسی کمتری نسبت‌به روش‌های سنتی وجود دارد و این امر به این معنا است که این پلتفرم ها نسبت‌به پلتفرم‌های Low_code نیازمند کد نویسی به نسبت بیشتری هستند درنتیجه کاربران این پلتفرم ها نیاز دارند تا از دانش برنامه‌نویسی و فنی سطح بالایی برخوردار باشد تا بتوانند اپلیکیشن طراحی کنند.تحقیقات جدید نشان می‌دهد که یک فناوری Low_codeمی‌تواند بزرگ‌ترین چالش‌ها و ابهامات مدیران اجرایی فناوری اطلاعات و کسب‌وکار را برطرف کند که برخی از مهم‌ترین این چالش‌ها عبارتند از: یکپارچگی با دیگر نرم‌افزارها ، توانایی شخصی‌سازی و تغییر مقیاس ، توانایی استفاده از طریق موبایل.ویژگی‌های عمومی نرم‌افزارهایLow_code: طراحی‌های رابط کاربری ، پایگاه‌های داده ، APها ، رفتاری اپلیکیشن با کلاینت.منابع :https://www.techtarget.com/searchsoftwarequality/What-is-low-code-A-guide-to-enterprise-low-code-app-development</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:33:26 +0330</pubDate>
            </item>
                    <item>
                <title>Micro Frontends</title>
                <link>https://virgool.io/@pourya.salahi76/micro-frontends-asqxjvulzt52</link>
                <description>معماری  Micro Frontendsیک الگوی معماری(architecture pattern) می‌باشد.جایی‌که یکfront-end app  به چند app کوچک‌تر تقسیم می‌شود و هر کدام از آن‌ها به‌صورت مستقل توسعه داده و تست می‌شوند. مفهومی شبیه به میکرو سرویس‌ها است اما برای سورس کدهای یکپارچه سمت کلاینت زیرا بسیار دشوار است که بخواهیم روی سورس کدهای یکپارچه سمت کلاینت تست نویسی، بروزرسانی و همچنین نگهداری کنیم و این در حالی است که توانایی تیم را به‌منظور مستقل کارکردن بر روی بخش‌های مختلفی از app محدود می‌کند، شکستن یکapp یکپارچه بهmicro frontend های کوچک‌تر و قابل مدیریت، این امکان را فراهم می‌سازد که چندین تیم به‌صورت مستقل کار کنند و از فریم ورکهای ترجیحی خود استفاده کنند.در وب‌سایت رسمی مارتین فاولر رویکردMicro frontend به‌صورت زیر تعریف‌شده است: سبک معماری‌ که در آن برنامه‌های کاربردی مستقل در یک کل بزرگ مونتاژ می‌شوند . این رویکرد معماری برای توسعه وب ظاهری به دلیل مشکلات شناخته‌شده ای که با رویکرد سنتی یکپارچه به وجود می‌آید، به‌طور فزاینده‌ای محبوب می‌شود. این عمدتاً به این دلیل است که نرم‌افزارFrontend به‌سرعت رشد می‌کند و وقتی از معماری یکپارچه استفاده می‌شود نگهداری همه‌چیز بسیار دشوارتر می‌شود.ازسوی دیگر با رویکردMicro frontend می‌توانید کل برنامه را به بخش‌های کوچک و مستقل تقسیم کنید، سپس هر یک از آن‌ها توسط تیم‌هایFrontend مختلف و حتی با فناوری‌های مختلف اجرا می‌شود. این همان مقیاس پذیری ، انعطاف‌پذیری و سازگاری با معماری میکرو سرویس پس زمینه را فراهم می‌کند.مزایای Micro frontend :1- سرعت بالا در تولید ویژگی‌ها2- بروزرسانی ساده‌تر خروجی3- تمرکز بیشتر روی مشتریمعایب  Micro frontend :1-  سرمایه‌گذاری‌های اولیه گران‌قیمت2- پیچیدگی توسعه و استقرار3- مشکلات حفظ انسجام در تجربه کاربرمنابع :https://dzone.com/articles/micro-frontends-by-example-8https://martinfowler.com/articles/micro-frontends.html</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:31:28 +0330</pubDate>
            </item>
                    <item>
                <title>Event Sourcing</title>
                <link>https://virgool.io/@pourya.salahi76/event-sourcing-ym3lwyxbbfxc</link>
                <description>به بیان ساده Event sourcing راهکاری برای ذخیره‌سازی حالت یک شی براساس رخدادهایی است که از زمان ایجاد برای آن اتفاق افتاده است. دراین‌صورت قادر خواهیم بود، حالت هر شیء در هر لحظه از زمان را با بازسازی این رخدادها ایجاد کنیم. به‌طورکلی می‌توان گفت که Event sourcingیک الگوی معماری قدرتمند برای مدیریت حالات اپلیکیشن‌های پیچیده‌ای است که ممکن است نیاز به بازسازی، اجرای مجدد یا دیباگ کردن داشته باشند. و همچنین یک راه‌حل جایگزین برای داده‌های ماندگار است، برخلافState _Oriented Persistence که تنها آخرین نسخه از حالت موجود را نگه می‌داردEvent sourcing هر جهش حالت را به‌عنوان یک رکورد جداگانه تحت عنوان رویداد ذخیره می‌کند.Event sourcing
مزایای Event sourcing :1-  تغییر در سازوکار ذخیره‌سازی، تغییری در برنامه ایجاد نمی‌کند.2-  به‌خاطر سادگی ذخیره‌سازی رخدادها، کارایی بهبود می‌یابد.3-   عدم نیاز به لایهObject Relational Mapper (ORM) برای ذخیره‌سازی4-  نگهداری تاریخچه رخدادهایی که در سیستم اتفاق افتاده است.5-  سادگی تجمیع با سایر زیرسیستم‌ها6-  سیر در گذشته و پیش‌بینی آینده7-  خطا یابی سیستم که در حال کار است با تکرار رخدادهایی که منجر به خطا شده اند.باید توجه داشت اگرچه Event sourcingیک الگوی خاص و نا آشناست و برای یادگیری ،پیاده‌سازی و درک مفهومش باید تلاش زیادی کرد ،ولی استفاده از Event sourcing کیفیت و دقت پروژه را بسیار ارتقا داده و ضریب خطا و از دست دادن دیتا را به حداقل می‌رساند.منابع :https://microservices.io/patterns/data/event-sourcing.htmlhttps://virgool.io/@arashrahimi46/event-sourcing-%DA%86%DB%8C%D8%B3%D8%AA-cnnc6vwjqj2o</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:29:00 +0330</pubDate>
            </item>
                    <item>
                <title>MVVM</title>
                <link>https://virgool.io/@pourya.salahi76/mvvm-serou0grvtbw</link>
                <description>معماری  MVVM :این الگو توسط مایکروسافت معرفی شد و بعدها مثل MVCبه دنیای وب پا گذاشت و استفاده از این الگو بین فریم ورک های جاوا اسکریپت رایج شد. این الگو ازسه بخش:ا  Model: مدل مرکز دیتای برنامه است و وظیفه نگهداری، حفظ و ارائه اطلاعات مورد نیاز را عهده دار است . درواقع مدل منطق مرتبط با داده‌های اپلیکیشن است که شامل POJO ،کلاس‌های پردازشی API، پایگاه داده و غیره می باشد.ا  View  : شامل رفتارها و سرویس‌هایی( مثل رویدادهای کلیک، لمس) است که طی آن اطلاعات مدل می‌تواند تغییر کند.ا  View model : در واقع یک Object است که عملکرد منطق View را بسته به نتیجه‌ی عملیات Modelشرح می‌دهد و می‌توان آن را یک مدل رفتاری از View محسوب کرد. این بخش می‌تواند شامل مواردی مانند نمایش بارگذاری ، خطا، صفحات خالی و غیره باشد . این بخشها می توانند برنامه را به سه بخش اصلی تقسیم کنند و همچنین می توانند به‌صورت جدا توسعه داده شوند تا وابستگی بخش‌ها به یکدیگر کم شده و همچنین توسعه موازی قابل اجرا باشد.در واقع MVVM با ایجاد یک منطق کسب‌وکار یا منطق عقب پایان (مدل داده )تفکیک توسعه رابط کاربر گرافیکی را آسان می‌کند . مدل View در MVVM یک مبدل ارزش است . معماری MVVM برای استفاده از توابع اتصال پذیری داده‌ها درWPF طراحی‌شده است. انتقادی که از معماری MVVM وجود دارد این است که وجود سربار در اجرای Overkill برای عملیاتUI ساده در این معماری است ، به‌همین دلیل برای برنامه‌های بزرگ‌تر، تعمیم دادن View modelسخت‌تر می‌شود و گاهی نیز غیرممکن می‌گردد. علاوه ‌بر این با استفاده از این مدل معماری در برنامه‌های بزرگ اتصال داده‌ها می‌تواند به مصرف حافظه قابل‌توجهی منجر شود و حافظه زیادی را اشغال کند.منابع :https://blog.jeremylikness.com/blog/model-view-viewmodel-mvvm-explained/https://virgool.io/@wia/httpbitly2ffxzoe-bbsh8o3y3guf</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:25:58 +0330</pubDate>
            </item>
                    <item>
                <title>CQRS</title>
                <link>https://virgool.io/@pourya.salahi76/cqrs-ukwub3wfwisd</link>
                <description>معماریCQRS  (Command and Query Responsibility Segregation  ) : در این معماری نرم‌افزار به دوبخش خواندن( Read Side)و بخش نوشتن (Write Side)تقسیم می‌شود. اشیاء موجود در بخش خواندن تنها مسئول خواندن و بازیابی اطلاعات از دیتابیس بوده و اشیاء موجود در بخش نوشتن تنها مسئول اجرای Commandهای دریافتی می‌باشند. در اغلب سیستم‌های اطلاعاتی تعداد خواندن اطلاعات از نرم‌افزار بسیار بیشتر از تعداد نوشتن است.جداسازی این دو بخش شما را قادر می‌سازد که بر روی هر بخش به‌طور مستقل و جداگانه کار کنید و پیاده‌سازی هر کدام را بنا بر نیاز آن انجام دهید. ( Commandها دستوراتی هستند که چیزی را برنمی‌گردانند و هدف اصلی آن‌ها درج ویرایش و حذف می‌باشد اما Queryها دستوراتی هستند که در خروجی خود دیتا است را برمی‌گرداند و برای گرفتن اطلاعات از دیتابیس استفاده می‌شود).معماری CQRS یا به‌اصطلاح تفکیک مسئولیت‌های نوشتن و خواندن (بر روی دیتابیس) مفهوم تقسیم را در سطح معماری گسترش می‌دهد، اما این معماری به‌عنوان یک معماری کلی برای یک سیستم نرم‌افزاری تعریف نمی‌شود.با جدا کردن عملیات‌های خواندن و نوشتن بر روی یک سیستم می‌توانیم سرعت عملکرد آن را افزایش دهیم و از اصل تفکیک نگرانی‌ها(Separation of concerns principle) در سیستم‌های خود پشتیبانی کنیم.CQRS Pattern
انواع  CQRS :به‌طورکلی می‌توان CQRS را درسه سطح دسته‌بندی کرد :1- در سطح کد :در این حالت تنها به جداسازی CommandوQuery در سطح کد بسنده می‌کنیم .2-  در سطح دیتابیس: در این حالت به بهینه‌سازی دیتابیس( به‌خصوص برایQuery ها) می‌پردازیم و در صورت نیاز دیتابیسCommandوQuery را از هم جدا می‌کنیم.3-  در سطح کد و دیتا بیس: در این حالت چون CommandوQueryدر سطح کد جداسازی شده، یکی کردن بهینه‌سازی‌های سطح دیتابیس با کد آسان‌تر خواهد شد.مزایایCQRS    :     Scalability_Performance_Simplicityاصلی ترین کاربرد CQRS زمانی است که ما با سیستمی مواجه هستیم که بین حجم یا شرایط پردازش اطلاعات در CommandوQuery  تناسبی وجود ندارد .منابع:https://martinfowler.com/bliki/CQRS.html</description>
                <category>پوریا صلاحی ایلخانی</category>
                <author>پوریا صلاحی ایلخانی</author>
                <pubDate>Wed, 23 Nov 2022 02:13:43 +0330</pubDate>
            </item>
            </channel>
</rss>