SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Moving Complex Enterprise
    Ecommerce Systems to the Cloud
    Eddie Chan
    Ronald Chen




Elastic Path™
Elastic Path Software

• We help the worldʼs biggest brands sell digital goods
    and services
•   We provide a flexible Java ecommerce platform and
    expertise in ecommerce strategy and implementation
•   #1 ecommerce blog: www.getelastic.com
•   For more on-demand ecommerce resources:
    www.elasticpath.com/resources
The Elastic Path Platform
    Elastic Path Architecture Components


                                                  Eclipse RCP
                                                  SWT / JFace
                                                                  Financials        ERP          CMS     Payment   Legacy     Custom /
     Web Browser       Mobile Browser   Commerce Manager Client                   System        System   Gateway   Systems    LOB Apps




       Store Front Server               Commerce Manager                       Web Services Server                    XML Import/Export
         Spring Security                   Spring Security                        Spring Security
                                                                                                                        Core Engine
         Apache Velocity                   Spring Remoting                        JAX-WS

         Spring MVC                       Quartz Scheduling                       Core Engine                           Data Sync Tool

         Drools                           Core Engine                                                                    Core Engine

         Core Engine
                                                                                                                                   ETL Tools


    Search Server

        SOLR Search Server               Quartz Scheduling                      Core Engine


                                                                           J2EE Application Server                 Database Server



                                   Ecommerce is complex.
                             Enterprise ecommerce is complex-er.
Case Study

• Since 2008, Elastic Path has been the ecommerce
 backbone of a few of Googleʼs online stores

• For these stores, many customizations have been made
 to the Elastic Path platform.

• One of the largest customizations thatʼs been made
 to the Elastic Path platform is migrating it to run on
 Google App Engine.
Migration to Google App Engine
Before:                    After:




• EP running in the Colo   • EP running on App Engine
• Fixed Cluster            • Dynamic instances
Google App Engine

• Same system that powers many of Googleʼs own apps
• GAE is a Platform as a Service (PaaS)
  • More restrictive than Infrastructure as a Service (IaaS)
      offerings (but for good reasons)
•   Supports Python, Go, and Java (& other JVM
    languages)
•   Free to get started; pay as you go pricing
Advantages of Google App Engine

•   Automatic Scalability
•   Well defined development environment
•   Secure
•   Easier deployments and operations
•   Reduced Cost
•   Built-in monitoring tools
•   Useful services
Topics

•   Challenges with Restricted Classes
•   How App Engine Automatically Scales
•   Performance, Performance, Performance
•   Migrating the Persistence Layer
Topics

•   Challenges with Restricted Classes
•   How App Engine Automatically Scales
•   Performance, Performance, Performance
•   Migrating the Persistence Layer
Challenges with Restricted Classes

• App Engineʼs JRE Class White List:


                                                                     These JRE Classes
                                                                     work on App Engine.
                                                                     All other JRE Classes
                                                                     do not.




             The full list of white list classes can be found at:
      http://code.google.com/appengine/docs/java/jrewhitelist.html
File Restrictions

 • Not allowed:
   • Reading/writing to the filesystem
       (this should not be done anyway)
     • Writing to files inside the WAR
 •   Allowed:
     • Reading from files inside the WAR
Example: File Restrictions

 • Problem: we were reading/writing to the filesystem
 • Solution: we moved the read-only files into the WAR
   and moved the read/write data to the Datastore

Before:                         After:
Socket Restrictions

 • App Engine does not allow the use of raw sockets
 • Reason: security considerations
 • Workarounds may exist depending on the nature of
  the communication
  • e.g. HTTP sockets & App Engine URL Fetch Service
Example: Socket Restrictions

 • Problem: We used HttpClient, which uses sockets, for
     Spring HTTP Remoting
 •   Solution: There is a custom connection manager for
     HttpClient 4 that uses App Engine URL Fetch Service
     instead of sockets
 Before:                       After:
Thread Restrictions

 • App Engine does not allow spawning of threads
 • Use Task Queues instead of threads for background
     jobs
 •   Task Queues:
     • Like a Java Executor
     • Highly configurable
     • Accepts URLs instead of Runnables
     • Code that would have been in Runnable is bound to
       a URL
     • Fetching the URL is like running the task on another
       thread
Example: Thread Restrictions
 • Problem: Generating a file on a background thread
 • Solution: Migrate Runnable to Spring Controller and
  schedule with App Engine Task Queues instead of
  Executor

  Before:                     After:
Topics

•   Challenges with Restricted Classes
•   How App Engine Automatically Scales
•   Performance, Performance, Performance
•   Migrating the Persistence Layer
How App Engine Automatically Scales

 “App Engine apps are powered by any number of
 dynamic instances at any given time, depending on
 the volume of requests received by your application. As
 requests for your application increase, so do the number
 of dynamic instances powering it.”
     http://code.google.com/appengine/docs/adminconsole/instances.html




        Requests     Instances           Requests     Instances
How App Engine Automatically Scales

• A single instance handling requests
• This instance, like all instances, has a request queue to
 hold incoming requests
How App Engine Automatically Scales

• A new request comes in
• Instance-1ʼs request queue is getting overloaded, so...
How App Engine Automatically Scales

