Current state of Microsoft Azure App Services Platform

It’s been close to a year, I have started playing with Azure Functions and Azure Logic Apps. With the growing demand for Azure Serverless architecture, Azure App Services platform is becoming more mature than ever. In this article, I am posting my notes on the current state of the Azure App Services platform. For the most recent information, please review here – https://azure.microsoft.com/en-us/services/app-service/

Key Info

Benefits

  • Focus more on delivering business value, rather than focusing on building and maintaining plumbing of apps.
  • Ease of use, no need to worry about infrastructure plumbing.
  • Scalability – scale up or down as needed.
  • Pay for what you use – cost effective.

Azure PaaS and Azure App Services Overview

  • It mainly focuses on an application platform, integration, and business process management.
  • It includes Azure App Services or SQL Azure.
  • Azure Service Fabric – Abstraction the underlying VM resources, fabric provides additional features like authentication/authorization, hybrid connectivity, support & troubleshooting, analytics etc.
  • Major App Services
    • Web Apps – to host web applications with ease.
    • Mobile Apps – to host backend for mobile devices, e.g. mobile clients offline & sync when it’s back up, push notifications.
    • API Apps  – to expose web APIs.
    • Logic Apps – for complex workflows and automate business processes, to orchestrate APIs & data into business processes.
    • Function Apps – an independent server-less piece of code to respond to events, it intercept event, process them and output somewhere.

Azure Web Apps

  • A website-as-a-service, traditional Web Apps hosting environment minus – abstraction of infrastructure plumbing (servers, VMs, IIS server installation), OS update, firewall & network setting etc. This allows us to focus more on delivering business value, rather than focusing on building and maintaining plumbing of apps.
  • Major Features
    • Host web apps – .NET, Java, Node.js, Python, PHP
    • SLA – 99.95%
    • Custom domains and SSL certs.
    • Deployment slots for pre-production testing.
    • Easy to setup continuous deployment.
    • Auto or Manual scaling
    • OOB Authentication and Authorization with default providers like Azure AD.
    • Load balance apps with traffic management.
    • Hybrid connections with on-premises data.
    • Visual Studio and VSTS integration – allows you to publish to specific App service from VS

Azure Mobile Apps

  • It’s a service or a backend for your mobile apps, provide mobile capabilities to the mobile client.
  • Mobile App is a cross-platform and supports default authentication providers like Azure AD.
    • Mobile App backend – .NET and Node.js, it looks much similar to Azure API project.
    • Mobile Client Application – SDK available for – iOS, Android, Windows, Xamarin, Cordova, used on Visual Studio mobile apps like Windows 8 App.
  • Major Features
    • Offline Sync – It’s using SQLite OOB, you can choose your own SQL provider.
    • Push Notifications – It’s using Notification Hubs, abstracts platform complexities, sends notifications to individual platform (iOs, Android, Windows etc.) services, allows scale to send multiple notifications, also provides telemetry.

Azure API Apps

  • Allows you to host and expose your APIs for a distributed architecture.
  • Major Features
    • It supports default authentication providers like Azure AD & social providers.
    • Can host existing APIs (.NET, Java, PHP, Node.js, and Python).
    • Exposes API definition in the form of metadata in JSON format (using Swagger 2.0), enables client applications to know which operations to call and how to call them, it makes API discoverable, NET API uses Swashbuckle library to generate Swagger API definition, also have Swagger UI to test APIs, supports consumption of APIs in VS or command line to generate code for client applications (.NET, Node.js, Java, JavaScript).
    • Supports CORS (Cross Origin Resource Sharing) for cross-domain client-side AJAX (XMLHttpRequest) call. Configure allowed origins on Azure Portal.
    • Integrates nicely with Azure Logic Apps.
    • Integrates with API management & telemetry.
    • Also supports all App services features like scalability, redundancy or deployment slots.

