کتاب Go for DevOps (یاد بگیرید چگونه از زبان Go برای خودکارسازی سرورها، ابر، کوبرنتیس، گیتهاب، Packer و Terraform استفاده کنید.) یک راهنمای جامع و کامل برای استفاده از زبان برنامهنویسی Go در DevOps میباشد. این کتاب در 16 فصل از نکات پایه و مقدماتی تا پیشرفته در مورد کاربرد زبان Go در DevOps را شرح خواهد داد.
در ادامه مقدمهای از کتاب Go for DevOps را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Go for DevOps:
وقتی بزرگتر میشوی به نظر من بیشتر مردم به زندگی خود فکر میکنند. چگونه به جایی که هستند رسیدند، کجا موفق شدند و کجا شکست خوردند. میتوانم با صداقت بگویم که در حرفهام شکست خورده ام. میدانم شروع کردن کتاب با اعتراف به شکست غیرطبیعی است، اما میدانم چرا کتاب را با دروغهایی درباره موفقیت فراتر از وحشیانهترین رویاهایم شروع کنم؟
آرزوهای من بیشتر با جیمی بافت هماهنگ است تا وارن بافت. حفظ علاقه من به هر چیزی برای بیش از چند سال یک چالش است و ایده من از یک روز کاری سخت نوشیدن یک پیانا کولادا در ساحل هاوایی است. افسوس که در جاه طلبیهایم شکست خورده ام. نزدیکترین آرزوی من کار کردن برای رئیسی است که همیشه پیراهن هاوایی میپوشید و فکر نمیکنم این مهم باشد.
تمام این “تخصص” در اتوماسیون ناشی از نیاز من به انجام کمترین کار ممکن است. زمانی که من یک تکنسین پشتیبانی دسکتاپ بودم، به جای نصب دستی ویندوز و برنامهها، به راههایی نیاز داشتم که بتوانم ماشینهای زیادی را در چند ساعت بسازم.
میخواستم روزهایم را در دفتر با بازیهای ویدیویی، خواندن کتاب یا قدم زدن و صحبت با مردم بگذرانم. وقتی مهندس شبکه بودم، میخواستم وقتی در کمدهای سوئیچ اطراف دانشگاه میخوابیدم، دیگر به من پیج نکنند. بنابراین ابزارهایی نوشتم که به دیگران اجازه میداد پورتهای VLAN را تغییر دهند یا پارامترهای امنیتی را از پورت شبکه بدون تماس با من پاک کنند. چرا وقتی میتوانم برنامهای بنویسم که از دادههای SFLOW برای انجام آن استفاده میکند، هر هفته ترافیک BGP را به صورت دستی متعادل کنید؟
خیلی خوب پیش میرفت تا اینکه جاه طلب شدم و به گوگل رفتم. چند ابزار نوشتم که به آسانتر کردن کار برای خودم کمک میکند، مانند اینکه بفهمم آیا صفحات در حال تماس واقعاً ناشی از کارهای برنامهریزیشده در حال انجام هستند یا برنامههایی برای تهیه همه متعادلکنندههای بار در یک مرکز داده. در آن روزها، گوگل صندلیهای ماساژ و امکانات دیگری داشت که من ترجیح میدادم به جای انتقال لینکها در روتر مرکز داده، در حالی که با یک تکنسین سختافزاری در آتلانتا در تماس بودم و در یک کانال IRC تایپ میکردم، از آنها استفاده کنم. در مورد اینکه چرا زهکشی شبکه من هنوز سر جای خود بود.
اما پس از آن مردم شروع به استفاده از ابزار من کردند. دوست من عادل میپرسید که آیا میتوانم چیزی برای برنامهنویسی روترهای تسهیلات بسازم یا تأیید کنم که روترهای Force10 درست تنظیم شدهاند؟ و اون خیلی آدم خوبی بود که نمیتونستی نه بگی. یا کرک میآمد و میپرسید چگونه میتوانیم روترهای لبهای را خودکار کنیم، زیرا تیمش بیش از حد کار میکرد. به جای اینکه کارم را راحت کنم، در نهایت ساعتهای بیشتری کار کردم تا کار دیگران را راحت کنم!
امیدوارم شکستهای من بتواند به شما در موفقیت شما کمک کند (پدرم میگفت هیچ کس کاملاً بی فایده نیست، همیشه میتوان از آنها به عنوان یک مثال بد استفاده کرد).
کتاب Go for DevOps مملو از روشهایی است که من در حرفهام از آن استفاده کردهام و درسهایی درباره زبانی که فکر میکنم بهترین زبان برای DevOps در حال حاضر، Go است.
دیوید (همکار من که در یک لحظه خود را معرفی خواهد کرد) و من از دو نقطه افراطی مختلف از دنیای DevOps هستیم. من از مکتب فکری میآیم که تقریباً از هیچ نرم افزار منبع باز تجاری یا استانداردی استفاده نمیشود.
همه ابزارهای DevOps به صورت داخلی توسعه داده شده اند و برای کار در یک محیط خاص به صورت فرمی مناسب هستند. دیوید از مدرسه ای میآید که در آن از نرم افزارهای منبع باز مانند Kubernetes، GitHub، Docker، Terraform و غیره استفاده میکنید تا جایی که میتوانید. این به شما امکان میدهد از مجموعه ای از ابزارهای موجود و محبوب استفاده کنید که ممکن است دقیقاً آن چیزی نباشد که میخواهید، اما دارای شبکههای پشتیبانی و گزینههای زیادی هستند.
استخدام مهندسانی که میدانند چگونه روی ابزارهای استاندارد صنعتی کار کنند، آسان تر از کسانی است که با مجموعه ابزارهای سفارشی کار میکنند. در این کتاب، ترکیبی از این ایدهها و روششناسی را خواهید یافت که هر دو مکتب فکری را در بر میگیرد. اعتقاد ما این است که ترکیبی از ابزارهای آماده و سفارشی بیشترین سود را برای شما به ارمغان میآورد.
امید ما این است که کتاب Go for DevOps نه تنها راهنمای استفاده از Go برای نیازهای DevOps خود را به شما ارائه دهد، بلکه توانایی نوشتن ابزارهای خود یا اصلاح ابزارهای موجود را برای استفاده از قدرت Go در مقیاس کردن نیازهای عملیاتی خود در هر شرکتی به شما ارائه دهد. و اگر هیچ چیز دیگری نباشد، هم من و هم دیوید درآمدمان را به پزشکان بدون مرز خواهیم داد، بنابراین اگر این کتاب را خریداری کردید و هیچ چیز دیگری از آن به دست نیامد، به هدف خوبی کمک خواهید کرد.
اما شاید روزی در ساحل بنشینید و دستمزد خود را جمعآوری کنید در حالی که اتوماسیون شما به امور روزمره رسیدگی میکند. من روی این هدف کار خواهم کرد، بنابراین اگر ابتدا به آنجا رسیدید، برای من نوشیدنی بنوشید.
با این گفته، میخواهم همکار محترمم، دیوید جاستیس را معرفی کنم.
همانطور که جان اشاره کرد، ما از ریشههای مختلفی میآییم، اما متوجه میشویم که به فضاهای مشکل مشابه نزدیک میشویم. پیشینه من در توسعه نرمافزار و مهندسی نرم افزار است که همه چیز را شامل میشود، از توسعه اپلیکیشن موبایل، توسعه وب و بهینهسازی پایگاه داده گرفته تا یادگیری ماشین و سیستمهای توزیع شده. تمرکز من واقعاً هرگز DevOps نبوده است.
من چیزی هستم که شما ممکن است آن را یک متخصص تصادفی DevOps بنامید. مهارتهای DevOps من ناشی از لزوم ارائه ارزش کسبوکار روزافزون است، که از من میخواست همه چیزهایی را که به ارائه ویژگیهای جدید و وضوح نقصها مرتبط نبودند، خودکار کنم. انگیزه دوم من برای توسعه مهارتهای DevOps تمایل من به استقرار مداوم کد و خواب در طول شب است. هیچ انگیزهای مانند راه اندازی یک استارت آپ و تنها شخصی بودن در اطراف برای رسیدگی به یک مشکل با شدت بالا در ساعت 3 صبح وجود ندارد تا شما را به ساختن سیستمها و اتوماسیونهای انعطافپذیر تشویق کند.
انگیزههایی که در اینجا توضیح دادم باید مبنایی را برای این که چرا من تمایل دارم راه حلهایی را انتخاب کنم که به سرعت اعمال میشوند و پشتیبانی قابل توجهی در جامعه منبع باز دارند را فراهم کند. اگر بتوانم یک راهحل منبع باز با مستندات عالی پیدا کنم که بتواند اکثر موارد مورد نیاز من را به خوبی انجام دهد، سپس میتوانم بقیه را در صورت نیاز به هم بچسبانم و بچسبانم (اگر به اندازه کافی عمیق باشید، تقریباً در انتهای هر راه حل یک اسکریپت کثیف Bash است).
برای اینکه من یا تیمهایم زمان و تلاش زیادی را برای ساخت ابزارهای سفارشی سرمایهگذاری کنیم، باید بازگشت سرمایه قابل توجهی داشته باشم. علاوه بر این، وقتی به ابزار سفارشی فکر میکنم، هزینه نگهداری و آموزش مداوم اعضای تیم جدید را نیز در نظر میگیرم. ساده است که اعضای تیم جدید را به پروژهای مانند Terraform راهنمایی کنید و از آنها بخواهید آن را یاد بگیرند.
اسناد عالی و پستهای وبلاگ بیپایان وجود دارد که هر سناریوی قابل تصوری را با جزئیات شرح میدهد. همچنین احتمال زیادی وجود دارد که عضو جدید تیم از قبل Terraform را میشناسد زیرا از آن در کار قبلی استفاده میکرده است. این استدلال من را وادار میکند که برای تأیید پروژهای برای ساخت ابزار سفارشی، به بار اثبات قابل توجهی نیاز داشته باشم. به این دلایل، من زمان زیادی را صرف استفاده از ابزارهای DevOps منبع باز کردهام، و کسب و کار خود را در گسترش این ابزار تا جایی که میتوانم خوب کردهام.
در کتاب Go for DevOps، انواع ابزارهای سفارشی را برای انجام وظایف تنها با استفاده از Go و کتابخانه استاندارد خواهید یافت. با این حال، شما همچنین چندین نمونه از نحوه استفاده از ابزارهای منبع باز موجود برای انجام وظایفی که در غیر این صورت به مقدار زیادی کد سفارشی نیاز دارد، خواهید یافت. من معتقدم رویکردهای مختلف ما به ارزش محتوا میافزاید و ابزارهای مورد نیاز برای درک مبادلات مربوط به ابداع راه حلهای خود یا گسترش راه حلهای موجود برای حل وظایف مشترک DevOps را در اختیار شما قرار میدهد.
همانطور که جان کار را ترک کرد، من نیز امیدوارم که این کتاب به شما کمک کند تا به یک حالت ذن مانند تسلط بر اتوماسیون برسید تا بتوانید مراحل جان را دنبال کنید و بیشتر شبیه جیمی بافت زندگی کنید تا وارن بافت.
این کتاب برای چه کسی است؟
کتاب Go for DevOps برای کسانی است که میخواهند از Go برای توسعه ابزار DevOps خود یا ادغام ویژگیهای سفارشی با ابزارهای DevOps مانند Kubernetes، GitHub Actions، HashiCorp Packer و Terraform استفاده کنند. شما باید با نوعی از زبان برنامه نویسی تجربه داشته باشید، اما نه لزوماً Go.
آنچه کتاب Go for DevOps پوشش میدهد:
فصل 1، مبانی زبان Go، اصول اولیه زبان Go را معرفی میکند.
فصل 2 کتاب Go for DevOps، ضروریات زبان Go، ویژگیهای ضروری زبان Go را پوشش میدهد.
فصل 3 کتاب Go for DevOps، تنظیم محیط، راه اندازی محیط Go را توضیح میدهد.
فصل 4 کتاب Go for DevOps، تعاملات سیستم فایل، استفاده از Go را برای تعامل با فایل سیستم محلی بررسی میکند.
فصل 5، استفاده از فرمتهای معمول داده، به استفاده از Go برای خواندن و نوشتن فرمتهای رایج فایل میپردازد.
فصل 6 کتاب Go for DevOps، تعامل با منابع داده از راه دور، استفاده از Go را برای تعامل با سرویسهای gRPC و REST بررسی میکند.
فصل 7 کتاب Go for DevOps، نوشتن ابزارهای خط فرمان، نحوه نوشتن ابزارهای خط فرمان در Go را نشان میدهد.
فصل 8 کتاب Go for DevOps، خودکارسازی وظایف خط فرمان، به استفاده از بستههای exec و SSH Go برای خودکارسازی کار میپردازد.
فصل 9، قابلیت مشاهده با OpenTelemetry، به استفاده از OpenTelemetry با Go برای ابزار دقیق و هشدار بهتر میپردازد.
فصل 10 کتاب Go for DevOps، خودکارسازی گردشهای کاری با اقدامات GitHub، نحوه استفاده از GitHub برای یکپارچهسازی مداوم، اتوماسیون انتشار و اقدامات سفارشی با استفاده از Go را نشان میدهد.
فصل 11، استفاده از ChatOps برای افزایش کارایی، نحوه نوشتن سرویسهای ChatOps با استفاده از Go را برای ارائه بینش عملیاتی و مدیریت موثر حوادث را پوشش میدهد.
فصل 12 کتاب Go for DevOps، ایجاد زیرساخت غیرقابل تغییر با استفاده از Packer، سفارشی کردن HashiCorp’s Packer را برای خودکارسازی تصویر ماشین مجازی در AWS توضیح میدهد.
فصل 13 کتاب Go for DevOps، زیرساخت به عنوان کد با Terraform، نحوه تعریف ارائهدهنده Terraform سفارشی خود را نشان میدهد.
فصل 14 کتاب Go for DevOps، استقرار و ساخت برنامههای کاربردی در Kubernetes، به نحوه برنامهنویسی و گسترش APIهای Kubernetes میپردازد.
فصل 15، برنامهنویسی ابر، استفاده از Go to provision و تعامل با منابع ابر را توضیح میدهد.
فصل 16 کتاب Go for DevOps، طراحی برای آشوب، استفاده از محدودکنندههای نرخ، موتورهای جریان کار متمرکز، و سیاستهایی برای کاهش شعاع انفجار را مورد بحث قرار میدهد.
سرفصلهای کتاب Go for DevOps:
- Contributors
- About the authors
- About the reviewers
- Preface
- Section 1: Getting Up and Running with Go
- Chapter 1: Go Language Basics
- Chapter 2: Go Language Essentials
- Chapter 3: Setting Up Your Environment
- Chapter 4: Filesystem Interactions
- Chapter 5: Using Common Data Formats
- Chapter 6: Interacting with Remote Data Sources
- Chapter 7: Writing Command-Line Tooling
- Chapter 8: Automating Command-Line Tasks
- Section 2: Instrumenting, Observing, and Responding
- Chapter 9: Observability with OpenTelemetry
- Chapter 10: Automating Workflows with GitHub Actions
- Chapter 11: Using ChatOps to Increase Efficiency
- Section 3: Cloud ready Go
- Chapter 12: Creating Immutable Infrastructure Using Packer
- Chapter 13: Infrastructure as Code with Terraform
- Chapter 14: Deploying and Building Applications in Kubernetes
- Chapter 15: Programming the Cloud
- Chapter 16: Designing for Chaos
- Other Books You May Enjoy
جهت دانلود کتاب Go for DevOps میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.