• App Engine spawns a new instance to handle request-5
• request-5 is a loading request; request-5 must wait for
 instance-2 to fully initialize before being processed
How App Engine Automatically Scales

• instance-2 finally finishes initializing and can now handle
 requests alongside instance-1
How App Engine Automatically Scales
Loading requests make users wait!

Introducing warm-up requests:
• Introduced in Google App Engine v1.4.0
• Initialize instances ahead of time so that live requests
  do not initiate new instances
• On by default
• Not always called for every new instance (e.g. the very
  1st instance)
How App Engine Automatically Scales
Letʼs replay the previous scenario with warm-up requests.

• A single instance handling requests
• App Engine sees that instance-1ʼs request queue is
 getting overloaded, so...
How App Engine Automatically Scales

• Before any more requests arrive, App Engine sends a
 warm-up request to initialize a new instance
How App Engine Automatically Scales

• instance-2 finishes initializing and is ready to handle
 requests alongside instance-1
How App Engine Automatically Scales

• A new requests comes in
• instance-2 is ready to handle request-5 right away
• request-5 is not a loading request this time
How App Engine Automatically Scales
Fast-forward a few seconds. request-1, 2, and 5 have
been processed.

• instance-2 is idle and instance-1ʼs queue is not full, so...
How App Engine Automatically Scales

• App Engine scales down and drops instance-2 because
 it is no longer needed
How App Engine Automatically Scales
Introducing Always-On Instances:
• Always-On instances remain running even with no traffic
• Minimizes impact of loading requests
• A premium feature (i.e. costs a bit more)
Topics

•   Challenges with Restricted Classes
•   How App Engine Automatically Scales
•   Performance, Performance, Performance
•   Migrating the Persistence Layer
Performance Tools - AppStats

• AppStats
  • A servlet filter that measures the performance of each
   request
Performance - Loading Deadline

• Recall that any request has the potential to be a
 loading request
Performance - Request Deadline

• Still need to handle actual request in the remaining time
    after loading application
•   After 60 seconds, a runtime exception will be thrown
    and the requests will be dropped
Performance - Optimizing

• Loading Request time = Start-Up time + Request time
• To thrive on App Engine, request performance and start-
 up performance must be optimized together

   Optimize
   Requests




                                                 Optimize
                                                 Start-Up
Performance - Optimizing Start-Up
How do you optimize start-up times?
Performance - Optimizing Start-Up
How do you optimize start-up times?




           Do Less
Performance - Optimizing Start-Up
Do less at start-up:
• In our application half the start up time was being
  consumed with classloading
• Amount of classloading is application/framework specific
• We were loading more classes than expected
• Use -verbose:class
• Classpath scanning is slow
• Use static configuration instead of classpath scanning
• Generate configuration at build
Performance - Optimizing Page Loads
• Serve resources from the WAR statically
      Before:          After:
Performance - Optimizing Page Loads
• App Engine provides memcache service
• Cache is shared across instances




• Best effort cache
• In our application we gained performance by caching
 Spring Remote calls
Topics

•   Challenges with Restricted Classes
•   How App Engine Automatically Scales
•   Performance, Performance, Performance
•   Migrating the Persistence Layer
Migrating the Persistence Layer

•   Google App Engineʼs persistence layer is Datastore
•   Datastore is a non-relational database
•   Most enterprise applications use a relational database
•   Non-relational databases donʼt have tables

    SQL Table:                    Datastore (abstract):
Migrating the Persistence Layer

•   Transaction boundary in Datastore is very different
•   Can only perform transaction around entity groups
•   Each entity has a parent entity
•   An entity group is a tree of entities
Migrating the Persistence Layer

•   Existing domain model unlikely to work in Datastore
•   Different storage structure
•   Different transaction model
•   Different tools/framework


               What do we do?
Migrating the Persistence Layer

•   Existing domain model unlikely to work in Datastore
•   Different storage structure
•   Different transaction model
•   Different tools/framework


               What do we do?

              Run Away?
Migrating the Persistence Layer

• Datastore is designed to scale with the App Engine
    cloud
    • Entities are far easier to cache
    • Fetches are small and focused
    • No more fetch group hell
•   The data and transaction model force cleaner domain
    models
    • More flexible than tables
    • Can have different properties on the same “type” of
      entities
    • Focus on smaller transactions
•   Alternatively, use Google Cloud SQL
Letʼs Recap

• Elastic Path is a flexible Java ecommerce platform
• Google App Engine is a true cloud platform that
    supports Java web applications
•   App Engineʼs constraints can be liberating
•   JRE Class restrictions forced one to implement
    workarounds with App Engine services
•   Automatic scalability is achieved with dynamic
    instances
•   App Engine imposes strict performance requirements
    on your apps
•   The Datastore is a non-relational DB that forces one to
    untangle the domain model
Was the Migration Worth It?
Was the Migration Worth It?
 For us, yes!
Was the Migration Worth It? - Yes!

• Automatic scalability
• App Engineʼs restrictions forced us to rethink and
    improve our applicationʼs design
•   Deployments to App Engine are flexible and easy
•   Production environments are easy to replicate for
    testing
