برنامه نویسی

اجتناب از جهنم ابزار DevOps – انجمن DEV

آیا سعی کرده اید به نقشه راه مبتدیان برای یادگیری DevOps نگاه کنید؟ اگر این کار را نکرده اید، نگران نباشید. در اینجا یک تصویر در زیر آمده است:

نقشه راه DevOps

شکل 1. نقشه راه DevOps توسط وراشابه سونتاکه

تصویر بالا بیش از 30 ابزار را نشان می دهد که یک مبتدی برای تبدیل شدن به یک مهندس DevOps باید یاد بگیرد. خوب، این خیلی است.

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

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

DevOps چیست؟

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

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

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

اقداماتی که در هنگام انتخاب ابزار باید در نظر گرفته شود

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

ابزارهای اگنوستیک ابری

اینها ابزارهایی هستند که مستقل از هر پلتفرمی عمل می کنند. این ابزارها کار می کنند و به راحتی با چندین ارائه دهنده ابر عمومی و خصوصی سازگار می شوند. این ابزارها با هر زیرساخت ابری سازگار هستند بدون اینکه با هیچ مشکل عملیاتی مواجه شوند. این بدان معناست که هنگام استفاده از یک ارائه دهنده ابر مانند AWS؛ توصیه می شود از ابزارهایی استفاده کنید که با سایر ارائه دهندگان ابر مانند GCP، Azure و غیره ادغام می شوند. نمونه هایی از ابزارهای ابری ناشناس عبارتند از Kubernetes، Terraform، Vault و غیره.

راحتی در استفاده

یادگیری نحوه استفاده از ابزارهای جدید ممکن است دشوار باشد، و این دشواری تنها زمانی بدتر می شود که مجبور باشید در حین یادگیری این ابزار اطلاعات بیشتری کسب کنید. به عنوان مثال، یادگیری یک ابزار CI/CD مانند جنکینز نیازمند یادگیری Groovy است که دارای نحو جاوا است. من این کار را دشوار دیدم، زیرا برای یادگیری موثر این ابزار نیاز به کسب دانش بیشتری از جاوا داشتم. یادگیری همزمان CI/CD و Groovy جالب نبود و مجبور شدم بعد از مدتی آن را رها کنم.

برای این مشکل، مجبور شدم تحقیق کنم و متوجه شدم که Gitlab CI از YAML استفاده می کند. YAML یک زبان سریال سازی داده ها با خواندن آسان است. در DevOps، شما در چندین حوزه با YAML مواجه می‌شوید، چه در Docker هنگام استفاده از docker-compose یا Kubernetes هنگام نوشتن فایل‌های مانیفست Kubernetes، بنابراین استفاده از Gitlab CI آسان بود زیرا من قبلاً دانش لازم را داشتم.

شرکت Hashicorp تاثیر زیادی در ارائه ابزارها و پلتفرم های ارزشمند در اکوسیستم ابری گذاشته است. مزیت استفاده از ابزارهایی که ارائه می دهند، مانند Terraform، Vault و Packer، این است که همه آنها دارای یک زبان، Hashicorp Configuration Language (HCL) هستند. این بدان معناست که شما می توانید به راحتی هر یک از این ابزارها را با یادگیری HCL، که مشابه JSON است، انتخاب کنید. این رویکرد می تواند هنگام انتخاب ابزارهایی برای یادگیری یا استفاده برای یک پروژه مفید باشد.

زیرساخت های تغییرناپذیر

در تصمیم گیری های آگاهانه، مانند اینکه آیا به ابزارهای مدیریت پیکربندی نیاز است یا خیر، باید نوع زیرساختی را که مدیریت یا اجرا می کنید، بدانید.

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

با یک زیرساخت قابل تغییر، می توانید از ابزارهای مدیریت پیکربندی مانند Ansible، Chef، Puppet و غیره برای اصلاح استفاده کنید. با این حال، از آنجایی که تغییراتی در زیرساخت های تغییرناپذیر ایجاد نمی شود، نمی توانید از این ابزارها استفاده کنید. اینجاست که ابزاری مانند Packer به کارتان می آید.

