48
NoSQL: Delivering scale without complexity Chris Smith Chief Architect Companies House

No sql mongodb_publicsector2014_pp

  • Upload
    mongodb

  • View
    285

  • Download
    0

Embed Size (px)

DESCRIPTION

NoSQL: Delivering scale without complexity

Citation preview

Page 1: No sql mongodb_publicsector2014_pp

NoSQL: Delivering scale without complexity

Chris Smith Chief Architect Companies House

Page 2: No sql mongodb_publicsector2014_pp

O!

nce Upon A Time....

Page 3: No sql mongodb_publicsector2014_pp

1985 - 2008 ICL Mainframe

Page 4: No sql mongodb_publicsector2014_pp

1997 Companies House First Website

Page 5: No sql mongodb_publicsector2014_pp

MainframeWebsite

Page 6: No sql mongodb_publicsector2014_pp

2004Web enabled filing of information

Page 7: No sql mongodb_publicsector2014_pp

Data ModelWebsite required data storage

Page 8: No sql mongodb_publicsector2014_pp

Fetch data from Mainframe

Store in website DB

Populate HTML form

Submit data back to DB

When complete, send to Mainframe

User iterate

Page 9: No sql mongodb_publicsector2014_pp

Directors

Secretaries

Shareholders

Addresses

Shares

Page 10: No sql mongodb_publicsector2014_pp

First stepsDesign a data model

Page 11: No sql mongodb_publicsector2014_pp

NORMALISATION

Page 12: No sql mongodb_publicsector2014_pp

Data ModellingCompanies House data is not normalised

Page 13: No sql mongodb_publicsector2014_pp

Observation:A normalised model

increased software complexity

Page 14: No sql mongodb_publicsector2014_pp

What about performance?

Page 15: No sql mongodb_publicsector2014_pp

Normalised model:Multiple inserts and joins per entity

Page 16: No sql mongodb_publicsector2014_pp

Core System

HTML form

XML

DB Tables Director Person Address Address

Iterate

XML

DB Tables Director Person Address Address

Website

Page 17: No sql mongodb_publicsector2014_pp

Observation:Companies with large datasets experienced poor performance

Page 18: No sql mongodb_publicsector2014_pp

Our first LessonUnderstand your data

Page 19: No sql mongodb_publicsector2014_pp

ComplexityMultiple websites and API’s

Page 20: No sql mongodb_publicsector2014_pp

Companies House Direct WebFiling WebCheck XML Gateway

Core Registry Additional Resources

3rd Party Systems

Page 21: No sql mongodb_publicsector2014_pp

Where did this lead us?

Page 22: No sql mongodb_publicsector2014_pp

It’s all about dataInformation is everything

Page 23: No sql mongodb_publicsector2014_pp

It’s about customersWhat do customers need from the data?

How do they use it?

Page 24: No sql mongodb_publicsector2014_pp

Second LessonUnderstand your use cases

Page 25: No sql mongodb_publicsector2014_pp

What did we do?

Page 26: No sql mongodb_publicsector2014_pp

Expose our dataFirst design a use case API

JSON, REST

Page 27: No sql mongodb_publicsector2014_pp

Data ModellingModel to satisfy the API

Page 28: No sql mongodb_publicsector2014_pp

Challenge conventionDuplicate data where required

Page 29: No sql mongodb_publicsector2014_pp

Single website uses APISame use cases across channels

Page 30: No sql mongodb_publicsector2014_pp

Choose a “database”Relational didn’t work Need an object store

Page 31: No sql mongodb_publicsector2014_pp

Other criteriaHigh performance and dynamic

queries on rapidly changing data

Page 32: No sql mongodb_publicsector2014_pp

Why MongoDB?Met all our needs

Agile, highly scalable and resilient Objects map neatly to language types

Page 33: No sql mongodb_publicsector2014_pp

Design for performancePre-load MongoDB with API data

Page 34: No sql mongodb_publicsector2014_pp

Reduce complexityData stored exactly as exposed by API

Page 35: No sql mongodb_publicsector2014_pp

Data mirrorMongoDB mirrors core system data

Page 36: No sql mongodb_publicsector2014_pp

Core system Oracle triggers

JSON API Delta update system

MongoDB Collections

HTTP

Queue

SynchronisationOracle triggers drive delta-update process

Information change

Page 37: No sql mongodb_publicsector2014_pp

Handling deviationFunction to re-sync any data on demand

Page 38: No sql mongodb_publicsector2014_pp

SimplicitySingle website and API

Page 39: No sql mongodb_publicsector2014_pp

Companies House Direct WebFiling WebCheck XML Gateway

Core Registry Additional Resources

3rd Party Systems

Page 40: No sql mongodb_publicsector2014_pp

Website

JSON API

Core Registry Additional Resources

3rd Party Systems

Page 41: No sql mongodb_publicsector2014_pp

MaintainabilitySchemas restrict flexibility

Page 42: No sql mongodb_publicsector2014_pp

Customer benefitsReliable, open access to data suiting need

Open RESTfull JSON API

Page 43: No sql mongodb_publicsector2014_pp

Developer benefitsReduced complexity and learning curve,

flexibility

Page 44: No sql mongodb_publicsector2014_pp

Service benefitsHighly available and horizontally scalable

Highly maintainable

Page 45: No sql mongodb_publicsector2014_pp

MongoDB infrastructureThree replica set, SSD and spindle shards

Page 46: No sql mongodb_publicsector2014_pp

System infrastructureMesos/Marathon nodes on

virtualised blade infrastructure NetApp storage

Page 47: No sql mongodb_publicsector2014_pp

Software technologies

MongoDB ElasticSearch Mesos Marathon AWS Kibana Fluentd

Perl Scala Java nodejs Mojolicious compass swagger

statd git Ansible Jenkins HAProxy nginx Linux

Page 48: No sql mongodb_publicsector2014_pp

Questions?