2. Who is Panos?
• Panagiotis “Panos” Kefalidis
• Founder of VoxVoi
• Windows Azure MVP
• AZUG Board Member, Azure Insider
• Microsoft vTS
• Panagiotis@Kefalidis.me
• @pkefal – www.Kefalidis.me
• Add your favorite title here
3. Setting the expectations
• You will not
–See code
–Find an answer to everything
• You will
–Get a better understanding of what applies on Windows
Azure
–You will see real architectures we propose to customers
–You will see applied techniques of specific products
7. Poor man’s checklist - Messaging
• Do you need transactions?
• Do you need bigger messages?
• Do you have specific scalability targets?
• Does it have to be cost effective vs performance?
• Do you need interoperability out-of-the-box?
8. Poor man’s checklist – Front-end apps
• Do you need fast deployments?
• Do you need easy tests of prototypes?
• Do you need CI out-of-the-box?
• Do you need special software to make your web
app run?
• Do you need session state on the web app?
9. Poor man’s checklist – PaaS vs IaaS
• Do you need installs longer than 30 mins?
• Do you need persistence on the disk itself?
• Fulfill your requirement by automating an
install/customization during startup?
• Persistent disks mounted on OS level, not app
level?
• Guaranteed IOPS per disk?
10. Poor man’s checklist – Security/Connectivity
• Do you need identity federation?
• Two factor authentication on your portal?
• Graph API to discover objects in your directory?
• Private IPs and ACLs on public endpoints?
• Secure connection on-premise to cloud?
• Choose your own internal VIPs
11. Many services, different roles
• Windows Azure Service Bus
• Windows Azure Storage Queues
• Windows Azure IaaS
• Windows Azure Virtual Network (VNET)
• Windows Azure VPN
• Windows Azure _we_can_go_on_forever
12. Some alternatives
• MongoDb – Offered on Windows Azure through the
Store
• Redis – Offered with a ready to use script for
deployment
13. MongoDb
• Document based database
• Still has queries, secondary indexes etc.
• Alternative to Windows Azure Tables
• Less hassle to do stuff
• Automatic capabilities (scaling, sharding and
others)
• Much more expensive though
14. Redis
• In memory database (key value pairs)
• Insanely fast
• It can be queried
• Highly available if you set it up correctly
• It has Windows Azure Support from Microsoft OSS
15. Redis
• You can do Pub/Sub
• You can have transactions
• You can have distributed locks out of the box.
–Increment counters from multiple threads etc.
16. Redis vs Windows Azure Role Cache
• Redis is faster
• Redis can be queried (real queries, not tags)
• Redis has smaller footprint
• Redis can be deployed and be connected cross-DC
• Redis can be access from the outside world if
necessary
17. Redis vs Windows Azure Role Cache
• Redis can persist data as well
–It’s recommended to do AOF and only on Slaves
• Windows Azure Role Cache is cheaper
–You need dedicated roles on Redis to have
performance
• It’s that tiny easier to enable Windows Azure Role
Cache
• You don’t have to maintain anything yourself on
Windows Azure Role Cache
20. Source of problems
• Legacy
• Interoperability
• 3rd party vendor software
• Custom software
• Company policies and human factor
21. Legacy
• Legacy technologies
– .NET 1.1, Windows 2000, Windows 2003, Exchange 2003
• Legacy mindset
– 80s approach on problems e.g. synchronous operations
– Adding hardware to solve performance issues
• Legacy deployment models/tools
– Out-dated tools, like SourceSafe
– Continuous integration vs Manual deploy
– Paper work
22. Interoperability
• Existing integration
–Tightly coupled integration between systems
–Bad implementations/practices on Enterprise Service
Bus
• Out-dated technology
–Old tools and implementations
–Different implementations for each platform
(.NET/JAVA)
–No cloud support (PaaS model)
23. 3rd party vendor software
• No cloud readiness
– Unattended installs for PaaS support
– Sticky sessions
– In-memory state/cache
– File system persistence
• Unwillingness
– To fix the issues
• Willingness
– To sell new versions instead
24. Custom software
• Not cloud ready
– Same problems as the vendors
• Developers not trained
– No experience with HA systems
– No experience with de-coupled architectures
– No experience with asynchronous operations
– Learn how to embrace failure
• Developers get offended
– A significant mindset change causes denial
32. Legend
End-User
Web Site
Moderator
Web Site
End-User
Blob Storage
(Uploaded Content, Generated Mezzanine File, Thumbnails, Streaming Content, Message Queues,
Encoding profiles)
Content structure:
/{CAMPAIGN}/{USER}/{DATE}/ORIGINAL_FILE/{FILE_NAME}
/{CAMPAIGN}/{USER}/{DATE}/METADATA/{FILE_NAME}
/{CAMPAIGN}/{USER}/{DATE}/MEZZANINE_MASTER/{FILE_NAME}
/{CAMPAIGN}/{USER}/{DATE}/THUMBNAILS/{FILE_NAMES}
/{CAMPAIGN}/{USER}/{DATE}/STREAMING/{SEGMENTS}
/{CAMPAIGN}/EncodeProfiles/{NAME}.xml
UPLOADED QUEUE
7. Read Message
from Queue
Media Services
DONE/ARCHIVE QUEUE
Orchestrator
SQL Server
(Metadata & Status)
13. Update Publish State (Success)
13. Update Publish State (Error)
Customer mod
ERROR QUEUE
11. Put Message on Queue
12. Read Message from Queue
9. Put message on Queue
10. Read message from Queue
Azure
APPROVE QUEUE
1. View All Content
3. View Details (Item)
5. Approve (Item)
2. Fetch Metadata
4. Fetch Tumbnails
6. Put Message
on Queue
Customer s publishing
system
8. Execute Job
10. Return Success
10. Return Error
PUBLISHED QUEUE 11. Put Message on Queue
12. Read Message from Queue
Customer s
media platform
Customer
9. File Drop
2. Upload video
1. Upload video
3. Put message
on Queue
4. Read Message
from Queue
7. Create Job
9. Read Success
8. Read Error
5. Create video record with metadata
10. Update video metadata
11. Update video metadata (Error).
Needs admin attention
7. Drop final file
11. Put message into Queue
6. Read job metadata
(encode profile .xml)
Admin flow
User Flow
34. Startup scripts automation
• We connect to a service and get a SAS
• We use that to securely access storage
• We download JDK, JBoss and EAR/WAR
• Unzip/install as necessary
• Continue with other tasks
35. Worker Role IaaSWeb Role
abstraction control
WR1
Proxy
WR2
JBoss AS 7 AP+A
A
JBossAS binaries
JBoss
configuration
EAR(s) and
WAR(s)
36. Moving JBoss to Windows Azure
• jGroups discovery uses PING
• mod_cluster discovery by advertising
• Both are multicast protocols
• Multicast is not supported on Windows Azure
38. mod_cluster solution
Azure advertising AA
Proxy
JBoss AS 7 A
A
Proxy
JBoss AS 7 A
A
Proxy
JBoss AS 7 A
A
Metadata
-----------
-------------
-------------
------------
40. Results
• Highly scalable JBoss clustered solution
• We have state if we need it
• They can add/remove instances
–Helps them reach their cost targets
• Easy upgrades using VIP SWAP
• Easy deployment of new packages
–Just restart the instance, the script will do the rest