380 likes | 495 Views
Architecting Azure solutions. Famous Last Words …. “It is a very humbling experience to make a multimillion-dollar mistake, but it is also very memorable….” ( Fred Brooks - “Mythical Man-Month” p.47). So, What is Software Architecture exactly?.
E N D
Famous Last Words… “It is a very humbling experience to make a multimillion-dollar mistake, but it is also very memorable….” (Fred Brooks - “Mythical Man-Month” p.47)
Software architecture is the fundamentalorganization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution
Architecture forces Stakeholders Quality Attributes Constraints Principles Community experience Architect Architecture Patterns & Anti-patterns Key people Technology A “deliverable” Produce Is an input
The Network is reliable Deque/Delete pattern
Messages Process At Least Once Debit bank account $100 message Worker role reads message Balance debited $100 Worker role is torn before message can be deleted 3 minutes later, message re-appears on queue Worker role reads message Balance debited $100 Message deleted from queue Chaos ensues..... Customer calls bank..... Web Role Worker Role Balance = $1000 Balance = $900 Balance = $800 Web Role Worker Role Worker Role Worker Role Queue Storage LB LB
Solving the Idempotency Problem Debit bank account $100 message with transaction ID Worker role reads message. Checks transaction ID not present. Writes transaction ID with state ‘Started’ to ‘Replay Log’ Balance debited $100 Worker role is torn before message can be deleted 3 minutes later, message re-appears on queue Worker role reads message. Checks transaction ID. It is present in state started. Compensating message written to another queue Message deleted from queue Compensatory message processed. Balance = $900 Balance = $1000 Web Role Worker Role Web Role Worker Role Storage Worker Role Worker Role Query Query Queue Queue Table LB LB
It might be infinite for all purposes but it costs… Bandwidth is infinite
Authentication with ACS The Network is Secure Slide by Alik Levin
Service Bus • Provides secure messaging and connectivity across different network topologies • Enables hybrid applications that span on-premises and the cloud • Enables various communication protocols and patterns for developers to engage in reliable messaging Topology doesn’t change
Enabling hybrid applications Datacenter Partner LOB app Mobile Device LOB web service
Enabling hybrid applications Datacenter Partner ACS LOB app SB Mobile Device LOB web service
Enabling hybrid applications Datacenter Partner ACS LOB app SB Mobile Device LOB web service
Enabling hybrid applications Datacenter Partner ACS LOB app SB Mobile Device LOB web service
Enabling hybrid applications Datacenter Partner ACS LOB app SB Mobile Device LOB web service
Electricity Power Grid Demo
Don’t assume specific instances Virtual IP : 1.1.1.3 Virtual IP : 1.1.1.2 Virtual IP : 1.1.1.4 Worker Role Worker Role Web Role Service Service IIS Instance Instance Windows Kernel Windows Kernel Windows Kernel TCP/IP TCP/IP TCP/IP TCP/IP TCP/IP NLB Driver NIC Driver NIC Driver NIC Driver Virtual NIC Virtual NIC Virtual NIC Virtual IP : 1.1.1.1
Reduced Headache on the one handNew challenges on the other There is one administrator
Azure MMC Snap-in http://code.msdn.microsoft.com/windowsazuremmc
Cerebrata – Azure Diagnostics Manager http://www.cerebrata.com/Products/AzureDiagnosticsManager/Default.aspx
Distribution cost in serialization, time on the wire, security Transport cost is zero
It isn’t – but it’s abstractedunless of course you use Azure connect The Network is homogenous • Quickly connect on-premise computers with the cloud, no networking configuration required • Supports standard IP protocols; secured using end-to-end IPSec • Integrated with the Windows Azure Service Model; all role types supported
Deployment view • Consider xsmall instances for development • Test if you can use less than medium for production
Cost considerations • You pay when you’re deployed (there is no “shelving”) • Shutdown doesn’t help • (keep CPUs running..)
2 instances can give you better availability • Need to be on different fault and upgrade domains
You can control Azure from scripts and code (even dev fabric)
Illustrations • Slide 11 http://www.sxc.hu/photo/1201443 • Slide http://www.sxc.hu/photo/1160486