Windows Azure in the Real World: From Idea to Production in a Few Months
Jesus RodriguezTellago Studios, Inc
About Me
• Co-Founder Tellago, Inc• Co-Founder Tellago Studios, Inc• Seat at the Board of a few software companies• Microsoft MVP• Microsoft Architect Advisor• Speaker, Autthor• http://jrodthoughts.com/ • http://weblogs.asp.net/gsusx/ • https://twitter.com/jrdothoughts
About Today
• Windows Azure vs. the competition• What did we build?• Architecting, building and
operating large scale Windows Azure solutions in the real world: best practices & lessons learned
How Real is this Real-World Talk?
KidoZen: An Enterprise Mobile PaaS
Messaging Services
Connector Services
AppCenterStorage Services
HTML5 Hosted Apps
Security Services
Integration Services
SDKs
KidoZen
Your Datacenter
KidoZen Capabilities
• Security– AD Authentication– Google ID
Authentication– Live ID
Authentication• Storage
– Object Storage– Logging– Configuration
• Integration– Queuing – Publish-Subscribe– Service Relay
• Messaging– SMS– Email– Push Notification
• Connectors– SharePoint– Exchange– SQL Server, Oracle– MongoDB– …
• IOS• Android• Windows
Phone • Windows 8• JavaScript• PhoneGap
• Mobile app provisioning
• Mobile app security management
• Mobile app backend magenement
• App analytics
• HTML5 application hosting
• HTML5 application deployment
Backend as a Service
Mobile SDKs
Enterprise App Center
Hosted HTML5
Apps
• Time Tracking
• Event Viewer• IIS Manager• Expense
Report
How did we get here?
Why Windows Azure?
We Needed a PaaS Platform
Not So Fast…
Why? Aren’t you using .NET and SQL
Server?
Not Exactly
The Candidates
We Needed Rapid/Hot Application Deployment
Rapid and Hot Application Deployment
We Needed First Class Node.JS Support
Node.JS Support
We Needed an Identity Infrastructure
Identity Services
We Needed to be Able to Control the Hosting
Instances
Open VMs
We Needed Solid Support for Windows
Windows Support
We Needed a Cloud Service Virtualization
Technology
Service Virtualization Technology
No Vendor Lock In
No Vendor Lock In
Integration With Test Tools and Frameworks
Cloud Testing
And The Winner Is…
Why Windows Azure?
• Support for both IaaS and PaaS models• Great development toolset• Global footprint• Phenomenal NodeJS experience• Some really unique technologies
• Windows Azure Active Directory• Windows Azure Service Bus
What did we learn?
Lesson Learned: If you are going to build for the
cloud….design for the cloud
Building Blocks….
Storage
A few options available
SQL AzureTable Service Blob Storage
HDInsight Service (Hadoop)
A few observations…
Mobile data == semi-structured data
Blob storage is awesome….but for
binaries
Table service is useless: doesn’t support any
serious queries, slow, doesn’t support indexes
SQL Azure is great for rows and columns but…It doesn’t support JSONAnd it’s not optimal for
large databases
HDInsight Service is not ready for primetime
That sucks….Now what?
Azure
MongoDB
MongoDB on Windows Azure
• Two deployment models– Virtual Machines– Worker Roles
• Support for multiple Oss• Native toolset
KidoZen MongoDB Scalable Topology in Windows Azure
Shards and mongos (router) hosted on Windows Azure worker roles or virtual machines
Key range A-B
Primary
Secondary
Secondary
Key range B-C
Primary
Secondary
Secondary
Key range C-D
Primary
Secondary
Secondary
Key range D-E
Primary
Secondary
Secondary
Mongos (router)
KidoZen Storage, Logging,
Configuration APIs
Tons of challenges…
Scaling?
Monitoring?
Monitoring: Mongo Monitoring Service(MMS)
Backup?
Effective Data Backup
MongoDB
MongoDB
MongoDB
MongoDB
Backup Process
Blob Storage Blob Storage
Data Center 1 Data Center 2
Lesson Learned: In Windows Azure Storage:
VMs== Control== Flexibility == Operational
Headaches
Service APIs
Requirement: Optimized for concurrency, Rapid
provisioning, Deep HTTP Support, Easy
Deployment, Portability
Welcome
Native integration with Windows Azure:
var azure = require('azure');
Native support in Web Matrix
Challenges?
Testing?
expresso to the resqueexports['test String#length'] = function(beforeExit, assert) { assert.equal(6, 'foobar'.length); };
HOW ARE YOU DOING?Create a status or health
endpoint.process.memoryprocess.uptime
process.pidconnections
proc: cpu microtime
Integration with your corporate assets
Requirement: Integrate your enterprise mobile
apps on-premise systems
Introducing the Windows Azure Service Bus
Windows Azure SB
Service Relay Queues Topics
Your Datacenter
Azure SB
Tenant Provisioning and Management
Requirement: Provision and scale tenants
dynamically
Dedicated
Instance
Tenant
Tenant
Tenant
Tenant
Tenant
Tenant
Tenant
Tenant
Tenant
Share Instance
Provision Tenant
Provision VM
Provision Storage
Provision Services
Configure Load Balancers
Provision SB Namespace
Leverage Windows Azure Management APIs
Automate tenant provision and management
Performance
Requirement: Process data and messages close
to the consumer
Leverage Windows Azure Content Delivery Network
Consider geo-routing technologies
Windows Azure Traffic Manager has been in
perpetual beta
Introducing Dyn
Development Practices
Requirement: Achieve development agility in
the cloud
Test in the cloud: Emulators are for babies
Deploy Regularly
Version Everything
Security Practices
Requirement: Secure every byte that flows through the platform.
Federate with different identity providers
Window Azure Active Directory is AWESOME
(conceptually) and PAINFUL(Operationally)
Leverage Windows Azure Connect to create virtual
private networks
Operational Practices
Backup Everything
Plan for disaster
Monitor everything
Cost-based architecture
The results?
KidoZen
• Operating in 6 data centers• 700+ production deployments• Survived two major outages• ~1TB tracking data• 60 compute instances
What’s next?
KidoZen
• Leverage HDInsight service for analytics • Leverage Media Services for video and pictures storage• Integrate with Skydrive for data synchronization • Use Workflow Manager for internal business processes
Summary
• Windows Azure IaaS and PaaS capabilities present a great offering for building large scale cloud applications
• If you are building for the cloud, design for the cloud• Think outside the box, Windows Azure is great but not
enough• Consider cost • Start small, iterate
http://www.tellagostudios.com http://jrodthoughts.com
http://twitter.com/#!/jrodthoughtshttp://weblogs.asp.net/gsusx