SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Building Scalable Applications
    for the Modern Cloud

      Presentation @ VCCF 2012 Tech Labs

                 Fotis Stamatelopoulos
     (http://www.linkedin.com/in/fstamatelopoulos)

                   Christos Stathis
         (http://www.linkedin.com/in/chstath)
About this presentation
● This is not a live demo presentation

● It does not present a cloud product

● It focuses instead on
  ○ designing software specifically for the modern cloud
  ○ building scalable applications

● Discusses actual case study implementations
Intro: Typical Cloud models




       image source: http://blog.nexright.com/?p=1
Why/when deploy to the Cloud?
● Financial reasons: pay only what you use
● Scalability: fast & easy addition of resources
● Elasticity: adapt to traffic
● Ideal for SaaS offerings

Rule of thumb:
If your traffic/load is constant
then build your data center instead
Designing SW for the Cloud
● The IaaS environment
  ○   monolithic architectures are not an option
  ○   design to scale-up / down
  ○   monitor everything! have alerts
  ○   handle latency and replication delays


● The PaaS environment
  ○   the cloud handles scaling
  ○   coding / lib limitations
  ○   modular design
  ○   service oriented approach
Designing SW for the Cloud
Examples:
  ● break down your app in multiple server components
     hosted in multiple VMs

  ● use scalable back-ends: your own DB/NoSQL cluster
     or services like GAE datastore, AWS SimpleDB

  ● handle PaaS limitations like:
      ○   maximum request process time
      ○   limitations in Java / Python lib support (GAE)
      ○   no filesystem I/O
      ○   limitations of high availability, distributed services like AWS SQS
Actual Example Case Studies
Case Study 1:
GSS / MyNetworkFolders
● SaaS offering implemented by EBS.gr
● A distributed, scalable file storage platform:
  ○ supporting access via multiple interfaces (web
      browser, mobile devices, desktop, WebDAV)
  ○   provides a RESTful API
  ○   based on our FOSS project gss-project.org (used by
      GRNET Pithos and the Univ of Zagreb)

● It was designed from scratch as a scalable
  cloud application
Design Decisions
● Clustering without session replication
● Stateless, RESTful design
   ○ easier to scale up
   ○ allows building of multiple clients

● No HTTP session / no sticky session
● Multiple levels of caching (client, front-end,
  second-level, etc)
● Use polyglot storage
GSS architecture
Deployment to Amazon AWS

                                    Components hosted in
                                    AWS EC2 instances (VMs)




                                    AWS S3 handles files
                                    (replicated and highly
                                    available storage - PaaS)




                                     EBS volumes backed-up to
                                     S3 used for persistent VM
                                     storage




 will move to a distributed NoSQL
 (mongoDB, PaaS AWS service)
Findings
● Administration effort is minimal
● S3 rules! as a reliable file storage back-end
● With an IaaS providers like AWS you can
  achieve real elasticity
● Availability and stability of services &
  resources is excellent, but you still need:
   ○ Monitoring & alerts is a must
   ○ Have a consistent backup plan
● Fine tuning and good design will save you $$
Case Study 2: EUDOXUS
● Stakeholder: Hellenic Ministry of Education
● Developed, operated and supported by
  GRNET http://grnet.gr/
● A distributed system that supports and
  streamlines processes and operations related
  to the textbooks distribution for the higher
  education institutions of Greece
● Handles ~ 300K named users per semester
                                      http://eudoxus.gr
Design Goals - Challenges
● Multiple APIs and integration with other ISs
● Tight schedule, fixed milestones - deadlines
  ○ Incrementally release modules in production

● Not finalized requirements
  ○ Be flexible, handle changing requirements

● High availability
  ○ Redundant architecture
  ○ Live application updates – no downtime

● Handle fluctuating load & traffic
Design decisions
● Rich Web-based clients (UIs)
  ○ State is handled by the rich clients

● Support various APIs
  ○ RESTFul APIs (JSON / XML payload)
  ○ use SOAP-based web services specific cases

● Back-end storage: RDBMS vs noSQL
  decision
  ○ noSQL offer better scalability than typical RDBMs
  ○ needed at least a minimal transactional core
  ○ dropped the initial hybrid approach - full RDBMS
    design
Design decisions (cont'd)
● Use caching as much as possible, at multiple
  levels to off-load the back-end storage
● Authentication / Credentials
  ○ Stateless mechanism - killed user / http sessions
  ○ Support both
    ■ Shibboleth-based authentication for students
       (identity federation)
    ■ form based login for other user classes
High level functional architecture
Technical architecture
The worker (AS) cluster
The data store
● Single RDBMS (postgresql) instance with
  fallback
● “Plan B” alternatives
  ○ Cold replicas for reports
  ○ Sharding / hot replication (one writer / multiple
    readers)
  ○ Moving parts of the data to NoSQL or even use Solr
    as a NoSQL data store

● Currently handling the load without
  sweating
Findings
● If your user space has an upper bound, you
  can make it with an RDBMS

● Stateless is the way to go

● Use caching at multiple levels and save on
  resources
Questions

Mais conteúdo relacionado

Mais procurados

Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017
Ioannis Papapanagiotou
 
Semantic DESCription as a Service
Semantic DESCription as a ServiceSemantic DESCription as a Service
Semantic DESCription as a Service
uji_geotec
 

Mais procurados (20)

hbaseconasia2019 Bridging the Gap between Big Data System Software Stack and ...
hbaseconasia2019 Bridging the Gap between Big Data System Software Stack and ...hbaseconasia2019 Bridging the Gap between Big Data System Software Stack and ...
hbaseconasia2019 Bridging the Gap between Big Data System Software Stack and ...
 
State of the Container Ecosystem
State of the Container EcosystemState of the Container Ecosystem
State of the Container Ecosystem
 
Big data and polyglot solutions
Big data and polyglot solutionsBig data and polyglot solutions
Big data and polyglot solutions
 
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Stud...
 
OpenNebulaConf2017EU: Providing cloud and Managed Hosting Environment by Mich...
OpenNebulaConf2017EU: Providing cloud and Managed Hosting Environment by Mich...OpenNebulaConf2017EU: Providing cloud and Managed Hosting Environment by Mich...
OpenNebulaConf2017EU: Providing cloud and Managed Hosting Environment by Mich...
 
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
 
Doing E-commerce Right – Magento on DigitalOcean
Doing E-commerce Right – Magento on DigitalOceanDoing E-commerce Right – Magento on DigitalOcean
Doing E-commerce Right – Magento on DigitalOcean
 
Alluxio: The missing piece of on-demand clusters at Alluxio Meetup 2016
Alluxio: The missing piece of on-demand clusters at Alluxio Meetup 2016Alluxio: The missing piece of on-demand clusters at Alluxio Meetup 2016
Alluxio: The missing piece of on-demand clusters at Alluxio Meetup 2016
 
Approaches for duplicating Kubernetes Storage with Gluster
Approaches for duplicating Kubernetes Storage with GlusterApproaches for duplicating Kubernetes Storage with Gluster
Approaches for duplicating Kubernetes Storage with Gluster
 
Visualise Your Cloud Data Strategy: MongoDB Atlas and Charts (Sponsored by Mo...
Visualise Your Cloud Data Strategy: MongoDB Atlas and Charts (Sponsored by Mo...Visualise Your Cloud Data Strategy: MongoDB Atlas and Charts (Sponsored by Mo...
Visualise Your Cloud Data Strategy: MongoDB Atlas and Charts (Sponsored by Mo...
 
OpenNebula and StorPool: Building Powerful Clouds
OpenNebula and StorPool: Building Powerful CloudsOpenNebula and StorPool: Building Powerful Clouds
OpenNebula and StorPool: Building Powerful Clouds
 
Alluxio: Unify Data at Memory Speed; 2016-11-18
Alluxio: Unify Data at Memory Speed; 2016-11-18Alluxio: Unify Data at Memory Speed; 2016-11-18
Alluxio: Unify Data at Memory Speed; 2016-11-18
 
Multi-model databases and node.js
Multi-model databases and node.jsMulti-model databases and node.js
Multi-model databases and node.js
 
Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017
 
OpenNebulaConf2017EU: Hyper converged infrastructure with OpenNebula and Ceph...
OpenNebulaConf2017EU: Hyper converged infrastructure with OpenNebula and Ceph...OpenNebulaConf2017EU: Hyper converged infrastructure with OpenNebula and Ceph...
OpenNebulaConf2017EU: Hyper converged infrastructure with OpenNebula and Ceph...
 
OpenNebulaConf2017EU: Elastic Clusters for Data Analysis by Carlos de Alfonso...
OpenNebulaConf2017EU: Elastic Clusters for Data Analysis by Carlos de Alfonso...OpenNebulaConf2017EU: Elastic Clusters for Data Analysis by Carlos de Alfonso...
OpenNebulaConf2017EU: Elastic Clusters for Data Analysis by Carlos de Alfonso...
 
Semantic DESCription as a Service
Semantic DESCription as a ServiceSemantic DESCription as a Service
Semantic DESCription as a Service
 
Spark Summit EU talk by Jiri Simsa
Spark Summit EU talk by Jiri SimsaSpark Summit EU talk by Jiri Simsa
Spark Summit EU talk by Jiri Simsa
 
Designing for operability and managability
Designing for operability and managabilityDesigning for operability and managability
Designing for operability and managability
 
Alluxio data orchestration for machine learning
Alluxio data orchestration for machine learningAlluxio data orchestration for machine learning
Alluxio data orchestration for machine learning
 

Semelhante a Building Scalable Cloud Applications - Presentation at VCCF 2012

CloudCamp Athens presentation: Introduction to cloud computing
CloudCamp Athens presentation: Introduction to cloud computingCloudCamp Athens presentation: Introduction to cloud computing
CloudCamp Athens presentation: Introduction to cloud computing
Fotis Stamatelopoulos
 
2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices
Jason Varghese
 

Semelhante a Building Scalable Cloud Applications - Presentation at VCCF 2012 (20)

AWS UG Greece meetup #1
AWS UG Greece meetup #1AWS UG Greece meetup #1
AWS UG Greece meetup #1
 
CloudCamp Athens presentation: Introduction to cloud computing
CloudCamp Athens presentation: Introduction to cloud computingCloudCamp Athens presentation: Introduction to cloud computing
CloudCamp Athens presentation: Introduction to cloud computing
 
Cloud Architecture best practices
Cloud Architecture best practicesCloud Architecture best practices
Cloud Architecture best practices
 
OSDC 2015: John Spray | The Ceph Storage System
OSDC 2015: John Spray | The Ceph Storage SystemOSDC 2015: John Spray | The Ceph Storage System
OSDC 2015: John Spray | The Ceph Storage System
 
Red Hat Storage Roadmap
Red Hat Storage RoadmapRed Hat Storage Roadmap
Red Hat Storage Roadmap
 
Red Hat Storage Roadmap
Red Hat Storage RoadmapRed Hat Storage Roadmap
Red Hat Storage Roadmap
 
Building EUDOXUS with FOSS
Building EUDOXUS with FOSSBuilding EUDOXUS with FOSS
Building EUDOXUS with FOSS
 
Public Cloud Workshop
Public Cloud WorkshopPublic Cloud Workshop
Public Cloud Workshop
 
2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices
 
Barcamp Macau 2014 - Introduction to AWS
Barcamp Macau 2014 - Introduction to AWSBarcamp Macau 2014 - Introduction to AWS
Barcamp Macau 2014 - Introduction to AWS
 
Cloud-based Energy Efficient Software
Cloud-based Energy Efficient SoftwareCloud-based Energy Efficient Software
Cloud-based Energy Efficient Software
 
Ghost Environment
Ghost EnvironmentGhost Environment
Ghost Environment
 
Clash of Technologies Google Cloud vs Microsoft Azure
Clash of Technologies Google Cloud vs Microsoft AzureClash of Technologies Google Cloud vs Microsoft Azure
Clash of Technologies Google Cloud vs Microsoft Azure
 
[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments
 
Redis Conf 2019--Container Attached Storage for Redis
Redis Conf 2019--Container Attached Storage for RedisRedis Conf 2019--Container Attached Storage for Redis
Redis Conf 2019--Container Attached Storage for Redis
 
Azure Data Storage
Azure Data StorageAzure Data Storage
Azure Data Storage
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
 
Microsoft Azure
Microsoft AzureMicrosoft Azure
Microsoft Azure
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
 
Introduction to AWS
Introduction to AWSIntroduction to AWS
Introduction to AWS
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Building Scalable Cloud Applications - Presentation at VCCF 2012

  • 1. Building Scalable Applications for the Modern Cloud Presentation @ VCCF 2012 Tech Labs Fotis Stamatelopoulos (http://www.linkedin.com/in/fstamatelopoulos) Christos Stathis (http://www.linkedin.com/in/chstath)
  • 2. About this presentation ● This is not a live demo presentation ● It does not present a cloud product ● It focuses instead on ○ designing software specifically for the modern cloud ○ building scalable applications ● Discusses actual case study implementations
  • 3. Intro: Typical Cloud models image source: http://blog.nexright.com/?p=1
  • 4. Why/when deploy to the Cloud? ● Financial reasons: pay only what you use ● Scalability: fast & easy addition of resources ● Elasticity: adapt to traffic ● Ideal for SaaS offerings Rule of thumb: If your traffic/load is constant then build your data center instead
  • 5. Designing SW for the Cloud ● The IaaS environment ○ monolithic architectures are not an option ○ design to scale-up / down ○ monitor everything! have alerts ○ handle latency and replication delays ● The PaaS environment ○ the cloud handles scaling ○ coding / lib limitations ○ modular design ○ service oriented approach
  • 6. Designing SW for the Cloud Examples: ● break down your app in multiple server components hosted in multiple VMs ● use scalable back-ends: your own DB/NoSQL cluster or services like GAE datastore, AWS SimpleDB ● handle PaaS limitations like: ○ maximum request process time ○ limitations in Java / Python lib support (GAE) ○ no filesystem I/O ○ limitations of high availability, distributed services like AWS SQS
  • 8. Case Study 1: GSS / MyNetworkFolders ● SaaS offering implemented by EBS.gr ● A distributed, scalable file storage platform: ○ supporting access via multiple interfaces (web browser, mobile devices, desktop, WebDAV) ○ provides a RESTful API ○ based on our FOSS project gss-project.org (used by GRNET Pithos and the Univ of Zagreb) ● It was designed from scratch as a scalable cloud application
  • 9.
  • 10.
  • 11. Design Decisions ● Clustering without session replication ● Stateless, RESTful design ○ easier to scale up ○ allows building of multiple clients ● No HTTP session / no sticky session ● Multiple levels of caching (client, front-end, second-level, etc) ● Use polyglot storage
  • 13. Deployment to Amazon AWS Components hosted in AWS EC2 instances (VMs) AWS S3 handles files (replicated and highly available storage - PaaS) EBS volumes backed-up to S3 used for persistent VM storage will move to a distributed NoSQL (mongoDB, PaaS AWS service)
  • 14. Findings ● Administration effort is minimal ● S3 rules! as a reliable file storage back-end ● With an IaaS providers like AWS you can achieve real elasticity ● Availability and stability of services & resources is excellent, but you still need: ○ Monitoring & alerts is a must ○ Have a consistent backup plan ● Fine tuning and good design will save you $$
  • 15. Case Study 2: EUDOXUS ● Stakeholder: Hellenic Ministry of Education ● Developed, operated and supported by GRNET http://grnet.gr/ ● A distributed system that supports and streamlines processes and operations related to the textbooks distribution for the higher education institutions of Greece ● Handles ~ 300K named users per semester http://eudoxus.gr
  • 16. Design Goals - Challenges ● Multiple APIs and integration with other ISs ● Tight schedule, fixed milestones - deadlines ○ Incrementally release modules in production ● Not finalized requirements ○ Be flexible, handle changing requirements ● High availability ○ Redundant architecture ○ Live application updates – no downtime ● Handle fluctuating load & traffic
  • 17. Design decisions ● Rich Web-based clients (UIs) ○ State is handled by the rich clients ● Support various APIs ○ RESTFul APIs (JSON / XML payload) ○ use SOAP-based web services specific cases ● Back-end storage: RDBMS vs noSQL decision ○ noSQL offer better scalability than typical RDBMs ○ needed at least a minimal transactional core ○ dropped the initial hybrid approach - full RDBMS design
  • 18. Design decisions (cont'd) ● Use caching as much as possible, at multiple levels to off-load the back-end storage ● Authentication / Credentials ○ Stateless mechanism - killed user / http sessions ○ Support both ■ Shibboleth-based authentication for students (identity federation) ■ form based login for other user classes
  • 19. High level functional architecture
  • 21. The worker (AS) cluster
  • 22. The data store ● Single RDBMS (postgresql) instance with fallback ● “Plan B” alternatives ○ Cold replicas for reports ○ Sharding / hot replication (one writer / multiple readers) ○ Moving parts of the data to NoSQL or even use Solr as a NoSQL data store ● Currently handling the load without sweating
  • 23. Findings ● If your user space has an upper bound, you can make it with an RDBMS ● Stateless is the way to go ● Use caching at multiple levels and save on resources