Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
ITCamp 2011 - Mihai Nadas - Windows Azure interop
1. Windows Azure – Plug and Play
Interoperability and The Freedom of Choice
Mihai Nadăș
Yonder / www.tss-yonder.com
mihai@nadas.ro / www.mihainadas.com
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
2. IT Camp 2011
• Thanks for coming!
• ITCamp is made possible by our sponsors:
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
3. Session agenda
1. The state of the cloud and why should you
care
2. Windows Azure - a short refreshment
– DEMO / PhooStock (Photo Sharing in Azure)
3. Interoperability? As-in JAVA and stuff?
– DEMO / Tomcat on Windows Azure
4. What about PHP? MySQL?
– DEMO / PHP and MySQL on Windows Azure
5. Q&A
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
4. The state of the Cloud
AND WHY SHOULD YOU CARE
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
5. The cloud evolves
• It becomes more crisp
Cloud computing is a model for enabling convenient, on-demand network access to a
shared pool of configurable computing resources (e.g., networks, servers, storage,
applications, and services) that can be rapidly provisioned and released with minimal
management effort or service provider interaction. (Peter Mell and Tim Grance, NIST)
• It grows as they told us it will
– ~$37.8B in 2010, expected $121.B by 2015 (26% CAGR) (MarketsAndMarkets
Report)
– By 2014, ~65% of new products will be SaaS services (IDC Report)
– SaaS-derived revenue will account for 26% of net new growth in 2014 (IDC
Report)
• New players confirm it by joining in
– Oracle and HP just to name a few
,
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
6. Why should you care?
• You will have to taste it, sooner or later
• Your job will require it
• Your startup will need it
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
7. First, a short poll
Which of the following technologies you’re most
experienced with?
Windows Azure Microsoft .NET JAVA, PHP, MySQL,
(non-cloud) LOLCODE
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
8. Processing results, please wait...
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
9. And... the results!
Which of the following technologies you’re most
experienced with?
60%
50%
40%
30%
20%
10%
0%
Windows Azure Microsoft .NET JAVA, PHP, MySQL
(non-cloud)
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
11. Windows Azure Refresher
• Scalable computation in the cloud
• Durable cloud storage
• Write code, test, debug locally
• Automated management in the cloud
• Utility business model
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
12. What’s it good for?
Web Applications Media Applications
massive scale infrastructure CGI rendering
burst & overflow capacity content transcoding
temporary, ad-hoc sites media streaming
Service Applications Information Sharing
composite applications reference data
mobile/client connected common data repositories
services knowledge discovery &
Web API’s management
Hybrid Applications Collaborative Processes
component services multi-enterprise integration
distributed processing B2B & e-commerce
distributed data supply chain management
external storage health & life sciences
domain-specific services
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
13. Compute – instance types: Web Role & Storage – distributed storage systems that
Worker Role. Windows Azure applications are highly consistent, reliable, and scalable.
are built with web role instances, worker
role instances, or a combination of both.
HTTP/HTTPS
Each instance runs on its
own VM (virtual machine)
and local transient storage;
replicated as needed Guest VM
Guest VM
Guest VM
Host VM
Maintenance OS,
Hardware-optimized hypervisor
The Fabric Controller communicates with every server
within the Fabric. It manages Windows Azure, monitors
every application, decides where new applications
should run – optimizing hardware utilization.
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
14. PhotoStock – Photo Sharing on Windows Azure
DEMO
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
15. What we’ve seen so far?
• Two roles – web and worker role
• They’re actually full fledged Windows
Server machines
• We can open up ports to the world
• We’re free to program it as we like (Full
Trust)
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
16. How this may be interesting to
you?
• Not managing and interacting with server OS
– less work for you
– don’t have to care it is “Windows Server”
– but have to live with some limits and constraints
• Some level of control
– process isolation (runs inside your own VM/guest OS)
– service and data geo-location
– allocated capacity, scale on-demand
– full spectrum of application architectures and programming models
• You can run Java!
– plus PHP Python, Ruby, MySQL, memcached, etc.
,
– and eventually anything that runs on Windows
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
17. Introducing
WINDOWS AZURE + JAVA
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
18. Mental Model
• Windows
• Non-admin user
• USB drive with “runme.bat”
• Can your app run that way?
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
19. Deployment Options
• Worker Role
– fabric sandbox native
deployment
– automated, need additional
code
– available now
• VM Role
– host your own pre-configured
VM image
– automated, full control
– In beta
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
20. Worker Role Programming Model
• Basically DLL with main()
• In .NET
– OnStart() – initialization
– Run() – main
– OnStop() – graceful shutdown
• Expected to run forever
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
21. How It Works
• Platform features:
– Native code execution (run the JVM)
– Local storage (Tomcat logs, etc.)
– Worker roles with endpoints (listen on port 80)
– Initialization (copy and launch Tomcat)
• Java-specific artifacts:
– Java storage client library
– Apache Tomcat solution accelerator
– (Eclipse tooling)
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
22. Creating a Java Worker Role
1. Include JRE in worker role
2. Launch java.exe with our class
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
23. A Better Java Worker
• Reading configuration settings
• Discovering endpoints
• Handling changes
• Monitoring
• Diagnostics
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
24. Running Tomcat in Windows Azure
• Use the solution accelerator; it’s easier
• Built by Infosys
• To do it yourself:
– Copy Tomcat to local storage
– Configure correct listening port
– Start Tomcat service
– Monitor and report health
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
25. Running Tomcat on Windows Azure
DEMO
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
26. What we’ve seen so far?
• Tomcat Solution Accelerator
– http://archive.msdn.microsoft.com/winazuretomcat
• Windows Azure can run anything that
could basically run on a Windows
machine (just add care)
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
27. Anatomy of a Java Worker Role
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
28. Architectural Perspective
Service Instance
listen port(x)
JVM Catalina server.xml
index.jsp
Tomcat
Sub-Process
new Process()
RoleEntry bind port(x)
Point get Worker Role
runtime
info Service Instance
SQL
http://instance:y
http://instance:x
Database
Service Access
Bus Control
http://app:80 Load Fabric Table Blob
Queue
Balancer Controller Storage Storage
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
29. Windows Azure Tools for
Eclipse/Java
• Runtime
– Multiple Java app servers
– Any Windows-based JRE
• Supports
– Windows Azure Storage
– Windows Azure Drive
– Windows Azure AppFabric
– SQL Azure
• One-click cloud
deployment
• Integrated diagnostics,
monitoring, and logging
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
30. Accessing Windows Azure Storage
from Java
• Windows Azure SDK for Java
– Enables Java developers to develop against
Windows Azure Storage & Service
Management infrastructure using familiar &
consistent programming model Your Java application
• Features Windows Azure SDK for Java
Manageability,
Blobs, Tables, Helper for Http,
– Set of Java classes for Windows Azure Blobs, Queues
Instrumentation,
logging
Auth, REST, Error
Tables & Queues (for CRUD operations) & REST
Service Management
– Helper Classes for HTTP transport,
AuhN/AuthZ, REST & Error Management
– Manageability, Instrumentation &
Logging(log4j)
• Open Source Project site:
– Developed by Soyatec
– www.windowsazure4j.org
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
31. Accessing SQL Azure from Java
• SQL Azure Database
– Full relational Database as a Service
• Supports TDS & OData
• Direct connectivity to SQL Azure
– Connect with JDBC/ODBC using the latest driver
– Eclipse tooling support
• Interoperability using REST
– Easily wrap SQL Azure with WCF Data Services
– Restlet extension for OData (Java)
• Committed to OSS support and app compatibility
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
32. Some Constraints
Platform Java
– Dynamic networking – Sandboxed networking
• <your app>.cloudapp.net • NIO (java.nio) not supported
• no naked domain • engine and host-level clustering
• CNAME re-direct from custom • JNDI, JMS, JMX, RMI, etc.
domain • need to configure networking
• sending traffic to loopback addresses
not allowed and cannot open – Non-persistent local file system
arbitrary ports • logging, configuration, etc.
– No OS-level access – REST-based APIs to services
– Non-persistent local file system • Table Storage – schema-less (noSQL)
• allocate local storage directory • Blob Storage – large files (<200GB
block blobs; <1TB page blobs)
• read-only: Windows directory,
machine configuration files, service • Queues
configuration files • Service Bus
– Available registry resources • Access Control
• read-only: HKEY_CLASSES_ROOT,
HKEY_LOCAL_MACHINE, HKEY_USERS,
HKEY_CURRENT_CONFIG
• full access: HKEY_CURRENT_USER
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
33. Is this limited to Java?
WINDOWS AZURE +
PHP/MYSQL
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
34. Running PHP in Windows Azure
• How to Do It
– Host in Web role (like .NET)
– Supply PHP runtime
Load Balancer
PHP
– Point to runtime via FastCGI Web Role
VIP
configuration in Instance 1
• Web.config
• Web.roleConfig
• Eclipse Tooling @ PHP
http://windowsazure4e.org
Web Role
Instance 2
does the above for you
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
35. MySQL: Simple Configuration
VIP
Load Balancer
Web Role
MySQL
Worker Role
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
36. MySQL in a Windows Azure
Application
• Running MySQL in a worker role
– Copy MySQL to the worker role sub-directory
– Copy to read-write local storage
– Configure MySQL to listen on the right port
– Monitor MySQL health
• Consuming MySQL
– Discover IP address and port
– Normal access from then on
– Handle topology changes
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
37. Replication
VIP
Load Balancer
S M S
MySQL MySQL MySQL
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
38. Windows Azure Drive with Hot
Spare
VIP
Load Balancer
MySQL MySQL
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
39. Windows Azure Drive with Hot
Spare
VIP
Load Balancer
MySQL MySQL
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
40. Windows Azure Drive with Hot
Spare
VIP
Load Balancer
MySQL MySQL
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
41. MySQL Solution Accelerator
• Built by Infosys
• Master/slave configurations in a worker role
– Leverage Windows Azure Drive
– Master election and replication on startup
– Failover and recovery
– Scale up/down slaves
– Periodic backups - full and incremental
• Available with source code
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
42. Running PHP/MySQL on Windows Azure
DEMO
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
43. PHP with Windows Azure Storage
• Windows Azure SDK for PHP @
http://phpazure.codeplex.com
• PHP programming model for Windows
Azure Storage
• Features
– PHP classes for Blobs, Tables & Queues
– Store PHP sessions in Table Storage
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
44. PHP with SQL Azure
• SQL Server Driver for PHP @
http://sqlsrvphp.codeplex.com/
• Supports PHP access to SQL Azure
• Features
– Choose between SQL Server and SQL Azure by
changing connection string
– Use from on-premises or in Windows Azure
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
45. Benefits of Database as a Service
SQL Azure
Database as a Service MySQL Solution Accelerator
• Lower TCO • Compatibility w/ MySQL apps
• Pre-configured clustering across
• Automatic High Availability multiple compute instances
– Multiple servers with live copies of • Database maintenance required
your data --- instant failover • Metered by compute hour
• Automatic Fault-Tolerance
• Automatic maintenance
– No downtime
• Instantly expand/contract databases
to meet application needs
• Metered by database
• Mission-critical SQL Server foundation
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
46. Does this stop here?
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
47. Does this stop here?
• No! You can run LOLCode too.
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
48. Anatomy of a LOLCode
Worker Role
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
49. Key Takeaways
1. Powerful platform primitives
2. Worker role with endpoint is a flexible
model
3. Windows Azure can run anything that
adheres to the „mental model”
• JAVA
• PHP MySQL
,
• Python, Ruby
• [enter your platform of choice here]
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
50. To Remember
• Tomcat Solution Accelerator
• MySQL PHP Solution Accelerator
• Windows Azure SDK for Java
• Windows Azure SDK for PHP
• Windows Azure Tools for Eclipse
• Windows Azure Interoperability
• LOLCode .NET Compiler
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
51. More, online
• AzureWorks.ro / www.azureworks.ro
– Windows Azure User Group
– LinkedIn Community
– News
– This presentation, the references and the source
files
– Comming soon – LOLCode on Windows Azure
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
52. Q&A
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro
53. Don’t forget!
Get your free Azure pass! We want your feedback!
• 30+15 days, no CC req’d • Win a WP7 smartphone
– http://bit.ly/ITCAMP11 – Fill in your feedback forms
– Promo code: ITCAMP11 – Raffle: end of the day
Premium conference on Microsoft’s Dev and ITPro technologies @itcampro / #itcampro