•   No more server configuration management
•   Reduced costs
•   Frequent Google App Engine releases continue to
    introduce cool, useful features
Thank you.
Any Questions?


For more information visit:
Web www.elasticpath.com
Blog www.getelastic.com
Twitter @elasticpath
Additional Resources
• Google App Engine homepage: http://code.google.com/appengine/
• Maven plugin for Google App Engine: http://code.google.com/p/maven-gae-plugin/
• Will It Play In App Engine - lists the level of compatibility of various Java technologies and
    App Engine: http://code.google.com/p/googleappengine/wiki/WillItPlayInJava
•   ESXX - Custom HttpClient 4 URLFetch connection manager: http://esxx.blogspot.com/
    2009/06/using-apaches-httpclient-on-google-app.html

Mais conteúdo relacionado

Mais procurados

Ambari Views - Overview
Ambari Views - OverviewAmbari Views - Overview
Ambari Views - OverviewHortonworks
 
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010Arun Gupta
 
Ambari Meetup: Architecture and Demo
Ambari Meetup: Architecture and DemoAmbari Meetup: Architecture and Demo
Ambari Meetup: Architecture and DemoHortonworks
 
Local Testing and Deployment Best Practices for Serverless Applications - AWS...
Local Testing and Deployment Best Practices for Serverless Applications - AWS...Local Testing and Deployment Best Practices for Serverless Applications - AWS...
Local Testing and Deployment Best Practices for Serverless Applications - AWS...Amazon Web Services
 
SFDC Inbound Integrations
SFDC Inbound IntegrationsSFDC Inbound Integrations
SFDC Inbound IntegrationsSujit Kumar
 
Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Michael Henderson
 
AWS: Scaling With Elastic Beanstalk
AWS: Scaling With Elastic BeanstalkAWS: Scaling With Elastic Beanstalk
AWS: Scaling With Elastic BeanstalkKMS Technology
 
Laravel tutorial
Laravel tutorialLaravel tutorial
Laravel tutorialBroker IG
 
Managing your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with AmbariManaging your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with AmbariDataWorks Summit
 
Introduction to Spring
Introduction to SpringIntroduction to Spring
Introduction to SpringSujit Kumar
 
Apache Ambari - What's New in 2.1
Apache Ambari - What's New in 2.1Apache Ambari - What's New in 2.1
Apache Ambari - What's New in 2.1Hortonworks
 
Discover.hdp2.2.ambari.final[1]
Discover.hdp2.2.ambari.final[1]Discover.hdp2.2.ambari.final[1]
Discover.hdp2.2.ambari.final[1]Hortonworks
 

Mais procurados (20)

NLOUG 2018 - Future of JSF and ADF
NLOUG 2018 - Future of JSF and ADFNLOUG 2018 - Future of JSF and ADF
NLOUG 2018 - Future of JSF and ADF
 
Advanced JAVA
Advanced JAVAAdvanced JAVA
Advanced JAVA
 
Ambari Views - Overview
Ambari Views - OverviewAmbari Views - Overview
Ambari Views - Overview
 
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
S313265 - Advanced Java API for RESTful Web Services at JavaOne Brazil 2010
 
An Overview of Ambari
An Overview of AmbariAn Overview of Ambari
An Overview of Ambari
 
Ambari Meetup: Architecture and Demo
Ambari Meetup: Architecture and DemoAmbari Meetup: Architecture and Demo
Ambari Meetup: Architecture and Demo
 
Local Testing and Deployment Best Practices for Serverless Applications - AWS...
Local Testing and Deployment Best Practices for Serverless Applications - AWS...Local Testing and Deployment Best Practices for Serverless Applications - AWS...
Local Testing and Deployment Best Practices for Serverless Applications - AWS...
 
SFDC Inbound Integrations
SFDC Inbound IntegrationsSFDC Inbound Integrations
SFDC Inbound Integrations
 
Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015
 
AWS: Scaling With Elastic Beanstalk
AWS: Scaling With Elastic BeanstalkAWS: Scaling With Elastic Beanstalk
AWS: Scaling With Elastic Beanstalk
 
API Basics
API BasicsAPI Basics
API Basics
 
Laravel tutorial
Laravel tutorialLaravel tutorial
Laravel tutorial
 
AMIS Oracle OpenWorld 2013 Review Part 2 - Platform Middleware Publication
AMIS Oracle OpenWorld 2013 Review Part 2 - Platform Middleware PublicationAMIS Oracle OpenWorld 2013 Review Part 2 - Platform Middleware Publication
AMIS Oracle OpenWorld 2013 Review Part 2 - Platform Middleware Publication
 
Managing your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with AmbariManaging your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with Ambari
 
Introduction to Spring
Introduction to SpringIntroduction to Spring
Introduction to Spring
 
Apache Ambari - What's New in 2.1
Apache Ambari - What's New in 2.1Apache Ambari - What's New in 2.1
Apache Ambari - What's New in 2.1
 
Discover.hdp2.2.ambari.final[1]
Discover.hdp2.2.ambari.final[1]Discover.hdp2.2.ambari.final[1]
Discover.hdp2.2.ambari.final[1]
 
Java1
Java1Java1
Java1
 
Java1
Java1Java1
Java1
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 

Destaque