Azure Logic Apps

  • Allows you to create functional/business logic workflows by orchestrating software as service components (like API or data).
  • Allows you to visually compose the workflows on Azure Portal logic apps designer or Visual Studio (with logic apps extensions). Alternatively, you can use code view in logic apps definition language in JSON format.
  • Major features
    • Connectors – basic components powers logic apps, exposes functionalities, allows you to easily connect with other logic apps or third party apps.
      • Your Connectors (e.g. Azure API Apps, Azure Logic Apps, Azure Functions), hosted in Azure in your region.
      • Microsoft Managed APIs (e.g. Office 365, Azure Blob, Dropbox, GitHub, Facebook, FTP etc.), hosted and managed centrally by Microsoft available as part of Azure.
      • Marketplace Connectors from third-party companies (e.g. SAP, Oracle, DB2 etc.), hosted in Azure in the same region, you pay per use.
    • Triggers – kick off logic apps manually, scheduled, or by events (by email or updating SP list), connectors can be triggers, poll triggers (logic app polls the connectors when the event is fired) or push triggers (logic apps notified by connectors when the event is fired).
    • Actions and Conditions – triggers kick off actions when some conditions are met, connectors can be actions, actions can be sending an email, posting messages to slack etc.
    • It uses logics apps definition language (in JSON format), create in the Azure portal or Visual Studio.
    • Lots of out of box templates available.
    • Robust and reliable – supports retry

Azure Function Apps

  • Allows you to respond to events and run worker processes by intercepting or triggered by external events.
  • They are an evolution of Azure WebJobs and executes a piece of code. It’s a piece of code that we can call anytime, it will scale automatically, and you can pay when you use it without worrying about the underlying infrastructure.
  • Major Features
    • You can write (C#, Node.js, Python, PHP, bash, Java, PowerShell and lot more) and run code (any executables) in Azure functions.
    • Triggers – Can be triggered by many various concepts (e.g. Event Hubs, Service Bus, Timer, HTTP request, Blob Storage, Azure Storage Queues etc.), when Azure function triggers, it runs the application in it.
    • Serverless architecture – Allows you to specify how much memory needed to run functions. Functions can scale and create as many as instances until it reaches memory usage.
    • Bindings – Allows you to input and output values to/from functions.
    • Templates – Predefined trigger templates for all kind of languages and scenarios.
    • Parallel Execution – Runs as many as instances until available resources (e.g. memory) caps.
    • Azure Portal support – Allows you have a code editor, log console, and ability to run/test.

Additional Features

  • Azure WebJobs
    • Allows you to run background processes or a batch job in the context of the azure app, it’s a background service as a service, think of it as a windows service in a cloud without worrying about underlying platform.
    • Web App can have one or more WebJobs, both web apps and web jobs can share same resources, the performance of one may affect others if web jobs are hosted on the same web app, it is best practice to host web jobs on the separate web app.
    • It is supported for Web Apps, Mobile Apps, and API Apps.
    • It supports azure web jobs or .exe, .cmd, .bat. .sh, .php, .py, .js, .jar, and ps1
    • Same SLA as the main service.
    • Can be triggered by outside sources like Azure Storage Queue, Storage blob, web hooks etc.
    • They are reliable if they fail – it will try again.
    • Can be triggered manually or scheduled.
    • Can process triggers in parallel.
  • Azure Deployment Slots
    • Ability to run multiple versions of your apps. Allows you to test in both production and pre-production environment. Also, allows you to route some of the production users to the pre-production environment for testing.
    • Supported for Web Apps, Mobile Apps, and API Apps.
    • Deploy it with no downtime by swapping production and pre-production environment. Azure swaps VIPs behind the scene.
    • Depending on your pricing tier, you can create up to 19 deployment slots, it can host web app and will incur cost just like any other production app. You can’t scale deployment slots. May not be the best environment for the performance test.
Advertisements
This entry was posted in Microsoft Azure. Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s