Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime. A transitional architecture for Linked Data


Published on

Presentation by Aad Versteden & Niels Vandekeybus at Open Belgium 2018 -

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this A transitional architecture for Linked Data

  1. 1. A transitional architecture for Linked Data Aad Versteden & Niels Vandekeybus from for OpenBelgium
  2. 2. - Lower total cost of ownership - Ease to adapt and extend - Predictable performance - Easy to maintain - Low initial cost How are business solutions chosen?
  3. 3. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium WHOOPS Linked Data does not offer this . . . yet
  4. 4. microservices birds-eye
  5. 5. - Easy to understand - Easy to debug - Easy to reuse Microservices are awesome
  6. 6. Microservices are complex - Data model dependencies - API dependencies - Disaster analysis
  7. 7. - Direct connection to the database - Using semantic modelling Microservices are to be reengineered
  8. 8. - Embrace Semantic Model - Functional microservices - Standard APIs Microservices are micro standalone services
  9. 9. … taking advantage of the semantic domain model
  10. 10. Some history Share code on personal projects Rails is not über-productive Stay light, choose later Use microservices and semantic model
  11. 11.
  12. 12. In 60 seconds State-of-the-art web applications fuelled by Linked Data aware microservices - User-facing microservices - Easy deployment using Docker - Single Page Apps using Ember.js - Well known requirements => [HTTP+JSON+SPARQL]
  13. 13. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium KISS Keep It Super Simple
  14. 14. KISS - Most of us aren’t microservice experts - Most of us aren’t UI experts - We need to get stuff done - Maximize freedom - Orthogonal features - Minimize requirements - Enforce simple mental model
  15. 15. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium Simple mental model user-facing http-services
  16. 16. Simple mental model User-facing microservices Limit base technologies: - HTTP - JSON(API) - SPARQL (one graph)
  17. 17. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium Semantic models Many actors, telling parts of the same story
  18. 18. Semantic models Services read/write the part of the world they understand. User Registration: - There’s a new user => add it to the triplestore. User Login: - Check username/password => connect user to current session.
  19. 19. Semantic models Registration service Login service
  20. 20. Semantic models Many implementations, one model Same model for: - Username/Password login - OAuth login - ACM/IDM login
  21. 21. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium Docker Deployment made easy
  22. 22. Docker Container =~ Lightweight Linux Virtual Machine Docker Compose =~ Topology of multi-container project Each service runs in its own Docker Container In short: - Simple hosting on - Clean project description - Always works Share using Docker
  23. 23. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium Reuse everything
  24. 24. Reuse everything - Templates: basics for a service - Configurable services - mu-cl-resources - Ember add-ons - Data table addon - Login add-on
  25. 25. Base templates CatalogsIndexRoute = Ember.Route.extend ajax: Ember.inject.service() model: () -> @get('ajax').request('/hello') Hello result: {{model.value}} get '/hello/' do counter = query( "SELECT COUNT (*) as ?counter" + "WHERE {" + " ?s ?p ?o." + "}" ).first[:counter].to_i status 200 { value: counter }.to_json end FROM semtech/mu-ruby-template:2.0.0-ruby2.3 MAINTAINER Your Name <> demo: image: you/demo-service links: - db:database dispatcher: … links: - demo:demo match "/hello/*path" do Proxy.forward conn, path, "http://demo/hello/" end [mu-ruby-template]
  26. 26. Configurable services (define-resource agendapunt () :class (s-prefix "besluit:Agendapunt") :properties `((:titel :string ,(s-prefix "dct:title")) (:beschrijving :string ,(s-prefix "dct:description")) (:openbaar :boolean ,(s-prefix "besluit:geplandOpenbaar")) :has-many `((agendapunt :via ,(s-prefix "dct:references") :as "referenties")) :has-one `((agendapunt :via ,(s-prefix "besluit:aangebrachtNa") :as "vorige-agendapunt") (agenda :via ,(s-prefix "besluit:heeftAgendapunt") :inverse t :as "agenda")) :resource-base (s-url "") :on-path "agendapunten") [mu-cl-resources] Full JSONAPI from abstract description
  27. 27. Ember add-ons > ember install ember-paper-data-table // template {{data-table content=model fields="title isbn genre publicationDate language numberOfPages" sort=sort page=page size=size}} // route import Ember from 'ember'; import DataTableRouteMixin from 'ember-data-table/mixins/route'; export default Ember.Route.extend(DataTableRouteMixin, { modelName: 'book' });
  28. 28. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium What we learned
  29. 29. What we experienced - Extremely productive - Code reuse - Easy for juniors - Customers like front-end - Database performance is okayish - Conscious playing with alternative solutions
  30. 30. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium About the future
  31. 31. Trigger microservices by changes in semantic model. Example: -Send email/tweet by writing it to the triplestore - Compute KPIs when a new dataset is added Reactive programming
  32. 32. More performance - ember-fastboot: Faster first page render - mu-cache: Smart caching strategies in core microservices - mu-cl-resources: Partial resource caching
  33. 33. More authority Describe authorization outside the microservices: - Simplify mental model - Help in sharing content - Open gate to advanced applications
  34. 34. More interactivity Push cache updates to all visiting clients. Almost no development time to create basic interactive applications (eg: updating KPIs, chat applications, …)
  35. 35. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of for Open Belgium More links
  36. 36. Resources used & interesting links Lego Time Star Wars: nAQJCC-9XVSZs-a3vVhy-vPZaHw-r6NB6c-4ajSXh-rX7ezA-BBhAWf-BiWDpc- rED79Q-rX7f8u-mtctqc-wtp245-fcNzVb-CgXNsA-D4Uxps-wKj5u9-rX7fVm- rUWnBU-uhC54v-rXeB4g-zVknPq-qxEqXx-8GSCNc-nzg79j-biFNa6-9fXjwV-biFMTa-a1kbsX-5HnKDa-dQCdnW-a54g8X-bm9TRN-8zJUzU-fbGRan-sdr4hw- e9DMFz-q3qQqf-aAZwyV- bm9Tsw-dQCdpb-sdpUWU-rkow4K-wazJmK-bz4Md8-pyU2QM Wendelstein 7X: bizarre-reactor-might-save- nuclear-fusion 300SL: https://www. 5pCCRH-6NezBh-oF2nYm-gHtRrE-6KAHDv-cPKKj9-2aj2ur-s3A8ua-5pH14j-bQk48B-omejVV-q2tAx7-o8yCtS-nRauVz-5pCNWB-o525H4-o9dqig-sk2we8- o4EApo-N2NDc-o7jxQM-5pCG4c-81DnQh-exNBvp-kc9m4-exS223-cm2nm5-aPXHgc-7Tg5XD-6HQ5Q9-6w1JtR-5pCGWi-eb6dJe-pJYFdi-azFSaU-p5y4mb- 6GjCy2-q2kGp6-o52baX-9XtXDc-4GqX86-pJXbk1-8canak-q2tu1j-6HQ6eo- sjZQkD-dhaPyf-bBqucA Big Data Europe: Docker Logo: 2016- fuer-die- cloud/ webCAT: Banksy Van: #prettyPhoto Banksy Bananas: https://www.touchofmod Your Data Stories platoform: Star Wars Clones box: photos/kalexanderson/ 5410769283/in/photolist-9f8Bcz-5SJTDj-55MnH2-4WEfzr-in3p6t-drf7fp-3b46gb-bKfRW4-3aYzBt-4xztdx-35E11y-9jVQVR-9wuv3f-9r3mWe-9hNTVz- 7JzMxg-7JYZFM- Hw1QSq-8FW8eh-nVj9Sc- 8ytJvH-aPPKYz-dYyYWK-7fhBFE-7GgZYm-e5M9jV-bwm6S9-7fhyGd-e5SNkL-5LDPWB-e5SNdf-4MKWht-e5SLrb- 5zPWDw-74Yjyb-8xh5Vr-9Apdwp-4XUn5j-jSHfRS-9fAZ86-eueiqp-e5SPwu-e5MbcZ- 9tJQdd- 5f4rJT-9HsoqF-9hud4U- e5MaQX-52mMrQ-e5M9WX/ GitHub Logo: open-source-software-and-more/ Twitter Logo: Twitter_bird_logo_2012.svg mu-ruby-template: mu-cl-resources: mu-project: mu-semtech/mu-project b1qFS-5nW8RE-4XQciS-7P4d2M-fcJrSw- 4BFdFe-eeeL3U-7NmZah-5d87sF-68AumY-dsrDuJ-68wgj8-qc8eFQ-87br53-9P9rDt-4BKw9G-RF34ho-TosZvG-878cZX-7EdrUZ-89s9TJ-4BFebF-5B6SFH-4BKw5f-pFSyd-VWMxDV-9yGdaJ- dfCama-7tGsfM-y7Avs-bu5LUt-7ZMRsc-fs8mh2-tw7JN-4dGcFB-8xSsMz-nktNfw-2VBNK-7GiQEy-nnvv8Z eeKJac-bLsdaK-9zhVG1-n9gwFN-d54eqS-8uJCbZ- aaRdq9-eP2SdB-rd3rho-hcCjht-d8sJuN-pgtoo9-e9dgJL-2qdpwR-6p1a48-d54h85-ekh1kE-D9uR9c-ojB38x-4YB5p5-6UUkDm-9FbBY8-9ZfVqH-57q8DD-9qWu4w-2xAzyk-82FAtP- EK7Km-fgpz5y-4YSvHt-8fcr8Z-932Wnm-d54mgs-nWQFct-96ZKbg-5rT9Qt-natQkd-5teooV-e3KkQV-dMKrEt-3a1Ne5-2yeaAg-71K499-9ayB82-54LgcX/ Mechelen uri=& %2FQ493522%3E.%0D%0A++%3Fh+owl%3AsameAs+%3Fs.%0D%0A++%3Fh+foaf%3Ahomepage+%3Fsite.%0D%0A++%3Fh+dbp%3Aname+%3Fname.%0D%0A%7D%0D%0A%0D%0A%0D%0A&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML _redir_for_hrefs=&timeout=30000&debug=on&run=+Run+Query+ 5eDrNx- bzmwMC-amjKMc-2e8zVU-9fzrFZ-hUobba-bxtMvP-5Np5za-5gRG6g-bzmwPs-d9K1Bc-bkSEGt-bw3ZQV-66Davt-b6EXke-egPS9t-bNgawP-bNgbmk-fPxGqz-fsXK2T-JHRMnJ-bNgaur-2A1ce-8iLdBT-RD9qP3-RD9qCb-ishC4V- bzmwX3-sHC6yq-WqknzF-777FW7-ojNSvV-khpPit-o4xe7r-pzJY1X-5fZJ94-M6wMD5-khqtvZ-AJR5Kw-5aCCcP-cbxNbJ aippf7-9kMTw7-JkELqH-bUYXoA-pn1WtL-bkNwnp-q71M5T-bpNyGe-adkduX-chEfau-J1HXj1-c1VtC-fL89Cq-b2qBzv-rdEFvK-dVK1R-5W1XmD-a1TrpD-yYdcp-4D87s8-9VDoNo-7BDKnc-sv7Eyp-4PT1ZR-GK4SR-7wtzVF-7U9mPB- 4e5gsE-bkNwXv-4QAa4w-VqAK7R-4Qw1Dp-q7jq49-chEaLb-3rFin-dYKokD-9GapDu-bkNxdX-aWpyqP-dsxEBu-cbo125-q71Mzk-bpNLCt-9kN2A3-bkNwFZ-aWTq7t-VJ3NWF-bUmuNN-9c6rNm 8244369739/in/photolist-dywxTR-e7YVJL-UodiQu-5jhfU6-dFPPin-kweLCx-7hL9AT-i7arhE-hv3CGC-khqtLi-r3woAG-Ws9dLt-WXd3rQ-dRbXp3-dADspH-ndhiJD-bkbY3h-i3NEP6-Vw1xYM-V6myVs-LNdz9B-kwecKk-9BXY79- Vba1Xj-khpNqM-qntpoT-pxXgHn-kwTrDV-Us2Kqs-kwDSas-6wX9GD-r1j98o-bxTMss-r3sfj8-9mMqHx-dPcqJ1-pn3Mi4-pQd6Nt-dZUzW9-5SLpFa-7YLgj7-Xmy3CG-7w564c-8ffSaJ-UjAVpd-jzi6jL-pNmAjY-dE4u2v-kzox7D-cw8Rd9 2016/start_interface_background.png dNnzX5-fHnJhb-axebUS-SQYNXN-aartBG-dbXycb-77JH3Z-5gcSxe-pBqMXx-8s3qVd-9C1Gj9-k25sMf-esjBQ-f7s8X-5kLpry-4xAdWe-7n61dm-4eF9CC-aGN96H-qem58t-eLa5Ap-9WaWEe-jeXAhv-dhMHpj-4HxX4D-fUp4yu-aZQNW- cveJpf-5WAdxf-8UCbKW-dRnxLS-bmQwtT-fu7Jiu-g8sZxB-4UQA74-2HVntV-dDCwFE-8AjJ68 dbXycb-77JH3Z-5gcSxe-pBqMXx-8s3qVd-9C1Gj9-k25sMf-esjBQ-f7s8X-5kLpry-4xAdWe-7n61dm-4eF9CC-aGN96H-qem58t-eLa5Ap-9WaWEe-jeXAhv-dhMHpj-4HxX4D-fUp4yu-aZQNW-cveJpf-5WAdxf-8UCbKW-dRnxLS-bmQwtT- fu7Jiu-g8sZxB-4UQA74-2HVntV-dDCwFE-8AjJ68 UXu6tr-VJaHBj- TrTv9W-b3avJ6-SyBwwc-SvVqru-eiiXTd-WuHLXC-agrRD4-4DX1uB-SRXAch-TqSowy-bupAbm-VALapW-SyBvK2-Xt7PaJ-TdVb11-V8fjeA-bq3t9j-XMrxTv-Vp3fAJ-bAHbfa-XvDkp5-XGtjjh-cuNNPf-VgcEn6-cXoU91- TUtbH2-kKijCm-XruZpQ-arM9WT-Vmz5rN-e5YFrT-9fXtHs-cXoSYL-UiUXYc-TPb1EU-Ucy8ZT-UDpaZY