Training Class on Microsoft Azure


Programming Microsoft Azure

Detailed Syllabus

Day 1 Morning:   Introduction

Lecture: Platform overview, problems addressed and not addressed by Azure. Workload patterns that work well in the cloud: on-off, growing fast, predictable burst, unpredictable burst.  Potential disadvantages of the cloud: resource availability, data sensitivity, legal complications.  Options for geo-location. Overview of Azure architecture: compute service, storage service, and fabric. Definition of a role instance, usage of web roles and worker roles. Building of Hello, World for Azure, upload to Azure, running it from Azure. Usage of new Azure developer portal.  

Lab: None, extra time is applied to afternoon lab

Day 1: Cloud Application Architecture 

Lecture:  Basic patterns for distributed applications: virtualization, abstraction, statelessness, chunkiness, message passing.  Common usage scenarios:  scalable web application, parallel processing application.  Examination of MS tooling for Azure. Examination of the Role programming model, lifecycle of roles. Patterns used for worker roles: queue listener, service listener, or external process. Examination of Web Role architecture, its capabilities and limitations. Examination of packaging and configuration, .csdef, .cscfg, .cspkg files.  Discussion of VM sizes and the correct choice for various types of programs.

Lab: Set up your own Azure environment, build Hello, World for Azure, upload to cloud and run it from the cloud. If you already have this working, then move on to tomorrow’s lab.

Day 2 Morning:  Storage, Part 1, Non-Relational

Lecture:  Storage is THE primary requirement for successful cloud hosting, and scalability the primary design goal. Relational and non-relational kingdoms of cloud storage. Types of non-relational structures: blobs, tables, and queues. Availability via RESTful services, with or without compute instance.  Use of local mock storage in the development fabric, differences from actual cloud storage. Security of storage data.  Usage of blob storage: concept of a blob, blob containers and metadata, flavors of blobs (block and page). Creation and destruction of blobs, uploading and downloading data with blobs. Concept of a blob drive, examination of its usage, discussion of where it is and isn’t appropriate.  Usage of table storage: concept of a non-relational table, internal structure of a table, performing queries, adding and deleting records,  mandatory and optional properties, misuse of the word “entity”. Examination of tools to monitor contents of blobs and tables.  (Because of the large amount of material in this lesson, discussion of queues is deferred until the lesson on the asynchronous pattern.)

Lab:  Guestbook application demonstrating blobs and tables.

Day 2 Afternoon: Storage, Part 2, Relational

Lecture: Introduction to SQL Azure. Application topologies: code far, code near, and hybrid. Structure behind the scenes of SQL Azure. Provisioning of resources in SQL Azure. Capabilities and limitations, changes in design and architecture necessary when switching from non-cloud apps. Discussion of the SQL features supported and not supported by SQL Azure. Built-in limitations of database size, need for design changes to match this architecture.  Difficulties of scaling out the relational model. Discussion of partitioning and sharding, possible need for federated data. Looking for and tracking hot spots. Schema management, fan-out queries, repartitioning. Examination of tools to monitor contents of SQL Azure databases. 

Lab: Hands-on lab providing simple use cases for SQL Azure.

Day 3 Morning: Asynchronous Operations

Lecture: The Asynchronous operation pattern is probably the most important one that you will use, and hence deserves more detailed study. Examination of the asynchronous pattern, its advantages and disadvantages, the circumstances under which this pattern works best – providing fast apparent response to the user, performing long-running work in background, spreading load out over available resources, and improving throughput of short operations (classic example: bank teller lines).   Usages of queues, creating and deleting queues, monitoring their contents with tools. Reading and writing with queues, removal of messages on read, reappearance of messages if not confirmed in time.  Need for time independence, design of operations for idempotency. Use of compensating messages for eventual consistency. Handling of poison messages,  checking for dequeue count, deleting from the original queue and placing into a special poison queue for eventual human assistance.  Optimization of worker role utilization. Splitting large computing problems into many chunks for parallel processing.

Lab:  Hands-on lab using queues for image processing.   

Day 3 Afternoon: Managing, Monitoring, and Debugging Azure Applications

Lecture: Quick review of packaging and configuration.  Concept of a fault domain and upgrade domain. Options for deploying services: Delete and create, swap from staging, upgrade in place, sometimes partially.  Use of management tools and API. Windows Azure diagnostics, recording of events, use of diagnostic monitor. Local buffers, calculation of cost for each type of logging. Use of remote desktop.

Lab: Deploying, starting, updating, and shutting down an Azure application

Day 4 Morning:  Identity Management in the Cloud

Lecture: It is the #1 problem in any secured system: figuring out who the user is, and once you’ve done that, what he’s allowed to do. Examination of identity scenarios, from completely internal to completely external, with several stops in between.  Expense of creating authentication systems for each application, user annoyance at having to manage multiple sets of credentials. Overview of claims-based identity. Connection to Windows identity foundation. Access control service from Azure App Fabric. Authentication of users from business partners, connecting to Facebook and Google authentication. Demonstration of working application.

Lab: Hands-on Lab with federated security and identity lab

Day 4 Afternoon:  Students' Choice

Lecture and Lab: Topics selected by the students based on their new knowledge.