14
Web developing for the cloud Andy Still – Technical Director, Intechnica

Developing for the Cloud

Embed Size (px)

DESCRIPTION

What kind of considerations must you make before you start developing applications for the Cloud? Images used with CC Attribution license: Flickr users BotheredByBees, christopher.woo, david.nikonvscanon, eljay, indigoprime, Irargerich, karindalziel, Spodeworld & stewart

Citation preview

Page 1: Developing for the Cloud

Web developing for the cloudAndy Still – Technical Director, Intechnica

Page 2: Developing for the Cloud

Cloud Development ≠ Traditional Web Development

Don’t believe that to develop a cloud based web application you can develop a standard web application and deploy to the cloud

Embrace the benefits

Beware the pitfalls

Page 3: Developing for the Cloud

Platform is transitory

Cloud instances are transitory; they can fail or reboot at any point• Everything must work on booting

Don’t depend on local storage• Use shared storage

• Amazon EBS• Amazon S3• Azure BLOB Services

Page 4: Developing for the Cloud

Build for Scale Out

Componentise Application• Create distinct black box components• Minimal interfaces to reduce bandwidth• Make services idempotent

Shard data where possible• Reduce reliance on single database

Stateless• No tie of user/consuming service to server

Page 5: Developing for the Cloud

Be imaginative with data storage

Think beyond traditional data storage means

Consider NoSQL databases (Azure Table Services, Amazon SimpleDB)• Flexible data structures (schema-less)• Distributed datasets – eventual consistency• Built for scalability

Lose a lot of the facilities standard to SQL databases• Transactional integrity• Constant data consistency• Flexibility of data queries• Standard language across providers

Page 6: Developing for the Cloud

Look at the other services on offer

Much more to the big cloud providers than just web servers• Full toolkit for building highly scalable applications

Advantages• Designed for scalability

• Designed for Fault Tolerance• Low administration overhead

These services are used to power their own services

Page 7: Developing for the Cloud

SQL Databases Amazon RDS, Amazon Oracle, SQL AzureNoSQL Databases Amazon SimpleDB, Azure Table ServicesMessaging Queues Amazon SQS, Azure Queuing ServiceCaching Azure AppFabric CachingCDN Amazon CloudFront, Azure CDNMonitoring Amazon CloudWatchLarge Scale Data Processing Amazon Elastic Map ReduceBulk Email/Messaging Amazon SES, Amazon SNSScaling Amazon Auto-ScalingFile Storage Amazon S3, Azure BLOB ServicesVPN Amazon VPC, Azure ConnectLoad balancing Azure Traffic Manager, Amazon ELBComputing Amazon EC2, Azure Worker Roles and Web Roles, Azure Virtual

MachinesBusiness Intelligence SQL Azure Reporting

Page 8: Developing for the Cloud

Don’t be scared of a hybrid solution

Combine cloud, on-premise, hosted solutions and even multiple clouds

Use the best tools for the job

Just because the cloud isn’t a good fit for your application doesn’t mean that the cloud is of no interest to you

Page 9: Developing for the Cloud

NoSQL DatabaseRegular Updates

Public

SQL Database

PCI CompliantDataCentre

Catalogue/Product BrowsingCheckout

CloudEnvironment

Page 10: Developing for the Cloud

NoSQL DatabaseRegular Updates

Public

SQL Database

On-Premise

Online PresenceAdministration

Amazon EC2

SQLAzureDatabase

Regu

lar D

ata

Tran

sfer

Page 11: Developing for the Cloud

Public

SQL Database

Hosted Environment

Web Presence

AzureWorker

Role

AppFabric CachingLayer

Post OrderProcessing

Amazon SES

Azure MessagingQueue

Page 12: Developing for the Cloud

Be Aware of What You Are Paying For

Bandwidth• Minify js/css files• Enabled compression• More aggressive caching policies• Use CDNs

Minimise Database calls• Cache results in memory where possible• Use distributed caching service to cache across instances

Minimise queue reads• Combine multiple requests into one queue entry• Don’t query queue more often than needed – pay for checks on empty queue too

Consider licensing costs• Use existing software licences instead of EC2 licences• Look at open source options

Stop servers when not in use!!!

Page 13: Developing for the Cloud

Build in Scalability

Most cloud providers offer API’s to their systems

Build means to programmatically expand system without sysadmin intervention• Automatically based on monitoring• Manually via management interface

Must consider• Billing implications – especially with auto expansion

Page 14: Developing for the Cloud

Web: www.intechnica.co.ukEmail: [email protected]: @intechnicaTel: 0845 680 9679Fax: 0845 2991647Address: Fourways House, 4th Floor, 57 Hilton Street, Manchester, M1 2EJ

Questions