اگر شما یک توسعه دهنده نرم افزار دات نت و یا معمار نرم افزار هستید و قصد دارید از خدمات ابری شرکت مایکروسافت در تولید محصولات خود استفاده کنید، این مقاله و کتابچه مرجع آن برای شما می باشد.

اصل کتابچه ( کتابچه توسط شرکت مایکروسافت تهیه شده است ) به ضمیمه این مقاله موجود می باشد و متن مقاله تلاش در خلاصه سازی کتابچه دارد.

اجرای اپلیکیشن های .NET شما در Azure

یکی از اولین تصمیم هایی که در زمان شروع استفاده از Azure نیاز است اتخاذ شود انتخاب سرویس مناسب Azure جهت اجرای محصول شماست، گزینه های زیادی وجود داشته و با توجه به نوع محصول شما گزینه های محدود می گردد.

 سرویس Azure App

یکی از ساده ترین و قویترین راه ها برای میزبانی محصول شما در Azure سرویس Azure App می باشد. این سرویس گروهی از سرویس ها را شامل می شود که وظیفه میزبانی محصول شما و جدا سازی و حذف پیچیدگی های نگهداری زیرساخت و سیستم عامل را بر عهده دارد. این سرویس ها امکاناتی مثل Automatic scaling و Zero downtime Deployment و debug محصول در حال اجرا در محیط عملیاتی و مانیتورینگ تمامی ابعاد محصول توسط App Insight را دارا می باشند.

سرویس های زیر مجموعه Azure App به شرح زیر هستند:

  • Azure Web Apps: ارائه خدمت Web Server as a service مثل IIS، پابلیش وب سایت و API و هر App بر اساس Http شامل نود جی اس و پایتون و جاوا آپلیکیشن و تکنولوژی های Asp.net، ASP.Net Core
  • Containers on App Services: امکان اجرای حجم عظیمی از کانتینرهای از قبل تنظیم شده مختلف مثل Redis و wordpress را امکان پذیر می نماید.
  • Azure Mobile Apps: راه اندازی rest Api های back end مورد نیاز موبایل اپلیکیشن ها
  • Azure Functions: پیاده سازی Serverless در خدمات ابری مایکروسافت
  • Azure Logic Apps: قابلیت ترکیب function های مختلف serverless و ایجاد یک flow دارای state

Azure Virtual Machines

ارائه خدمات پردازشی از طریق لیست بلند بالایی از VM ها با سیستم عامل های متفاوت و تنظیماتی که از قبل صورت گرفته ( مشابه خدمت EC2 آمازون AWS ).

Azure Kubernetes Services

خدمات ابری مایکروسافت دارای چندین خدمت جهت مدیریت محصولات تولید شده با معماری Microservice است. Azure Container Registry و Azure Kubernetes Service یا AKS ارائه دهنده فضای لازم برای نگهداری container ها و Orchestration آنها می باشد. 

 انتخاب سرویس های Azure بر اساس فریمورک و تکنولوژی

 حالا که گزینه های موجود در Azure برای اجرای محصول شما مشخص شده، بسیار مفید خواهد بود که نسخه دات نت و Container قابل اجرا بر روی این سرویس ها را بدانید.

نگهداری Data در Azure 

