Every Azure developer ought to know

M Adnan A
8 min readApr 16, 2019

--

Microsoft Azure has been widely adopted especially since its hybrid cloud features. There are 100s of services available which kind of make developers and even architects quite confusing which one to choose. I ‘ll try to brief about them and compare them in terms of features (not in terms of pricing) so you can focus only those which matters to your project needs.

There are many services which enable you to run your applications in Azure. I ‘ll divide them into three categorise;

Infrastructure-as-a-service (IaaS)

  • VM
  • Container Service
  • Container Instance
  • Web App for Container
  • Batch
  • Service Fabric

Platform-as-a-service (PaaS)

  • Cloud Services
  • Mobile App
  • Web App

Logic-as-a-service (LaaS)

  • Function App
  • Logic App

Few notable bits about aforementioned services:

Virtual Machines (VM)

  1. Start and stop in minutes
  2. Many images (Win/Linux) to choose from, you can import your own image or even bring your own licensed version
  3. Many sizes to choose from based on CPU/GPU, Memory, Network Bandwidth, Storage
  4. SLA 99.95% (provided you are running multiple instances)

Azure Container Service

  1. Allow multiple containers
  2. Unlike VM, containers start/stop in seconds
  3. Comes with containers orchestrator (Kubernetes, Docker Swarm, etc)
  4. Run Linux and Windows-based containers
  5. Use images from Docker Hub or Azure container Registry

Azure Container Instance

  1. Run single container
  2. Start/stop in seconds
  3. No orchestrator
  4. Run Linux and Windows-based containers
  5. Use images from Docker Hub or Azure container Registry

Azure Web App Container

  1. Allow container on App Service
  2. No orchestrator needed
  3. Only Linux based container
  4. App service features
  • Easy continuous deployments
  • Deployment slots
  • Auto Scaling

Azure Batch

  1. Run jobs across multiple VM or Containers (if needed)
  2. Use for intensive jobs
  3. Orchestrator managing jobs
  4. Run jobs on Windows/Linux

Azure Service Fabric

  1. Allow orchestrator to run web app containers
  2. Allow executable
  3. Allow stateful/stateless services
  4. Allow on-premise deployment
  5. Allow App service features

Azure Cloud Services

  1. Run your app in VM as a web or worker role
  2. You can control VM via RDP access if you want (but not necessary)
  3. Provides scaling
  4. An app could be web-based or even background job

Azure App Services (Web App)

  1. Runs as a web server (Apache, IIS, Tomcat, etc)
  2. Allow a range of different fx based applications (.net, python, nodejs)
  3. App service features (CD, Deployment slots, custom Domain, autoscaling, auth, web jobs)
  4. Allow on-premise resource access
  5. SLA 99.95%

Azure Web Services (Web Job)

  1. Run inside Web App
  2. Interval-based or external trigger based like Message on Q

Azure Mobile App

  1. Runs your mobile app as background service
  2. Allow any mobile SDK (ios, android, etc)
  3. Unique features
  • Offline sync
  • Push notifications

Function Apps

  1. Deploy and execute only code
  2. Can be triggered based on interval or event (message on Q)
  3. Have Binding
  4. Auto Scale
  5. Pricing based on consumption only
  6. Allow a range of technologies (.net, nodejs)

Logic Apps

  1. Execute pipeline of tasks
  2. Biztalk services replacement
  3. Can be triggered
  4. Can connect external connectors like office365, Twitter, Custom API
  5. Auto Scale

Following tables should make your life easier to decide:

Comparing VM/Container based services

Comparing API/Background Task-based services

Where to run your App

Azure Security Services

It’s super important to assure your application’s security. Azure provides security services that make your life easy in securing your applications. Different services provide different security-related features, Authentication, Vault, Auto encryption database, etc.

I ‘ll briefly describe them below, in terms of which you should choose and when:

Azure Active Directory

  1. Identity Provider-as-a-service manage authentication information
  2. Store Identities — like user information email, username, etc
  3. Authentication & Authorization (login, password reset, sign up pages)
  4. Integrate with on-premise IDPs
  5. Protect applications on-premise and on cloud
  6. Multi-factor authentication
  7. Advanced threat detection which detects malicious behavior like if you are logged in from one region and second request comes from totally different geo-location, it will ask for 2-factor authentication

Azure Key Vault

  1. Store and encrypt keys (certificates)
  2. Store secrets (passwords, connection strings, hash)
  3. Developer Read/Write via API/SDK doesn’t have to store sensitive data into the source code
  4. Auto logging regarding secret data operations

Azure App service certificates

  1. Provision TLS certificates
  2. Buy certificates from Azure directly
  3. Simplifies domain verification
  4. Auto-renewal
  5. Store certificates in Azure key vault
  6. Use certificates on App services, Azure app, on-premise app

Data Store Encryption

  1. Encrypt data at rest
  2. Store data in encrypted format automatically
  3. Encrypt and Decrypts automatically
  4. No noticeable performance overhead

Comparison

Azure Storage Services

Data storages are classifieds into multiple categorize, First I ‘ll divide them in two major categorize e.g, OLAP and OLTP

OLTP — Online Transactional Processing

1. Relational

  1. Azure SQL DB
  2. Azure MySQL
  3. Azure PostgreSQL
  4. Azure Maria DB

Non Relational — Unstructured/Document data (NoSql)

  1. Azure Cosmos DB

Azure Storage

  • File
  • BLOB
  • Table
  • Queue
  • Disk

OLAP — Online Analytical Processing

  1. Azure SQL Data Warehouse
  2. Azure Data Lake Store

