SlideShare a Scribd company logo
Software architectures
    for the cloud
       Georgios Gousios
          TU Delft
What is the “cloud”?




           http://siliconangle.com/blog/2011/10/01/this-week-in-the-cloud-from-backup-to-mobile/cloud-computing-3-2/
Characteristics

• “Infinite” virtualized resources
• Elasticity
• Services / APIs
• Global distribution, replication
• Pay as you go
Enabling technologies
• Multicores, cheaper RAM
• Virtualization
  • Xen,VMWare, KVM etc
  • Hardware assisted
• Tiered / Distributed / Replicated storage
• Datacenter capacity increasing in superlinear
  fashion
* as a service
•   Infrastructure
    •   Compute power
    •   Storage
    •   Networking
•   Platform
    •   Architectural components
    •   Security
    •   Data processing
•   Software
IaaS


•   Full control of stack           •   More difficult to setup and
                                        maintain

•   Can work with existing
                                    •   Scaling needs to be
    apps
                                        handled explicitly
PaaS

                                    •   Vendor lock in
•   Very fast to bootstrap
                                    •   Not all tools, frameworks
•   No need to take care of             languages available
    infrastructure
                                    •   Limited ability to
•   Scaling can be automatic            implement custom
                                        solutions
Cloud Applications
• Selection of IaaS and/or PaaS platform
• Providing access to data through APIs
• Cloud-specific non-functional requirements
 • High availability
 • Performance
 • Scalability
High availability
•   Minimize downtime
•   Usually reported as number of 9’s
    •   99,999% availability means ~8.5hr/year downtime
•   Achieved using redundancy
    •   Hardware, data center locations
    •   Data replication
    •   Application design to handle fail overs
Performance

• Minimize response time
• Concurrency and parallelism
• Hide interaction times with external
  services
Vertical   Scalability
 (more
HW per
machine)




              Horizontal (more machines)
Vertical   Scalability
 (more
HW per             Expectation
machine)




              Horizontal (more machines)
Vertical   Scalability
 (more
HW per             Expectation
machine)




                                 Reality




              Horizontal (more machines)
Architectural
        Components
• Not only SQL databases
• Queues
• Caches
• Load balancers
• Content delivery networks
• Service APIs
NoSQL
•   Document stores
•   Key - Value stores
•   Object, Graph databases
•   ACID properties vs performance
    •   Eventual consistency
•   Distribution and replication
•   Ad-hoc or API based querying
DB Layout (MongoDB)
             http://www.mongodb.org/display/DOCS/Sharding+Introduction
> d = {foo: 1, bar: {baz :2}}
{ "foo" : 1, "bar" : { "baz" : 2 } }
> db.test.insert(d)

> d = {foo: 5, bar: {baz :2}}
{ "foo" : 5, "bar" : { "baz" : 2 } }
> db.test.insert(d)

> db.test.find({"foo": 5})
{ "_id" : ObjectId("507aab34c502814115c6f61a"), "foo" : 5, "bar" : { "baz" : 2 } }

> db.test.find({"bar.baz":2})
{ "_id" : ObjectId("507aab34c502814115c6f61a"), "foo" : 1, "bar" : { "baz" : 2 } }




        Session example (MongoDB)
Queues

• Producers, consumers and messages
• FIFO processing
• Message durability
• Exchanges and message routing
• Good for offline or batch jobs
Application layout
               http://www.rabbitmq.com/tutorials/tutorial-five-python.html
AMQP.start(:host => '127.0.0.1', ...) do |connection|
   channel = AMQP::Channel.new(connection)
   exchange = channel.topic("test", :durable => true, :auto_delete => false)
   queue    = channel.queue("hello", :auto_delete => true)
                     .bind(exchange, :routing_key => "hello.*")

  queue.subscribe(:ack => true) do |headers, msg|
     begin
         process_msg(msg)
         headers.ack
      rescue
         headers.reject(:requeue => !headers.redelivered?)
      end
     end

   (1..10).times do |x|
    exchange.publish "Hello, world!", :routing_key => "hello.#{i}"
  end
end




    Processing messages (AMQP)
Caches
•   In memory key/value pairs
•   Distributed
•   Timeout based
•   Store results of expensive computations
    •   Dynamic page renderings
    •   Database queries
    •   Lookups to external services
