کتاب Build an Orchestrator in Go (From Scratch) (یک ارکستراتور در Go بسازید (از ابتدا)) هر مرحله از ایجاد یک ارکستراتور را با نمودارها، دستورالعملهای گام به گام و نمونههای کد دقیق Go توضیح میدهد.
اگر متخصص Go نیستید نگران نباشید. کد کتاب برای سادگی و خوانایی بهینه شده است و مفاهیم کلیدی آن به راحتی به هر زبانی قابل پیادهسازی است. شما اصول اساسی این چارچوبها و حتی نحوه مدیریت ارکستراتور خود را با رابط خط فرمان خواهید آموخت.
در ادامه مقدمهای از را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Build an Orchestrator in Go (From Scratch):
زمانی که در سال ۲۰۰۷ در گوگل شروع به کار کردم با ارکسترها آشنا شدم. و معرفی من به بورگ نبود، بلکه گانتی بود. گانتی یک سیستم مدیریت خوشهای توسعه یافته داخلی بود که بر روی ماشینهای مجازی کار میکرد. در آن زمان، این یک بستهبندی اولیه در اطراف نسخه متن باز Xen بود و راه حلی خوشهای ارائه میکرد که به ما امکان میداد ماشینهای مجازی (به جای فیزیکی) را در اختیار مهندسان قرار دهیم.
ما از گانتی به عنوان یک ارکستر یاد نکردیم، و همچنین در مورد آن به همان شکلی که بورگ صحبت کردیم. با نگاهی به گذشته، فکر نمیکنم گانتی را به نوعی ارکستراتور در نظر بگیریم.
به جای کار بر روی وظایف (به شکل کانتینر)، روی ماشینهای مجازی کار میکرد. در داخل گوگل، گانتی به عنوان پلی از دنیایی که برخی از مهندسان میتوانستند برنامههای خود را بر روی ماشینهای فیزیکی اجرا کنند، به دنیایی که هر مهندس برنامههای خود را بر روی Borg اجرا میکرد، عمل کرد.
چندین سال بعد، زمانی که سیستم مدیریت چرخه حیاتی را که برای مدیریت خوشههای گانتی و ماشینهای مجازی ساخته بودیم، بازنویسی کردیم، با بورگ آشنا شدم. ما آن را روی بورگ اجرا کردیم. به سرعت به سال ۲۰۲۰ پیش میرویم. همهگیری کووید شیوع پیدا کرد و مانند همه افراد دیگر، متوجه شدم که از خانه کار میکنم. ناگهان، به دلیل عدم نیاز به رفت و آمد به دفتر منهتن، روزی سه ساعت اضافه داشتم. چه باید کرد؟
البته، کار بدیهی این بود که یک پروژه شخصی را شروع کنیم. اما چی؟ بعد از ۱۳ سال کار با ارکسترها، فکر کردم شاید جالب باشد که بخواهم از ابتدا یکی بنویسم. چقدر میتونه سخت باشه
من بیشتر تابستان ۲۰۲۰ را روی ارکستراتورم کار کردم. من آن را مکعب نامیدم تا موضوع پیشتازان فضا را ادامه دهم. با کمال تعجب، من آن را در کمتر از ۳۰۰۰ خط کد کار کردم.
تقریباً در همان زمان، من کتاب Thorsten Ball\’s Writing an Interpreter in Go را خواندم. در حالی که من لزوماً علاقهای به مترجمان یا نوشتن زبانهای برنامهنویسی نداشتم، علاقهمند به یادگیری نحوه کار آنها بودم. و بعد به من برخورد کرد! من میتوانم کتابی درباره نوشتن یک ارکستراتور در Go بنویسم. این همان کتابی است که آرزو میکردم در سال ۲۰۰۷ داشته باشم! به این ترتیب کتابی که اکنون پیش روی شماست متولد شد.
من در مراحل اولیه نوشتن متوجه شدم که ارکستراسیون یک موضوع بزرگ است. هنگام صحبت در مورد سیستمهای ارکستراسیون، به راحتی میتوان از نگرانیهای ثانویه منحرف شد.
چگونه با کشف خدمات برخورد میکنید؟ چگونه DNS را مدیریت میکنید؟ در مورد اجماع چطور؟ من میخواستم تمام چیزهایی را که روی سیستمهای ارکستراسیون انباشته میشوند از بین ببرم و فقط هسته اصلی را ارائه دهم، پایهای که همه چیزهای دیگر روی آن قرار دارند.
نه اینکه چیزهایی مانند کشف سرویس، DNS و تعادل بار بیاهمیت باشند. اما در زمینه یک سیستم ارکستراسیون، ما در مورد آن چیزها صحبت میکنیم زیرا آنها ابزارهایی هستند که در خدمت عملکرد اصلی یک ارکستراتور هستند: برنامهریزی برنامهها برای اجرا بر روی مجموعهای از گرهها و مدیریت چرخه زندگی آنها.
بنابراین به طور خلاصه، کتاب Build an Orchestrator in Go (From Scratch) در مورد این است: گرفتن درخواست از یک کاربر برای اجرای یک برنامه، شناسایی ماشینی که میتواند برنامه را اجرا کند، و سپس ارسال یک درخواست به ماشین انتخاب شده برای شروع برنامه. وقتی آن را به این شکل بیان میکنید ساده به نظر میرسد، اینطور نیست؟
علاوه بر ارائه مفاهیم اساسی یک سیستم ارکستراسیون، هدف دیگر از نگارش این کتاب، قابل دسترس کردن محتوا برای مخاطبان گسترده است.
بنابراین در حالی که من تصمیم گرفتم ارکستراتور Cube را به زبان برنامهنویسی Go بنویسم، امید من این است که هر کسی بتواند روی کتاب کار کند و کد را به کار ببندد، حتی اگر هرگز در زندگی خود خطی از Go ننوشته باشید. همه کدها از ویژگیهای اصلی Go استفاده میکنند.
در حالی که ما از گوروتینها برای انجام برخی از همزمانیهای اولیه استفاده میکنیم، از کانالها استفاده نمیکنیم (در صورت علاقه منابع بسیار خوبی برای یادگیری در مورد همزمانی وجود دارد). و ما از ژنریک استفاده نمیکنیم. (در مدت کوتاهی پس از انتشار Go ۱. ۱۸، من سعی کردم کد و نسخه خطی را برای استفاده از ژنریک اصلاح کنم. زمانی که کد کار میکرد، متوجه شدم که پیچیدگی غیرضروری به کتاب وارد میکند. این یک چیز دیگر برای توضیح در یک لیست طولانی شد. از چیزهایی که باید توضیح داد. )
امیدوارم هنگام خواندن کتاب Build an Orchestrator in Go (From Scratch) لذت ببرید. و در روند لذت بردن، امیدوارم شما هم به همان اندازه که من برای نوشتن آن آموختم، از این کتاب یاد بگیرید.
بشتر بخوانید: کتاب Containers for Developers Handbook
در مورد کتاب Build an Orchestrator in Go (From Scratch)
Build an Orchestrator in Go (از ابتدا) برای کمک به درک بهتر اجزای اساسی سیستمهای ارکستراسیون نوشته شده است. چه به عنوان یک مهندس DevOps، مهندس قابلیت اطمینان سایت (SRE) یا مهندس نرمافزار کار کنید، بسیاری از فناوریهای امروزی میتوانند مانند یک جعبه سیاه به نظر برسند. شما فقط آن را در ابر مستقر میکنید، و سپس \”موارد\” جادویی اتفاق میافتد.
همانطور که همه ما میدانیم، فناوری جادویی زمانی عالی است که کار کند! هنگامی که شکست میخورد – و شکست خواهد خورد! – آن جنبه جادویی میتواند مانعی برای شناسایی سریع مشکلات و رفع آنها باشد. همانطور که توسعهدهندگان بیشتری برنامههای خود را به ابر منتقل میکنند، آنها را در یک سیستم ارکستراسیون اجرا میکنند (یا انجام خواهند داد).
مگر اینکه آنها در یک شرکت بزرگتر کار کنند که دارای کارکنان اختصاصی DevOps یا SRE است، احتمالاً باید خودشان برنامههای خود را مستقر و مدیریت کنند. این شامل رسیدگی به مشکلات در صورت بروز میشود. امید من این است که این کتاب مقداری از جادوی نحوه اجرای برنامهها بر روی ارکستراتور را حذف کند.
چه کسی باید کتاب Build an Orchestrator in Go (From Scratch) را بخواند؟
Build an Orchestrator in Go (از ابتدا) برای هر کسی که مسئول استقرار و راهاندازی یک سیستم ارکستراسیون است (به عنوان مثال، مهندسان DevOps و SRE) و برای هر کسی که مسئول استقرار و مدیریت برنامههایی است که روی یک سیستم ارکستراسیون اجرا میشوند (یعنی مهندسان نرمافزار) است.
اگر میخواهید نحوه کار ارکستراتورها را بیاموزید، میتوانید کد منبع Kubernetes یا Nomad را بخوانید، هر دو پروژه منبع باز موجود در GitHub. Kubernetes دارای ۵ میلیون خط کد Go است.
Nomad پایگاه کد بسیار کوچکتری دارد، اما همچنان بیش از ۵۰۰۰۰۰ خط Go دارد. من در مورد شما نمیدانم، اما من برای به دست آوردن ارزش زیادی از تلاش برای درک نیم میلیون خط کد، چه برسد به ۵ میلیون خط، تلاش میکنم!
نحوه سازماندهی کتاب Build an Orchestrator in Go (From Scratch): نقشه راه
این کتاب دارای پنج بخش است که شامل ۱۳ فصل است. قسمت ۱ کتاب Build an Orchestrator in Go (From Scratch) مدل ذهنی ارکستراتور مکعب را معرفی میکند و پایه کد اسکلت را تنظیم میکند که در بقیه کتاب پیادهسازی خواهد شد:
فصل ۱ کتاب Build an Orchestrator in Go (From Scratch) به طور خلاصه هدف سیستمهای ارکستراسیون را توضیح میدهد و سپس مدل ذهنی کیوب را که ارکستراتور در بقیه کتاب پیادهسازی کرده است، توضیح میدهد.
فصل ۲ از مدل ذهنی فصل ۱ برای ایجاد یک پایگاه کد اسکلتی برای مفاهیم اصلی ارکستراتور مکعب استفاده میکند.
فصل ۳ کتاب Build an Orchestrator in Go (From Scratch) نشان میدهد که چگونه با گرفتن اسکلت برای شی Task و شکل دادن به جزئیات آن، پایگاه کد را پیادهسازی میکنیم.
قسمت ۲ کتاب Build an Orchestrator in Go (From Scratch) مفاهیم لازم برای جزء کارگر را پیادهسازی میکند:
فصل ۴ جزئیات پیادهسازی شی Worker را بیان میکند.
فصل ۵ یک API برای Worker میسازد.
فصل ۶ چارچوبی را برای کارگر ایجاد میکند تا معیارهای مربوط به وضعیت خود و وضعیت وظایفی را که در حال اجراست نشان دهد.
قسمت ۳ کتاب Build an Orchestrator in Go (From Scratch) مفاهیم لازم برای جزء مدیر را پیادهسازی میکند:
فصل ۷ کتاب Build an Orchestrator in Go (From Scratch) جزئیات پیادهسازی شی Manager را بیان میکند.
فصل ۸ یک API برای مدیر ایجاد میکند.
فصل ۹ سناریوهای شکست را بررسی میکند و راه حلهایی را برای رسیدگی به آنها پیادهسازی میکند.
قسمت ۴ کتاب Build an Orchestrator in Go (From Scratch) خواننده را در بازسازی دو مؤلفه از اجرای اولیه قرار میدهد:
فصل ۱۰ یک رابط زمانبندی را توصیف میکند و یک الگوریتم زمانبندی پیچیدهتر را پیادهسازی میکند.
فصل ۱۱ یک رابط ذخیرهسازی طراحی و ایجاد میکند که به اجزای مدیر و کارگر اجازه میدهد وظایف خود را در حافظه یا به طور مداوم در یک پایگاه داده ذخیره کنند.
قسمت ۵ کتاب Build an Orchestrator in Go (From Scratch) یک رابط خط فرمان (CLI) را پیادهسازی میکند که به خواننده اجازه میدهد تا ارکستراتور را کار کند:
فصل ۱۲ کتاب Build an Orchestrator in Go (From Scratch) یک CLI میسازد که دستوراتی را برای شروع مدیر و کارگر، شروع و توقف کارها و دریافت وضعیت وظایف در سیستم اجرا میکند.
فصل ۱۳ خلاصهای از کارهایی را که ما انجام دادهایم ارائه میکند و پیشنهادهایی برای اینکه از اینجا به کجا برویم ارائه میکند.
سرفصلهای کتاب Build an Orchestrator in Go (From Scratch):
- inside front cover
- Build an Orchestrator in Go (From Scratch)
- Copyright
- dedication
- contents
- Front matter
- Part 1 Introduction
- 1 What is an orchestrator?
- 2 From mental model to skeleton code
- 3 Hanging some flesh on the task skeleton
- Part 2 Worker
- 4 Workers of the Cube, unite!
- 5 An API for the worker
- 6 Metrics
- Part 3 Manager
- 7 The manager enters the room
- 8 An API for the manager
- 9 What could possibly go wrong?
- Part 4 Refactorings
- 10 Implementing a more sophisticated scheduler
- 11 Implementing persistent storage for tasks
- Part 5 CLI
- 12 Building a command-line interface
- 13 Now what?
- Appendix. Environment setup
- index
- inside back cover
جهت دانلود کتاب Build an Orchestrator in Go (From Scratch) میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.