Send the link below via email or IMCopy
Present to your audienceStart remote presentation
- Invited audience members will follow you as you navigate and present
- People invited to a presentation do not need a Prezi account
- This link expires 10 minutes after you close the presentation
- A maximum of 30 users can follow your presentation
- Learn more about this feature in our knowledge base article
Do you really want to delete this prezi?
Neither you, nor the coeditors you shared it with will be able to recover it again.
Make your likes visible on Facebook?
Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.
Modern Arch Patterns for Cloud (VIC.NET presentation)
Transcript of Modern Arch Patterns for Cloud (VIC.NET presentation)
for the cloud
What is the cloud?
Computing power/storage over the internet, provided as a service. Benefits include:
Zero or low upfront cost
Elasticity on demand (Scale up or down)
Maintenance/upgrades/patches etc is someone else's problem
Seemingly infinite computing power at your disposal
Design for failure (resilience)
Design for availability
Design for elasticity
Design for the future
ASP NET MVC or Web Forms
WS-* web services
SQL Server database
Demo App for this talk!
Create an app better than Twitter!
Queue Centric Workflow
Command Query Responsibility Segregation
Performs an action
The "Write" part of CQRS
In the CAP theorem, offers Consistency and Availability
No Read functionality: domain model offers true encapsulation
Domain model only exposes behaviours
Returns data to the user through a query
"Read" part of CQRS
In the CAP theorem, offers Availability and Partition tolerance
Can skip the domain model altogether - thin read layer
Reads can go direct to DB - No complexity
Reads are quick
A way of persisting app state, by storing history of events
Something that has happened in the past
Chess application: storing every move that was made as a series of events
Accounting application: storing every payment made, every payment received as events
Can get the state of the application, by replaying events
The old way
Create Shopping Cart
Add book "Introducing .NET 4.5"
Add book "C# in a nutshell"
Remove book "C# in a nutshell"
Add book "SL 4 for Dummies"
The new way
Shopping Cart has been created
Book "Introducing .NET 4.5" has been added
Book "C# in a nutshell" has been added
Book "C# in a nutshell" has been removed
Book "SL 4 for Dummies" has been added
Cart has been checked out
Already use eventual consistency
Relational database do not scale well horizontally
BASE better than ACID in some cases
Isolate units of work and execute them asynchronously
"Commands" are queued up
Multiple workers can operate on a queue (scaling)
Can have dynamic command handlers
Poison message handling
Xx Joe ...
1 Xx Blah1 ...
2 Xx Blah2 ...
How it all hangs together
Shopping cart Cart Data
Book added Book 1 Data
Book added Book 2 Data
Cart checked Checkout Data
In the Microsoft Eco-system
Non-relational data that has no fixed schema
Highly scalable (horizontal)
Stores Partitioned key-value pairs in tables
Examples - Google's BigTable, Azure's Table Storage, Amazon's DynamoDB, Redis, etc
Stores Documents in datastores
Documents can be XML, JSON, BSON, etc
Examples - Raven, Mongo, Couch
Works on "Graph theory" concept. Stores data as Nodes, Properties and Edges
Examples - Neo4J, Allegro, Virtuso
Data is always available, even if data is stale.
State may change.
There may be a delay before the final state is reached. But, it will.
Pattern to deal with Big Data to obtain results for embarrassingly parallel problems
Azure uses Hadoop (HD Insight)
Data is processed in several steps:
Store: Split and store data in multiple nodes
Map: Data is divided up into sub-problems and distributed to nodes. Nodes will process in parallel and deliver answer
Shuffle: Result is parallel sorted in some order
Reduce: Takes the shuffled answers of sub-problems and combines them to form eventual answer
Take code to data to avoid latency & other issues
In a workflow environment, a document can move from one step to another
Document enrichment can be used to embellish the document at each step to make it more meaningful and useful for next step
Example - Doing a payrun
Data Access Layer
Active Passive Cluster
3 Xx Blah3 ...
Book added Book 3 Data
Book removed Book 2 Data