Deliver Successful Enterprise Ecommerce Projects
Deliver Successful Enterprise Ecommerce ProjectsDeliver Successful Enterprise Ecommerce Projects
Deliver Successful Enterprise Ecommerce ProjectsElastic Path
 
Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014
Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014
Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014Rackspace Academy
 
eCommerce Agility: What Is It and Why Does It Matter?
eCommerce Agility: What Is It and Why Does It Matter?eCommerce Agility: What Is It and Why Does It Matter?
eCommerce Agility: What Is It and Why Does It Matter?Demandware
 
Chris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for Ecommerce
Chris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for EcommerceChris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for Ecommerce
Chris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for EcommerceNexcess.net LLC
 
An eCommerce Cloud Implementation Primer
An eCommerce Cloud Implementation PrimerAn eCommerce Cloud Implementation Primer
An eCommerce Cloud Implementation PrimerEchidna
 
Salesforce Health Cloud – The Changing Face of Healthcare Data
Salesforce Health Cloud – The Changing Face of Healthcare DataSalesforce Health Cloud – The Changing Face of Healthcare Data
Salesforce Health Cloud – The Changing Face of Healthcare DataSuyati Technologies
 
2014 年十大商业智能趋势
2014 年十大商业智能趋势2014 年十大商业智能趋势
2014 年十大商业智能趋势Tableau Software
 
Strata Beijing - Deep Learning in Production on Spark
Strata Beijing - Deep Learning in Production on SparkStrata Beijing - Deep Learning in Production on Spark
Strata Beijing - Deep Learning in Production on SparkAdam Gibson
 
Cloud to push e commerce sales high
Cloud to push e commerce sales highCloud to push e commerce sales high
Cloud to push e commerce sales higheTailing India
 
Tracxn Research — Ecommerce Enablers Landscape, November 2016
Tracxn Research — Ecommerce Enablers Landscape, November 2016Tracxn Research — Ecommerce Enablers Landscape, November 2016
Tracxn Research — Ecommerce Enablers Landscape, November 2016Tracxn
 
電子商務的下一步
電子商務的下一步電子商務的下一步
電子商務的下一步Richard Chang
 
ECX2014 展望2015電商發展
ECX2014 展望2015電商發展ECX2014 展望2015電商發展
ECX2014 展望2015電商發展悠識學院
 
eCommerce Platforms - an introduction
eCommerce Platforms - an introductioneCommerce Platforms - an introduction
eCommerce Platforms - an introductionBen Adams
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017LinkedIn
 

Destaque (19)

Deliver Successful Enterprise Ecommerce Projects
Deliver Successful Enterprise Ecommerce ProjectsDeliver Successful Enterprise Ecommerce Projects
Deliver Successful Enterprise Ecommerce Projects
 
8KMiles Cloud Solutions
8KMiles Cloud Solutions8KMiles Cloud Solutions
8KMiles Cloud Solutions
 
Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014
Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014
Ecommerce and digital workshop / Unlocked: the Hybrid Cloud 12 May 2014
 
eCommerce Agility: What Is It and Why Does It Matter?
eCommerce Agility: What Is It and Why Does It Matter?eCommerce Agility: What Is It and Why Does It Matter?
eCommerce Agility: What Is It and Why Does It Matter?
 
Chris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for Ecommerce
Chris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for EcommerceChris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for Ecommerce
Chris Wells Magento Imagine 2015 Breakout - Leveraging the Cloud for Ecommerce
 
An eCommerce Cloud Implementation Primer
An eCommerce Cloud Implementation PrimerAn eCommerce Cloud Implementation Primer
An eCommerce Cloud Implementation Primer
 
Salesforce Health Cloud – The Changing Face of Healthcare Data
Salesforce Health Cloud – The Changing Face of Healthcare DataSalesforce Health Cloud – The Changing Face of Healthcare Data
Salesforce Health Cloud – The Changing Face of Healthcare Data
 
2014 年十大商业智能趋势
2014 年十大商业智能趋势2014 年十大商业智能趋势
2014 年十大商业智能趋势
 
Strata Beijing - Deep Learning in Production on Spark
Strata Beijing - Deep Learning in Production on SparkStrata Beijing - Deep Learning in Production on Spark
Strata Beijing - Deep Learning in Production on Spark
 
Cloud to push e commerce sales high
Cloud to push e commerce sales highCloud to push e commerce sales high
Cloud to push e commerce sales high
 
Tracxn Research — Ecommerce Enablers Landscape, November 2016
Tracxn Research — Ecommerce Enablers Landscape, November 2016Tracxn Research — Ecommerce Enablers Landscape, November 2016
Tracxn Research — Ecommerce Enablers Landscape, November 2016
 
電子商務的下一步
電子商務的下一步電子商務的下一步
電子商務的下一步
 
IoT in Healthcare
IoT in HealthcareIoT in Healthcare
IoT in Healthcare
 
運用AWS開創與發展事業
運用AWS開創與發展事業運用AWS開創與發展事業
運用AWS開創與發展事業
 
台灣電商新趨勢
台灣電商新趨勢台灣電商新趨勢
台灣電商新趨勢
 
ECX2014 展望2015電商發展
ECX2014 展望2015電商發展ECX2014 展望2015電商發展
ECX2014 展望2015電商發展
 