دیتا بخش مهمی از محصول شما است و سرویس Azure توانایی مدیریت انواع داده ها را داراست. سرویس های زیر بر اساس نیاز شما قابل استفاده هستند.

  • Azure SQL Database: نسخه ابری MS SQL Server می باشد و از نظر نحوه ارتباط و برنامه نویسی تفاوتی با نسخه On-Premises ندارد، البته با تعدادی مزایا از جمله Dynamic data masking، Auditing، Automatic database tuning.
  • Azure Cosmos DB: مدل جدیدی از دیتابیس بر اساس Cloud Native است. توانایی مدیریت انواع داده های documents و unstructured tables و  graphs و blob را داراست و مهاجرت از MongoDB به این سرویس به سادگی تغییر یک connection string  است.
  • Azure Storage: ارائه دهنده انواع متفاوتی از ذخیره سازی اطلاعات می باشد، مانند File و Disk و Blob و Data Lake و Archive و HPC Cache.
  • File Storage: ارائه دهنده خدمات بر اساس پروتوکل SMB بوده و بهترین گزینه جهت انتقال file server ها به azure است.
  • Table Storage: ارائه دهنده NoSQL Key-value Storage کم هزینه و با سرعت بالا می باشد.
  • ‌Blob Storage: ارائه دهنده فضای ذخیره سازی داده های unstructured با حجم بالا مانند video و image و Audio.
  • Queue Storage: ارائه دهنده خدمت Queue و ذخیره سازی پیغام های کوچک حاوی Data.
  • Azure Databases for MySQL, PostgreSQL and MariaDB: در صورت نیاز به دیتابیس های متن باز سه گزینه جهت استفاده به صورت سرویس در اختیار شما می باشد.
  • Azure SQL Data Warehouse and Azure Data Lake Store: این دو خدمت بسیار مناسب نگهداری حجم بالای اطلاعات برای اهداف Data Analytics و reporting است.

 امن سازی محصول .Net شما در Azure

 علاوه بر نگهداری دیتا محصول شما نیازمند تامین امنیت آن نیز هستید. سه خدمت زیر در زمینه Security موجود می باشند.

  • Azure Active Directory: بخش مهمی از امنیت محصول شما authentication یا تعیین هویت کاربر می باشد، پیاده سازی این بخش کار ساده ایی نبوده و با استفاده از این سرویس نیازی به پیاده سازی آن در محصول خود نخواهید داشت، این سرویس در خدمات شرکت مایکروسافت مثل Outlook.com و Office 365 و Azure Portal مورد استفاده قرار می گیرد.
  • Azure Key Vault: نگهداری جداگانه پسوردها و connection string ها خارج از version Control و به شکلی امن توسط این خدمت قابل انجام است.
  • Managed Service Identity: ارائه دهنده خدمت مدیریت دسترسی سرویس های مختلف azure به یکدیگر به صورت ایمن و درج credential به صورت خودکار در runtime

سایر خدمات Azure

سایر خدمات ارائه شده در azure به شرح زیر هستند.

Enhance your application performance

  • Azure Redis Cache:  ارائه دهنده مخزن نگهداری Key-value در حافظه با سرعت بالا
  • Azure Content Delivery Network: ارائه دهنده خدمت CDN برای انواع محتوای شما در سرتاسر جهان
  • Azure Trafic Manager: این سرویس جهت افزایش سرعت پاسخ محصول با توجه به موقعیت کاربر درخواست ارسال شده را به نزدیک ترین دیتا سنتر هدایت می نماید.

Machine Learning

  •  Azure Cognitive Services: این خدمت ارائه دهنده امکاناتی مثل تشخیص چهره، تبدیل صدا به متن و درک مفهوم متن می باشد.
  • Language Understanding: این خدمت می تواند جهت ایجاد Bot مورد استفاده قرار گرفته و به صورت هوشمند به درخواست های Slack و Microsoft Team و سایر forum ها پاسخ دهد.
  • Azure Machine Learning: این خدمت جهت تولید الگوریتم های ML مختص به شما و استفاده از کلاسترهای GPU موجود در Azure و کاهش زمان آموزش مدل شما می باشد.

IoT

  • Azure IoT Hub: ارائه خدمت دریافت و تحلیل حجم بالای پیغام ها از Device ها و مدیریت device ها
  • Azure IoT Solution Accelerators: ارائه دهنده خدمات پر کاربرد در زمینه IoT می باشد مانند Remote Monitoring و  Industrial IoT و  Predictive maintenance و شبیه سازی Device.
  • Azure IoT Central: اگر تجربه کمی در زمینه IoT دارید این راهکار به صورت Saas ارائه شده و به شما در پیاده سازی کمک می نماید.
  • Azure IoT Edge: این راهکار با مدیریت device ها بخشی از پردازش را با استفاده از device صورت خواهد داد و از توان پردازشی آنها استفاده خواهد نمود، همچنین مدل های ML شما با استفاده از این خدمت قابل انتقال به device هستند.

 Data Analytics