Packer می تواند به شما کمک کند یک دستگاه AMI از پیش پیکربندی شده بپزید که در آن زیرساخت شما در زمان راه اندازی نصب و پیکربندی می شود. شما نیازی به مدیریت پیکربندی نخواهید داشت.

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

خدمات بومی محیط زیست

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

اگرچه استفاده از خدمات مستقل از هر پلتفرم ابری تمرین خوبی است، اما توصیه می شود زیرساخت خود را در فضای ابری راه اندازی کنید. با رشد برنامه و نیاز به افزودن پلتفرم ابری دیگر، می‌توانید به ابزاری برای تشخیص ابری بروید. چرا وقتی می توانید از این خدمات ارائه شده در یک پلتفرم استفاده کنید، از بسیاری از ابزارهای دیگر استفاده کنید؟ این راه حل تنها به ارائه دهندگان ابر محدود نمی شود، زیرا می توان آن را به ابزارهای CI/CD گسترش داد.

هنگام همکاری در تیم ها، از سیستم های کنترل نسخه برای پیگیری نسخه های برنامه استفاده می شود. پلتفرم هایی مانند Github و Gitlab در این اکوسیستم برجسته هستند و علاوه بر کنترل نسخه و مدیریت کنترل منبع، دارای ویژگی های متعددی هستند. آنها با پلتفرم های CI/CD خود عرضه می شوند.

استفاده از پلتفرم CI با GitHub و GitLab، که GitHub Actions و Gitlab CI است، نه تنها جالب است، بلکه یک انتخاب هوشمندانه برای مهندسان DevOps است. این به یکپارچگی و آشنایی یکپارچه کمک می کند و استفاده از آن آسان است. در حالی که اکثر مهندسان از Github برای ذخیره کد خود استفاده می کنند، سپس از Jenkins برای بررسی مخزن استفاده می کنند، چرا به جای آن از ابزاری که با Github ارائه می شود استفاده نکنید؟ پذیرش خدمات در یک محیط خاص، خواه یک ارائه دهنده ابر یا یک مدیر مخزن باشد، پیچیدگی زیرساخت شما را کاهش می دهد.

با این بررسی ها می توانید مطمئن شوید که مناسب ترین ابزار را برای کار انتخاب کرده اید.

ابزاری برای یادگیری

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

  • مدیریت زیرساخت: برای خودکارسازی فرآیند راه اندازی و مدیریت زیرساخت ابری، ابزاری مانند Terraform پادشاه است!

  • کانتینرها و ارکستراسیون کانتینر: برنامه‌های بسته‌بندی و وابستگی‌های مربوطه به آنها هرگز با استفاده از Docker آسان‌تر نبوده‌اند، در حالی که زیرساخت‌های کانتینر را با ابزاری مؤثر مانند Kubernetes هماهنگ می‌کنند.

  • نظارت و ثبت: نظارت بر آمار و به دست آوردن لاگ از اپلیکیشن ها با استفاده از ابزارهایی مانند Prometheus و Grafana قابل انجام است.

  • امنیت: همه انواع داده ها را می توان بدون امنیت در برنامه ها از دست داد. استفاده از ابزاری مانند Vault از Hashicorp می تواند مفید باشد.

  • CI/CD: همانطور که قبلاً بحث شد، GitLab CI و Github Actions می توانند در زمان یادگیری صرفه جویی کنند زیرا آشنا هستند و استفاده از آنها آسان است.

  • قالب سرور: استفاده از Packer برای ایجاد تنظیمات سرور قابل استفاده مجدد به روشی مستقل و مستند از پلتفرم هرگز آسان تر نبوده است.

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

نتیجه

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

اجازه ندهید مکالمه تمام شود. این مقاله از گفتگوی آهیل و فرانسیس از فضای یادگیری DevOps (DLS) تهیه شده است. کنار گذاشته نشوید. شما چی فکر میکنید؟ آیا با نظر من موافقید؟ من دوست دارم همه چیز را در مورد آن بشنوم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا