دوره آموزش پروژه محور Retrofit و LiveData در اندروید منتشر شد! جهت تهیه پیش‌فروش دوره با تخفیف ویژه کلیک کنید!  

چگونه در کمتر از شش ماه به یک مهندس دواپس (DevOps) تبدیل شویم؟ بخش دوم: پیکربندی

شنبه ۰۲ شهریور ۹۸ توسط سالار ساری نوایی

این مطلب بخش دوم از یک مجموعه چندقسمتی است. بخش اول را می‌توانید از اینجا مطالعه کنید.

آنچه گذشت!

در بخش اول در این باره بحث کردم که کار یک مهندس دواپس، ساختن خط لوله‌های دیجیتال و خودکاری است که کد را از دستگاه دولوپر به مرحله‌ی تولید می‌برند.

انجام این کار نیازمند درکی درست و اساسی از پایه و اساس ماجرا است که در شکل زیر نشان داده شده است.

ضمن این که مهندس دواپس باید فهم قابل قبولی از ابزارها و توانایی‌های مورد نیاز داشته باشد.

یادآوری: هدف شما این است که ابتدا مواردی که به رنگ آبی نوشته شده است را از چپ به راست یاد بگیرید و سپس به همین ترتیب به سراغ موارد بنفش بروید. در مجموع شش گام برای یادگیری دواپس طی خواهید کرد؛ هر ماه یک گام.

بسیار خب، به موضوع اصلی برگردیم. در این مقاله اولین مرحله از تولید خط لوله‌ی دیجیتال را پوشش می‌دهیم: تنظیم.

نمای کلی

در مرحله‌ی تنظیم چه اتفاقی می‌افتد؟

واضح است که کد نوشته شده‌ی ما برای اجرا شدن به یک ماشین نیاز دارد. در مرحله‌ی اجرا زیرساختی که کد ما را اجرا می‌کند ساخته می‌شود.

در گذشته فراهم‌سازی زیرساخت می‌توانست فرآیندی زمان‌بر، طاقت‌فرسا و همراه با مشکل باشد.

امروزه به دلیل فضای ابری فوق‌العاده‌ای که در اختیار ما است، تمامی امور مربوط به فراهم‌سازی زیرساخت‌ها با یک یا چند کلیک انجام شدنی است.

با این وجود به نظر می‌رسد که کلیک کردن برای انجام این کارها ایده‌ی چندان جالبی نیست. چرا؟

به دلیل این که کلیک کردن ویژگی‌های زیر را به همراه دارد:

  • می‌تواند همراه با خطا باشد (انسان دچار اشتباه می‌شود).
  • نسخه‌بندی صورت نمی‌گیرد (کلیک‌ها را نمی‌توان در git ذخیره کرد).
  • تکرارپذیر نیست (ماشین‌های بیشتر یعنی کلیک‌های بیشتر).
  • و در نهایت قابل آزمایش نیست (هیچ ایده‌ای نداریم که کلیک‌های ما به درستی کار خواهند کرد یا این که چیزهای دیگری را به هم می‌ریزند).

به عنوان مثال، به کارهایی که برای فراهم‌سازی محیط توسعه باید انجام بدهید فکر کنید، پس از آن محیط int، سپس پرسش و پاسخ، سپس صحنه‌سازی، سپس تولید در کشور، سپس تولید در سایر کشورها. این کارها می‌توانند به سرعت کسل‌کننده شوند و شما را آزار بدهند.

پس یک روش جدید لازم است. این روش جدید زیرساخت‌ به عنوان کد نام دارد که مرحله‌ی تنظیم در آن خلاصه می‌شود.

زیرساخت به عنوان کد می‌گوید که هر کاری که برای فراهم‌سازی منابع پردازشی باید انجام بشود، فقط و فقط از طریق کدنویسی صورت بگیرد.

نکته: منظورم از منابع پردازشی تمامی چیزهای لازم برای اجرای درست یک برنامه در فاز تولید است: پردازش، حافظه، شبکه، پایگاه‌داده و غیره. به همین دلیل آن را زیرساخت به عنوان کد می‌نامند.

علاوه بر این، به جای کلیک کردن در طول یک زیرساخت، کارهای زیر را انجام می‌دهیم:

  • وضعیت زیرساخت مد نظرمان را در Terraform می‌نویسیم.
  • آن را در کنترل سورس کدمان ذخیره می‌کنیم.
  • درخواست رسمی برای دریافت فیدبک ارائه می‌دهیم.
  • آن را آزمایش می‌کنیم.
  • آن را اجرا می‌کنیم تا از منابع مورد نیاز مطلع شویم.

