مقایسه معماری های مبتنی بر Cloud

معماری های مبتنی بر cloud به طراحی سیستم هایی اشاره میکند که از فناوری ها و خدمات cloud computing استفاده میکنند که به آنها اجازه میدهد نرم افزاری scalable، flexible و effective-cost تولید و deploy کنند. در این پست به بررسی 4 تا از ارائه دهنده های معماری مبتنی بر cloud میپردازیم و این ارائه دهنده ها را از جنبه های مختلف با یکدیگر مقایسه میکنیم.Amazon Web Service (AWS):یکی از بزرگترین ارائه دهنده ها در cloud computing است که طیف گسترده ای از خدمات و راه حل ها را برای حوزه ها و صنایع مختلف ارائه می دهد. AWS با 25 regionو 81 availability zone، حضور جهانی دارد. AWS به دلیل scalability, reliability, security و نوآوری شناخته شده است.مزایای اصلی AWS:- اکوسیستم بزرگ و بالغی از شرکا، توسعه دهندگان و مشتریان دارد.- مجموعه ای جامع از خدمات برای محاسبات، ذخیره سازی، شبکه، پایگاه داده، تجزیه و تحلیل داده ها، یادگیری ماشین، iot و امنیت ارائه می دهد. - مدل pay as you go است که به مشتریان امکان می دهد به اندازه مصرفشان پول بدهند.- تمرکز زیادی بر رضایت و پشتیبانی مشتری دارد.Microsoft Azure:بعد از AWS دومین ارائه دهنده cloud computing است. Azure خدمات و راه حل های متنوعی را برای سناریوها و نیازهای مختلف ارائه می دهد. Azure دارای یک شبکه جهانی از region ها و availability zoneها است. Azure به دلیل یکپارچگی با محصولات و خدمات مایکروسافت مانند Office 365، Windows Server، SQL Server، Visual Studio Code و غیره شناخته شده است.مزایای اصلی Azure:- در سناریو های hybrid cloud که هم private و هم public را شامل میشوند برتری دارد.- خدمات پیشرفته ای را برای هوش مصنوعی (AI)، Block Chain (BC)، اینترنت اشیا (IoT)، Gaming (GA) و غیره ارائه می دهد.- دارای یک مدل قیمت گذاری انعطاف پذیر است که به مشتریان امکان می دهد بین گزینه های consumption-based یا reserve-based انتخاب کنند.Google Cloud Platform (GCP):بعد از AWS و Azure سومین ارائه دهنده بزرگ پردازش ابری است. GCP طیف وسیعی از خدمات و راه حل ها را برای حوزه ها و صنایع مختلف ارائه می دهد. GCP دارای 24 منطقه است. GCP به دلیل تخصص خود در تجزیه و تحلیل Big Data (BD)، یادگیری ماشین (ML)، AI/ML Engineering و غیره شناخته شده است.مزایای اصلی GCP:- با ابزارهای داخلی خود مانند BigQuery (BQ)، Dataflow (DF)، Dataproc (DP) و غیره مزیت منحصر به فردی در BD دارد.- خدمات نوآورانه ای را برای AI/ML مانند TensorFlow Engine ، AutoML Engine ، Vertex AI و غیره ارائه می دهد.- مدل قیمت گذاری ساده دارد که بر اساس استفاده به جای ظرفیت یا تعهد هزینه می گیرد.- تمرکز زیادی بر فرهنگ نوآوری و تحقیق دارد.VMware Cloud Services:سرویس‌های ابری VMware مجموعه‌ای از راه‌حل‌ها هستند که به شما امکان می‌دهند برنامه‌ها را در منابع ابری یکپارچه، مدیریت و ایمن کنید. این سرویس ها برای هر سرویس ابری با استفاده از VMware کار می کنند و می توانند به شما کمک کنند مدیریت و نگهداری محیط های ترکیبی یا چند ابری را متمرکز کنید.مزایای اصلی VMware:- امکان استفاده از همان ابزارها و فرآیندهایی که برای زیرساخت‌های VMware استفاده می‌شوند، مانند vSphere، vRealize و NSX، برای مدیریت منابع ابری.- انتخاب از میان ارائه‌دهندگان ابری مختلفی که خدمات مبتنی بر VMware ارائه می‌کنند، مانند AWS، Azure، Google Cloud، IBM Cloud و Oracle Cloud.- بهینه سازی هزینه ها و عملکرد با انتخاب بهترین سرویس ابری برای هر بار کاری و migrate و scale کردن برنامه ها روی cloud های مختلف- اطمینان از امنیت و انطباق محیط های ابری با اعمال سیاست‌ها و کنترل‌ها در شبکه، داده‌ها و لایه‌های برنامه.در ادامه به بررسی سرویس های ارائه شده توسط AWS و Azure میپردازیم:سرویس Amazon EC2: این سرویسی است که ظرفیت محاسباتی scalable را در فضای ابری فراهم می‌کند. در این سرویس میتوان سرور های virtual که به آنها instance گفته میشود اجرا کرد که سیستم عامل ها و برنامه های متفاوتی اجرا میکنند.همچنین می توان بسته به نیاز از انواع مختلفی از instanceها مثل general purpose, memory optimized, compute optimizedانتخاب کرد.سرویس Amazon S3: این سرویسی است که ذخیره سازی object را در فضای ابری فراهم می کند. در این سرویس می توان هر مقدار داده را از هر کجای وب ذخیره و بازیابی کرد. همچنین می توان از ویژگی هایی مانند versioning, encryption, lifecycle managementبرای مدیریت دیتا استفاده کرد.سرویس Amazon RDS: این سرویسی است که خدمات پایگاه داده relational را در فضای ابری ارائه می دهد. در این سرویس میتوتن از بین پایگاه داده مختلف مانند MySQL، PostgreSQL، Oracle، SQL Server و غیره یکی را انتخاب کرد و به AWS اجازه داد provisioning, patching, backup و بازیابی پایگاه داده را انجام دهد.سرویس Amazon Lambda: این سرویسی است که این امکان را می دهد که کد را بدون تهیه یا مدیریت سرور اجرا کنید. می توان کد را به هر زبان پشتیبانی شده مانند Python، Node.js، جاوا و... نوشت و آن را از event های مختلف مانند درخواست های HTTP، تغییرات پایگاه داده، آپلود S3 و غیره trigger کرد. نوع pricing این سرویس تنها برای زمان compute time است که استفاده میشود.سرویس Amazon SageMaker: این سرویسی است که یک پلتفرم کاملاً مدیریت شده برای ML ارائه می دهد. می‌توان از آن برای ساخت، آموزش و استقرار مدل‌های ML با استفاده از فریمورک های معروف مانند TensorFlow، PyTorch، MXNet و غیره استفاده کرد. همچنین می‌توان از ویژگی‌هایی مانند label کردن داده، model tuning، اشکال‌زدایی، monitoring و غیره برای بهبود عملکرد workflow استفاده کرد.سرویس Azure Virtual Machines: این سرویسی است که منابع محاسباتی را در فضای ابری فراهم می‌کند. در این سرویس میتوان ماشین های مجازی که ویندوز یا لینوکس را اجرا می کنند ایجاد و مدیریت کرد و هر نرم افزاری را بسته به نیاز نصب کرد. همچنین می‌توان بسته به نیاز خود، از بین size ها و انواع ماشین‌های مجازی مانند general purpose, memory optimized, compute optimized و غیره یکی را انتخاب کرد.سرویس Azure Blob Storage: این سرویسی است که ذخیره سازی اشیا را در فضای ابری فراهم می کند. میتوان حجم زیادی از داده های بدون ساختار مانند تصاویر، فیلم ها، اسناد و غیره را ذخیره کرده و به آنها دسترسی داشت. همچنین می توان از ویژگی هایی مانند لایه بندی، رمزگذاری، مدیریت چرخه عمر و غیره برای مدیریت داده ها استفاده کرد.پایگاه داده Azure SQL: این سرویسی است که خدمات پایگاه داده رابطه ای را در فضای ابری ارائه می دهد. می توان از آن برای ایجاد و مدیریت دیتابیس هایی که بر روی SQL Serverاجرا می شوند استفاده کرد و از ویژگی هایی مانند در availability بالا، scalability، امنیت و غیره بهره مند شد. همچنین می توان از Azure SQL Managed Instance استفاده کرد که یک نسخه کاملاً مدیریت شده از SQL Server است که ویژگی های و compatibility بهتری داردسرویس Azure Functions: این سرویسی است که این امکان را می دهد کد را بدون provisioning یا مدیریت سرور اجرا کرد. می‌توان کد را به هر زبان پشتیبانی شده مانند C#، java، javascript، python و غیره نوشت و آن را از event های مختلف مانند درخواست‌های HTTP، queue message ها، تایمر و غیره فراخوانی کرد. این مدل نیز مانند مدل lamda آمازون فقط برای compute time استفاده شده پول دریافت میکند.سرویس Azure Machine Learning: این سرویسی است که بستری جامع برای یادگیری ماشین فراهم می کند. می‌توان از آن برای ساخت، آموزش و deplyکردن مدل‌های ML با استفاده از فریمورک های معروف همانند amazon sagemaker استفاده کرد.حال این ارائه دهنده را در 3 دسته کلی با یکدیگر مقایسه میکنیم: پردازش، شبکه، ذخیره سازیپردازش: هر دو AWS و Azure طیف وسیعی از خدمات محاسباتی مانند ماشین‌های مجازی، کانتینرها، عملکردهای بدون سرور، پردازش دسته‌ای و غیره را ارائه می‌دهند. قیمت‌گذاری این خدمات به عواملی مانند نوع، اندازه و تعداد نمونه‌ها، منطقه، سیستم عامل، پهنای باند شبکه، ظرفیت ذخیره سازی و مدت زمان استفاده بستگی دارد. به طور کلی، AWS و Azure مدل‌های قیمت‌گذاری مشابهی برای خدمات محاسباتی دارند، اما Azure برای بارهای کاری مبتنی بر ویندوز ارزان‌تر است، در حالی که AWS برای بارهای کاری مبتنی بر لینوکس ارزان‌تر است. Azure همچنین برای مشتریانی که مجوزها یا اشتراک های موجود مایکروسافت دارند، تخفیف ها و مزایای بیشتری ارائه می دهد. به عنوان مثال، Azure Hybrid Benefit این امکان را می دهد که از مجوزهای Windows Server و SQL Server خود در ماشین های مجازی Azure استفاده کنید و تا 85 درصد صرفه جویی کنید. AWS همچنین دارای برخی از برنامه های صرفه جویی در هزینه است، مانند AWS Savings Plans و AWS Reserved Instances، که این امکان را می دهد تا مقدار یا مدت زمان مشخصی از استفاده را متعهد شوید و نرخ های پایین تری دریافت کنید.GCP برای نمونه‌های بهینه‌شده با هدف عمومی و memory optimized ارزان‌تر است، در حالی که VMware برای نمونه‌های بهینه‌سازی شده محاسباتی ارزان‌تر است. هر دو این ارائه دهنده ها نیز مزایا و تخفیف هایی برای دریافت نرخ های پایین تر ارائه میدهند.ذخیره سازی:هر دو AWS و Azure انواع خدمات ذخیره سازی مانند ذخیره سازی اشیا، ذخیره سازی بلوک، ذخیره سازی فایل، ذخیره سازی پشتیبان و آرشیو و غیره را ارائه می دهند. قیمت گذاری این خدمات به عواملی مانند نوع، اندازه و تعداد اشیاء، منطقه، عملکرد، در دسترس بودن، افزونگی، رمزگذاری، فرکانس دسترسی و انتقال داده بستگی دارد.. به طور کلی، AWS و Azure مدل‌های قیمت‌گذاری مشابهی برای سرویس‌های ذخیره‌سازی دارند، اما Azure برای Hot storage ارزان‌تر است، در حالی که AWS برای cold storage ارزان‌تر است. Cold storage به ذخیره سازی داده ها در فضا هایی از سیستم است که کمتر به آنها دسترسی داریم گفته میشود و Hot storage به ذخیره سازی در فضای پر استفاده. Azure همچنین سطوح و گزینه های بیشتری را برای عملکرد ذخیره سازی و افزونگی ارائه می دهد، مانند Azure Premium SSD، Azure Ultra Disk، و Azure Zone-Redundant Storage. از طرفی AWS دارای برخی ویژگی‌های صرفه‌جویی در هزینه است، مانند AWS S3 Intelligent-Tiering، AWS S3 Glacier Deep Archive و AWS DataSync که این امکان را می‌دهد هزینه‌های ذخیره‌سازی خود را بر اساس چرخه عمر داده و نیازهای انتقال خود بهینه کنید. بین GCP و VMware نیز برای Cold storage VMware گزینه بهتری بوده و برای Hot storage بهتر است از GCP استفاده کنید.شبکه:هر دو AWS و Azure طیف وسیعی از خدمات شبکه مانند شبکه های مجازی، متعادل کننده بار، VPN، DNS، CDN و غیره را ارائه می دهند. قیمت گذاری این سرویس ها به عواملی مانند نوع، اندازه و تعداد منابع، منطقه و منطقه، عملکرد، در دسترس بودن، امنیت و انتقال داده بستگی دارد. به طور کلی، AWS و Azure مدل‌های قیمت‌گذاری مشابهی برای خدمات شبکه دارند، اما Azure برای انتقال داده‌های خروجی ارزان‌تر است، در حالی که AWS برای انتقال داده‌های ورودی ارزان‌تر است. Azure همچنین گزینه ها و ویژگی های بیشتری را برای عملکرد و امنیت شبکه ارائه می دهد، مانند Azure ExpressRoute، Azure Firewall و Azure DDoS Protection. AWS همچنین دارای برخی ویژگی‌های صرفه‌جویی در هزینه و افزایش عملکرد است، مانند AWS VPC Endpoints، AWS Global Accelerator و AWS Shield. بین GCP و VMware، برای انتقال داده های ورودی VMware ارزانتر بوده و GCP برای انتقال داده های خروجی.در نهایت به این موضوع باید توجه داشته که هیچ یک سرویسی برای همه کاربرد ها مناسب نبوده و برای هر مورد استفاده در پردازش ابری بسته به اهداف، نیازمندی های منحصر به فرد هر پروژه و بودجه و ریسک ها میبایست بررسی های لازم را انجام داد تا بهترین سرویس را انتخاب کرد.این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی استمنابع:https://cloud.google.comhttps://azure.microsoft.comhttps://vmware.comhttps://aws.amazon.comhttps://cloudzero.comhttps://cloudian.comhttps://altaro.comhttps://bmc.com