SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Apereo OAE
Architectural Overview, San Diego 2013
Wednesday, 12 June 13
http://oae.oaeproject.org
Wednesday, 12 June 13
Topics
1. Project Goals
2. Hilary System Architecture
3. Performance Testing
4. Deployment and Automation
5. UI Architecture
6. Customization and Configuration
7. Questions?
Wednesday, 12 June 13
Project goals
• Multi-tenant platform
• Cloud-ready
• SaaS
• Used at large scale
Wednesday, 12 June 13
Project goals
• Maintainable
• Extendable
• Integrate-able
Wednesday, 12 June 13
Solid foundation
Modern, not exotic
Wednesday, 12 June 13
Multi-tenancy
• Market is heading
• Support multiple institutions at same time
• Multi-tenancy+
• Easily created, maintained and configured
Wednesday, 12 June 13
Multi-tenancy
Wednesday, 12 June 13
Multi-tenancy
Wednesday, 12 June 13
Multi-tenancy
Wednesday, 12 June 13
Multi-tenancy
Wednesday, 12 June 13
Performance!
• Ability to scale horizontally
• Evidence based
• Continuous
Wednesday, 12 June 13
Topics
1. Project Goals
2. Hilary System Architecture
3. Performance Testing
4. Deployment and Automation
5. UI Architecture
6. Customization and Configuration
7. Questions?
Wednesday, 12 June 13
OAE Architecture
The Apereo OAE project is made up of 2 distinct source code
platforms:
• “Hilary”
• Server-side RESTful web platform that exposes the
OAE services
• Written entirely using server-side JavaScript in Node.js
• “3akai-ux”
• A client-side / browser platform that provides the
HTML, JavaScript and CSS that make up the browser
UI of the application
Wednesday, 12 June 13
OAE Architecture
Wednesday, 12 June 13
Hilary System Architecture
Wednesday, 12 June 13
Application Servers
• Written in server-side JavaScript, run in Node.js
• Node.js used by: eBay, LinkedIn, Storify, Trello
• Light-weight (80Mb memory) single-threaded platform that processes IO
asynchronously / non-blocking
• App servers can be configured into functional specialization:
• User Request Processor
• Activity Processor
• Search Indexer
• Preview Processor
• Specializing app servers allows for clustering different types of application
processing in distinct ways
Wednesday, 12 June 13
Apache Cassandra
• Canonical data source
• Provides high-availability and fault-tolerance without trading away
performance
• Gives flexibility with incremental scalability in a cloud environment
• Helps overcome unpredictable growth of multi-tenant systems
• Option for multi-datacenter deployments to localize reads and writes
in geographical regions
• Can trade off consistency for availability at the query level
• Scales linearly by sharding and balancing rows across nodes, with
configurable replication levels
• Used by: Netflix, eBay,Twitter
Wednesday, 12 June 13
ElasticSearch
• Lucene-backed search platform
• Built for cloud-friendly incremental scaling and high-
availability
• Exposes HTTP RESTful APIs for indexing and querying
documents
• RESTful query interface uses JSON-based Query DSL
• Scales linearly by distributing pre-determined number of
shards among nodes and automatically and rebalances when
necessary
• Used by: GitHub, FourSquare, StackOverflow,WordPress
Wednesday, 12 June 13
RabbitMQ
• Message queue platform written in Erlang
• Used for distributing tasks to specialized
application server instances
• Supports active-active queue mirroring to
nodes for high availability
• Used by: Joyent
Wednesday, 12 June 13
Redis
• Commonly known as a cache server
• Fills a variety of functionality:
• Caching of basic user profiles
• Broadcast messaging (can move to RabbitMQ)
• Locking
• Holds volatile activity aggregation data
• Comes with no managed clustering solution (yet), but has slave
replication for active fail-over
• Some clients manage master-slave switching, and distributed reads for
you
• Used by:Twitter, Instagram, StackOverflow, Flickr
Wednesday, 12 June 13
Etherpad
• Open Source collaborative editing application written in
Node.js
• Originally developed by Google and Mozilla
• Licensed under Apache License v2
• Powers collaborative document editing in OAE
• Doesn’t cluster, but we shard for performance
• If an etherpad server goes down, active sessions on that
server are lost
• But document data is flushed to Cassandra on the fly so
large volumes of progress are not lost as a result
Wednesday, 12 June 13
Nginx
• HTTP and reverse-proxy server
• Used to distribute load to application
servers, etherpad servers and stream file
downloads
• Useful rate-limiting features based on
source IP
• Used by: Netflix,WordPress.com
Wednesday, 12 June 13
Topics
1. Project Goals
2. Hilary System Architecture
3. Performance Testing
4. Deployment and Automation
5. UI Architecture
6. Customization and Configuration
Wednesday, 12 June 13
Performance Testing:Workflow
1. Generate data with Model Loader
2. Load data into the system with Model Loader
3. Generate Tsung Test with custom framework
4. Run Tsung Test
5. Analysis
Wednesday, 12 June 13
Performance Testing:
Setup
• 1 nginx load balancer (0.5GB / 1CPU)
• 2 app nodes (0.5GB / 1 CPU)
• 3 db nodes (8GB / 2 CPU)
• 1 redis node (0.5GB / 1 CPU)
• 1 search node (0.5GB / 1 CPU)
Wednesday, 12 June 13
Transactions
Wednesday, 12 June 13
Request latency
Wednesday, 12 June 13
Transactions / sec
Wednesday, 12 June 13
Arrival rate of new users
Wednesday, 12 June 13
Simultaneous users
Wednesday, 12 June 13
HTTP Requests / sec
Wednesday, 12 June 13
Histogram latency - POST /api/*
Wednesday, 12 June 13
So, does it scale?
• Yes. We can scale the application
horizontally by adding more nodes
• Doubling the hardware, roughly doubles
the throughput
Wednesday, 12 June 13
Simultaneous users
Wednesday, 12 June 13
Requests / sec
Wednesday, 12 June 13
Topics
1. Project Goals
2. Hilary System Architecture
3. Performance Testing
4. Deployment and Automation
5. UI Architecture
6. Customization and Configuration
7. Questions?
Wednesday, 12 June 13
Deployment and
Automation
• As you can imagine, many machines to manage. Current inventory:
• 3x Cassandra
• 2x Redis
• 2x RabbitMQ
• 4x Application + Indexer
• 3x Preview Processor
• 1x Activity Processor
• 1x Nginx
• 3x Etherpad
• Performance testing with a cluster of 21 virtual machines
• Additional scalability testing and verification with ~30 virtual machines
Wednesday, 12 June 13
Puppet
• Use puppet to centralize machine configuration and prevent configuration drift
• Collection of “Manifests” that define the state that the machine should in based on
its hostname / role:
• What files should exist? What should their contents be?
• What packages should be installed?
• What services should be running, or stopped?
• http://github.com/sakaiproject/puppet-hilary
• All 20+ machines in cluster have Puppet installed, which ask for “catalog” info
(expected configuration state) from a single puppet master machine
• Puppet Master knows how to determine the machine state from the manifests
based on its host (e.g., db0 is a cassandra node, it should have cassandra, java, etc...)
• Use puppetdb with “External Resources” to share machine-specific information
with each other node in the cluster
Wednesday, 12 June 13
MCollective
• Provides parallel execution over a number of machines at
one time
• Start / Stop / Check status of services
• Install / Remove / Check version of packages
• Use puppet resource syntax to check adhoc machine
facts
• Apply puppet manifests
• Each cluster node subscribes to an ActiveMQ server to
receive commands. Central machine (the “client”) publishes
the command and waits for reply
Wednesday, 12 June 13
Slapchop
• Missing piece:We need to create 21 machines of different specs in a
cloud service, and somehow get MCollective on them
• A tool we lovingly call slapchop
• Define a JSON manifest that holds machines configs and instances
• Run slapchop to create the machines in Joyent cloud, start them, get
mcollective installed
• Well, kind of...
• Now you can log in to the MCollective client and run mco puppet
apply
• Well, kind of...
• Go from empty cloud to working 21 machine cluster in ~15 minutes
Wednesday, 12 June 13
Monitoring
• Nagios
• Munin
Wednesday, 12 June 13
Security
• Infrastructure penetration tests by University
of Murcia
• No major issues found
• UI vulnerability testing performed by SCIRT
group
• Followed up on all known XSS issues
• Using OWASP JQuery plugin for XSS
filtering user-created data
Wednesday, 12 June 13
Topics
1. Project Goals
2. Hilary System Architecture
3. Performance Testing
4. Deployment and Automation
5. UI Architecture
6. Customization and Configuration
7. Questions?
Wednesday, 12 June 13
UI Architecture
Hilary
3akai-ux
Mobile UI
3rd party integrations
Wednesday, 12 June 13
Core UI Architecture
• JS frameworks
• CSS framework
• 3rd party plugins
• OAE UI API
• OAE CSS Components
Wednesday, 12 June 13
Core frameworks
• RequireJS
• jQuery
• underscore.js
Wednesday, 12 June 13
RequireJS
• File and module loader
• Necessity to keep things modular
• Optimisation built-in
Wednesday, 12 June 13
• DOM manipulation
• Cross-browser abstraction
• Events
• Pretty much everything
Wednesday, 12 June 13
• Utility toolbelt
• Manipulate objects, arrays, etc.
Wednesday, 12 June 13
CSS frameworks
• Twitter Bootstrap
• Font Awesome
Wednesday, 12 June 13
3rd party plug-ins
• Autosuggest
• History.js
• Fileupload
• Validate
• Templates
• etc.
Wednesday, 12 June 13
OAE UI API
• Wrapper for REST requests
• Users
• Profile
• Groups
• Content
• Discussions
• Search
• Config
Wednesday, 12 June 13
OAE UI API
• Utilities
• i18n
• l10n
• Widget loading
• Template rendering
• Notifications
• XSS escaping
• etc.
Wednesday, 12 June 13
OAE CSS Components
• Re-usable HTML fragments
• OAE specific elements
• Consistency
• Design guidelines
Wednesday, 12 June 13
Toolbox
JS frameworks
CSS framework
3rd party plugins
OAE UI API
OAE CSS Components
WIDGET SDK
Wednesday, 12 June 13
Putting it together
Wednesday, 12 June 13
Widgets
• Modular components
• HTML Fragment
• JavaScript
• CSS
• Config file
• Language bundles
• Loaded into DOM
Wednesday, 12 June 13
Topics
1. Project Goals
2. Hilary System Architecture
3. Performance Testing
4. Deployment and Automation
5. UI Architecture
6. Customization and Configuration
7. Questions?
Wednesday, 12 June 13
Tenant Administration
• Create, start & stop tenants
• Tenants are an application-
level concept, not
infrastructure
• Uses HTTP Host header to
identify tenant
Wednesday, 12 June 13
Tenant Skinning
• Tenant skinning
• Uses LESS CSS framework
with dynamic values
Wednesday, 12 June 13
Tenant Configuration
• Global or tenant-specific configuration
• Tenant configuration
• Single-Sign On (CAS, Shibboleth,
Social Media)
• Default privacy settings
• etc...
• Changes happen on-the-fly
• Uses Redis to broadcast changes
across cluster
Wednesday, 12 June 13
July 1, 2013
1st production release
Wednesday, 12 June 13

Weitere ähnliche Inhalte

Was ist angesagt?

Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...
Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...
Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...rhatr
 
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at OoyalaCassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at OoyalaDataStax Academy
 
Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...
Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...
Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...Chris Mattmann
 
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web ApplicationsWhat Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web ApplicationsTodd Hoff
 
Relational and non relational database 7
Relational and non relational database 7Relational and non relational database 7
Relational and non relational database 7abdulrahmanhelan
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchJoe Alex
 
Centralized log-management-with-elastic-stack
Centralized log-management-with-elastic-stackCentralized log-management-with-elastic-stack
Centralized log-management-with-elastic-stackRich Lee
 
Web Crawling with Apache Nutch
Web Crawling with Apache NutchWeb Crawling with Apache Nutch
Web Crawling with Apache Nutchsebastian_nagel
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectAkmal Chaudhri
 
Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...
Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...
Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...✔ Eric David Benari, PMP
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basicsnickmbailey
 
Nutch - web-scale search engine toolkit
Nutch - web-scale search engine toolkitNutch - web-scale search engine toolkit
Nutch - web-scale search engine toolkitabial
 
Sql vs NoSQL
Sql vs NoSQLSql vs NoSQL
Sql vs NoSQLRTigger
 
Nutch as a Web data mining platform
Nutch as a Web data mining platformNutch as a Web data mining platform
Nutch as a Web data mining platformabial
 
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016DataStax
 
Building a system for machine and event-oriented data - Data Day Seattle 2015
Building a system for machine and event-oriented data - Data Day Seattle 2015Building a system for machine and event-oriented data - Data Day Seattle 2015
Building a system for machine and event-oriented data - Data Day Seattle 2015Eric Sammer
 
Building a system for machine and event-oriented data - Velocity, Santa Clara...
Building a system for machine and event-oriented data - Velocity, Santa Clara...Building a system for machine and event-oriented data - Velocity, Santa Clara...
Building a system for machine and event-oriented data - Velocity, Santa Clara...Eric Sammer
 
Rapid Cluster Computing with Apache Spark 2016
Rapid Cluster Computing with Apache Spark 2016Rapid Cluster Computing with Apache Spark 2016
Rapid Cluster Computing with Apache Spark 2016Zohar Elkayam
 
Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid C2B2 Consulting
 
Introducing DataStax Enterprise 4.7
Introducing DataStax Enterprise 4.7Introducing DataStax Enterprise 4.7
Introducing DataStax Enterprise 4.7DataStax
 

Was ist angesagt? (20)

Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...
Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...
Building Google-in-a-box: using Apache SolrCloud and Bigtop to index your big...
 
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at OoyalaCassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
 
Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...
Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...
Lessons Learned in the Development of a Web-scale Search Engine: Nutch2 and b...
 
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web ApplicationsWhat Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
 
Relational and non relational database 7
Relational and non relational database 7Relational and non relational database 7
Relational and non relational database 7
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using Elasticsearch
 
Centralized log-management-with-elastic-stack
Centralized log-management-with-elastic-stackCentralized log-management-with-elastic-stack
Centralized log-management-with-elastic-stack
 
Web Crawling with Apache Nutch
Web Crawling with Apache NutchWeb Crawling with Apache Nutch
Web Crawling with Apache Nutch
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT project
 
Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...
Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...
Making MySQL Flexible with ParElastic Database Scalability, Amrith Kumar, Fou...
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basics
 
Nutch - web-scale search engine toolkit
Nutch - web-scale search engine toolkitNutch - web-scale search engine toolkit
Nutch - web-scale search engine toolkit
 
Sql vs NoSQL
Sql vs NoSQLSql vs NoSQL
Sql vs NoSQL
 
Nutch as a Web data mining platform
Nutch as a Web data mining platformNutch as a Web data mining platform
Nutch as a Web data mining platform
 
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
 
Building a system for machine and event-oriented data - Data Day Seattle 2015
Building a system for machine and event-oriented data - Data Day Seattle 2015Building a system for machine and event-oriented data - Data Day Seattle 2015
Building a system for machine and event-oriented data - Data Day Seattle 2015
 
Building a system for machine and event-oriented data - Velocity, Santa Clara...
Building a system for machine and event-oriented data - Velocity, Santa Clara...Building a system for machine and event-oriented data - Velocity, Santa Clara...
Building a system for machine and event-oriented data - Velocity, Santa Clara...
 
Rapid Cluster Computing with Apache Spark 2016
Rapid Cluster Computing with Apache Spark 2016Rapid Cluster Computing with Apache Spark 2016
Rapid Cluster Computing with Apache Spark 2016
 
Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid
 
Introducing DataStax Enterprise 4.7
Introducing DataStax Enterprise 4.7Introducing DataStax Enterprise 4.7
Introducing DataStax Enterprise 4.7
 

Ähnlich wie Apereo OAE - Architectural overview

Rootconf 2017 - State of the Open Source monitoring landscape
Rootconf 2017 - State of the Open Source monitoring landscape Rootconf 2017 - State of the Open Source monitoring landscape
Rootconf 2017 - State of the Open Source monitoring landscape NETWAYS
 
Java scalability considerations yogesh deshpande
Java scalability considerations   yogesh deshpandeJava scalability considerations   yogesh deshpande
Java scalability considerations yogesh deshpandeIndicThreads
 
Geek Sync | Deployment and Management of Complex Azure Environments
Geek Sync | Deployment and Management of Complex Azure EnvironmentsGeek Sync | Deployment and Management of Complex Azure Environments
Geek Sync | Deployment and Management of Complex Azure EnvironmentsIDERA Software
 
Getting Started with Meteor
Getting Started with MeteorGetting Started with Meteor
Getting Started with MeteorMichael Redlich
 
NoSQL on the move
NoSQL on the moveNoSQL on the move
NoSQL on the moveCodemotion
 
Federated Cloud Computing
Federated Cloud ComputingFederated Cloud Computing
Federated Cloud ComputingDavid Wallom
 
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...Shubham Tagra
 
Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart...
 Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart... Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart...
Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart...Ashish Tadose
 
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CSMaking Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CSJohn Burwell
 
Sanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansSanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansPeter Clapham
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithMarkus Eisele
 
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...Alluxio, Inc.
 
UI Dev in Big data world using open source
UI Dev in Big data world using open sourceUI Dev in Big data world using open source
UI Dev in Big data world using open sourceTech Triveni
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015aspyker
 
DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtNick Santamaria
 
UWP apps development - Part 2
UWP apps development - Part 2UWP apps development - Part 2
UWP apps development - Part 2Jiri Danihelka
 

Ähnlich wie Apereo OAE - Architectural overview (20)

Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
Rootconf 2017 - State of the Open Source monitoring landscape
Rootconf 2017 - State of the Open Source monitoring landscape Rootconf 2017 - State of the Open Source monitoring landscape
Rootconf 2017 - State of the Open Source monitoring landscape
 
Java scalability considerations yogesh deshpande
Java scalability considerations   yogesh deshpandeJava scalability considerations   yogesh deshpande
Java scalability considerations yogesh deshpande
 
Geek Sync | Deployment and Management of Complex Azure Environments
Geek Sync | Deployment and Management of Complex Azure EnvironmentsGeek Sync | Deployment and Management of Complex Azure Environments
Geek Sync | Deployment and Management of Complex Azure Environments
 
Node.js
Node.jsNode.js
Node.js
 
Getting Started with Meteor
Getting Started with MeteorGetting Started with Meteor
Getting Started with Meteor
 
NoSQL on the move
NoSQL on the moveNoSQL on the move
NoSQL on the move
 
Federated Cloud Computing
Federated Cloud ComputingFederated Cloud Computing
Federated Cloud Computing
 
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
 
Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart...
 Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart... Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart...
Distributed Query Service Powered By Presto & Alluxio Across Clouds @Walmart...
 
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CSMaking Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
 
Sanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansSanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticians
 
Flexible compute
Flexible computeFlexible compute
Flexible compute
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
Enterprise Distributed Query Service powered by Presto & Alluxio across cloud...
 
UI Dev in Big data world using open source
UI Dev in Big data world using open sourceUI Dev in Big data world using open source
UI Dev in Big data world using open source
 
DrupalCon 2011 Highlight
DrupalCon 2011 HighlightDrupalCon 2011 Highlight
DrupalCon 2011 Highlight
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
 
DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an Afterthought
 
UWP apps development - Part 2
UWP apps development - Part 2UWP apps development - Part 2
UWP apps development - Part 2
 

Mehr von Nicolaas Matthijs

Apereo OAE - State of the project - Open Apereo 2015
Apereo OAE - State of the project - Open Apereo 2015Apereo OAE - State of the project - Open Apereo 2015
Apereo OAE - State of the project - Open Apereo 2015Nicolaas Matthijs
 
Apereo OAE - Architectural overview
Apereo OAE - Architectural overviewApereo OAE - Architectural overview
Apereo OAE - Architectural overviewNicolaas Matthijs
 
Apereo OAE - State of the project
Apereo OAE - State of the projectApereo OAE - State of the project
Apereo OAE - State of the projectNicolaas Matthijs
 
Apereo Mexico 2014 - Apereo OAE - State of the project
Apereo Mexico 2014 - Apereo OAE - State of the projectApereo Mexico 2014 - Apereo OAE - State of the project
Apereo Mexico 2014 - Apereo OAE - State of the projectNicolaas Matthijs
 
WSDM 2011 - Nicolaas Matthijs and Filip Radlinski
WSDM 2011 - Nicolaas Matthijs and Filip RadlinskiWSDM 2011 - Nicolaas Matthijs and Filip Radlinski
WSDM 2011 - Nicolaas Matthijs and Filip RadlinskiNicolaas Matthijs
 

Mehr von Nicolaas Matthijs (8)

Apereo OAE - State of the project - Open Apereo 2015
Apereo OAE - State of the project - Open Apereo 2015Apereo OAE - State of the project - Open Apereo 2015
Apereo OAE - State of the project - Open Apereo 2015
 
Apereo OAE - Architectural overview
Apereo OAE - Architectural overviewApereo OAE - Architectural overview
Apereo OAE - Architectural overview
 
Apereo OAE - State of the project
Apereo OAE - State of the projectApereo OAE - State of the project
Apereo OAE - State of the project
 
Apereo Mexico 2014 - Apereo OAE - State of the project
Apereo Mexico 2014 - Apereo OAE - State of the projectApereo Mexico 2014 - Apereo OAE - State of the project
Apereo Mexico 2014 - Apereo OAE - State of the project
 
Apereo Europe - Apereo OAE
Apereo Europe - Apereo OAEApereo Europe - Apereo OAE
Apereo Europe - Apereo OAE
 
ESUP Days - Apereo OAE
ESUP Days - Apereo OAEESUP Days - Apereo OAE
ESUP Days - Apereo OAE
 
WSDM 2011 - Nicolaas Matthijs and Filip Radlinski
WSDM 2011 - Nicolaas Matthijs and Filip RadlinskiWSDM 2011 - Nicolaas Matthijs and Filip Radlinski
WSDM 2011 - Nicolaas Matthijs and Filip Radlinski
 
Sakai 3 R&D
Sakai 3 R&DSakai 3 R&D
Sakai 3 R&D
 

Kürzlich hochgeladen

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Apereo OAE - Architectural overview

  • 1. Apereo OAE Architectural Overview, San Diego 2013 Wednesday, 12 June 13
  • 3. Topics 1. Project Goals 2. Hilary System Architecture 3. Performance Testing 4. Deployment and Automation 5. UI Architecture 6. Customization and Configuration 7. Questions? Wednesday, 12 June 13
  • 4. Project goals • Multi-tenant platform • Cloud-ready • SaaS • Used at large scale Wednesday, 12 June 13
  • 5. Project goals • Maintainable • Extendable • Integrate-able Wednesday, 12 June 13
  • 6. Solid foundation Modern, not exotic Wednesday, 12 June 13
  • 7. Multi-tenancy • Market is heading • Support multiple institutions at same time • Multi-tenancy+ • Easily created, maintained and configured Wednesday, 12 June 13
  • 12. Performance! • Ability to scale horizontally • Evidence based • Continuous Wednesday, 12 June 13
  • 13. Topics 1. Project Goals 2. Hilary System Architecture 3. Performance Testing 4. Deployment and Automation 5. UI Architecture 6. Customization and Configuration 7. Questions? Wednesday, 12 June 13
  • 14. OAE Architecture The Apereo OAE project is made up of 2 distinct source code platforms: • “Hilary” • Server-side RESTful web platform that exposes the OAE services • Written entirely using server-side JavaScript in Node.js • “3akai-ux” • A client-side / browser platform that provides the HTML, JavaScript and CSS that make up the browser UI of the application Wednesday, 12 June 13
  • 17. Application Servers • Written in server-side JavaScript, run in Node.js • Node.js used by: eBay, LinkedIn, Storify, Trello • Light-weight (80Mb memory) single-threaded platform that processes IO asynchronously / non-blocking • App servers can be configured into functional specialization: • User Request Processor • Activity Processor • Search Indexer • Preview Processor • Specializing app servers allows for clustering different types of application processing in distinct ways Wednesday, 12 June 13
  • 18. Apache Cassandra • Canonical data source • Provides high-availability and fault-tolerance without trading away performance • Gives flexibility with incremental scalability in a cloud environment • Helps overcome unpredictable growth of multi-tenant systems • Option for multi-datacenter deployments to localize reads and writes in geographical regions • Can trade off consistency for availability at the query level • Scales linearly by sharding and balancing rows across nodes, with configurable replication levels • Used by: Netflix, eBay,Twitter Wednesday, 12 June 13
  • 19. ElasticSearch • Lucene-backed search platform • Built for cloud-friendly incremental scaling and high- availability • Exposes HTTP RESTful APIs for indexing and querying documents • RESTful query interface uses JSON-based Query DSL • Scales linearly by distributing pre-determined number of shards among nodes and automatically and rebalances when necessary • Used by: GitHub, FourSquare, StackOverflow,WordPress Wednesday, 12 June 13
  • 20. RabbitMQ • Message queue platform written in Erlang • Used for distributing tasks to specialized application server instances • Supports active-active queue mirroring to nodes for high availability • Used by: Joyent Wednesday, 12 June 13
  • 21. Redis • Commonly known as a cache server • Fills a variety of functionality: • Caching of basic user profiles • Broadcast messaging (can move to RabbitMQ) • Locking • Holds volatile activity aggregation data • Comes with no managed clustering solution (yet), but has slave replication for active fail-over • Some clients manage master-slave switching, and distributed reads for you • Used by:Twitter, Instagram, StackOverflow, Flickr Wednesday, 12 June 13
  • 22. Etherpad • Open Source collaborative editing application written in Node.js • Originally developed by Google and Mozilla • Licensed under Apache License v2 • Powers collaborative document editing in OAE • Doesn’t cluster, but we shard for performance • If an etherpad server goes down, active sessions on that server are lost • But document data is flushed to Cassandra on the fly so large volumes of progress are not lost as a result Wednesday, 12 June 13
  • 23. Nginx • HTTP and reverse-proxy server • Used to distribute load to application servers, etherpad servers and stream file downloads • Useful rate-limiting features based on source IP • Used by: Netflix,WordPress.com Wednesday, 12 June 13
  • 24. Topics 1. Project Goals 2. Hilary System Architecture 3. Performance Testing 4. Deployment and Automation 5. UI Architecture 6. Customization and Configuration Wednesday, 12 June 13
  • 25. Performance Testing:Workflow 1. Generate data with Model Loader 2. Load data into the system with Model Loader 3. Generate Tsung Test with custom framework 4. Run Tsung Test 5. Analysis Wednesday, 12 June 13
  • 26. Performance Testing: Setup • 1 nginx load balancer (0.5GB / 1CPU) • 2 app nodes (0.5GB / 1 CPU) • 3 db nodes (8GB / 2 CPU) • 1 redis node (0.5GB / 1 CPU) • 1 search node (0.5GB / 1 CPU) Wednesday, 12 June 13
  • 30. Arrival rate of new users Wednesday, 12 June 13
  • 32. HTTP Requests / sec Wednesday, 12 June 13
  • 33. Histogram latency - POST /api/* Wednesday, 12 June 13
  • 34. So, does it scale? • Yes. We can scale the application horizontally by adding more nodes • Doubling the hardware, roughly doubles the throughput Wednesday, 12 June 13
  • 37. Topics 1. Project Goals 2. Hilary System Architecture 3. Performance Testing 4. Deployment and Automation 5. UI Architecture 6. Customization and Configuration 7. Questions? Wednesday, 12 June 13
  • 38. Deployment and Automation • As you can imagine, many machines to manage. Current inventory: • 3x Cassandra • 2x Redis • 2x RabbitMQ • 4x Application + Indexer • 3x Preview Processor • 1x Activity Processor • 1x Nginx • 3x Etherpad • Performance testing with a cluster of 21 virtual machines • Additional scalability testing and verification with ~30 virtual machines Wednesday, 12 June 13
  • 39. Puppet • Use puppet to centralize machine configuration and prevent configuration drift • Collection of “Manifests” that define the state that the machine should in based on its hostname / role: • What files should exist? What should their contents be? • What packages should be installed? • What services should be running, or stopped? • http://github.com/sakaiproject/puppet-hilary • All 20+ machines in cluster have Puppet installed, which ask for “catalog” info (expected configuration state) from a single puppet master machine • Puppet Master knows how to determine the machine state from the manifests based on its host (e.g., db0 is a cassandra node, it should have cassandra, java, etc...) • Use puppetdb with “External Resources” to share machine-specific information with each other node in the cluster Wednesday, 12 June 13
  • 40. MCollective • Provides parallel execution over a number of machines at one time • Start / Stop / Check status of services • Install / Remove / Check version of packages • Use puppet resource syntax to check adhoc machine facts • Apply puppet manifests • Each cluster node subscribes to an ActiveMQ server to receive commands. Central machine (the “client”) publishes the command and waits for reply Wednesday, 12 June 13
  • 41. Slapchop • Missing piece:We need to create 21 machines of different specs in a cloud service, and somehow get MCollective on them • A tool we lovingly call slapchop • Define a JSON manifest that holds machines configs and instances • Run slapchop to create the machines in Joyent cloud, start them, get mcollective installed • Well, kind of... • Now you can log in to the MCollective client and run mco puppet apply • Well, kind of... • Go from empty cloud to working 21 machine cluster in ~15 minutes Wednesday, 12 June 13
  • 43. Security • Infrastructure penetration tests by University of Murcia • No major issues found • UI vulnerability testing performed by SCIRT group • Followed up on all known XSS issues • Using OWASP JQuery plugin for XSS filtering user-created data Wednesday, 12 June 13
  • 44. Topics 1. Project Goals 2. Hilary System Architecture 3. Performance Testing 4. Deployment and Automation 5. UI Architecture 6. Customization and Configuration 7. Questions? Wednesday, 12 June 13
  • 45. UI Architecture Hilary 3akai-ux Mobile UI 3rd party integrations Wednesday, 12 June 13
  • 46. Core UI Architecture • JS frameworks • CSS framework • 3rd party plugins • OAE UI API • OAE CSS Components Wednesday, 12 June 13
  • 47. Core frameworks • RequireJS • jQuery • underscore.js Wednesday, 12 June 13
  • 48. RequireJS • File and module loader • Necessity to keep things modular • Optimisation built-in Wednesday, 12 June 13
  • 49. • DOM manipulation • Cross-browser abstraction • Events • Pretty much everything Wednesday, 12 June 13
  • 50. • Utility toolbelt • Manipulate objects, arrays, etc. Wednesday, 12 June 13
  • 51. CSS frameworks • Twitter Bootstrap • Font Awesome Wednesday, 12 June 13
  • 52. 3rd party plug-ins • Autosuggest • History.js • Fileupload • Validate • Templates • etc. Wednesday, 12 June 13
  • 53. OAE UI API • Wrapper for REST requests • Users • Profile • Groups • Content • Discussions • Search • Config Wednesday, 12 June 13
  • 54. OAE UI API • Utilities • i18n • l10n • Widget loading • Template rendering • Notifications • XSS escaping • etc. Wednesday, 12 June 13
  • 55. OAE CSS Components • Re-usable HTML fragments • OAE specific elements • Consistency • Design guidelines Wednesday, 12 June 13
  • 56. Toolbox JS frameworks CSS framework 3rd party plugins OAE UI API OAE CSS Components WIDGET SDK Wednesday, 12 June 13
  • 58. Widgets • Modular components • HTML Fragment • JavaScript • CSS • Config file • Language bundles • Loaded into DOM Wednesday, 12 June 13
  • 59. Topics 1. Project Goals 2. Hilary System Architecture 3. Performance Testing 4. Deployment and Automation 5. UI Architecture 6. Customization and Configuration 7. Questions? Wednesday, 12 June 13
  • 60. Tenant Administration • Create, start & stop tenants • Tenants are an application- level concept, not infrastructure • Uses HTTP Host header to identify tenant Wednesday, 12 June 13
  • 61. Tenant Skinning • Tenant skinning • Uses LESS CSS framework with dynamic values Wednesday, 12 June 13
  • 62. Tenant Configuration • Global or tenant-specific configuration • Tenant configuration • Single-Sign On (CAS, Shibboleth, Social Media) • Default privacy settings • etc... • Changes happen on-the-fly • Uses Redis to broadcast changes across cluster Wednesday, 12 June 13
  • 63. July 1, 2013 1st production release Wednesday, 12 June 13