Developing for the Cloud
-
Upload
intechnica -
Category
Travel
-
view
1.067 -
download
1
description
Transcript of Developing for the Cloud
Web developing for the cloudAndy Still – Technical Director, Intechnica
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
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
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
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
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
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
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
NoSQL DatabaseRegular Updates
Public
SQL Database
PCI CompliantDataCentre
Catalogue/Product BrowsingCheckout
CloudEnvironment
NoSQL DatabaseRegular Updates
Public
SQL Database
On-Premise
Online PresenceAdministration
Amazon EC2
SQLAzureDatabase
Regu
lar D
ata
Tran
sfer
Public
SQL Database
Hosted Environment
Web Presence
AzureWorker
Role
AppFabric CachingLayer
Post OrderProcessing
Amazon SES
Azure MessagingQueue
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!!!
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
Web: www.intechnica.co.ukEmail: [email protected]: @intechnicaTel: 0845 680 9679Fax: 0845 2991647Address: Fourways House, 4th Floor, 57 Hilton Street, Manchester, M1 2EJ
Questions