شهروز جعفری
شهروز جعفری
خواندن ۲ دقیقه·۵ سال پیش

Snowflake Server

واژه Snowflake Server به سرور هایی اشاره دارند که مانند دانه های برف به شکل منحصر به فردی ایجاد و نگهداری می شوند.به عبارتی ما با سرورهایی در تماس هستیم که کانفیگ منحصر به فرد خودشان را دارند و اگر برای آنها مشکل پیش بیاید سرور دیگری به راحتی نمی تواند نقش آنها سرور را بازی کند و کار عملیاتی را انجام دهد.ممکن است بتوانیم از طریق گرفتن image از سرورها یک سری از این مشکلات را حل کنیم ولی باز هم مشکلات به صورت کامل حل نخواهند شد و ممکن است المان های غیر ضروری در سرورها حفظ شوند.

مشکل اصلی سرورهای Snowflake زمانی رخ می دهد که نیاز داریم در این سرور ها تغییری اعمال کنیم.به مرور زمان این سرورها بسیار غیر قابل فهم خواهند شد.آپگرید کردن یک نرم افزار کوچک در داخل سرور ممکن است باعث بوجود آمدن مشکلات غیر قابل پیش بینی روی آنها شود.دقیقا نمی توانیم تشخیص دهیم که یک کانفیگ مشخص از مدت ها قبل وجود داشته و در حال حاضر به آن نیاز نیست و یا خیلی ضروری و مهم است.برای نگهداری این سرور ها نیاز به انجام فرایند های دستی ،ایجاد داکیومنت های متفاوتی خواهیم داشت.

یک راه برای جلوگیری از بوجود آمدن سرورهای Snowflake ایجاد کانفیگ های اتوماتیک است.این کار با ابزارهای متفاوتی از قبیل Puppet و Chef قابل انجام است.به کمک domain specific language میتوانیم محیط عملیاتی را تعریف یا به عبارتی define کنیم.

مهمترین نکته ای که در اتوماتیک کردن کانفیگ ها وجود دارد ،صرفا این نیست که می توانیم یک سرور را مجدد ایجاد کنیم ،بلکه امکان درک درست پیکربندی ها را به ما می دهد.همچنین با توجه به اینکه این کانفیگ ها در فایل های متنی نگهداری خواهند شد می توانیم آن ها را در ورژن کنترل نگهداری کنیم و از مزیت آن نیز بهره مند شویم.

اگر بتوانیم دسترسی مستقیم برای اعمال تغییرات را روی سرور ببندیم و آن را منوط کنیم به تغییر در فایل های پیکربندی،این امکان برای ما به وجود خواهد آمد که لاگ تمام تغییرات را داشته باشیم.

رویکرد در انتشار نیز باید از اتوماتیک سازی تبعیت کند.نیاز است تمام تغییرات در ورژن کنترل اعمال شوند و به صورت تمام اتوماتیک انتشار پیدا کنند.

یک راه برای جلوگیری از سرور Snowflake استفاده از مفهوم phoenix است.استفاده از ورژن کنترل برای تعریف کردن مشخصات و پیکربندی های سرور از قسمت های مهم Continuous Delivery است.

operationdevopsدوآپس
برنامه نویس
شاید از این پست‌ها خوشتان بیاید