eCommerce Platforms - an introduction
eCommerce Platforms - an introductioneCommerce Platforms - an introduction
eCommerce Platforms - an introduction
 
Future of Retail #FutureOf
Future of Retail #FutureOfFuture of Retail #FutureOf
Future of Retail #FutureOf
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017
 

Semelhante a Moving complex enterprise ecommerce systems to the cloud

Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples Yochay Kiriaty
 
Simple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailSimple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailAmazon Web Services
 
Simple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike ColemanSimple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike ColemanAmazon Web Services
 
Simple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailSimple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailAmazon Web Services
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用Amazon Web Services
 
Tech Talk on Cloud Computing
Tech Talk on Cloud ComputingTech Talk on Cloud Computing
Tech Talk on Cloud ComputingITviec
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceCloudBees
 
Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012Dimitri de Putte
 
Getting Started with PaaS
Getting Started with PaaSGetting Started with PaaS
Getting Started with PaaSCloudBees
 
Performance Testing
Performance TestingPerformance Testing
Performance TestingAnu Shaji
 
Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011Opevel
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013aspyker
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...Craeg Strong
 
Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09Chris Bunch
 
Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Amazon Web Services
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 

Semelhante a Moving complex enterprise ecommerce systems to the cloud (20)

Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
 
Simple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailSimple Cloud with Amazon Lightsail
Simple Cloud with Amazon Lightsail
 
Simple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike ColemanSimple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike Coleman
 
Simple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailSimple Cloud with Amazon Lightsail
Simple Cloud with Amazon Lightsail
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
 
Google App engine
Google App engineGoogle App engine
Google App engine
 
Tech Talk on Cloud Computing
Tech Talk on Cloud ComputingTech Talk on Cloud Computing
Tech Talk on Cloud Computing
 
Managing Your Cloud Assets
Managing Your Cloud AssetsManaging Your Cloud Assets
Managing Your Cloud Assets
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-Service
 
Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012
 
Getting Started with PaaS
Getting Started with PaaSGetting Started with PaaS
Getting Started with PaaS
 
Performance Testing
Performance TestingPerformance Testing
Performance Testing
 
Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
 
Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09Appscale at CLOUDCOMP '09
Appscale at CLOUDCOMP '09
 
Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
 

Mais de Elastic Path

Evolve 2014 integrating complex systems for experience driven commerce
Evolve 2014   integrating complex systems for experience driven commerceEvolve 2014   integrating complex systems for experience driven commerce
Evolve 2014 integrating complex systems for experience driven commerceElastic Path
 
Evolve 2014 experience driven commerce
Evolve 2014 experience driven commerceEvolve 2014 experience driven commerce
Evolve 2014 experience driven commerceElastic Path
 
Commerce + content perfected
Commerce + content perfectedCommerce + content perfected
Commerce + content perfectedElastic Path
 
Digital Commerce Engine 6.5
Digital Commerce Engine 6.5Digital Commerce Engine 6.5
Digital Commerce Engine 6.5Elastic Path
 
REST Fest 2012: HATEOAS Your Cake and Eat It Too
 REST Fest 2012: HATEOAS Your Cake and Eat It Too REST Fest 2012: HATEOAS Your Cake and Eat It Too
REST Fest 2012: HATEOAS Your Cake and Eat It TooElastic Path
 
Cashing in on the Smartphone Gaming Boom
Cashing in on the Smartphone Gaming BoomCashing in on the Smartphone Gaming Boom
Cashing in on the Smartphone Gaming BoomElastic Path
 
Business Challenges Solved by APIs: What Every Executive Should Know
Business Challenges Solved by APIs: What Every Executive Should KnowBusiness Challenges Solved by APIs: What Every Executive Should Know
Business Challenges Solved by APIs: What Every Executive Should KnowElastic Path
 
Keeping customers reducing churn through support and upgrade optimization
Keeping customers reducing churn through support and upgrade optimization Keeping customers reducing churn through support and upgrade optimization
Keeping customers reducing churn through support and upgrade optimization Elastic Path
 
Optimizing the customer journey for the complex sale
Optimizing the customer journey for the complex saleOptimizing the customer journey for the complex sale
Optimizing the customer journey for the complex saleElastic Path
 
Maximizing conversion with checkout optimization
Maximizing conversion with checkout optimizationMaximizing conversion with checkout optimization
Maximizing conversion with checkout optimizationElastic Path
 
The Future of Ecommerce - Web 2.0
The Future of Ecommerce - Web 2.0The Future of Ecommerce - Web 2.0
The Future of Ecommerce - Web 2.0Elastic Path
 
Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011
Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011
Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011Elastic Path
 
Ecommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the AppsEcommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the AppsElastic Path
 
Virtual Goods Mean REAL Money This Holiday
Virtual Goods Mean REAL Money This HolidayVirtual Goods Mean REAL Money This Holiday
Virtual Goods Mean REAL Money This HolidayElastic Path
 
Elastic path-ecommerce-replatforming-mistakes
Elastic path-ecommerce-replatforming-mistakesElastic path-ecommerce-replatforming-mistakes
Elastic path-ecommerce-replatforming-mistakesElastic Path
 
