ماه: خرداد ۱۴۰۴

تقسیم مغزی (Split Brain) برای مهندسین دواپس

در این مطلب، سناریوی تقسیم مغزی (Split Brain) را با مثال‌های عملی دنیای واقعی بررسی خواهیم کرد و به مفاهیم حد نصاب (quorum ) و یک مثال عملی از چگونگی جلوگیری etcd از سناریوی split brain با استفاده از الگوریتم اجماع Raft خواهیم پرداخت. هر زمان که سیستم‌های توزیع‌شده‌ای (distributed systems) را که با داده‌ها سروکار دارند، مستقر می‌کنیم، معمولا گره‌ها را در مناطق دسترسی مختلف یا مراکز داده مختلف (برای محیط‌های on-prem) مستقر می‌کنیم تا از در دسترس بودن بالا اطمینان حاصل شود. مثال: دیتابیسی مانند MongoDB، سیستم‌های ذخیره‌سازی توزیع‌شده مانند GlusterFS و کلاستر‌های مبتنی بر اجماع مانند etcd. ... ادامه مطلب

sandboxed container چیست و چگونه ایزوله می‌شود؟

در این مطلب، بررسی خواهیم کرد که چگونه کانتینرهای سندباکس، ایزوله‌سازی بار کاری را بهبود می‌بخشند، خطرات امنیتی را کاهش می‌دهند و آیا برای زیرساخت مناسب هستند یا خیر. کانتینرهای سندباکس چیست؟ کانتینرهای سندباکس (Sandboxed Containers) نوعی از container runtime هستند که با ایزوله کردن کانتینرها از سیستم عامل میزبان (OS) و سایر کانتینرها، یک لایه امنیتی اضافی فراهم می‌کنند. همچنین می‌توانید آن را کانتینرهای مجازی (virtualised containers) نامید. برخلاف کانتینرهای سنتی (مانند داکر که کرنل سیستم عامل میزبان را به اشتراک می‌گذارد)، کانتینرهای سندباکس از مجازی‌سازی سبک یا سایر مکانیسم‌های ایزوله‌سازی برای ایزوله کردن کامل آنها استفاده می‌کنند. این ... ادامه مطلب

قابلیت‌های لینوکس (Linux Capabilities) در کانتینرها و کوبرنتیز

لینوکس با بهره‌گیری از ویژگی‌هایی مانند Namespaces، cgroups و فایل‌سیستم‌های ترکیبی، زیرساخت اصلی اجرای کانتینرها و کوبرنتیز را فراهم می‌کند. این قابلیت‌های لینوکس (Linux Capabilities) امکان ایزوله‌سازی، کنترل منابع و امنیت را در محیط‌های ابری فراهم کرده و لینوکس را به پایه‌ای مطمئن برای توسعه و استقرار نرم‌افزارهای مدرن تبدیل کرده‌اند. در این مطلب، کمی عمیق‌تر به قابلیت‌های لینوکس خواهیم پرداخت تا با استفاده از مثال‌های عملی، ارتباط آنها با کانتینرها و کوبرنتیز را درک کنیم. قابلیت‌های لینوکس (Linux Capabilities) چیست؟ در لینوکس سنتی، یک فرآیند یا root (کاربر ارشد) است یا non-root (محدود)؛ مفهومی که همه شما می‌دانید. قابلیت‌های ... ادامه مطلب

Syscall در لینوکس چیست؟

در لینوکس، سیستم‌کال (Syscall) رابطی است که از طریق آن برنامه‌های کاربر می‌توانند با هسته سیستم‌عامل ارتباط برقرار کنند.در این مطلب، به بررسی فراخوانی‌های سیستمی لینوکس خواهیم پرداخت که اغلب در مصاحبه‌های DevOps و SRE، به ویژه در شرکت‌های برتر، مورد بحث قرار می‌گیرند. همه افراد در DevOps نمی‌توانند روزانه با اجزای داخلی سیستم کار کنند یا مشکلات عملکرد را عیب‌یابی کنند. این کاملا به ماهیت شغل و پروژه‌هایی که برای کار انتخاب می‌کنید بستگی دارد. با این حال، برای افراد DevOps/SRE بسیار مهم است که درک قوی از عیب‌یابی سیستم داشته باشند زیرا ما معمولا با سرورها کار می‌کنیم. ... ادامه مطلب

چرا شرکت‌ها Kubernetes را رها می‌کنند؟

  • دسته بندی ها: عمومی
وقتی صحبت از اجرای اپلیکیشن‌های امروزی می‌شود، کوبرنتیز در حال تبدیل شدن به استانداردی طلایی است. با این حال، در سال‌های اخیر، شرکت‌هایی به دلیل پیچیدگی و چالش‌هایی که کوبرنتیز ایجاد می‌کند، تصمیم گرفته‌اند از آن فاصله بگیرند. در این مطلب، می‌خواهم سه داستان از این دست را به اشتراک بگذارم. یادگیری از تجربیات دیگران راهی عالی برای جلوگیری از اشتباهات بزرگ در مدیریت زیرساخت است. نگاهی به چنین تجربیاتی می‌تواند به شما در انتخاب‌های طراحی بهتر هنگام کار با کوبرنتیز کمک کند. 1. داستان گیت‌پاد (Gitpod ) گیت‌پاد (Gitpod ) یک محیط توسعه مبتنی بر ابر است که فضاهای ... ادامه مطلب

راهنمای کامل زبان Go برای DevOps

  • دسته بندی ها: عمومی
بیش از 75 درصد پروژه‌ها در CNCF(بنیاد رایاش ابری بومی) با زبان Go نوشته شده‌اند. چه در مصاحبه‌ها و چه در پروژه‌های دنیای واقعی، یک پروفایل قوی DevOps به مهارت‌های کدنویسی قوی نیاز دارد، به خصوص در شرکت‌های تولیدی. زبان GO برای DevOps وقتی در مورد برنامه‌نویسی یا اسکریپت‌نویسی برای DevOps صحبت می‌کنیم، زبان‌های اصلی که بیشتر مورد بحث قرار می‌گیرند پایتون و shell scripting هستند. به این دلیل که شروع کار با آن آسان است و می‌توانید اسکریپت‌های سیستمی زیادی را برای نیازهای اتوماسیون بنویسید. با این حال، اگر به اکوسیستم DevOps نگاه کنید، بیشتر ابزارهای محبوبی که امروزه ... ادامه مطلب