Following are some bits about the aforementioned Azure storage options:

Azure SQL Database

  1. It’s just MS SQL Server in the cloud
  2. Managed and Scalable
  3. 99.99% Availability and redundant (backups every hour to every 5 minutes)
  4. Accessible via SSMS, Visual Studio, Azure Portal
  5. Geo-Replication (single writable node other read only)
  6. Automatic Tuning
  7. Automatic Thread Detection
  8. Dynamic Data masking for sensitive data like Credit Card data

Azure MySQL

  1. MySQL in the cloud
  2. Managed and Scalable
  3. 99.99% Availability and redundant (backups every hour to every 5 minutes)
  4. Accessible via MySQL workbench and SQLyog

Azure PostgreSQL

  1. PostgreSQL in the cloud
  2. Managed and Scalable
  3. 99.99% Availability and redundant (backups every hour to every 5 minutes)
  4. Accessible via pgAdmin

Azure MariaDB

  1. MariaDB in the cloud
  2. Managed and Scalable
  3. 99.99% Availability and redundant (backups every hour to every 5 minutes)
  4. Accessible via MySQL workbench and SQLyog
  5. Support many storage engines
  • Apache Cassandra
  • CSV
  • ColumnStore

Azure CosmoDB

  1. Distributed massive scale DB
  2. No Schema
  3. Auto Indexing
  4. GeoReplication (single writable node)
  5. SLA 99.99%
  6. Low latency from Azure cloud < 10ms for reading and <15ms for write
  7. Use it with several APIs
  • DocumentDB API
  • MongoDB API
  • Table API
  • Graph API
  • Apache Cassandra API

Azure Storage

1. Massive scale

2. Multi-purpose storage

  • File Storage (can mount as a File share)
  • BLOB Storage (allow multiple blobs like Block/Page and Append)
  • Q Storage
  • Table Storage (semi-structured data)
  • Disk Storage (high performance, can port Apps, perfect for VMs)

3. Shared access signature

4. Firewall and VPN

5. Data encryption at rest (just enable it)

6. Storage replication

  • Locally
  • Geo-Replica
  • Read-access Geo-Replica

Azure SQL Data Warehouse

  1. Structured and Relational
  2. Optimized for reporting and BI
  3. A large amount of data (like 1PB)
  4. Data encryption at rest

Azure Data Lake Store

  1. Structured and Non Structured
  2. Allow data in native format
  3. No schema needed
  4. Optimized for reporting
  5. No size limit
  6. Data encryption at rest

Azure Performance Services

The good thing about this section is, there are very few but very effective services to discuss

1. Azure CDN (Content Delivery Network)

  • Suitable for Static content like js/CSS/HTML/media files
  • Geographically data is accessible provides low latency

2. Azure Redis Cache

  • Open source Redis Cache
  • Store KeyValue Pair (hashes and lists)
  • Geo-Replication
  • Data Persistence
  • Much faster than any database as data coming from memory

3. Azure Traffic Manager

  • Routing service
  • Help to Load balancing (Priority-Weight)
  • Periodically ping for Health checks
  • Not bound to Geolocation
  • Geo-Performance

Comparison

Azure Message Queues Services

Azure Storage Queue

  1. Simple and Basic
  2. Allow only one receiver
  3. Allow only text body
  4. Size limit 64KB
  5. Transaction Logs

Azure Service Bus Queue

  1. FIFO ordering
  2. One receiver for each message
  3. Message consists on Key/Value pair (for additional information)
  4. Body can be binary, json, text)
  5. Message size limit upto 1MB
  6. Duplicate detection
  7. Dead letter Q… for corrupted or failed message, message automatically move to this Q so you can later debug them

Azure Bus Service Topic

  1. Message can be processed by multiple receivers
  2. Message filter (for different type of messages different receiver can act)
  3. Message consists on Key/Value pair (for additional information)
  4. Body can be binary, json, text)
  5. Message size limit upto 1MB
  6. Duplicate detection
  7. Dead letter Q… for corrupted or failed message, message automatically move to this Q so you can later debug them

Azure Event Grid

  1. Use Subscriber to and push events
  2. Can subscribe to many events
  3. Push to any destination (no pulling, retry if failed)
  4. Pay as you go

Azure Event Hub

  1. Use to ingest massive amount of data
  2. Allow multiple sender and receiver
  3. Message consists on Key/Value pair (for additional information)
  4. Body can be binary, json, text)
  5. Message size limit upto 256KB
  6. Replay events
  7. Retention between 1–7 days
  8. Event data archive (in BLOB storage)

Azure IOT hub

  1. Use to ingest massive amount of data
  2. Allow multiple sender and receiver
  3. Message consists on Key/Value pair (for additional information)
  4. Body can be binary, json, text)
  5. Message size limit upto 256KB
  6. Manage Security devices
  7. Bidirectional (device to cloud and vice versa)

Azure Notification Hubs

  1. Use it to push to many subscribers
  2. Platform Notification Services (PNS) — Androind, iOS, Kindle etc
  3. Easily integrate with Azure mobile apps
  4. Workflow
  5. Register device PNS handle
  6. Register PNS handle with Hub
  7. Send notification to hub and hub forward to subscribers

Comparison

Azure Monitoring Services Comparison

TLDR;

There are in excess of 100 Azure services which I doubt can be aced by anybody however this article should give pretty good idea to developers and development architects which one they should concentrate based on their application needs.

Next i ‘ll try to write about AWS vs Azure services;

--

--

M Adnan A

Love writing, learning, sharing and love being sarcastic :)