خدمات زیادی در این زمینه در Azure وجود دارد که شامل Azure Data Factory برای انتقال و transform دیتا و Azure Analysis Services و  Azure Data Lake Analytics و غیره می باشد.

Messaging

Azure به شما در زمینه ساختن یک معماری قابل توسعه با استفاده از رویدادها و پیغام ها کمک می نماید. Azure Queue Storage و Azure Service Bus Topics و Queues در پیاده سازی مکانیزم صف و جداسازی آن به عنوان یک خدمت کمک می نمایند. Azure Event Grid و Azure Event Hubs جهت Subscribe رویدادهای مختلف و هضم حجم بالایی از دیتا جهت تحلیل و فیلتر مورد استفاده قرار می گیرند.

Monitoring

 جهت بررسی نحوه عملکرد محصول شما در محیط azure شما نیازمند مانیتورینگ هستید. تمام خدمات مرتبط با مانیتورینگ در خدمت Azure Monitor تجمیع شده است.

  • Azure Application Insights: این خدمت به عنوان یک APM یا Application Performance Monitoring تمامی ابعاد محصول شما را مانیتور می نماید، زمان اجرای query های دیتابیس، زمان بارگذاری صفحات Client side، Server side Errors، Client side Errors
  • Azure Log Analytics: این خدمت به تمامی سرویس های Azure متصل شده و به جمع آوری Diagnostics Information می پردازد.
  • Azure Netwok Watcher: این خدمت جهت بازرسی ترافیک شبکه VM های شما در شبکه مجازی شما مورد استفاده قرار می گیرد.

 ابزارهای مورد استفاده جهت Develop و Debug و troubleshooting

  •  Visual Studio: نسخه های ۲۰۱۷ و ۲۰۱۹ در صورت فعال بودن Azure Workload امکان کار و ارتباط مستقیم با Azure را دارا می باشد. نسخه ۲۰۱۵ نیازمند نصب Visual studio 2015 Tools for Azure می باشد. چندین قالب پروژه در VS وجود دارد که جهت محیط Azure توسعه داده شده اند مثل Azure Cloud Service و Azure Function. پنجره Cloud Explorer در Visual studio جهت ارتباط مستقیم با Azure و مشاهده و به روز رسانی منابع قابل استفاده می باشد. در پنجره معمول Publish موجود در ویژال استدیو ۳ گزینه جهت انتقال به محیط Azure موجود می باشد.
  • Snapshot Debugger: این ابزار به شما امکان Debug محصول در حالت اجرا در محیط Production بدون تاثیر بر روی سرعت و عملکرد سیستم را می دهد.
  • Azure Storage Explorer: ابزاری مستقل جهت مدیریت فایلها و Table storage و Cosmos DB Storage و سایر اطلاعات مرتبط با Azure Storage.
  • Azure Command-Line Interface: این ابزار CLI مورد استفاده جهت مدیریت Azure می باشد.
  • Azure Functions Core Tools: این ابزار امکان توسعه و تست Function ها بر روی سیستم شما را محیی نموده تا پس از نهایی سازی توسعه، Function را به Azure منتقل نمایید.
  • Cosmos DB Emulator: این ابزار جهت توسعه Local دیتابیس های Cosmos مورد استفاده قرار می گیرد.
  • Azure DevOps for build and deployment: جهت همکاری با سایر توسعه دهنده ها در تولید محصول و Build و Deployment خودکار مورد استفاده قرار می گیرد (جهت توضیحات بیشتر به بخش Azure DevOps مراجعه نمایید).

مستندات

Azure Quick Start for NET Developers