چرا این بله و آن نه؟

حالا سوالی که مطرح می‌شود این است که چرا از Terraform استفاده کنیم؟

سوال خوبی است! و البته طبق معمول حجم زیادی از جوهر مجازی بر سر بحث روی این موضوع در اینترنت به هدر رفته است.

اگر به طور خلاصه بخواهم بگویم، به این دلایل باید Terraform را یاد بگیرید:

  • در بازار کار بسیار مرسوم است که باعث می‌شود فرصت‌های شغلی بیشتری داشته باشید.
  • یادگیری آن تا حدی آسان‌تر از سایر گزینه‌ها است.
  • به پلتفرم خاصی محدود نیست.

با این وجود آیا می‌توانید گزینه‌ی دیگری را انتخاب کنید و موفق شوید؟ البته که بله!

اما باید اشاره کنم که این فضا با سرعت زیادی در حال رشد است و می‌تواند گیج‌کننده باشد. در ادامه کمی از اتفاقات اخیر و پیشرفت‌هایی که در آینده ممکن است رخ بدهد می‌گویم.

به طور مرسوم، ابزارهایی مانند Terraform یا CloudFormation در زمینه‌ی فراهم‌سازی زیرساخت‌ها استفاده‌ شده‌اند و ابزارهایی مانند Ansible برای تنظیم آن به کار گرفته می‌شوند.

می‌توانید Terraform را به عنوان ابزاری برای ایجاد پایه و اساس و Ansible را به عنوان خانه‌ای که روی آن قرار می‌گیرد در نظر داشته باشید، سپس برنامه هر گونه که بخواهید می‌توانید استفاده کنید (به عنوان مثال این مورد هم می‌تواند Ansible باشد).

به عبارتی دیگر، به کمک Terraform ماشین‌های مجازی‌تان را می‌سازید و با Ansible سرورهایش را راه‌اندازی می‌کنید. ضمن این که می‌توانید برنامه‌تان را نیز به کار بگیرید.

به طور مرسوم این موارد به همین شکل در کنار یکدیگر کار می‌کردند.

اما Anisble می‌تواند بسیاری از کارهایی که Terraform انجام می‌دهد را به تنهایی انجام دهد (حتی ممکن است بتواند تمامی کارها را انجام دهد). پس معکوس آن نیز صادق است.

اجازه ندهید که این شما را گیج کند. تنها کافی است که بدانید Terraform یکی از بزرگترین ابزارهای حاضر در زمینه‌ی زیرساخت به عنوان کد است، پس پیشنهاد من این است که از همین مورد شروع کنید.

در واقع توانایی کار با Terraform در کنار خدمات وب آمازون یکی از کاربردی‌ترین ویژگی‌هایی است که می‌توانید به دست بیاورید.

با این وجود، اگر Ansible را به Terraform ترجیح می‌دهید، باز هم نیاز است که تعداد زیادی از سرورها را با برنامه‌نویسی راه‌اندازی کنید، این طور نیست؟

الزاما نه!

به‌کارگیری‌های تغییر ناپذیر

اما اگر نظر صادقانه‌ام را بگویم، پیشبینی می‌کنم که ابزارهای مدیریت تنظیمات مانند Ansible با گذر زمان از اهمیتشان کاسته شود و در مقابل ابزارهای فراهم‌سازی زیرساخت مانند Terraform یا CloudFormation به اهمیتشان افزوده شود.

چرا؟

به دلیل چیزی که به‌کارگیری‌های تغییر ناپذیر نام دارد.

ساده بگویم، به‌کارگیری‌های تغییر ناپذیر به این امر اشاره دارند که زیرساخت به کارگیری شده را هیچ وقت دستکاری نکنید. به عبارتی دیگر، واحد شما یک ماشین مجازی یا Docker Conrainer است، نه یک قطعه کد.

شما کد را در یک مجموعه از ماشین‌های مجازی استاتیک راه‌اندازی نمی‌کنید، بلکه کل ماشین مجازی را به همراه کد درون آن راه‌ می‌اندازید.

شما تنظیمات ماشین‌های مجازی را تغییر نمی‌دهید، بلکه ماشین‌های مجازی جدیدی با تغییرات اعمال شده‌ی مد نظرتان را راه‌اندازی می‌کنید.

