تکنولوژی مبانی ابری

مقدمهامروزه شرکت های بیشتری به سمت توسعه و استقرار برنامه های کاربردی در محیط های مبتنی بر ابر حرکت می کنند. یکی از انگیزه های اصلی رایانش ابری خلاص شدن از شر تمام مشکلات مربوط به راه اندازی و مدیریت سخت افزار و نرم افزار مورد استفاده است. این امر با اجاره از راه دور منابع رایانه ای موجود در مراکز داده ، که توسط یک ارائه دهنده ابر نگهداری می شود ، محقق می شود.به این ترتیب ، شرکت ها و افراد می توانند از راه دور از راه اندازی های سخت افزاری و نرم افزاری و گردش کار ارائه شده توسط ارائه دهندگان مختلف ابراستفاده کنند، بدون اینکه نگرانی در مورد خرید تجهیزات، راه اندازی محیط های مختلف و حفظ آنها در طول زمان داشته باشند. با استفاده از این نوع روش ، این امکان برای کاربران فراهم می شود که فقط به فکر توسعه و استقرار خدمات خود باشند (مثلاً وب سایت ، پایگاه داده ، برنامه ها ، تجزیه و تحلیل داده ها) بدون اینکه به فکر هزینه های بالقوه احتمالی باشند. در نهایت ، این می تواند منجر به توسعه سریعتر / مداوم و بهبود رضایت مشتری ، در راستای اصول مشترک DevOps (توسعه - عملیات) شود.ایده اصلی سرویس های ابری ، تقریباً شبیه هر نوع دیگر از ابزارهای سودمند و سیستم های مبتنی بر اشتراک است که در گذشته ایجاد شده است. به عنوان مثال ، در این روزها ، هر یک از ما از خدمات رفاهی مانند برق / آب / گاز استفاده می کنیم بدون اینکه نگران نحوه کار و تحویل این سیستم ها به خودمان باشیم.آنچه ما به آن اهمیت می دهیم این است که ارائه دهندگان خدمات ما می توانند خدمات قابل اعتمادی را به ما ارائه دهند و ما باید فقط برای مقدار استفاده یا عدم استفاده از همه این خدمات هزینه کنیم.برخی از ارائه دهندگان اصلی ابر در حال استفاده ، عبارتند از:· Microsoft Azure· Amazon Web Services (AWS)· Google Cloud Platform (GCP)همه این ارائه دهندگان مختلف، اصطلاحات خاص خود را برای خدمات ارائه شده دارند اما همه آنها همان اصول مشخص شده در این مقاله را به اشتراک می گذارند.مفاهیم ابرهر ارائه دهنده مختلف ابر قادر به ارائه خدمات و برنامه های متنوعی است ، این موارد را می توان در چهار نوع اصلی طبقه بندی کرد:· محاسبات: ماشین های مجازی ، کانتینرها و غیره ...· شبکه سازی: سرویس های امنیتی برای تعامل سرویس های مختلف با یکدیگر.· ذخیره سازی: فضا برای ذخیره هر نوع فایل یا پایگاه داده برای برنامه های کاربردی.· تجزیه و تحلیل: ابزار پردازش و تجسم داده ها برای تجزیه و تحلیل و ایجاد بینش از داده های ذخیره شده.خدمات ابری به منظور پایین آوردن هزینه های اجاره منابع و استفاده بهینه از سخت افزارهای موجود ، به شدت به تکنیک های مجازی سازی مانند ماشین های مجازی و کانتینرها متکی هستند.ماشین های مجازیماشین های مجازی به منظور شبیه سازی سخت افزار رایانه ایجاد شده اند. نمونه های مختلفی از ماشین های مجازی را می توان ایجاد کرد تا همزمان با یک کامپیوتر کار کنند ، هر کدام از آنها دارای یک سیستم عامل ، حافظه و ذخیره سازی مجزا هستند. پس از ایجاد یک ماشین مجازی ، می توان از راه دور با استفاده از کلاینت به آن دسترسی پیدا کرد و مانند هر کامپیوتر فیزیکی دیگری از آن استفاده کرد (به عنوان مثال نصب برنامه ها ، اجرای برنامه ها و غیره ...). به این ترتیب می توان با استفاده از یک رایانه واحد به عنوان مجموعه ای از رایانه ها، استفاده از سخت افزار را به حداکثر رساند.یکی دیگر از مزایای بزرگ استفاده از ماشین های مجازی در فضای ابری این است که سیستم ما به راحتی مقیاس پذیر می شود. بنابراین ، در صورت نیاز به منابع بیشتر از مقدار برنامه ریزی شده برای تکمیل یک پروژه ، حافظه و قابلیت ذخیره سازی اضافی می تواند در حین پرواز توسط ارائه دهنده ابر فراهم شود (بنابراین می توان از وقفه احتمالی در استقرار کاسته شود).علاوه بر این ، اگر می خواهیم اطمینان حاصل کنیم که سرویس ما همیشه در حال اجرا است ، می توان یک ماشین پشتیبان مجازی ایجاد کرد که در صورت بروز هرگونه مشکل برای نسخه اصلی ، به طور خودکار اجرا شود. این ، به ویژه هنگام افزودن ویژگی های جدید در سرویس هایی مانند وب سایت ها یا برنامه ها می تواند بسیار مفید واقع شود و ما می خواهیم ابتدا نسخه جدیدتر این سرویس را فقط به زیرمجموعه ای از مخاطبان ارائه دهیم تا بازخورد دریافت کنیم که این تغییر می تواند تاثیر مثبتی بگذارد یا خیر(آزمایش A / B).کانتینرهایک مشکل در ماشین های مجازی این است که هر ماشین مجازی سیستم عامل خاص خود را دارد. به عنوان مثال ، اگر ما یک برنامه پیچیده داشته باشیم که برای برخی عملیات به ویندوز و برای برخی دیگر به لینوکس نیاز داشته باشد ، لازم است دو ماشین مجازی مجزا را اجرا کنیم و این دو را با یکدیگر ارتباط دهیم. بنابراین این امر منجر به سربار شدن منابعی میشود که می توان از آن اجتناب کرد. علاوه بر این ، در هنگام توسعه یک برنامه کاربردی ، در یک تیم ، ممکن است در هنگام حرکت از محیط های مختلف ، تداخل وابستگی برخی از بسته ها ایجاد شود (به عنوان مثال "این کار بر روی دستگاه من بود").برای جلوگیری از این نوع مشکلات ، کانتینرها ایده پردازی شدند. کانتینرها ، برنامه ها را با وابستگی های آن ها بسته بندی کرده و در یک میزبان کانتینر مستقر می کنند (که به عنوان سرویسی برای انتزاعی کردن سیستم عامل عمل می کند). به این ترتیب می توان از هزینه حافظه جانبی ناشی از داشتن چندین سیستم عامل جلوگیری کرد و کانتینرهای بیشتری می توانند بر روی یک ماشین کار کنند نسبت به آنچه در یک ماشین واحد با استفاده از ماشین های مجازی امکان پذیر بود. علاوه بر این ، اکنون برنامه های ما می توانند به راحتی بین سیستم عامل های مختلف حرکت کنند بدون اینکه به فکر مدیریت وابستگی های اساسی باشند.ماشین های مجازی سخت افزار را مجازی سازی می کنند ، در حالی که کانتینرها سیستم عامل را مجازی سازی می کنند.یکی از متداول ترین سرویس هایی که می تواند به منظور ایجاد کانتینر مورد استفاده قرار گیرد ، داکر است.یکی از کارآمدترین روشها برای ایجاد سیستم های پیچیده ، تقسیم آنها به برنامه های مختلف کانتینر است که هر یک از آنها دارای یک نقش متمایز هستند. به عنوان مثال ، اگر ما در حال کار بر روی یک وب سایت هستیم ، ایده خوبی است که وب سایت را به سه کانتیتر اصلی تقسیم کنیم: front-end، back-end و database. هر وقت می خواهیم ویژگی های جدیدی را معرفی کنیم ، می توانیم کانتینر مورد علاقه خود را بدون نیاز به لمس یا تغییر موارد دیگر به روز کنیم. همانطور که اجزای بیشتری به برنامه خود اضافه می کنیم و پیچیدگی آن بیشتر می شود و ممکن است به کانتینرهای بیشتری نیاز باشد. به منظور نگهداری و سازماندهی کارآمد کانتینرها ، خدماتی مانند کوبرنت ها (Kubernetes ) ایجاد شده است.کوبرنت ها به منظور ایجاد برنامه های مبتنی بر کانتینر در محیط های مبتنی بر ابر ساخته شده است. چند نمونه از خدماتی که کوبرنت می تواند ارائه دهد عبارتند از:• بهینه سازی حجم کار بین کانتینرها و مقیاس گذاری تعداد منابع مورد نیاز بر اساس تقاضا.• در صورت وجود خطا در یک کانتینر ، می توان نمونه جدیدی را برای جایگزینی آن ایجاد کرد.• اگر پس از راه اندازی ویژگی جدید ، مشکلی پیش آمد ، بازگشت به نسخه قبلی برنامه برای ما به راحتی امکان پذیر است.با استفاده از کوبرنت ها برای هماهنگ و موزون کردن برنامه های کاربردی خودمان ، سپس می تواند به ما اجازه بدهد که شیوه های DevOps یا توسعه عملیات ، مانند ادغام مداوم (Continuous Integration (CI)) و تحویل مداوم ( (CD) Continuous Delivery) را دنبال کنیم. تمرکز اصلی ادغام مداوم این است که مطمئن شوید تغییرات کد کاملاً با زیرساخت های فعلی کد ادغام می شود ، در حالی که تحویل مداوم بر این تمرکز می کند که پایه کد را همیشه برای استقرار آماده کند (قادر به عبور خودکار از هر مکانیزم ساختمانی و آزمایشی در محل باشد).انواع استقرار و خدمات ابرپس از ایجاد یک برنامه کاربردی در ابر ، این برنامه می تواند با استفاده از سه روش مختلف استقرار ابر پیاده سازی شود:• ابر عمومی: در این سناریو ، تمام منابع استفاده شده ، توسط ارائه دهنده ابر مدیریت و نگهداری می شوند. این در حال حاضر مقرون به صرفه ترین و متداول ترین روش استقرار ابر است.• ابر خصوصی: معمولاً هنگام کار روی کارهایی که به امنیت بالا و رعایت دقیق قانون احتیاج دارند ، استفاده می شود. در این حالت ، یک ساختار اطلاعات ابری محلی را می توان توسط کسب و کار ایجاد کرد ، که بنابراین کنترل کمتری به ارائه دهنده ابر می دهد (این گزینه به تجارت نیاز دارد تا تجهیزات سخت افزاری خود را خریداری کند).• ابر ترکیبی: در این مثال ، بخشی از برنامه ممکن است توسط ارائه دهنده ابر ما مدیریت شود و بخشی دیگر با تجارت خصوصی (مخلوطی از روش های استقرار ابر عمومی و خصوصی).سرانجام ، سه نوع سرویس مختلف در ابر وجود دارد:• زیرساخت به عنوان یک سرویس (Infrastructure as a service (IaaS) ): در انواع سرویس های IaaS ، ما برخی از سخت افزارها را اجاره کرده و برای انجام کارهای مختلف آن را پیکربندی می کنیم.• پلتفرم به عنوان یک سرویس (Platform as a service (PaaS) ): در انواع سرویس های PaaS ، ما برخی از سخت افزارهای از قبل پیکربندی شده را اجاره می کنیم و برای آزمایش یا توسعه برخی از برنامه ها یا به منظور ذخیره سازی داده های تجاری از آن استفاده می کنیم.• نرم افزار به عنوان سرویس (Software as a service (SaaS) ): در SaaS ، ارائه دهنده ابر برخی از برنامه های نرم افزاری را توسعه و نگهداری می کند که سپس می توان آن ها را با استفاده از یک مدل اشتراک ، توزیع کرد. دو نمونه از برنامه های SaaS ، Skype و Office 365 هستند.استفاده از این زیرساخت می تواند این امکان را به ما بدهد تا به راحتی هر نوع تجارت مبتنی بر نرم افزار را در فضای ابری جابجا کنیم.امیدوارم از این مقاله لذت برده باشید ، از مطالعه شما متشکرم!