Introducing Windows Azure. INTRODUCING CLOUD COMPUTING Windows Azure.
Java on Windows Azure
-
Upload
david-chou -
Category
Technology
-
view
4.481 -
download
1
description
Transcript of Java on Windows Azure
![Page 1: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/1.jpg)
Building Highly Scalable Java Applications on Windows AzureDavid [email protected]/dachou
![Page 2: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/2.jpg)
Agenda
• Overview of Windows Azure
• Java How-to
• Architecting for Scale
> Introduction
![Page 3: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/3.jpg)
What is Windows Azure?
• A cloud computing platform (as-a-service)
– on-demand application platform capabilities
– geo-distributed Microsoft data centers
– automated, model-driven services provisioning and management
• You manage code, data, content, policies, service models, etc.– not servers (unless you want to)
• We manage the platform– application containers and services, distributed storage systems
– service lifecycle, data replication and synchronization
– server operating system, patching, monitoring, management
– physical infrastructure, virtualization networking
– security
– “fabric controller” (automated, distributed service management system)
> Azure Overview
![Page 4: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/4.jpg)
Anatomy of a Windows Azure instance
Guest VMGuest VMGuest VMHost VMMaintenance OS,Hardware-optimized hypervisor
> Azure Overview > Anatomy of a Windows Azure instance
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.
Storage – distributed storage systems that are highly consistent, reliable, and scalable.
Compute – instance types: Web Role & Worker Role. Windows Azure applications are built with web role instances, worker role instances, or a combination of both.
Each instance runs on its own VM (virtual machine) and local transient storage; replicated as needed
HTTP/HTTPS
![Page 5: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/5.jpg)
Application Platform Services
> Azure Overview > Application Platform Services
StorageDynamic Tabular Data
BlobsMessage Queues
Distributed File System
Content Distribution
DataTransact-
SQL
Data Synchronizati
on
Relational Database
ADO.NET, ODBC, PHP
Integration Messasging RegistryService Bus
SecurityClaims-Based
Identity
Federated Identities
Secure Token
Service
Declarative Policies
MarketplaceApplicationMarketplac
e
Information Marketplac
e
FrameworksWorkflow Hosting
Distributed Cache
Services Hosting
Compute C / C++Win32 VHD
On-Premises Bridging
Networking
![Page 6: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/6.jpg)
Application Platform Services
> Azure Overview > Application Platform Services
Compute
Storage
DataRelational Database
Integration
Security
Marketplace
Frameworks
Table Storage
Blob Storage
Queue DriveContent Delivery Network
VM Role
Networking Connect
ApplicationsDataMarket
Access Control
Service Bus
Composite App
Caching
Web Role Worker Role
ReportingDataSync
IntegrationConnect(BizTalk)
![Page 7: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/7.jpg)
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” (you can if you want to)
– 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
> Azure Overview
![Page 8: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/8.jpg)
Java and Windows Azure
• Provide your JVM– any version or flavor that runs on Windows
• Provide your code– no programming constraints (e.g., whitelisting libraries, execution time limit,
multi-threading, etc.)
– use existing frameworks
– use your preferred tools (Eclipse, emacs, etc.)
• Windows Azure “Worker Role” sandbox– standard user (non-admin privileges; “full trust” environment)
– native code execution (via launching sub-processes)
– service end points (behind VIPs and load balancers)
> Java How-To
![Page 9: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/9.jpg)
• Worker Role (using C# boot-strapping)– fabric sandbox native deployment
– automated, need additional code
• Worker Role (using scripts)– script-based installation and execution
– automated, need scripts
• VM Role– host your own pre-configured Windows Server 2008 R2 Enterprise x64 VM
image
– automated, full control
– available shortly (in beta)
Deployment Options
> Java How-To > Deployment
![Page 10: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/10.jpg)
Running Tomcat in Windows Azure
Service Instance
Service Instance
Worker Role
RoleEntry Point
Sub-Process
JVM
Tomcat
server.xmlCatalina
Fabric Controller
Load Balancer
TableStorage
BlobStorage
Queue
ServiceBus
Access Control
SQL Database
new Process()
bind port(x)
htt
p:/
/in
stan
ce:x
htt
p:/
/in
stan
ce:y
listen port(x)
http://app:80
getruntimeinfo
index.jsp
> Java How-To > Tomcat (SDK 1.2-based)
![Page 11: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/11.jpg)
• Boot-strapping code in WorkerRole.run()
• Service end point(s) in ServiceDefinition.csdef
Running Jetty in Windows Azure
> Java How-To > Jetty (SDK 1.2-based)
string response = ""; try { System.IO.StreamReader sr; string port = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["HttpIn"].IPEndpoint.Port.ToString(); string roleRoot = Environment.GetEnvironmentVariable("RoleRoot"); string jettyHome = roleRoot + @"\approot\app\jetty7"; string jreHome = roleRoot + @"\approot\app\jre6"; Process proc = new Process(); proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.FileName = String.Format("\"{0}\\bin\\java.exe\"", jreHome); proc.StartInfo.Arguments = String.Format("-Djetty.port={0} -Djetty.home=\"{1}\" -jar \"{1}\\start.jar\"", port, jettyHome); proc.EnableRaisingEvents = false; proc.Start(); sr = proc.StandardOutput; response = sr.ReadToEnd(); } catch (Exception ex) { response = ex.Message; Trace.TraceError(response); }
<Endpoints> <InputEndpoint name="HttpIn" port="80" protocol="tcp" /> </Endpoints>
![Page 12: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/12.jpg)
• Execute startup script in ServiceDefinition.csdef
• Service end point(s) in ServiceDefinition.csdef
Running Jetty with admin access + fixed ports
> Java How-To > Jetty (SDK 1.3-based)
<Startup> <Task commandLine=“runme.cmd" executionContext=“elevated" TaskType=“background"> </Task> </Startup>
<Endpoints> <InputEndpoint name="HttpIn" protocol=“http" port="80" localPort="80" />
</Endpoints>
![Page 13: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/13.jpg)
• Execute startup script in ServiceDefinition.csdef
• Service end point(s) in ServiceDefinition.csdef
Running GlassFish
> Java How-To > GlassFish (using script; SDK 1.3-based)
<Startup> <Task commandLine=“Run.cmd" executionContext=“limited" TaskType=“background">
</Task> </Startup>
<Endpoints> <InputEndpoint name="Http_Listener_1" protocol=“tcp" port="80" localPort="8080" /> <InputEndpoint name="Http_Listener_2" protocol=“tcp" port="8181" localPort="8181" /> <InputEndpoint name=“Admin_Listener" protocol=“tcp" port=“4848" localPort=“4848" /> <InputEndpoint name=“JMX_Connector_Port" protocol=“tcp" port=“8686" localPort=“8686" /> <InputEndpoint name=“Remote_Debug_Port" protocol=“tcp" port=“9009" localPort=“9009" /> </Endpoints>
![Page 14: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/14.jpg)
Running GlassFish in Windows Azure
Service Instance
Service Instance
Worker Role
Sub-Process
JVM GlassFish
Fabric Controller
Load Balancer
TableStorage
BlobStorage
Queue
ServiceBus
Access Control
SQL Database
htt
p:/
/in
stan
ce:8
08
0
htt
p:/
/in
stan
ce:8
08
0
http://app:80
script
> Java How-To > GlassFish (SDK 1.3-based)
StartupCommand
![Page 15: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/15.jpg)
Current constraints
Platform– Dynamic networking
• <your app>.cloudapp.net• no naked domain• CNAME re-direct from custom
domain• can declare up to 5 specific ports
be opened, or port ranges; cannot open arbitrary ports
– Non-persistent local file system• allocate local storage directory• read-only: Windows directory,
machine configuration files, service configuration files
– Stateless application model• round-robin traffic distribution
used dynamic load balancer; no sticky sessions
> Java How-To > Limitations
Java– REST-based APIs to services
• Table Storage – schema-less (noSQL)
• Blob Storage – large files (<200GB block blobs; <1TB page blobs)
• Queues• Service Bus• Access Control
![Page 16: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/16.jpg)
• 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
Windows Azure Tools for Eclipse/Java
> Java How-To > Eclipse (announced; not yet released)
![Page 17: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/17.jpg)
Accessing SQL Azure from Java
> Java How-To > SQL Azure
• 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
![Page 18: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/18.jpg)
Accessing Windows Azure Storage from Java
> Java How-To > Windows Azure Storage
• Windows Azure SDK for Java– Enables Java developers to develop
against Windows Azure Storage & Service Management infrastructure using familiar & consistent programming model
• Features– Set of Java classes for Windows Azure
Blobs, Tables & Queues (for CRUD operations) & Service Management
– Helper Classes for HTTP transport, AuthN/AuthZ, REST & Error Management
– Manageability, Instrumentation & Logging(log4j)
• Open Source Project site: – Developed by our Partner Soyatec
– www.windowsazure4j.org
Windows Azure SDK for Java
Blobs, Tables, Queues
Manageability, Instrumentation,
logging
Helper for Http, Auth, REST, Error
Your Java application
Compute Storage Manage
REST
![Page 19: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/19.jpg)
Accessing Windows Azure AppFabric from Java
> Java How-To > Windows Azure AppFabric
• Usage Patterns– Extends reach of applications securely through the cloud
– Securely integrates partners outside of org boundaries
– Extends reach of on-premises web services layer
– Enables leveraging cloud quickly without having to rewrite apps
• App Fabric SDK for Java Developers– Open source software development kit (SDK)
– a set of libraries, tools, Prescriptive guidance
– sample applications
• Open Source Project site: – Developed by our partner Persistent Systems Limited
– www.jdotnetservices.com
![Page 20: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/20.jpg)
Additional Cloud Interop OptionsCloud On-premises
Data SynchronizationSQL Azure Data Sync
Application-layer Connectivity &
Messaging AppFabric Service Bus
Security & Federated IdentityAppFabric Access Control
Secure Network Connectivity
Virtual Network Connect
> Cloud Scenarios
![Page 21: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/21.jpg)
Facebook (2009)
• +200B pageviews /month
• >3.9T feed actions /day
• +300M active users
• >1B chat mesgs /day
• 100M search queries /day
• >6B minutes spent /day (ranked #2 on Internet)
• +20B photos, +2B/month growth
• 600,000 photos served /sec
• 25TB log data /day processed thru Scribe
• 120M queries /sec on memcache
> Architecting for Scale
Size matters
Twitter (2009)
• 600 requests /sec
• avg 200-300 connections /sec; peak at 800
• MySQL handles 2,400 requests /sec
• 30+ processes for handling odd jobs
• process a request in 200 milliseconds in Rails
• average time spent in the database is 50-100 milliseconds
• +16 GB of memcached
Google (2007)
• +20 petabytes of data processed /day by +100K MapReduce jobs
• 1 petabyte sort took ~6 hours on ~4K servers replicated onto ~48K disks
• +200 GFS clusters, each at 1-5K nodes, handling +5 petabytes of storage
• ~40 GB /sec aggregate read/write throughput across the cluster
• +500 servers for each search query < 500ms
• >1B views / day on Youtube (2009)
Myspace (2007)
• 115B pageviews /month
• 5M concurrent users @ peak
• +3B images, mp3, videos
• +10M new images/day
• 160 Gbit/sec peak bandwidth
Flickr (2007)
• +4B queries /day
• +2B photos served
• ~35M photos in squid cache
• ~2M photos in squid’s RAM
• 38k req/sec to memcached (12M objects)
• 2 PB raw storage
• +400K photos added /daySource: multiple articles, High Scalabilityhttp://highscalability.com/
![Page 22: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/22.jpg)
app server
• Common characteristics– synchronous processes
– sequential units of work
– tight coupling
– stateful
– pessimistic concurrency
– clustering for HA
– vertical scaling
Traditional scale-up architecture
> Architecting for Scale > Vertical Scaling
app serverweb data store
units of work
web data store
![Page 23: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/23.jpg)
app server
app server
Traditional scale-up architecture
> Architecting for Scale > Vertical Scaling
web
data storeweb
• To scale, get bigger servers– expensive
– has scaling limits
– inefficient use of resources
![Page 24: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/24.jpg)
data storeapp server
Traditional scale-up architecture
> Architecting for Scale > Vertical Scaling
app serverweb
web
• When problems occur– bigger failure impact
![Page 25: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/25.jpg)
Traditional scale-up architecture
> Architecting for Scale > Vertical Scaling
app serverweb
data storeweb
• When problems occur– bigger failure impact
– more complex recovery
![Page 26: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/26.jpg)
Use more pieces, not bigger pieces
LEGO 10179 Ultimate Collector's Millennium Falcon• 33 x 22 x 8.3 inches (L/W/H)• 5,195 pieces
LEGO 7778 Midi-scale Millennium Falcon• 9.3 x 6.7 x 3.2 inches (L/W/H) • 356 pieces
> Architecting for Scale > Horizontal scaling
![Page 27: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/27.jpg)
app server
Scale-out architecture
> Architecting for Scale > Horizontal scaling
app serverweb data store
• Common characteristics– small logical units of work
– loosely-coupled processes
– stateless
– event-driven design
– optimistic concurrency
– partitioned data
– redundancy fault-tolerance
– re-try-based recoverabilityweb data store
![Page 28: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/28.jpg)
app server
app server
app server
app server
app server
Scale-out architecture
> Architecting for Scale > Horizontal scaling
app serverweb data store
web
web
web data store
web
web
• To scale, add more servers– not bigger servers
data store
data store
data store
data store
![Page 29: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/29.jpg)
app server
app server
app server
app server
app server
app server
Scale-out architecture
> Architecting for Scale > Horizontal scaling
web data store
web
web
web data store
web
web
• When problems occur– smaller failure impact
– higher perceived availability
data store
data store
data store
data store
![Page 30: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/30.jpg)
app server
app server
app server
Scale-out architecture
> Architecting for Scale > Horizontal scaling
app serverweb data store
web
web app server
web data store
web
web
• When problems occur– smaller failure impact
– higher perceived availability
– simpler recovery
data store
data store
data store
data store
![Page 31: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/31.jpg)
app server
app server
• Scalable performance at extreme scale– asynchronous processes
– parallelization
– smaller footprint
– optimized resource usage
– reduced response time
– improved throughput
app server
app server
Scale-out architecture + distributed computing
> Architecting for Scale > Horizontal scaling
app serverweb data store
web
web app server
web data store
web
web
data store
data store
data store
data store
parallel tasks
async tasks
perceived response time
![Page 32: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/32.jpg)
app server
app server
• When problems occur– smaller units of work
– decoupling shields impact
app server
app server
Scale-out architecture + distributed computing
> Architecting for Scale > Horizontal scaling
app serverweb data store
web
web app server
web data store
web
web
data store
data store
data store
data store
![Page 33: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/33.jpg)
app server
• When problems occur– smaller units of work
– decoupling shields impact
– even simpler recovery
app server
app server
Scale-out architecture + distributed computing
> Architecting for Scale > Horizontal scaling
app serverweb data store
web
web app server
web data store
web
web
data store
data store
data store
data store
![Page 34: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/34.jpg)
Live Journal (from Brad Fitzpatrick, then Founder at Live Journal, 2007)
> Architecting for Scale > Cloud Architecture Patterns
Partitioned Data
DistributedCache
Web Frontend
Distributed Storage
Apps & Services
![Page 35: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/35.jpg)
Flickr (from Cal Henderson, then Director of Engineering at Yahoo, 2007)
> Architecting for Scale > Cloud Architecture Patterns
Partitioned Data DistributedCache
Web Frontend
Distributed Storage
Apps & Services
![Page 36: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/36.jpg)
SlideShare (from John Boutelle, CTO at Slideshare, 2008)
> Architecting for Scale > Cloud Architecture Patterns
Partitioned Data
Distributed Cache
WebFrontend
Distributed Storage
Apps &Services
![Page 37: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/37.jpg)
Twitter (from John Adams, Ops Engineer at Twitter, 2010)
> Architecting for Scale > Cloud Architecture Patterns
PartitionedData
DistributedCache
WebFrontend
DistributedStorage
Apps &Services
Queues
AsyncProcesses
![Page 38: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/38.jpg)
2010 stats (Source: http://www.facebook.com/press/info.php?statistics)
– People• +500M active users• 50% of active users log on in any given
day• people spend +700B minutes /month
– Activity on Facebook• +900M objects that people interact with• +30B pieces of content shared /month
– Global Reach• +70 translations available on the site• ~70% of users outside the US• +300K users helped translate the site
through the translations application
– Platform• +1M developers from +180 countries• +70% of users engage with
applications /month• +550K active applications• +1M websites have integrated with
Facebook Platform • +150M people engage with Facebook on
external websites /month
> Architecting for Scale > Cloud Architecture Patterns
Facebook(from Jeff Rothschild, VP Technology at Facebook, 2009)
PartitionedData
DistributedCache
WebFrontend
DistributedStorage
Apps &Services
ParallelProcesses
AsyncProcesses
![Page 39: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/39.jpg)
Windows Azure platform components
Apps & Services
Services
Web Frontend
QueuesDistributed Storage
DistributedCache
Partitioned Data
> Architecting for Scale > Cloud Architecture Patterns
Content Delivery Network
Load Balancer
IISWeb Server
VM Role
Worker Role
Web Role
Caching
Queues Access Control
Composite App
Blobs
Relational Database
Tables
Drives Service Bus
Reporting
DataSync
Virtual NetworkConnect
![Page 40: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/40.jpg)
Fundamental concepts
> Architecting for Scale
• Vertical scaling still works
![Page 41: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/41.jpg)
Fundamental concepts
> Architecting for Scale
• Horizontal scaling for cloud computing
• Small pieces, loosely coupled
• Distributed computing best practices– asynchronous processes (event-driven design)
– parallelization
– idempotent operations (handle duplicity)
– de-normalized, partitioned data (sharding)
– shared nothing architecture
– optimistic concurrency
– fault-tolerance by redundancy and replication
– etc.
![Page 42: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/42.jpg)
Hybrid architectures
> Architecting for Scale > Fundamental Concepts
Scale-out (horizontal)– BASE: Basically Available, Soft
state, Eventually consistent
– focus on “commit”
– conservative (pessimistic)
– shared nothing
– favor extreme size
– e.g., user requests, data collection & processing, etc.
Scale-up (vertical)– ACID: Atomicity, Consistency,
Isolation, Durability
– availability first; best effort
– aggressive (optimistic)
– transactional
– favor accuracy/consistency
– e.g., BI & analytics, financial processing, etc.
Most distributed systems employ both approaches
![Page 43: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/43.jpg)
Lastly…
Windows Azure is an open & interoperable cloud platform
Microsoft is committed to Java, and we are on a journey – please give us your feedback & participate in open source projects
Diverse Choice of Development Tools for Java Developers– Eclipse Tools for Windows Azure – Write Modern Cloud Application
– Tomcat Solutions Accelerator
– Admin Access & VM Role
– Windows Azure Platform SDKs for Java Developers• Windows Azure SDK (Storage, Diagnostics & Service Management)• App Fabric SDK (Service Bus & Access Control Services)• Restlet extension for OData (Java)
For more information:– http://windowsazure.com/interop
– http://www.interoperabilitybridges.com
> Wrap-Up
![Page 44: Java on Windows Azure](https://reader035.fdocuments.us/reader035/viewer/2022062418/5552f520b4c90587048b4d28/html5/thumbnails/44.jpg)
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Thank you!
David [email protected]/dachou