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,
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
Lab: Deploying, starting, updating, and shutting down an
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
Day 4 Afternoon: Students' Choice
Lecture and Lab: Topics selected by the students based on their new