In this session we will see what are the scalabilities points of a cloud application. In the first part of the session we will look over the services offered by Windows Azure.
6. How can we offer value in our solutions?
• Cloud in general offers a lot of services that can make
our life easier
• Cloud can offer more than machines scalability
• Cloud can help us to create application that are scalable
in more than one point
7. How can we offer value in our solutions?
• Cloud in general offers a lot of services that can make
our life easier
• Cloud can offer more than machines scalability
• Cloud can help us to create application that are scalable
in more than one point
• We cannot offer a Cloud solution without knowing the
environment
9. Table Storage Service
• Stores any kind of serializable data
• You don’t need any kind of complex data structure or
SQL knowledge.
• Is not a relational database
• In the same table you can have more than one entity
type
• Each entity can have maximum 252 properties + 3
default
• The maximum size of total tables cannot accede 100.000
GB (100TB)
• The maximum size of an entity can be 1MB
11. Windows Azure Blob Storage
• Block blobs
• Support multi-upload of blocks in parallel
• When updating a block, the old version is not
override until you commit it
• Can be used for large files
• Page blobs
• Collection of pages of 512b
• Can be accessed by an offset
• Can be used when the content is changing very often
• Maximum size 100TB
12. SQL Database
• Relational database based on SQL Server
• It is almost like SQL Server from on-premises
• BUT:
• We don’t have support for distributed transactions
• Each table have to contain at least one cluster index
• We cannot attach a database
• We don’t have support for jobs
• Maximum size is 150 GB
• Double check the total cost of a having a SQL Database –
there are a lot of times when we can use Table Storage
Service
14. Queue Storage Service
• It is very similar with a named queue from Windows
• You can update the message from a queue
• Support batches (maximum 32 messages on each call)
• Operations: peek, insert, delete, get
• Remark: getting a message don’t remove the message
from queue
• With some work you can even iterate in a queue
• 500 - is the maximum number of messages that can be
processed per second
• Message is persisted until someone will consume it
16. Service Bus Queue
• Similar to Queue Storage Service
• The order of the message is guaranteed
• Death Letter support
• Automatically counter for “number of retrives”
• Duplicate messaging detection
• Support for transaction, sessions
• Are not as fast as Windows Azure Queues
• The size of a Service Bus Queue is limited to 5 GB
• Support for ACS (Access Control Service)
• Any kind of serializable item can be added to the queue
• We can even add stream to a message queue (array of bytes )
17. Service Bus Topic
• Multi-distribution mechanism for messages
• Using Service Bus Queues we have 1 to 1 communication
• Using Service Bus Topic we have 1 to n communication
• Each “listener” will receive each message from topic
• Sessions, transaction, death letters are supported
• Two ways for “listeners”
• Receive and delete
• Peek and lock
• The message type is the same with Service Bus Queue –
• BrokeredMessage
• Each message can contain 0 to n properties
• We cannot update or add again the same message
18. Service Bus Relay
• Represent a communication bridge between cloud and on-
premises world
• It is used with success when working with hybrid
application
• Expose WCF services from on-premises servers using
cloud
• Only one entry point
• Requests are persisted even if the on-premises server is
down
• We can control who access our services
• The only thing that need to be changed is on the
configuration file of the server and client
• We can only have request of type Fire And Forget
20. Windows Azure Caching
• Nice feature: you pay only the machine computation
• All the content is in the machine memory
• 2 types of caching:
• Dedicated roles
• Co-located roles (shared memory between application and
cache)
• Cache cluster support (only in combination with a storage account)
• Maximum size of a cache is 14 GB (limited by the memory size of
VM role)
• Each item can have an expiration date
• Built in support for storing web session in the cache
21. Caching Service
• Offer build in caching mechanism
• Can be accessed by anybody from anywhere
based on the namespace
• Maximum size is 4 GB
• Is more expensive than Windows Azure Caching
but can be accessed from any location
• This caching mechanism is offered as a service
• It is similar with Caching Server from on-premise
servers
23. Azure Access Control Service (ACS)
• Provide us a mechanism to authenticate users from
different identify providers: FB, Google, Y!, Live … even
custom identify providers and Active Directory (2.0+)
• Is based on a claim based authentication
• You never work with user credentials
• Depending on the provider, you can access different
information about user
• You don’t need anymore to implement a user
management mechanism
• BUT, if you need, you will need to define roles and
store user id’s
25. Shared Access Signature
• Provide a method to offer access to different resources
from storage account
• You can provide access to resources without requiring a
user to authenticate
• It is a simple way to control and manage who have
access to your storage
• The base of this mechanism is a custom token
• You can add, remove and change a SAS at runtime
• Each policy is defined by a unique id
• The validity of a SAS can be limited (time base)
27. Media Services
• The based action that can be done is: content streaming
• Ingest – first step when content is uploaded (upload and encryption)
• Encoding – Process the media content (change the encoding,
converting and transform) – we can use only supported formats
• Protect – encryption of live streaming using a built-in mechanism
• Streaming – send content to consumers (even Apple HTTP Live
Streaming is supported)
• Support for CDN (Azure and 3th party CDN’s are supported).
• Supported devices: Android, iOS, ,Mac, Windows Phone, Windows 8,
X-box, embedded devices, dedicated devices
29. Windows Azure Websites
• Can be used to develop web-application
• Support different technologies (PHP, node.js, .NET)
• MySQL support
• Low cost support – shared mode
• Reserved mode – dedicated instance
• Git support and a very fast rollback mechanism
• Web.config – doesn’t need to contain Azure
configuration
• Each site runs in an isolated environment
30. Web Roles
• Used to host application composed from multiple tiers
• Each web-role is scalable independently
• In comparison with Azure Websites, a lot of custom
configuration can be done
• Network isolation
• Support for startup tasks
• For example we can run a bat that make a custom
configuration to our firewall or install specific
applications
• Any kind of framework can be used in this machines
31. Worker role
• Perfect place to run long running task
• Can be used with success with web-roles for tasks that run in
background
• Cannot be used to host a web application
• In the moment when the “WHEN(TRUE)” ends the worker role
process stop
• Can be seen as a process that can execute a specific type for an
infinite period of time
32. Virtual Machine
• Can be used to install any kind of operating system from Windows
to Linux
• Built-in support and images available for different versions of Linux
and Windows.
• Custom machines can be created with our own VHD
• Built-in support for MongoDB, MySQL, Cassandra
• Migration from on-premises to cloud and cloud to on-premises can
be done using VHD
36. More messages – What should we do?
• Cloud has is own limits
• Cloud services are like other services
37. More messages – What should we do?
• Split the messages to more than one messaging service
• Based on the type
• Based on the source
• Based on an attribute
39. Caching solutions
• Windows Azure AppFabric Cache
• Cache is seen as a service
• For consumer, the location of the cache is not
relevant
• Windows Azure Cache
• The cache is unique per instance
• Cannot be synchronized between machines in real
time
• Local cache
• In-memory cache
43. Storing binary data
• Images, ISO and binary content
• Can be stored with success on blobs
• CDNs
• Direct access to data (security SAS)
• Videos
• Blobs
• Windows Azure Media Services
44. Storing information
• For cases where we need to write logs or audit data we
can use with success:
• Windows Azure Table + SAS
• Storing any kind of data in a non relational database
• Windows Azure Table + SAS
• Storing relational data
• SQL Azure
45. WCF Services
• Can we expose WCF Services from a private network (on-
premises) into a safe way?
• Can we guaranty that no request will be lost?
• Can we expose services in a manner to be 99% up even if
our servers are up only 90% of time?
46. WCF Services
• Can we expose WCF Services from a private network (on-
premises) into a safe way?
• Can we guaranty that no request will be lost?
• Can we expose services in a manner to be 99% up even if
our servers are up only 90% of time?
• Windows Azure Service Bus Relay
47. Long running task
• We have a web application that has long running task
• Each task take more than 5 seconds to execute
• How we can scale?
48. Long running task
• We have a web application that has long running task
• Each task take more than 5 seconds to execute
• How we can scale?
• Long running request can run on a worker role, that can scale
independent
• The result can be send to web-role using queues
• Client can be notified using Web Sockets or SignalR
49.
50. THE END
Radu Vunvulea
vunvulear@gmail.com
http://vunvulearadu.blogspot.com
Editor's Notes
Store any kind of serializable dataYou don’t need any kind of complex data structure or SQL knowledge.Is not a relational databaseIn the same table you can have more than one type of entityEach entity from can have maximum 252 properties + 3 defaultThe maximum size of total tables cannot accede 100.000 GB (100TB)The maximum size of an entity can be 1MB
COM
Block blobsSupport multi-upload of blocks in parallel When updating a block, the old version is not override until you commit itCan be used for large filesPage blobsCollection of pages of 512bCan be accessed by an offsetCan be used when the content is changing very oftenMaximum size 100TB
COM
COM
It is very similar with a named queue from WindowsYou can update the message from a queueSupport batches (maximum 32 messages on each call)Operations: peek, insert, deleting, getting Remark: getting a message don’t remove the message from queueWith some work you can even iterate in a queue500- is the maximum number of messages that can be processed per secondMessage is persisted until someone will consume it
COM
Similar to Queue Storage ServiceThe order of the message is guaranteedDeath Letter supportAutomatically counter for “number of retries”Duplicate messaging detectionSupport for transaction, sessions Are not as fast as Windows Azure QueuesThe size of a Service Bus Queue is limited to 5 GBSupport for ACS (Access Control Service)Any kind of serializable item can be added to the queueWe can even add stream to a message queue (array of bytes )
COM
COM
COM
COM
COM
COM
Provide us a mechanism to authenticate users from different identify providers: FB, Google, Y!, Live … even custom identify providers and Active Directory (2.0+)Is based on a claim based authentication – tokens are trusting between different services are the based of the claim based auth.You never work with user credentialsDepending on the provider, you can access different information about user You don’t need anymore to implement a user management mechanism BUT, if you need, you will need to define roles and store user id’s
COM
Provide a method to offer access to different resources from storage accountYou can provide access to resources without requiring a user to authenticateIt is a simple way to control and manage who have access to your storage The base of this mechanism is a custom tokenYou can add, remove and change a SAS at runtimeEach policy is defined by a unique idThe validity of a SAS can be limited (time base)
COM
The based action that can be done is: content streamingIngest – first step when content is uploaded (upload and encryption)Encoding – Process the media content (change the encoding, converting and transform) – we can use only supported formatsProtect – encryption of live streaming using a build-in mechanismStreaming – send content to consumers (even Apple HTTP Live Streaming is supported)Support for CDN (Azure and 3th party CDN’s are supported).Supported devices: Android, iOS, ,Mac, Windows Phone, Windows 8, X-box, embedded devices, dedicated devices