def expensive_computation(id)
  result = cache_get(id)
  return result.value if not result.nil? && result.age < :max_age

  val = do_expensive_computation(id)
  cache.set(id, Result.new(val))

  val
end




             Using caching
Load Balancers
• Distribute incoming requests to processing
  nodes
• Handle node failures, heart beating
• Network to application layer
• Adapt resources to load
 • Can start/stop instances
Content delivery
        networks
• Optimized for delivery of static files
• Geographic proximity to clients
• A higher level form of caching
• Usually an external service
Typical CDN architecture
Service APIs
•   Messaging
•   Managing in-application payments
•   Indexing application datastores
•   Authentication - OAuth
•   Logging and monitoring
•   Big data analytics, Map/Reduce
•   Maps, geolocation
OpenID login
               https://developers.google.com/accounts/docs/OpenID
<script src="https://maps.googleapis.com/maps/api/js"/>
<script>
  var map;
  function initialize() {
    var mapOptions = {
       zoom: 8,
       center: new google.maps.LatLng(-34.397, 150.644),
       mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(
       document.getElementById('map_canvas'),
       mapOptions);
    }

    google.maps.event.addDomListener(window, 'load',
                                     initialize);
</script>




                            Google Maps
POST: http://www.bugsense.com/api/errors
  {
      "client": {
         "name": "bugsense-android",
         "version": "0.6"
      },
      "request": {
         "remote_ip": "10.0.0.1",
         "custom_data": {
            "key1": "value1",
            "key2": "value2"
         }
      },
      "exception": {
         "message": "java.lang.RuntimeException",
         "where": "MainActivity.java:47",
         "klass": "java.lang.RuntimeException",
         "backtrace": "..."
      },
      "application_environment": {
         "phone": "android",
         "appver": "1.2",
         "appname": "com.sfalma",
         "osver": "2.3",
         "wifi_on": "true",
         "mobile_net_on": "true",
         "gps_on": "true",
         "screen_dpi(x:y)": "120.0:120.0",
         "screen:width": "240",
         "screen:height": "400",
         "screen:orientation": "normal"
      }
  }




             App monitoring: Bugsense
                                                    http://www.bugsense.com/features
AWS Map/Reduce
                                              http://commons.wikimedia.org/wiki/File:Text-x-java-source.svg
        http://commons.wikimedia.org/wiki/File:Gnuplot_tcp_analysis.png http://aws.amazon.com/articles/1632
Case study
Background
• Photo sharing service
• 80M users in less than 2 years
 • 10M users in 10 days when Android
    version came out
• (Apr 2012) Team: 5 engineers
• Runs on the AWS cloud
Non functional
       requirements
• Never loose data, never go out of service
• Counter network effects
 • more users will bring in more users
 • updates by famous users
• Minimal costs
Functional
        Requirements
• Applications for all mobile platforms
• Store large static files
• Store metadata
 • tagging, geolocation, friends
• Indexing to support search
• API with support for callbacks
How would you
     architect it?
Compute Node      Key/Value database
Machine Cluster   Object store
Queue             Relational Database
Load Balancer     Content delivery net
Cache
Amazon S3       Photos




            Metadata

 Postgres                Django/Nginx




       Basic architecture
Photos
Amazon S3



             Metadata

 Postgres                 Django/Nginx   elastic load
                                          balancer




            Scaling web traffic
Photos
            Amazon S3


               Keys: A-H
Postgres

           Keys: I-O
                                       Django/Nginx   elastic load
                                                       balancer
                        DB Sharding
Postgres
            Keys: P-Z




Postgres




      Scaling the data layer
Amazon S3          Photos




                                Keys: A-H
                Postgres

                            Keys: I-O
                                                       Django/Nginx   elastic load
                                                                       balancer
                                         DB Sharding
                Postgres
                             Keys: P-Z




                Postgres


Elastic Block
    Store




       Ensuring adequate DB performance
Amazon S3          Photos

                                                              Django/Nginx


                                Keys: A-H
                Postgres

                            Keys: I-O
                                                                              elastic load
                                                                               balancer
                                         DB Sharding
                Postgres
                             Keys: P-Z



                                                           Redis             Memcache
                Postgres
                                                       Sessions,
                                                       data feeds
Elastic Block
    Store



         Improving responsiveness
Content delivery


Object store                           Application servers




    DB          DB Sharding                                    load
                                                             balancer


                              Sessions,
                              data feeds



               Improving responsiveness
                     (simplified)
Content delivery


 Amazon S3
                                         Application servers




     DB               DB Sharding                                load
                                                               balancer


                          Job Queue
                                        Sessions,
                                        data feeds
    Job Workers
      (indexing,
 push notifications)




Handling background jobs
Benefits from running
     on cloud
•   Always available hardware
    •   120 nodes of different RAM/CPU
        configurations
•   Reasonably guaranteed data availability
    •   Object store offers 99,9999999% availability
•   Automated load balancing, scaling
•   0 startup hardware costs
To sum up
•   The cloud is a collection of technologies
•   Facilitates business development with 0 upfront
    hardware investment
•   Facilitates application development by means of
    services and APIs
•   Applications must be
    •   Distributed by design
    •   Fault tolerant by design
References
•   M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski, G. Lee, D.
    Patterson, A. Rabkin, I. Stoica, and M. Zaharia, “A view of cloud computing,”
    Commun. ACM, vol. 53, pp. 50–58, Apr. 2010.

•   G. Garrison, S. Kim, and R. L. Wakefield, “Success factors for deploying cloud
    computing,” Commun. ACM, vol. 55, pp. 62–68, Sept. 2012.

•   P. Louridas, “Up in the air: Moving your applications to the cloud,” Software, IEEE,
    vol. 27, no. 4, pp. 6–11, 2010.

•   B. Wilder, Cloud Architecture Patterns. O’Reilly Media, Inc., Sep 2012.

•   Instagram Engineering. What powers instagram: Hundreds of instances, dozens of
    technologies, 2011.

More Related Content

What's hot

Netflix web-adrian-qcon
Netflix web-adrian-qconNetflix web-adrian-qcon
Netflix web-adrian-qcon
Yiwei Ma
 
(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift
(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift
(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift
Amazon Web Services
 
[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...
[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...
[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...
Insight Technology, Inc.
 
Writing Yarn Applications Hadoop Summit 2012
Writing Yarn Applications Hadoop Summit 2012Writing Yarn Applications Hadoop Summit 2012
Writing Yarn Applications Hadoop Summit 2012
Hortonworks
 
How to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech Talks
How to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech TalksHow to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech Talks
How to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech Talks
Amazon Web Services
 
(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...
(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...
(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...
Amazon Web Services
 
Above the cloud: Big Data and BI
Above the cloud: Big Data and BIAbove the cloud: Big Data and BI
Above the cloud: Big Data and BI
Denny Lee
 
[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)
Steve Min
 
CloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenCloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heaven
Patrick Chanezon
 
Ceate a Scalable Cloud Architecture
Ceate a Scalable Cloud ArchitectureCeate a Scalable Cloud Architecture
Ceate a Scalable Cloud Architecture
Amazon Web Services
 
Cqrs api v2
Cqrs api v2Cqrs api v2
Cqrs api v2
Brandon Mueller
 
Rapidly Building Data Driven Web Pages with Dynamic ADO.NET
Rapidly Building Data Driven Web Pages with Dynamic ADO.NETRapidly Building Data Driven Web Pages with Dynamic ADO.NET
Rapidly Building Data Driven Web Pages with Dynamic ADO.NET
goodfriday
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
Amazon Web Services
 
cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Servicescloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
VMEngine
 
Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...
Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...
Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...
Zhijie Shen
 
Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...
Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...
Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...
Vadym Kazulkin
 
October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...
October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...
October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...
Yahoo Developer Network
 
NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database Overview
Steve Min
 
Austin Scales- Clickstream Analytics at Bazaarvoice
Austin Scales- Clickstream Analytics at BazaarvoiceAustin Scales- Clickstream Analytics at Bazaarvoice
Austin Scales- Clickstream Analytics at Bazaarvoice
bazaarvoice_engineering
 
Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...
Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...
Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...
IndicThreads
 

What's hot (20)

Netflix web-adrian-qcon
Netflix web-adrian-qconNetflix web-adrian-qcon
Netflix web-adrian-qcon
 
(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift
(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift
(BDT314) A Big Data & Analytics App on Amazon EMR & Amazon Redshift
 
[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...
[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...
[db tech showcase Tokyo 2017] C24:Taking off to the clouds. How to use DMS in...
 
Writing Yarn Applications Hadoop Summit 2012
Writing Yarn Applications Hadoop Summit 2012Writing Yarn Applications Hadoop Summit 2012
Writing Yarn Applications Hadoop Summit 2012
 
How to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech Talks
How to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech TalksHow to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech Talks
How to Migrate from Cassandra to Amazon DynamoDB - AWS Online Tech Talks
 
(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...
(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...
(ARC311) Extreme Availability for Mission-Critical Applications | AWS re:Inve...
 
Above the cloud: Big Data and BI
Above the cloud: Big Data and BIAbove the cloud: Big Data and BI
Above the cloud: Big Data and BI
 
[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)
 
CloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenCloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heaven
 
Ceate a Scalable Cloud Architecture
Ceate a Scalable Cloud ArchitectureCeate a Scalable Cloud Architecture
Ceate a Scalable Cloud Architecture
 
Cqrs api v2
Cqrs api v2Cqrs api v2
Cqrs api v2
 
Rapidly Building Data Driven Web Pages with Dynamic ADO.NET
Rapidly Building Data Driven Web Pages with Dynamic ADO.NETRapidly Building Data Driven Web Pages with Dynamic ADO.NET
Rapidly Building Data Driven Web Pages with Dynamic ADO.NET
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
 
cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Servicescloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
 
Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...
Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...
Hadoop Summit San Jose 2014 - Analyzing Historical Data of Applications on Ha...
 
Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...
Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...
Production Ready Serverless Java Applications in 3 Weeks AWS UG Cologne Febru...
 
October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...
October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...
October 2016 HUG: Architecture of an Open Source RDBMS powered by HBase and ...
 
NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database Overview
 
Austin Scales- Clickstream Analytics at Bazaarvoice
Austin Scales- Clickstream Analytics at BazaarvoiceAustin Scales- Clickstream Analytics at Bazaarvoice
Austin Scales- Clickstream Analytics at Bazaarvoice
 
Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...
Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...
Scalable Architecture on Amazon AWS Cloud - Indicthreads cloud computing conf...
 

Viewers also liked

Performing Large Scale Repeatable Software Engineering Studies
Performing Large Scale Repeatable Software Engineering StudiesPerforming Large Scale Repeatable Software Engineering Studies
Performing Large Scale Repeatable Software Engineering Studies
Georgios Gousios
 
Software Quality Analysis with Alitheia Core
Software Quality Analysis with Alitheia CoreSoftware Quality Analysis with Alitheia Core
Software Quality Analysis with Alitheia Core
Georgios Gousios
 
Practical introduction to the actor model
Practical introduction to the actor modelPractical introduction to the actor model
Practical introduction to the actor model
Georgios Gousios
 
Software quality
Software qualitySoftware quality
Software quality
Georgios Gousios
 
Software Quality Days 2016 - Tool Challenge - LivingDoc
Software Quality Days 2016 - Tool Challenge - LivingDocSoftware Quality Days 2016 - Tool Challenge - LivingDoc
Software Quality Days 2016 - Tool Challenge - LivingDoc
Anis Ben Hamidene
 
Personal Cloud Application Architectures
Personal Cloud Application ArchitecturesPersonal Cloud Application Architectures
Personal Cloud Application Architectures
Phil Windley
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
Luminary Labs
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
LinkedIn
 
Architectures For The Cloud
Architectures For The CloudArchitectures For The Cloud
Architectures For The Cloud
Eberhard Wolff
 
Moving apps to the cloud 3rd edition
Moving apps to the cloud 3rd editionMoving apps to the cloud 3rd edition
Moving apps to the cloud 3rd edition
David J Rosenthal
 

Viewers also liked (10)

Performing Large Scale Repeatable Software Engineering Studies
Performing Large Scale Repeatable Software Engineering StudiesPerforming Large Scale Repeatable Software Engineering Studies
Performing Large Scale Repeatable Software Engineering Studies
 
Software Quality Analysis with Alitheia Core
Software Quality Analysis with Alitheia CoreSoftware Quality Analysis with Alitheia Core
Software Quality Analysis with Alitheia Core
 
Practical introduction to the actor model
Practical introduction to the actor modelPractical introduction to the actor model
Practical introduction to the actor model
 
Software quality
Software qualitySoftware quality
Software quality
 
Software Quality Days 2016 - Tool Challenge - LivingDoc
Software Quality Days 2016 - Tool Challenge - LivingDocSoftware Quality Days 2016 - Tool Challenge - LivingDoc
Software Quality Days 2016 - Tool Challenge - LivingDoc
 
Personal Cloud Application Architectures
Personal Cloud Application ArchitecturesPersonal Cloud Application Architectures
Personal Cloud Application Architectures
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 
Architectures For The Cloud
Architectures For The CloudArchitectures For The Cloud
Architectures For The Cloud
 
Moving apps to the cloud 3rd edition
Moving apps to the cloud 3rd editionMoving apps to the cloud 3rd edition
Moving apps to the cloud 3rd edition
 

Similar to Software architectures for the cloud

Aws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon ElishaAws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon Elisha
Helen Rogers
 
Creating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at ScaleCreating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at Scale
Sean Chittenden
 
AWS as platform for scalable applications
AWS as platform for scalable applicationsAWS as platform for scalable applications
AWS as platform for scalable applications
Roman Gomolko
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
Thorsten Kamann
 
DW on AWS
DW on AWSDW on AWS
DW on AWS
Gaurav Agrawal
 
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
Seeding The Cloud
Seeding The CloudSeeding The Cloud
Seeding The Cloud
Ted Leung
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
Best of re:Invent
Best of re:InventBest of re:Invent
Best of re:Invent
Amazon Web Services
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
François-Guillaume Ribreau
 
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
Cloud Native Day Tel Aviv
 
The Best of re:invent 2016
The Best of re:invent 2016The Best of re:invent 2016
The Best of re:invent 2016
Amazon Web Services
 
Serverless Data Platform
Serverless Data PlatformServerless Data Platform
Serverless Data Platform
Shu-Jeng Hsieh
 
Achieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with ChefAchieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with Chef
Matt Ray
 
Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09
Chris Bunch
 
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Amazon Web Services
 
Sf big analytics_2018_04_18: Evolution of the GoPro's data platform
Sf big analytics_2018_04_18: Evolution of the GoPro's data platformSf big analytics_2018_04_18: Evolution of the GoPro's data platform
Sf big analytics_2018_04_18: Evolution of the GoPro's data platform
Chester Chen
 
I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices
I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices
I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices
Apigee | Google Cloud
 

Similar to Software architectures for the cloud (20)

Aws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon ElishaAws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon Elisha
 
Creating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at ScaleCreating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at Scale
 
AWS as platform for scalable applications
AWS as platform for scalable applicationsAWS as platform for scalable applications
AWS as platform for scalable applications
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
DW on AWS
DW on AWSDW on AWS
DW on AWS
 
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Seeding The Cloud
Seeding The CloudSeeding The Cloud
Seeding The Cloud
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Best of re:Invent
Best of re:InventBest of re:Invent
Best of re:Invent
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
 
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
 
The Best of re:invent 2016
The Best of re:invent 2016The Best of re:invent 2016
The Best of re:invent 2016
 
Serverless Data Platform
Serverless Data PlatformServerless Data Platform
Serverless Data Platform
 
Achieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with ChefAchieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with Chef
 
Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09
 
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
 
Sf big analytics_2018_04_18: Evolution of the GoPro's data platform
Sf big analytics_2018_04_18: Evolution of the GoPro's data platformSf big analytics_2018_04_18: Evolution of the GoPro's data platform
Sf big analytics_2018_04_18: Evolution of the GoPro's data platform
 
I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices
I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices
I Love APIs 2015: Building Predictive Apps with Lamda and MicroServices
 

Recently uploaded

Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 

Recently uploaded (20)

Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 

Software architectures for the cloud

  • 1. Software architectures for the cloud Georgios Gousios TU Delft
  • 2. What is the “cloud”? http://siliconangle.com/blog/2011/10/01/this-week-in-the-cloud-from-backup-to-mobile/cloud-computing-3-2/
  • 3. Characteristics • “Infinite” virtualized resources • Elasticity • Services / APIs • Global distribution, replication • Pay as you go
  • 4. Enabling technologies • Multicores, cheaper RAM • Virtualization • Xen,VMWare, KVM etc • Hardware assisted • Tiered / Distributed / Replicated storage • Datacenter capacity increasing in superlinear fashion
  • 5. * as a service • Infrastructure • Compute power • Storage • Networking • Platform • Architectural components • Security • Data processing • Software
  • 6. IaaS • Full control of stack • More difficult to setup and maintain • Can work with existing • Scaling needs to be apps handled explicitly
  • 7. PaaS • Vendor lock in • Very fast to bootstrap • Not all tools, frameworks • No need to take care of languages available infrastructure • Limited ability to • Scaling can be automatic implement custom solutions
  • 8. Cloud Applications • Selection of IaaS and/or PaaS platform • Providing access to data through APIs • Cloud-specific non-functional requirements • High availability • Performance • Scalability
  • 9. High availability • Minimize downtime • Usually reported as number of 9’s • 99,999% availability means ~8.5hr/year downtime • Achieved using redundancy • Hardware, data center locations • Data replication • Application design to handle fail overs
  • 10. Performance • Minimize response time • Concurrency and parallelism • Hide interaction times with external services
  • 11. Vertical Scalability (more HW per machine) Horizontal (more machines)
  • 12. Vertical Scalability (more HW per Expectation machine) Horizontal (more machines)
  • 13. Vertical Scalability (more HW per Expectation machine) Reality Horizontal (more machines)
  • 14. Architectural Components • Not only SQL databases • Queues • Caches • Load balancers • Content delivery networks • Service APIs
  • 15. NoSQL • Document stores • Key - Value stores • Object, Graph databases • ACID properties vs performance • Eventual consistency • Distribution and replication • Ad-hoc or API based querying
  • 16. DB Layout (MongoDB) http://www.mongodb.org/display/DOCS/Sharding+Introduction
  • 17. > d = {foo: 1, bar: {baz :2}} { "foo" : 1, "bar" : { "baz" : 2 } } > db.test.insert(d) > d = {foo: 5, bar: {baz :2}} { "foo" : 5, "bar" : { "baz" : 2 } } > db.test.insert(d) > db.test.find({"foo": 5}) { "_id" : ObjectId("507aab34c502814115c6f61a"), "foo" : 5, "bar" : { "baz" : 2 } } > db.test.find({"bar.baz":2}) { "_id" : ObjectId("507aab34c502814115c6f61a"), "foo" : 1, "bar" : { "baz" : 2 } } Session example (MongoDB)
  • 18. Queues • Producers, consumers and messages • FIFO processing • Message durability • Exchanges and message routing • Good for offline or batch jobs
  • 19. Application layout http://www.rabbitmq.com/tutorials/tutorial-five-python.html
  • 20. AMQP.start(:host => '127.0.0.1', ...) do |connection| channel = AMQP::Channel.new(connection) exchange = channel.topic("test", :durable => true, :auto_delete => false) queue = channel.queue("hello", :auto_delete => true) .bind(exchange, :routing_key => "hello.*") queue.subscribe(:ack => true) do |headers, msg| begin process_msg(msg) headers.ack rescue headers.reject(:requeue => !headers.redelivered?) end end (1..10).times do |x| exchange.publish "Hello, world!", :routing_key => "hello.#{i}" end end Processing messages (AMQP)
  • 21. Caches • In memory key/value pairs • Distributed • Timeout based • Store results of expensive computations • Dynamic page renderings • Database queries • Lookups to external services
  • 22. def expensive_computation(id) result = cache_get(id) return result.value if not result.nil? && result.age < :max_age val = do_expensive_computation(id) cache.set(id, Result.new(val)) val end Using caching
  • 23. Load Balancers • Distribute incoming requests to processing nodes • Handle node failures, heart beating • Network to application layer • Adapt resources to load • Can start/stop instances
  • 24. Content delivery networks • Optimized for delivery of static files • Geographic proximity to clients • A higher level form of caching • Usually an external service
  • 26. Service APIs • Messaging • Managing in-application payments • Indexing application datastores • Authentication - OAuth • Logging and monitoring • Big data analytics, Map/Reduce • Maps, geolocation
  • 27. OpenID login https://developers.google.com/accounts/docs/OpenID
  • 28. <script src="https://maps.googleapis.com/maps/api/js"/> <script> var map; function initialize() { var mapOptions = { zoom: 8, center: new google.maps.LatLng(-34.397, 150.644), mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map( document.getElementById('map_canvas'), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize); </script> Google Maps
  • 29. POST: http://www.bugsense.com/api/errors { "client": { "name": "bugsense-android", "version": "0.6" }, "request": { "remote_ip": "10.0.0.1", "custom_data": { "key1": "value1", "key2": "value2" } }, "exception": { "message": "java.lang.RuntimeException", "where": "MainActivity.java:47", "klass": "java.lang.RuntimeException", "backtrace": "..." }, "application_environment": { "phone": "android", "appver": "1.2", "appname": "com.sfalma", "osver": "2.3", "wifi_on": "true", "mobile_net_on": "true", "gps_on": "true", "screen_dpi(x:y)": "120.0:120.0", "screen:width": "240", "screen:height": "400", "screen:orientation": "normal" } } App monitoring: Bugsense http://www.bugsense.com/features
  • 30. AWS Map/Reduce http://commons.wikimedia.org/wiki/File:Text-x-java-source.svg http://commons.wikimedia.org/wiki/File:Gnuplot_tcp_analysis.png http://aws.amazon.com/articles/1632
  • 32. Background • Photo sharing service • 80M users in less than 2 years • 10M users in 10 days when Android version came out • (Apr 2012) Team: 5 engineers • Runs on the AWS cloud
  • 33. Non functional requirements • Never loose data, never go out of service • Counter network effects • more users will bring in more users • updates by famous users • Minimal costs
  • 34. Functional Requirements • Applications for all mobile platforms • Store large static files • Store metadata • tagging, geolocation, friends • Indexing to support search • API with support for callbacks
  • 35. How would you architect it? Compute Node Key/Value database Machine Cluster Object store Queue Relational Database Load Balancer Content delivery net Cache
  • 36. Amazon S3 Photos Metadata Postgres Django/Nginx Basic architecture
  • 37. Photos Amazon S3 Metadata Postgres Django/Nginx elastic load balancer Scaling web traffic
  • 38. Photos Amazon S3 Keys: A-H Postgres Keys: I-O Django/Nginx elastic load balancer DB Sharding Postgres Keys: P-Z Postgres Scaling the data layer
  • 39. Amazon S3 Photos Keys: A-H Postgres Keys: I-O Django/Nginx elastic load balancer DB Sharding Postgres Keys: P-Z Postgres Elastic Block Store Ensuring adequate DB performance
  • 40. Amazon S3 Photos Django/Nginx Keys: A-H Postgres Keys: I-O elastic load balancer DB Sharding Postgres Keys: P-Z Redis Memcache Postgres Sessions, data feeds Elastic Block Store Improving responsiveness
  • 41. Content delivery Object store Application servers DB DB Sharding load balancer Sessions, data feeds Improving responsiveness (simplified)
  • 42. Content delivery Amazon S3 Application servers DB DB Sharding load balancer Job Queue Sessions, data feeds Job Workers (indexing, push notifications) Handling background jobs
  • 43. Benefits from running on cloud • Always available hardware • 120 nodes of different RAM/CPU configurations • Reasonably guaranteed data availability • Object store offers 99,9999999% availability • Automated load balancing, scaling • 0 startup hardware costs
  • 44. To sum up • The cloud is a collection of technologies • Facilitates business development with 0 upfront hardware investment • Facilitates application development by means of services and APIs • Applications must be • Distributed by design • Fault tolerant by design
  • 45. References • M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski, G. Lee, D. Patterson, A. Rabkin, I. Stoica, and M. Zaharia, “A view of cloud computing,” Commun. ACM, vol. 53, pp. 50–58, Apr. 2010. • G. Garrison, S. Kim, and R. L. Wakefield, “Success factors for deploying cloud computing,” Commun. ACM, vol. 55, pp. 62–68, Sept. 2012. • P. Louridas, “Up in the air: Moving your applications to the cloud,” Software, IEEE, vol. 27, no. 4, pp. 6–11, 2010. • B. Wilder, Cloud Architecture Patterns. O’Reilly Media, Inc., Sep 2012. • Instagram Engineering. What powers instagram: Hundreds of instances, dozens of technologies, 2011.

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n