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
Setting the expectations• You will not–See code–Find an answer to everything• You will–Get a better understanding of what applies on WindowsAzure–You will see real architectures we propose to customers–You will see applied techniques of specific products
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?
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 webapp run?• Do you need session state on the web app?
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 aninstall/customization during startup?• Persistent disks mounted on OS level, not applevel?• Guaranteed IOPS per disk?
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
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
Some alternatives• MongoDb – Offered on Windows Azure through theStore• Redis – Offered with a ready to use script fordeployment
MongoDb• Document based database• Still has queries, secondary indexes etc.• Alternative to Windows Azure Tables• Less hassle to do stuff• Automatic capabilities (scaling, sharding andothers)• Much more expensive though
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
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.
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 ifnecessary
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 haveperformance• It’s that tiny easier to enable Windows Azure RoleCache• You don’t have to maintain anything yourself onWindows Azure Role Cache
Source of problems• Legacy• Interoperability• 3rd party vendor software• Custom software• Company policies and human factor
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
Interoperability• Existing integration–Tightly coupled integration between systems–Bad implementations/practices on Enterprise ServiceBus• Out-dated technology–Old tools and implementations–Different implementations for each platform(.NET/JAVA)–No cloud support (PaaS model)
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
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
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
Worker Role IaaSWeb Roleabstraction controlWR1ProxyWR2JBoss AS 7 AP+AAJBossAS binariesJBossconfigurationEAR(s) andWAR(s)
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
PING solutionWe implemented “AZURE_PING” as ajGroups protocol
mod_cluster solutionAzure advertising AAProxyJBoss AS 7 AAProxyJBoss AS 7 AAProxyJBoss AS 7 AAMetadata-------------------------------------------------
ProxyJBoss AS 7AAWR1WR2ProxyJBoss AS 7AAProxyJBoss AS 7AAJBoss AS 7AAJBoss AS 7AAJBoss AS 7AAJBoss AS 7AAScaling
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