38
Building Real World Application with Azure Deepti Vij Engineering Lead @ People10 [email protected] Saumava Chanda Senior Engineer @people10 [email protected]

Building Real World Application with Azure

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

Demo Azure Management Portal

Source Control

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

Example Source Branch Structure

Demo GIT with Visual Studio

Continuous Integration & Delivery

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

Web development best practices

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)

async language support

async language support in Entity Framework 6

async language support in LINQ expressions

Data storage

Data storage options

Platform as a Service (PaaS) versus Infrastructure as a Service (IaaS)

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

Data Partitioning Strategies

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?

Vertical partitioning

Horizontal Partitioning (Sharding)

Hybrid Partitioning

It is a lot easier to choose one of these partitioning schemes before you go live….

Demo Windows Azure App walkthrough

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.

What do 9s in SLA mean?

Composite SLAs

Scaling applications using Cloud

Infographic

Q and A

Thank you!!