Phoenix § Apollo Group owns many other universities besides UoP § Pioneer in online education – 340K Current students – 1600 Online courses § Apollo Education Service (AES) – To help higher learning institutions produce the most effective and efficient educational delivery systems possible. About Apollo Group
and rich user interaction § Architecture – Large number of services – GWT based browser based application – Mobile client – No SQL and Relational and Graph stores – Riak, Mongodb, RDS, Marklogic About Apollo Learning Platform
Cassandra and Riak – Simple data model (key-value based) – Easy to add nodes to a cluster. – Linear scalability. Performance and storage scale as more nodes are added to the cluster – Full support for vector clocks allows conflicts to be resolved (although, the application has it share of responsibilities) – Easy to manage – Master less – CAP – Support Why Riak?
– Largest 15 nodes, smallest 6 – 1024 ring size – All in EC2 – Started with 0.96 and now on Riak 1.14 – Replication and backup § Data – Domain object storage – Application metadata How Riak is Used @ Apollo
Used once backed off because of performance – 2i – Used once backed off because of performance – Key filter – No links How Riak is Used @ Apollo (cont…)
• We have our implementation of PB. Early stages the PB driver did not have needed features • Added connection pooling • Connection pruning to shied EC2 socket behavior • Multiple cluster support • Advanced logging • Batch operations – Distributed Cache • Service on top of Riak memory backend • Easy to implement and support • Have reasonably good performance – Riak stats collection • List keys and List buckets are not usable at production • POST commit hook to collect data created • Application like list key and key can be build on top of it How Riak is Used @ Apollo (cont…)
reconfigure ring sizes • Lack of monitoring • Sibling explosion – Now • Smooth operation in production • Help from Basho • Setting up Mutli-AZ replication • Self-sufficient • Still lack better monitoring The experience (cont…)
and list keys used but later forced to remove • Developer training – What to use what not to use • Sibling explosion crashed production – Now • Normalized • Uses only for keyed access • No M/R, 2i etc • Experts review developer code to make sure it is safe • Started using more advanced customization using erlang The experience