شما ماشین‌های تولید شده را پچ نمی‌کنید، بلکه ماشین‌های جدیدی راه‌اندازی می‌کنید که از قبل پچ شده‌اند.

شما نمی‌توانید یک مجموعه از ماشین‌های مجازی را در توسعه به کار بگیرید و سپس در تولید از یک مجموعه ماشین مجازی دیگر استفاده کنید. همه‌ی آن‌ها یکسان هستند.

در واقع شما می‌توانید با اطمینان تمامی دسترسی‌های SSH به ماشین‌های تولید شده را قطع کنید، به این دلیل که دیگر کاری برای انجام دادن وجود ندارد. نه تنظیماتی را می‌توان تغییر داد و نه لاگی وجود دارد که به آن توجه شود (در ادامه بیشتر به لاگ‌ها می‌پردازیم).

منظورم را فهمیده‌اید.

زمانی که به درستی استفاده شود، این الگو می‌تواند بسیار قدرتمند باشد و پیشنهاد من هم همین است.

نکته: به‌کارگیری‌های تغییر ناپذیر الزام می‌کنند که تنظیمات از کد جدا باشند. می‌توایند مانیفست 12 Factor App را مطالعه کنید که به طور جزئی به این مسئله و بسیاری ایده‌های خوب دیگر می‌پردازد. افرادی که در زمینه‌ی دواپس کار می‌کنند حتما باید این را مطالعه کنند.

جداسازی کد از تنظیمات بسیار مهم است. یقینا نمی‌خواهید که با هر تغییری در پسوردهای پایگاه‌داده، تمامی پشته‌ی برنامه را مجددا راه‌اندازی کنید. در عوض اطمینان حاصل کنید که برنامه آن را از یک فضای تنظیمات خارجی دریافت می‌کند (SSM/Consul/etc.)

علاوه بر این به راحتی قابل مشاهده است که با رشد به‌کارگیری‌های تغییر ناپذیر، ابزارهایی مانند Ansible نقش کم‌رنگ‌تری خواهند داشت.

دلیلش این است که تنها نیاز دارید که یک سرور را تنظیم کنید و چندین بار به عنوان بخشی از گروه مقیاس‌پذیری خودکار خود راه‌اندازی کنید.

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

کانتینر باید در تمامی محیط‌های کاری یکسان باشد. با این کار می‌توان از بیراهه رفتن تنظیمات جلوگیری کرد و در موارد وقوع مشکل به راحتی اعمال بازیابی و بازگشت به عقب را انجام داد.

کانتینرها را کنار بگذاریم. افرادی که تازه شروع کرده‌اند باید بدانند که فراهم‌سازی زیرساخت خدمات وب آمازون به کمک Terraform یک الگوی واجب برای دواپس است و حتما باید فراگرفته شود.

اما صبر کنید! اگر مجبور شوم که برای برطرف کردن یک مشکل به لاگ‌ها نگاه کنم چه؟ خب دیگر برای نگاه کردن به لاگ‌ها با ماشین ارتباط برقرار نمی‌کنید، بلکه به سراغ زیرساخت ارتباط مرکزی می‌روید تا لاگ‌هایتان را مشاهده کنید.

باز هم می‌گویم که می‌توانید تمامی دسترسی‌های از راه دور را غیرفعال کنید و خوشحال باشید که از بسیاری افراد دیگر امنیت بیشتری دارید!

اگر بخواهم مطالب گفته شده را خلاصه کنم، ماجراجویی ما در زمینه‌ی دواپس کاملا خودکار با تأمین منابع پردازشی مورد نیاز برای اجرای کدمان شروع می‌شود که مرحله‌ی تنظیم نام دارد. بهترین راه دستیابی به آن نیز از طریق به‌کارگیری‌های تغییر ناپذیر است.

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

با این توضیحات مرحله‌ی تنظیم به پایان می‌رسد.

قسمت سوم این مقاله که مربوط به نسخه و یا همان Version می‌باشد را می‌توانید از اینجا مطالعه کنید.


کلیدواژه: آموزش devops آموزش دواپس آموزش داکر آموزش Docker

منابع: medium.com

ارسال دیدگاه:
برای ارسال دیگاه باید به سیستم وارد شوید و یا ثبت نام کنید. ثبت نام چند لحظه بیشتر زمان شما را نمیگیرد.