The State of PC Gaming: The Shift from Packaged Goods to Digital Distribution
The State of PC Gaming: The Shift from Packaged Goods to Digital DistributionThe State of PC Gaming: The Shift from Packaged Goods to Digital Distribution
The State of PC Gaming: The Shift from Packaged Goods to Digital DistributionElastic Path
 
The Future of Newspapers and Magazines in the Digital Era
The Future of Newspapers and Magazines in the Digital EraThe Future of Newspapers and Magazines in the Digital Era
The Future of Newspapers and Magazines in the Digital EraElastic Path
 
Consumer Software Buying Trends - Elastic Path Software Research Report
Consumer Software Buying Trends - Elastic Path Software Research ReportConsumer Software Buying Trends - Elastic Path Software Research Report
Consumer Software Buying Trends - Elastic Path Software Research ReportElastic Path
 
Taking Your Site Performance to the Next Level with Optimization Testing
Taking Your Site Performance to the Next Level with Optimization TestingTaking Your Site Performance to the Next Level with Optimization Testing
Taking Your Site Performance to the Next Level with Optimization TestingElastic Path
 
Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?
Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?
Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?Elastic Path
 

Mais de Elastic Path (20)

Evolve 2014 integrating complex systems for experience driven commerce
Evolve 2014   integrating complex systems for experience driven commerceEvolve 2014   integrating complex systems for experience driven commerce
Evolve 2014 integrating complex systems for experience driven commerce
 
Evolve 2014 experience driven commerce
Evolve 2014 experience driven commerceEvolve 2014 experience driven commerce
Evolve 2014 experience driven commerce
 
Commerce + content perfected
Commerce + content perfectedCommerce + content perfected
Commerce + content perfected
 
Digital Commerce Engine 6.5
Digital Commerce Engine 6.5Digital Commerce Engine 6.5
Digital Commerce Engine 6.5
 
REST Fest 2012: HATEOAS Your Cake and Eat It Too
 REST Fest 2012: HATEOAS Your Cake and Eat It Too REST Fest 2012: HATEOAS Your Cake and Eat It Too
REST Fest 2012: HATEOAS Your Cake and Eat It Too
 
Cashing in on the Smartphone Gaming Boom
Cashing in on the Smartphone Gaming BoomCashing in on the Smartphone Gaming Boom
Cashing in on the Smartphone Gaming Boom
 
Business Challenges Solved by APIs: What Every Executive Should Know
Business Challenges Solved by APIs: What Every Executive Should KnowBusiness Challenges Solved by APIs: What Every Executive Should Know
Business Challenges Solved by APIs: What Every Executive Should Know
 
Keeping customers reducing churn through support and upgrade optimization
Keeping customers reducing churn through support and upgrade optimization Keeping customers reducing churn through support and upgrade optimization
Keeping customers reducing churn through support and upgrade optimization
 
Optimizing the customer journey for the complex sale
Optimizing the customer journey for the complex saleOptimizing the customer journey for the complex sale
Optimizing the customer journey for the complex sale
 
Maximizing conversion with checkout optimization
Maximizing conversion with checkout optimizationMaximizing conversion with checkout optimization
Maximizing conversion with checkout optimization
 
The Future of Ecommerce - Web 2.0
The Future of Ecommerce - Web 2.0The Future of Ecommerce - Web 2.0
The Future of Ecommerce - Web 2.0
 
Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011
Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011
Digital "Elastic" Commerce - Right Here, Right Now - Jump Conference 2011
 
Ecommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the AppsEcommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the Apps
 
Virtual Goods Mean REAL Money This Holiday
Virtual Goods Mean REAL Money This HolidayVirtual Goods Mean REAL Money This Holiday
Virtual Goods Mean REAL Money This Holiday
 
Elastic path-ecommerce-replatforming-mistakes
Elastic path-ecommerce-replatforming-mistakesElastic path-ecommerce-replatforming-mistakes
Elastic path-ecommerce-replatforming-mistakes
 
The State of PC Gaming: The Shift from Packaged Goods to Digital Distribution
The State of PC Gaming: The Shift from Packaged Goods to Digital DistributionThe State of PC Gaming: The Shift from Packaged Goods to Digital Distribution
The State of PC Gaming: The Shift from Packaged Goods to Digital Distribution
 
The Future of Newspapers and Magazines in the Digital Era
The Future of Newspapers and Magazines in the Digital EraThe Future of Newspapers and Magazines in the Digital Era
The Future of Newspapers and Magazines in the Digital Era
 
Consumer Software Buying Trends - Elastic Path Software Research Report
Consumer Software Buying Trends - Elastic Path Software Research ReportConsumer Software Buying Trends - Elastic Path Software Research Report
Consumer Software Buying Trends - Elastic Path Software Research Report
 
Taking Your Site Performance to the Next Level with Optimization Testing
Taking Your Site Performance to the Next Level with Optimization TestingTaking Your Site Performance to the Next Level with Optimization Testing
Taking Your Site Performance to the Next Level with Optimization Testing
 
Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?
Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?
Multichannel 2.0: Are You Ready for the Next Generation of Commerce Channels?
 

