Upload
divyapisces
View
91
Download
3
Embed Size (px)
Citation preview
Building Real World Application with Azure
Deepti Vij Engineering Lead @ People10 [email protected] Saumava Chanda Senior Engineer @people10 [email protected]
Cloud computing enables you to…
• Reach more users and customers in a richer way
• Deliver solutions not possible of practical before
• Be more cost effective by paying for only what you use
• Leverage a flexible, rich development platform
Cloud development patterns
• Automate Everything • Source Control • Continuous Integration & Delivery • Web Dev Best Practices • Enterprise Identity Integration • Data Storage Options • Data Partitioning Strategies • Unstructured Blob Storage • Designing to Survive Failures • Monitoring & Telemetry • Transient Fault Handling • Distributed Caching • Queue Centric Work Pattern
Source Control
• Treat automation scripts as source code and version it together with your application code
• Parameterize automation scripts –> never check-in secrets
• Structure your source branches to enable DevOps workflow
Continuous Integration & Delivery
• Each check-in to Development, Staging and Master branches should kick off automated build + check-in tests
• Use your automation scripts so that successful checkins to Development and Staging automatically deploy to environments in the cloud for more in-depth testing
• Deploying Master to Production can be automated, but more commonly requires an explicit human to sign-off before live production updated
Windows Azure Web Sites
• Build with ASP.NET, Node.js, PHP or Python
• Deploy in seconds with FTP, WebDeploy, Git, TFS
• Easily scale up as demand grows
Load Balancer (1 of n)
Load Balancer (2 of n)
Windows Azure Website Service
Deployment Service
(FTP, WebDeploy, GIT, TFS etc)
Reserved instance virtual machine with IIS already
setup(1 of n)
Reserved instance virtual machine with IIS already
setup(3 of n)
Web Application
Developer or Automation script
Reserved instance virtual machine with IIS already
setup(2 of n)
Load Balancer (1 of n)
Load Balancer (2 of n)
Windows Azure Website Service
Deployment Service
(FTP, WebDeploy, GIT, TFS etc)
Reserved instance virtual machine with IIS already
setup(1 of 2)
Reserved instance virtual machine with IIS already
setup(2 of 2)
Server Failure
Web Application
Web development best practices
• Scale-out your web tier using stateless web servers behind smart load balancers
• Dynamically scale your web tier based on actual usage load
• Avoid using session state (use cache provider if you must)
• Use CDN to edge cache static file assets (images, scripts)
Azure SQL Database (PaaS) SQL Server in a Virtual Machine (IaaS)
Pros •You don’t have to create or manage VMs, update or patch OS or SQL; Azure does that for you. •Built-in High Availability, with a database-level SLA. •Low total cost of ownership (TCO) because you pay only for what you use (no license required). •Good for handling large numbers of smaller databases (<=500 GB each). •Easy to dynamically create new databases to enable scale-out.
Pros •Feature-compatible with on-premises SQL Server. •Can implement SQL Server High Availability via AlwaysOn in 2+ VMs, with VM-level SLA. •You have complete control over how SQL is managed. •Can re-use SQL licenses you already own, or pay by the hour for one. •Good for handling fewer but larger (1 TB+) databases.
Cons •Some feature gaps compared to on-premises SQL Server (lack of CLR integration, TDE, compression support, SQL Server Reporting Services, etc.) •Database size limit of 500GB.
Cons •Updates/patches (OS and SQL) are your responsibility •Creation and management of DBs are your responsibility •Disk IOPS (input/output operations per second) limited to about 8000 (via 16 data drives).
Choosing Relational Database on Windows Azure
Choosing a data storage option Asking the right questions??
• Data semantic
• Query support
• Functional projection
• Ease of scalability
• Instrumentation and Manageability
• Operations
• API Support
• Transactional integrity and data consistency
• Business continuity
• Cost
Understanding the three Vs of data storage
– Volume How much data will you ultimately store?
– Velocity What is the rate at which your data will grow? What will the usage pattern look like?
– Variety What type of data will you store? Relational, images, key-value pairs, social graphs?
Blob Storage
The Azure Storage Blob service provides a way to store files in the cloud. The Blob service has a number of advantages over storing files in a local network file system: • It's highly scalable. A single Storage account can store hundreds of
terabytes, and you can have multiple Storage accounts. • It's durable. Every file you store in the Blob service is automatically
backed up. • It provides high availability. The SLA for Storage promises 99.9% or
99.99% uptime, depending on which geo-redundancy option you choose.
• It's a platform-as-a-service (PaaS) feature of Azure, which means you just store and retrieve files, paying only for the actual amount of storage you use, and Azure automatically takes care of setting up and managing all of the VMs and disk drives required for the service.
Blob Storage Cont..
• You can access the Blob service by using a REST API or by using a programming language API. SDKs are available for .NET, Java, Ruby, and others.
• When you store a file in the Blob service, you can easily make it publicly available over the Internet.
• You can secure files in the Blob service so they can accessed only by authorized users, or you can provide temporary access tokens that makes them available to someone only for a limited period of time.