کنتاینر (Container) بسته های نرم افزاری هستند که در درون واحد های استاندارد برای توسعه، حمل و یا استفاده از سرویس ها ارائه می شود. در این مقاله به بررسی دو کنتاینر شرکت داکر (Docker) و شرکت گوگل (Google) پرداختیم. به خاطر کمبود منابع فارسی در این زمینه سعی به ترجمه مستقیم متن اصلی این شرکت ها در زمینه خدمات کنتاینر خودشان نمودیم. در بخش اول درباره کنتاینرهای شرکت داکر و در بخش دوم این مقاله درباره کنتاینر شرکت گوگل (کورینتس) صحبت کردیم.
کنتاینر های شرکت داکر
یک کنتاینتر یک واحد استاندارد از بسته های نرم افزاری است که رابطه کاملی بین کد و وابستگی ها (dependencies) ان ها وجود دارد و به همین خاطر می توان با سرعت و اطمینان بالایی از یک محیط رایانه ای به محیط دیگر ارسال شود. شرکت داکر (Docker) یکی از ارائه کننده کنتاینر ها است. این شرکت یک ایمیج کنتاینتر سبک وزن، مستقل و قابل اجرا را طراحی کرده است که می توان به صورت همزمان بر روی آن کدها، برنامه های زمان اجرا (Runtime)، ابزارهای سیستم (System tools)، کتابخانه های ابزار (Libraries) و تنظیمات وابسته را در اختیار داشت.
کنتاینر که گاهی ایمیج کنتاینر (Container image) نامیده می شود در زمان اجرا (Runtime) و زمانی که موتور محصول داکر (Docker) به راه می افتد تبدیل به یک نگهدارنده اطلاعات می شود. این نگهدارنده یا کنتاینتر هم برای لینوکس و هم برای نرم افزارهای تحت ویندوز قابل استفاده است، محتوای نرم افزاری برای هر دو سیستم عامل بدون توجه به نوع زیرساخت به کار گرفته شده یکسان است. کنتاینر ها نرم افزار را از محیطی که در آن است جدا می کنند و در نتیجه آن می توانیم مطمئن باشیم که آن ها علی رغم تفاوت هایی که میان انواع محیط های توسعه و اجرا وجود دارد، آن ها به خوبی و یکنواخت کار کنند.
کنتاینر های Docker که می توانند بر روی موتور Docker کار کنند دارای خصوصیت های زیر هستند:
- استاندارد: شرکت Docker یک استاندارد اصلی را ارائه کرده است و به همین خاطر آن ها می توانند به شکل پرتابل در هر جایی به اجرا در آیند.
- سبک وزن (lightweight): این کنتاینر منابع دستگاه را با سیستم عامل نصب شده به اشتراک میگذارد و به همین خاطر نیاز به نصب یک سیستم عامل اضافی به ازای هر سیستم نصب شده وجود ندارد، این کار سبب می شود که کارآمدی بیشتری بر روی سیستم عامل ها ایجاد شود و در نتیجه تعداد پروانه های بهره برداری که برای سیستم عامل مورد نیاز است کاهش پیدا کند.
- امنیت (Secure): نرم افزار ها به صورت کامل ایمن در کنتاینترها قرار می گیرند و شرکت داکر نیز ظرفیت های ایزوله سازی قدرتمندی را به شکل پیش فرض برای آنها ایجاد کرده است.
کانتینرهایی که توسط شرکت داکر ارائه می شوند را می توان بر روی هر سیستمی اعم از لینوکس، ویندوز، دیتاسنترها، مراکز پردازش ابری، مراکز که از سرور استفاده نمی کنند (ServerLess) و غیره استفاده کرد.
موتور داکر یک کنتاینر آپ سورس است که در سال ۲۰۱۳ به بازار ارائه شده است.
این کنتاینتر مفاهیم اصلی کنتاینر را به بازار معرفی کرده است و از آن به خصوص در کنار سیستم عامل لینوکس استفاده می کند. ترکیب کنتاینرهای داکر و سیستم عامل های لینوکس در ابتدا به عنوان Cgroups و NameSpace شناخته می شده است. فناوری هایی که شرکت داکر برای توسعه کنتاینتر به کار برده است به شکل کاملا منحصر به فرد هستند. آن ها متمرکز بر نیازها و الزامات برنامه نویسان، کاربران سیستم ها و یا وابستگی های زیرساختی مورد نیاز در نرم افزارها مستقل هستند.
موفقیت در دنیای لینوکس سبب شد که همکاری هایی با شرکت مایکروسافت در زمینه ساخت کنتاینرهای ویژه برای سیستم عامل ویندوز سرور پدید بیاید (این همکاری در برخی از موارد به عنوان کنتاینرهای داکر ویندوز) شناخته می شود.
فناوری های که در ساخت پروژه های شرکت داکر به کار برده می شوند تماما اپن سورس هستند و به وسیله تعداد زیادی از مراکز داده و ارائه کننده های سرویس های ابری در کل جهان به کار برده می شوند. بسیاری از این ارائه کننده خدمات و سرویس ها از کنتاینرهای شرکت داکر برای ارائه خدمات IaaS بر بستر فضای ابری استفاده می کنند. افزون بر این که این شرکت اولین ارائه کننده فریم ورک کنتاینر های بدون سرور (Serverless) است، که در این فریم ورک ها از فناوری کنتاینر های شرکت داکر استفاده شده است.
مقایسه کنتاینرها و ماشین های مجازی
کنتاینرها و ماشین های مجازی دارای مشابهت هایی در زمینه ایزوله کردن منابع و اختصاص دادن آن ها به کاربران مشخص دارند، اما در زمینه کارکرد بسیار متفاوت از هم کار می کنند. این تفاوت به خاطر آن است که در اینجا کنتاینرها به جای اختصاص سخت افزارها به کاربران به سراغ اختصاص سیستم عامل به آن ها رفته اند. کنتاینرها از قابلیت های اجرا شدن در همه جا بدون نیاز به نصب (Portable) و کارآمدی (efficient) بالاتری نسب به سیستم های ماشین مجازی برخوردار هستند.
کنتاینرها
کنتاینرها در بالاترین لایه بسته های کد و وابستگی ها به صورت انتزاعی قرار می گیرند. این امکان وجود دارد که چند کنتاینر در درون یک ماشین به اجرا در آیند و سیستم عامل اصلی را با دیگر کنتاینرها به اشتراک بگذارند، در عین حال هر کدام در فضای کاربری ایزوله شده ای اجرا شوند. کنتاینرها به نسبت ماشین های مجازی فضای کمتری می گیرند و اغلب اوقات فضای آن ها به چند ده مگابایت می رسد، این به معنای آن است که اکنون می توان تعداد کنتاینرهای بیشتری را به اجرا درآمد و در نتیجه نیاز کمتری به ماشین های مجازی و یا سیستم عامل های وابسته آن ها وجود دارد.
ماشین های مجازی
ماشین های مجازی (Virtual Machines) که به اختصار VMs نامیده می شوند، یک فضای انتزاعی از بخش های سخت افزار بر روی سرور هستند که می توانند یک فضای مستقل را برای کاربران ایجاد کنند. سیستم مدیریت عالی یا hypervisor آنها این اجازه را می دهند که چندین ماشین مجازی بر روی یک سرور یا رایانه به اجرا در آیند.
هر کدام از ماشین ها مجازی از سیستم عامل، نرم افزارها و بخش های باینری و کتابخانه ای تشکیل شده است که ممکن است هر کدام تا ده ها گیگابایت برسند. ماشین های مجازی بوت های آهسته ای دارند. هنگامی که از کنتاینرها و ماشین های مجازی با همدیگر استفاده شود، انعطاف پذیری بسیار عالی برای توسعه و مدیریت کردن نرم افزارها در اختیار کاربران قرار می گیرد.
استانداردهای کنتاینرها و پیشگامان صنعتی آن
شرکت داکر در سال ۲۰۱۳ در توسعه نرم افزارها انقلابی را شروع کرده است. این شرکت با دمکراتیک کردن استفاده از کنتاینرهای نرم افزاری، سبب بهره مندی همه افراد از آن شده است. داکر در ابتدا یک کنتاینر ویژه را بر اساس سیستم عامل لینوکس توسعه داده است. آن به صورت پرتابل قابل استفاده بود و به راحتی و به شکل بسیار منعطفی امکان توسعه داشت. داکر یک کتابخانه مختص کنتاینرها به عنوان LibeContainer را به صورت اپن سورس ایجاد کرده است و سبب ایجاد مشارکت های گسترده در سطح جهان در این زمینه شده.
در ژوئن ۲۰۱۵، شرکت داکر، تعریف ایمیج کنتاینر و اجرا کد را که اکنون به نام «Runc» شناخته می شده را به صورت یک کنتاینر ابتکاری باز (Open Container initiative (OCI)) است را برای کمک به استاندارد سازی کنتاینرها ارائه کرده است. این کنتاینر سبب رشد سریع اکوسیستم ها و بلوغ فنی در این صنعت شده است.
فعالیت های تکاملی در کنتاینرهای شرکت داکر ادامه پیدا کرده است و سبب جلب توجه ها به این فناوری نوظهور شده است. در نتیجه توسعه شرکت داکر بار دیگر یکی دیگر از محصولات خود بهنام CNCF یا Cloud Native Computing Foundation را در سال ۲۰۱۷ به صورت اپن سورس در اختیار همگان قرار داد. اکنون کنتاینر Containred به عنوان یک کنتاینر در حال اجر پیشرو صنعتی شناخته می شود که از فناوری های به کار رفته در Runc استفاده می کند. تاکید این کنتاینر بر سادگی، قدرت و قابلیت انتقال بسیار راحت است. Containred یک هسته اصلی برای کنتاینرهای زمان اجرا در موتور Docker به حساب می آید.
مسیر گوگل در توسعه کنتاینرها
هر سرویسی که شما در گوگل استفاده میکنید از یوتیوب گرفته تا موتور جستجوی قدرتمند آن، همگی یک کنتاینر است. با کنتاینر سازی این امکان برای تیم های توسعه به وجود می آید که بتوانند به صورت سریعتر کارهای خود را به پیش ببرند، و توسعه نرم افزارها را به صورت کارآمد تری انجام دهند و بتوانند در مقیاسی بی سابقه آن ها را به اجرا درآورد. هر هفته، در گوگل نزدیک به دو میلیارد کنتاینر ایجاد می شود.
شرکت گوگل چیزهای زیادی را درباره کنتاینر سازی جریان کاری در محصولات خود ظرف یک دهه گذشته آمده است و اکنون این امکان برای وی به وجود آمده است که این دانش و مسیر طی شده را با دیگران به اشتراک بگذارد. در اولین روزهایی که فعالیت با سیستم عامل لینوکس و Cgroup آغاز شده است، این شرکت سعی کرده است ابزارها داخلی و منابع اطلاعاتی خود را تحت عنوان پروژه Kubernetes در اختیار همگان بگذارد. تمام تجربیاتی که شرکت گوگل در پلتفرم های پردازش ابری، و کسب و کارهایی که در موارد دیگر (در هر اندازه ای داشته است) به راحتی و در قالب کنتاینر سازی به همگان ارائه شده است.
کنتاینر های ویژه گوگل چه خصوصیاتی دارند؟
کنتاینرهای یک مکانیسم منطقی را به ما پیشنهاد می دهند که در آن نرم افزارها می توانند از محیطی که واقعا در آن اجرا می شوند مجزا شوند و به شکل انتزاعی کار کنند. این سبک از جدا شدن، این امکان را در اختیار نرم افزارهای مبتنی بر کنتاینر قرار می دهد که بتوانند به شکل راحت تر و پیوسته تری، بدون توجه به محیط هدفی که در آن هستند اعم از دیتاسنترها، مراکز پردازش ابری عمومی و یا حتی لب تاپ شخصی فرد توسعه دهنده، توسعه پیدا کنند.
کنتاینر سازی می تواند یک جدایش کاملا منطقی و درست را ایجاد کند، و با به وجود آمدن آن، تمام توجه برنامه نویسی بر روی منطق نرم افزار و وابستگی های آن خواهد بود، در حالی که تیم توسعه دهنده آی تی می توانند توجه خود را بر روی توسعه و مدیریت نرم افزار بگذارند، بدون آنکه نگران جزئیات نرم افزارها نظیر نسخه نرم افزار و یا ساختاربندی های ویژه نرم افزارها باشند.
افرادی که از محیط های مجازی سازی شده به سراغ کنتاینرها می آیند، اغلب کنتاینرها را با ماشین های مجازی (VMs) مقایسه می کنند.آن ها در گذشته با ماشین های مجازی آشنایی داشته اند: ماشین های مجازی یک مهمان برای سیستم عامل های میزبان نظیر لینوکس یا ویندوز بودند که به شکل مجازی امکان دسترسی به سخت افزاری زیرمجموعه خود را می دادند.
مانند ماشین های مجازی، کنتاینرها نیز این اجازه را به ما می دهند که بتوانیم نرم افزارها را به همراه کتابخانه ها و وابستگی های آن ها به اجرا در آوریم، در حالی که همگی آن ها در یک محیط کاملا مجزا و مستقل هستند. همانطور که در ادامه نیز توضیح خواهیم داد، شباهت هایی در میان کنتاینرهای واحد های سبک وزن تر (Lightweight) برای توسعه دهندگان نرم افزار و امکانات ویژه برای تیم های تخصصی آی تی وجود دارد، که سبب ارائه مجموعه بسیار زیادی از منافع برای آن ها می گردد.
چرا از کنتاینر استفاده می شود؟
کنتاینرها برخلاف ماشین های مجازی که بخش های سخت افزاری را به شکل مجزا شده در اختیار کاربران قرار می دهند، در سطح بالایی سیستم عامل قرار می گیرند و امکانات سیستم عامل را به شکل مستقل در اختیار کاربران میگذارد، در واقع در کنتاینرها چند سیستم عامل به صورت همزمان و در کنار هم ولی در عین حال مستقل از همدیگر اجرا می شوند. این به آن معناست که کنتاینرها وزن پردازشی کمتری را ایجاد می کنند، به خاطر آنکه آن ها مستقیما به هسته سیستم عامل متصل می شوند، بسیار سریعتر عمل می کنند و می توانند از بخش بسیار کمتری از حافظه برای بوت شدن و اجرای نرم افزارها استفاده کنند.
انواع مختلفی از کنتاینرها در محیط امروزی در دسترس است، برای مثال همانطور که در بخش اول این مقاله نیز توضیح داده شد، شرکت داکر(Docker) یک کنتاینر اپن سورس را ارائه کرده است که توسط پلتفرم گوگل کلود (Google Cloud Platform) و به وسیله موتور کورینتس گوگل (Google Kubernetes Engine) اجرا می شود.
چرا در هر صورت باید از سندباکس (Sandbox) استفاده کرد؟
کنتاینرها سبب جا شدن نرم افزار از همدیگر می شوند، مگر آنکه شما به صورت صریح (Explicitly) آنها را به همدیگر متصل کنید- این به معنای آن است که لازم نیست نگران تضاد بین وابستگی ها و یا محدودیت منابع باشیم- و به شکل کاملا صریح محدودیت منابع برای هر کدام از سرویس ها را مشخص کنید. نکته ای که در اینجا بسیار مهم است، وجود یک لایه امنیتی اضافی است، زیرا که نرم افزارها به صورت مستقیم بر روی سیستم عامل میزبان به اجرا در نمی آیند.
محیط های سازگار
کنتاینرهای این امکان را در اختیار توسعه دهندگان قرار می دهند که بتوانند محیطهای را ایجاد کنند که کاملا از همدیگر مجزا باشند و رفتار آن ها نیز قابل پیش بینی باشد. کنتاینرها همچنین شامل وابستگی های نرم افزاری هستند که نرم افزارها به آن نیاز دارند، این موارد می تواند شامل ورژن های مشخصی از زبان های برنامه نویسی زمان اجرا (Programming language runtimes) و دگر کتابخانه های نرم افزاری است. از دیدگاه برنامه نویسی تمام این موارد به شکل کاملا سازگار با هم عمل می کنند و مهم نیست که در کجا و توسط چه کسی نرم افزار توسعه پیدا می کند.
تمام این موارد به شکل بسیار موثری به زبان ماشین ترجمه می شوند و تیم توسعه نرم افزار و تیم آی تی تمام وقت خودشان را صرف عیب یابی و رفع مشکلات در محیط های مختلف قرار می دهند و در نتیجه می توانند به ارائه خدمات بهتر به کاربران نهایی بپردازند. ترکیب این موارد با همدیگر به معنای وجود باگ های نرم افزاری کمتر است، زیرا توسعه دهندگان نرم افزارها اکنون با این فرض کار می کنند که محیط توسعه و تست کامل مطمئن است و در زمان تولید تمام شرایط خود را حفظ می کند.
قابلیت اجرا در هر کجا
کنتاینرها این قابلیت را دارند که به صورت مجازی در هر جایی به اجرا در آیند، این امکان بینظیری برای توسعه راحت و توسعه دهندگان است. اکنون آن ها می توانند بر روی هر سه سیستم عامل لینوکس، ویندوز، و مک به راحتی کنتاینرها را اجرا کنند، هیچ فرقی هم بین استفاده از ماشین ها مجازی و یا سیستم های معمول فیزیکی نیست. کنتاینرها به راحتی قابل اجرا در هر کجایی، چه بر روی رایانه برنامه نویسی، چه بر روی سرورهای یک دیتا سنتر و چه بر روی محیط های پردازش ابری عمومی، هستند.
یکی از مواردی که سبب توسعه و فراگیر شدن این موضوع شده، ارائه و بهره گیری از کنتاینر شرکت داکر بود که کمک زیادی را به همه برنامه نویسان کرده است. در هر مکانی که شما خواهان اجرای برنامه ای باشید، شما می توانید از یک کنتاینر استفاده کنید.
مجزا بودن کنتاینر
کنتاینرها، به مجازی سازی پردازنده ها، حافظه ها، استوریج ها و منابع دیگر شبکه، در سطح سیستم عامل می پردازند که سبب ایجاد یک سند باکس (Sandbox) برای آن ها می شود، این سندباکس به صورت منطقی از دیگر نرم افزارها مجزا است.
از کد تا اجرا نرم افزار
کنتاینرها این امکان را در اختیار ما قرار می دهند که بتوانیم نرم افزارهای خودمان و وابستگی های لازم آن ها را به صورت یک مانیفست مختصر در کنار هم قرار دهیم که بتوان ورژن آن ها را کنترل کرد. این کار سبب می شود که بتوان به راحتی نرم افزار را میان توسعه دهندگان مختلف و ماشین های مجازی که در کلاستر ما موجود است به اشتراک بگذاریم.
دقیقا به همان شکلی که کتابخانه های کدها را در کنار همدیگر نگاه می دارند، در اینجا هم این امکان برای توسعه دهندگان به وجود آمده است که بتوانند به همین شکل مواردی مانند دسترسی کاربران، مدیریت سیشن ها و غیره را از همدیگر مجزا کنند، اکنون کنتاینرها این امکان را به نرم افزارها می دهند که به شکل یک بسته کامل، بدون در نظر گرفتن سیستم عامل، ماشین و حتی ساختار خود کد، به اجرا در آیند.
با ترکیب با معماری مبتنی بر سرویس، کل مجموعه نرم افزاری می تواند بسیار کوچک تر شود و این به معنای ایجاد چابکی و بهره وری بیشتر در توسعه نرم افزارها است. تمام این موارد می تواند به راحتی توسعه، خطایابی، برنامه نویسی و در کل مدیریت کامل فرایند توسعه نرم افزار منجر شود.
یکپارچه شدن کنتاینر با معماری های مبتنی بر سرویس
کنتاینرها با معماری های مبتنی بر سرویس (Service based architecture) به بهترین شکل ممکن کار می کنند. بر خلاف معماری های یکپارچه (Monolithic)، – که در هر بخش از نرم افزار با سیستم عامل و شیوه پردازش داده در هم تنیده است- معماری های مبتنی بر سرویس، در بخش های جدای از هم قرار می گیرند. جداسازی و تقسیم نیروی کار این امکان را به سرویس ها می دهد که حتی اگر یکی از آن ها دچار خطا و از کار افتادن شدن، نرم افزارهای موجود در بقیه سرویس ها به صورت کاملا امن و مطمئنی به کار خودشان ادامه دهند.
کنتاینر سازی این امکان را به توسعه دهندگان می دهند که بتوانند نرم افزارها را بسیار سریعتر و قابل اطمینان تر توسعه دهند؛ از آنجا که مبنای کد در اینجا کوچکتر است، نگهداری از آن نیز بسیار راحت تر است، زیرا سرویس ها به صورت مجزا از همدیگر هستند، در اینجا ما به راحتی می توانیم ورودی های خاص را برای خروجی های ویژه خودمان در اختیار داشته باشیم.
کنتاینرها برای نرم افزارهای مبتنی بر سرویس های بسیار عالی هستند، زیرا شما میتواند سلامت هر کدام از کنتاینرها را به صورت مجزا بررسی کنید. هر کدام از سرویس ها محدود به منابع خاصی است و به صورت مستقل از دیگر موارد شروع به کار می کنند.
چون کنتاینرها به صورت مجزا از کد عمل میکنند، کنتاینرها این اجازه را به ما می دهند که ما بتوانیم با سرویس ها به شکل یک بخش مجزا مانند «جعبه سیاه (Black box)» عمل کنیم، کاهش بیشتر فضا هم یکی دیگر از موضوعات برنامه نویسان بوده است که باید به آن توجه کرد. هنگامی که توسعه دهندگان بر روی سرویس هایی که به همدیگر در ارتباط هستند کار میکنند، آنها می توانند به راحتی یک کنتاینر، را برای آن سرویس ویژه بدون صرف وقت نصب کنند، این محیط به صورت کاملا سالم است و پیش از آن رفع عیب شده است.
کورینتس (Kubernetes): تنظیم کردن کنتاینر گرید محصول
شرکت گوگل در زمینه کار با سیستم مدیریت کلاستر داخلی Borg بسیار موفقیت آمیز عمل کرده است و نکات بسیار زیادی را از آن آموخت که آن ها را در پروژه اپن سورس «کورینتس Kubernetes» به کار برد. اکنون ما با کنتاینرهایی، با پشتوانه یک دهه تجربه روبرو هستیم. همانطور که می دانیم «K8s» – در اینجا کورینتس تنظیم کنتاینر خودکار شده ای را فراهم آورده است که می تواند برای مدیریت ماشین ها و سرویس هایمان به خدمت گرفت شود- سبب بهبود اطمینان پذیری و کاهش زمان آماده سازی و استفاده از منابع برای روی دواپس (DevOps) می شود، و به نظر می رسد که لازم به اشاره به کاهش اضطراب ناشی از انجام این وظایف هم نیست.
کورینتس سبب شده است که همکاری، توسعه و مدیریت نرم افزارها بسیار راحت تر شود. کورینتس پیشروی و پسروی را به صورت خودکار در آورده است، و سلامت سرویس هایمان را برای جلوگیری از ایجاد مشکلات در آینده مانیتور می کند. همچنین به صورت منظم چک های سلامت بودن سرویس هایمان را انجام می دهد، کانتینرهای متوقف شده و یا مشکل دار را دوباره راه اندازی می کند و هنگامی که مشتریان ورود موفقیت آمیز خودشان را تایید کردند، تبلیغ سرویس ها را به آن ها نشان می دهد.
افزون بر این، کورینتس به صورت خودکار بر اساس میزان به کارگیری، سرویس ها را فعال کرده و یا آن ها را به حالت غیر فعال در می آورد، با این کار مطمئن می شود که شما تنها سرویسی که به آن احتیاج دارید را به خدمت گرفته شده است. به مانند کنتاینرهای دیگر، کورینتس این اجازه را به ما می دهد که به شکل اعلامی (declaratively) کلاستر خودمان را مدیریت کنیم، این کار این امکان را به ما می دهد که ما به راحتی بتوانیم نرم افزارهای کنترل ورژن خودمان را نصب کنیم و عمل تکثیر (replicated) را به شکل ساده تری انجام دهیم.
ساختارهای کورینتس
- پیشروی ها و پسروی ها خودکار ؛
- مانیتور کردن سلامت سرویس ها؛
- خودکار سازی مقیاس به خدمت گرفتن سرویس ها؛
- مدیریت اعلامی؛
- استقرار و توسعه در هر جایی که شامل توسعه دوگانه (Hybrid deployment) هم می شود.
شاید مهمترین نکته در اینجا آن است که کورینتس به گونه ای ساخته شده است که بتوان از آن در هر جایی استفاده کرد، این کار به ما این امکان را میدهد که بتوانیم تنظیمات خود را از یک محیط ساده توسعه تا محیط های پردازش ابری عمومی یا محیط های توسعه دوگانه را انجام دهیم. این کار زیرساخت هایمان را قادر می سازد که بتواند به همه کاربران در هر نقطه ای که هستند، بالاترین دسترسی را اختصاص دهد و شرکت ما بتواند بین نگرانی های هزینه ها و امنیت توازنی را برقرار سازد تمام این موارد بر اساس نیازهای ویژه ما قابل طراحی و دوباره چینی است.
کلاستر شما بر روی گوگل
باید اذعان کنیم که کورینتس به بهترین شکل بر روی پلتفرم ابری گوگل به اجرا در می آید. موتور کورینتس گوگل اولین راهکار مدیریت کورینتس است که به ما امکان نصب سریع و به کار گیری سریع این کناینر را می دهد.
موتور کورینتس توسط گوگل به شکل کامل توسط مهندسین قابل اطمینان گوگل مدیریت می شود، و به همین خاطر است که به عنوان بهترین کنتاینر شناخته می شود، به وسیله آن شما می توانید مطمئن باشید که بالاترین سطح دسترسی و بروزرسانی را در اختیار داشته باشید. آن به صورت یکپارچه و بدون هیچ مشکلی با تمام سرویس های GCP مانند مانیتورینگ StackDriver، نرم افزارهای عیب یابی و Logging ها، مدیریت و شناسایی افراد کار می کند، در واقع گوگل با آن بهترین زیرساخت را در اختیار شما قرار داده است.
ساختارهای مهندسی کورینتس
- کورینتس های منبع باز مدیریت شده؛
- ۹۹٫۵ درصد SLA، و بالاترین سطح دسترسی با توسعه های یکپارچه چند ناحیه ای؛
- یکپارچگی بدون مشکل با سرویس های GCP دیگر؛
- به صرفه ترین کنتاینر صنعتی موجود؛
- انعطاف پذیری و قابلیت تعامل با کلاسترها و یا سایر سرویس دهنده های ابری؛
- زیرساخت مدیریت شده در سطح گریدهای گوگل؛
با این حال شرکت گوگل به ارائه گزینه های مختلف به کاربرانش علاقمند است. پلتفرم ابری گوگل، به ما طیف گسترده ای از خدمات برای اجرای کنتاینر روبرو هستیم. با استفاده از خدمات پلتفرم به عنوان یک خدمت (Platform-as-a-Service) که با موتور نرم افزار گوگل (Google App Engine)کار می کند، محیط انعطاف پذیر برای مدیریت کلاستر با موتور کورینتس فراهم می شود تا بتوان زیرساختی در حد کلاس های جهانی با موتور محاسباتی گوگل (Google Compute Engine) در اختیار داشت. این سرویس با شیوه پرداخت در ازای عملکرد (Price to performance) عمل می کند. با در اختیار داشتن این سرویس بهترین راهکارها برای اجرای کنتاینر بر روی پلتفرم ابری گوگل فراهم می آید.
راهکار کنتاینر کامل (Complete Container)
پیشرفت ها در این جا متوقف نمی شود. پلتفرم ابری گوگل ابزارهای را برای ما فراهم کرده است ما بتوانیم از کنتاینرها در تمامی مراحل توسعه نرم افزار از توسعه تا اجرای کامل محصول استفاده کنیم. سرویس هایی نظیر Cloud Bulid و Container Registry ایمیج های داکر برای ذخیره سازی و مدیریت را ارائه می کنند که به وسیله گوگل در بالاترین سطح امنیت و شبکه ای در سطح کلاس های جهانی پشتیبانی می شود.
سرویس Google Container Optimized OS یک کانتینر سبک وزن را فراهم می کند که سیستم عامل امنی است و با کنتاینرهای داکر و کورینتس به صورت از پیش نصب شده اجرا می شود. تمام سیستم های مدیریت کنتاینر می توانند بر روی GCP قرار بگیرند.
سوالات متداول
کنتاینر چیست؟
کنتاینر یا Container بسته های نرم افزاری هستند که در درون واحد های استاندارد برای توسعه، حمل و یا استفاده از سرویس ها ارائه می شوند. در کنتاینرها، سیستم عامل سرور به بخش های مستقل و مجزا از همدیگر تقسیم می شوند. به خاطر آنکه در اینجا هسته سیستم عامل به چند بخش تقسیم می شود، استفاده از منابع سخت افزاری به شکل بهینه تری نسبت به ماشین های مجازی انجام می شود و حجم اجرای برنامه نیز کاهش پیدا می کند. به صورت معمول به نسبت ماشین های مجازی تعداد کنتاینرهای بیشتری را می توان بر روی یک سرور، سرویس ابری و یا حتی یک رایانه به کار گرفت.
معروف ترین کنتاینرها کدام موارد است؟
کنتاینرهای شرکت داکر(Docker) که یک کنتاینر منبع باز است و کنتاینر کورینتس (Kubernetes) شرکت گوگل که تحت پلتفرم ابری آن شرکت اجرا می شود، از معروف ترین کنتاینرهای موجود در بازار است.
ویژگی های مهم کنتاینرهای شرکت داکر چیست؟
آن ها به صورت یک فضای استاندارد است. و به راحتی می توان به شکل پرتابل در هر جایی اجرا شوند، آن ها سبک وزن هستند و به همین خاطر سبب افزایش تعداد کنتاینرهای موجود بر روی یک دستگاه می شوند. در عین حال آن ها امن هستند و فضاهایی که آن ها ایجاد می کند به صورت ایزوله شده و مستقل از دیگر فضا هستند.
چه فرقی بین ماشین های مجازی و کنتاینرها وجود دارد؟
کنتاینرها بر اساس مجازی سازی یا در اصل انتزاع سیستم عامل کار می کنند آنها هیچ بخش سخت افزاری را در اختیار نمی گیرند. در واقع فضاهایی که کنتاینرها ایجاد می کنند به صورت نرم افزاری است و در ارتباط با سخت افزار تعریف نمی شوند. در حالی که ماشین های مجازی اساسا با سخت افزار و تقسیم منابع سخت افزاری به تعداد کاربران کار می کنند. در ماشین مجازی حجم سخت افزاری مشخصی به هر کاربر اختصاص داده می شود.
کنتاینر گوگل کورینتس چه تفاوتی با دیگر کنتاینرها دارد؟
در اصل تلاش گوگل برای آن بوده است که یک سرویس عالی براساس سامانه مدیریت سرویس های ابری خود ارائه دهد. در واقع کورینتس یک سیستم کنتاینر است که با در برداشتن تمام مشخصات یک سیستم مدیریت کنتاینر با سایر سیستم های گوگل نیز به خوبی کار می کنند.گرچه بنا به گفته های گوگل بسیاری از سیستم های فعالی اعم از جیمیل و یا موتور جستجوی آن در واقع یک کنتاینر است. با این حال کوربینتس یک سیستم مدیریت کنتاینر بسیار قوی و قدرتمند بر اساس پلتفرم فضای ابری گوگل است.
کوربینتس چه ساختاری هایی دارد؟
این کنتاینر قابلیت پیشروی و پسروی خودکار را دارد. به علاوه امکان مانیتور کردن سلامتی سرویس هایی که با آن کار می کند را هم داراست. در این کنتاینر از خودکار سازی مقیاس به خدمت گرفتن سرویس ها استفاده شده است. همچنین در آن مدیریت اعلامی به کار رفته است. این کنتاینر امکان استقرار و توسعه در هر جایی را دارد که شامل توسعه دوگانه نیز می شود.