Último

Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Último (20)

Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Moving complex enterprise ecommerce systems to the cloud

  • 1. Moving Complex Enterprise Ecommerce Systems to the Cloud Eddie Chan Ronald Chen Elastic Path™
  • 2.
  • 3. Elastic Path Software • We help the worldʼs biggest brands sell digital goods and services • We provide a flexible Java ecommerce platform and expertise in ecommerce strategy and implementation • #1 ecommerce blog: www.getelastic.com • For more on-demand ecommerce resources: www.elasticpath.com/resources
  • 4. The Elastic Path Platform Elastic Path Architecture Components Eclipse RCP SWT / JFace Financials ERP CMS Payment Legacy Custom / Web Browser Mobile Browser Commerce Manager Client System System Gateway Systems LOB Apps Store Front Server Commerce Manager Web Services Server XML Import/Export Spring Security Spring Security Spring Security Core Engine Apache Velocity Spring Remoting JAX-WS Spring MVC Quartz Scheduling Core Engine Data Sync Tool Drools Core Engine Core Engine Core Engine ETL Tools Search Server SOLR Search Server Quartz Scheduling Core Engine J2EE Application Server Database Server Ecommerce is complex. Enterprise ecommerce is complex-er.
  • 5. Case Study • Since 2008, Elastic Path has been the ecommerce backbone of a few of Googleʼs online stores • For these stores, many customizations have been made to the Elastic Path platform. • One of the largest customizations thatʼs been made to the Elastic Path platform is migrating it to run on Google App Engine.
  • 6. Migration to Google App Engine Before: After: • EP running in the Colo • EP running on App Engine • Fixed Cluster • Dynamic instances
  • 7. Google App Engine • Same system that powers many of Googleʼs own apps • GAE is a Platform as a Service (PaaS) • More restrictive than Infrastructure as a Service (IaaS) offerings (but for good reasons) • Supports Python, Go, and Java (& other JVM languages) • Free to get started; pay as you go pricing
  • 8. Advantages of Google App Engine • Automatic Scalability • Well defined development environment • Secure • Easier deployments and operations • Reduced Cost • Built-in monitoring tools • Useful services
  • 9. Topics • Challenges with Restricted Classes • How App Engine Automatically Scales • Performance, Performance, Performance • Migrating the Persistence Layer
  • 10. Topics • Challenges with Restricted Classes • How App Engine Automatically Scales • Performance, Performance, Performance • Migrating the Persistence Layer
  • 11. Challenges with Restricted Classes • App Engineʼs JRE Class White List: These JRE Classes work on App Engine. All other JRE Classes do not. The full list of white list classes can be found at: http://code.google.com/appengine/docs/java/jrewhitelist.html
  • 12. File Restrictions • Not allowed: • Reading/writing to the filesystem (this should not be done anyway) • Writing to files inside the WAR • Allowed: • Reading from files inside the WAR
  • 13. Example: File Restrictions • Problem: we were reading/writing to the filesystem • Solution: we moved the read-only files into the WAR and moved the read/write data to the Datastore Before: After:
  • 14. Socket Restrictions • App Engine does not allow the use of raw sockets • Reason: security considerations • Workarounds may exist depending on the nature of the communication • e.g. HTTP sockets & App Engine URL Fetch Service
  • 15. Example: Socket Restrictions • Problem: We used HttpClient, which uses sockets, for Spring HTTP Remoting • Solution: There is a custom connection manager for HttpClient 4 that uses App Engine URL Fetch Service instead of sockets Before: After:
  • 16. Thread Restrictions • App Engine does not allow spawning of threads • Use Task Queues instead of threads for background jobs • Task Queues: • Like a Java Executor • Highly configurable • Accepts URLs instead of Runnables • Code that would have been in Runnable is bound to a URL • Fetching the URL is like running the task on another thread
  • 17. Example: Thread Restrictions • Problem: Generating a file on a background thread • Solution: Migrate Runnable to Spring Controller and schedule with App Engine Task Queues instead of Executor Before: After:
  • 18. Topics • Challenges with Restricted Classes • How App Engine Automatically Scales • Performance, Performance, Performance • Migrating the Persistence Layer
  • 19. How App Engine Automatically Scales “App Engine apps are powered by any number of dynamic instances at any given time, depending on the volume of requests received by your application. As requests for your application increase, so do the number of dynamic instances powering it.” http://code.google.com/appengine/docs/adminconsole/instances.html Requests Instances Requests Instances
  • 20. How App Engine Automatically Scales • A single instance handling requests • This instance, like all instances, has a request queue to hold incoming requests
  • 21. How App Engine Automatically Scales • A new request comes in • Instance-1ʼs request queue is getting overloaded, so...
  • 22. How App Engine Automatically Scales • App Engine spawns a new instance to handle request-5 • request-5 is a loading request; request-5 must wait for instance-2 to fully initialize before being processed
  • 23. How App Engine Automatically Scales • instance-2 finally finishes initializing and can now handle requests alongside instance-1
  • 24. How App Engine Automatically Scales Loading requests make users wait! Introducing warm-up requests: • Introduced in Google App Engine v1.4.0 • Initialize instances ahead of time so that live requests do not initiate new instances • On by default • Not always called for every new instance (e.g. the very 1st instance)
  • 25. How App Engine Automatically Scales Letʼs replay the previous scenario with warm-up requests. • A single instance handling requests • App Engine sees that instance-1ʼs request queue is getting overloaded, so...
  • 26. How App Engine Automatically Scales • Before any more requests arrive, App Engine sends a warm-up request to initialize a new instance
  • 27. How App Engine Automatically Scales • instance-2 finishes initializing and is ready to handle requests alongside instance-1
  • 28. How App Engine Automatically Scales • A new requests comes in • instance-2 is ready to handle request-5 right away • request-5 is not a loading request this time
  • 29. How App Engine Automatically Scales Fast-forward a few seconds. request-1, 2, and 5 have been processed. • instance-2 is idle and instance-1ʼs queue is not full, so...
  • 30. How App Engine Automatically Scales • App Engine scales down and drops instance-2 because it is no longer needed
  • 31. How App Engine Automatically Scales Introducing Always-On Instances: • Always-On instances remain running even with no traffic • Minimizes impact of loading requests • A premium feature (i.e. costs a bit more)
  • 32. Topics • Challenges with Restricted Classes • How App Engine Automatically Scales • Performance, Performance, Performance • Migrating the Persistence Layer
  • 33. Performance Tools - AppStats • AppStats • A servlet filter that measures the performance of each request
  • 34. Performance - Loading Deadline • Recall that any request has the potential to be a loading request
  • 35. Performance - Request Deadline • Still need to handle actual request in the remaining time after loading application • After 60 seconds, a runtime exception will be thrown and the requests will be dropped
  • 36. Performance - Optimizing • Loading Request time = Start-Up time + Request time • To thrive on App Engine, request performance and start- up performance must be optimized together Optimize Requests Optimize Start-Up
  • 37. Performance - Optimizing Start-Up How do you optimize start-up times?
  • 38. Performance - Optimizing Start-Up How do you optimize start-up times? Do Less
  • 39. Performance - Optimizing Start-Up Do less at start-up: • In our application half the start up time was being consumed with classloading • Amount of classloading is application/framework specific • We were loading more classes than expected • Use -verbose:class • Classpath scanning is slow • Use static configuration instead of classpath scanning • Generate configuration at build
  • 40. Performance - Optimizing Page Loads • Serve resources from the WAR statically Before: After:
  • 41. Performance - Optimizing Page Loads • App Engine provides memcache service • Cache is shared across instances • Best effort cache • In our application we gained performance by caching Spring Remote calls
  • 42. Topics • Challenges with Restricted Classes • How App Engine Automatically Scales • Performance, Performance, Performance • Migrating the Persistence Layer
  • 43. Migrating the Persistence Layer • Google App Engineʼs persistence layer is Datastore • Datastore is a non-relational database • Most enterprise applications use a relational database • Non-relational databases donʼt have tables SQL Table: Datastore (abstract):
  • 44. Migrating the Persistence Layer • Transaction boundary in Datastore is very different • Can only perform transaction around entity groups • Each entity has a parent entity • An entity group is a tree of entities
  • 45. Migrating the Persistence Layer • Existing domain model unlikely to work in Datastore • Different storage structure • Different transaction model • Different tools/framework What do we do?
  • 46. Migrating the Persistence Layer • Existing domain model unlikely to work in Datastore • Different storage structure • Different transaction model • Different tools/framework What do we do? Run Away?
  • 47. Migrating the Persistence Layer • Datastore is designed to scale with the App Engine cloud • Entities are far easier to cache • Fetches are small and focused • No more fetch group hell • The data and transaction model force cleaner domain models • More flexible than tables • Can have different properties on the same “type” of entities • Focus on smaller transactions • Alternatively, use Google Cloud SQL
  • 48. Letʼs Recap • Elastic Path is a flexible Java ecommerce platform • Google App Engine is a true cloud platform that supports Java web applications • App Engineʼs constraints can be liberating • JRE Class restrictions forced one to implement workarounds with App Engine services • Automatic scalability is achieved with dynamic instances • App Engine imposes strict performance requirements on your apps • The Datastore is a non-relational DB that forces one to untangle the domain model
  • 49. Was the Migration Worth It?
  • 50. Was the Migration Worth It? For us, yes!
  • 51. Was the Migration Worth It? - Yes! • Automatic scalability • App Engineʼs restrictions forced us to rethink and improve our applicationʼs design • Deployments to App Engine are flexible and easy • Production environments are easy to replicate for testing • No more server configuration management • Reduced costs • Frequent Google App Engine releases continue to introduce cool, useful features
  • 52. Thank you. Any Questions? For more information visit: Web www.elasticpath.com Blog www.getelastic.com Twitter @elasticpath
  • 53. Additional Resources • Google App Engine homepage: http://code.google.com/appengine/ • Maven plugin for Google App Engine: http://code.google.com/p/maven-gae-plugin/ • Will It Play In App Engine - lists the level of compatibility of various Java technologies and App Engine: http://code.google.com/p/googleappengine/wiki/WillItPlayInJava • ESXX - Custom HttpClient 4 URLFetch connection manager: http://esxx.blogspot.com/ 2009/06/using-apaches-httpclient-on-google-app.html