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.

mu.semte.ch: A transitional architecture for Linked Data

54 views

Published on

Presentation by Aad Versteden & Niels Vandekeybus at Open Belgium 2018 - http://2018.openbelgium.be/session/musemtech-transitional-architecture-linked-data

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

mu.semte.ch: A transitional architecture for Linked Data

  1. 1. redpencil.io redpencil.io A transitional architecture for Linked Data Aad Versteden & Niels Vandekeybus from redpencil.io for OpenBelgium
  2. 2. redpencil.io - 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 redpencil.io for Open Belgium WHOOPS Linked Data does not offer this . . . yet
  4. 4. redpencil.io microservices birds-eye
  5. 5. redpencil.io - Easy to understand - Easy to debug - Easy to reuse Microservices are awesome
  6. 6. redpencil.io Microservices are complex - Data model dependencies - API dependencies - Disaster analysis
  7. 7. redpencil.io - Direct connection to the database - Using semantic modelling Microservices are to be reengineered
  8. 8. redpencil.io - Embrace Semantic Model - Functional microservices - Standard APIs Microservices are micro standalone services
  9. 9. redpencil.io … taking advantage of the semantic domain model
  10. 10. redpencil.io Some history Share code on personal projects Rails is not über-productive Stay light, choose later Use microservices and semantic model
  11. 11. redpencil.io mu.semte.ch
  12. 12. redpencil.io 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] https://github.com/mu-semtech/ https://mu.semte.ch
  13. 13. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of redpencil.io for Open Belgium KISS Keep It Super Simple
  14. 14. redpencil.io 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 redpencil.io for Open Belgium Simple mental model user-facing http-services
  16. 16. redpencil.io 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 redpencil.io for Open Belgium Semantic models Many actors, telling parts of the same story
  18. 18. redpencil.io 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. redpencil.io Semantic models Registration service Login service
  20. 20. redpencil.io 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 redpencil.io for Open Belgium Docker Deployment made easy
  22. 22. redpencil.io 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 hub.docker.com - Clean project description - Always works Share using Docker
  23. 23. redpencil.ioredpencil.ioFrom Aad Versteden & Niels Vandekeybus of redpencil.io for Open Belgium Reuse everything
  24. 24. redpencil.io Reuse everything - Templates: basics for a service - Configurable services - mu-cl-resources - Ember add-ons - Data table addon - Login add-on
  25. 25. redpencil.io 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 <you@provider.com> 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. redpencil.io 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 "https://data.lblod.info/id/agendapunten/") :on-path "agendapunten") [mu-cl-resources] Full JSONAPI from abstract description
  27. 27. redpencil.io 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 redpencil.io for Open Belgium What we learned
  29. 29. redpencil.io 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 redpencil.io for Open Belgium About the future
  31. 31. redpencil.io 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. redpencil.io More performance - ember-fastboot: Faster first page render - mu-cache: Smart caching strategies in core microservices - mu-cl-resources: Partial resource caching
  33. 33. redpencil.io More authority Describe authorization outside the microservices: - Simplify mental model - Help in sharing content - Open gate to advanced applications
  34. 34. redpencil.io 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 redpencil.io for Open Belgium More links
  36. 36. redpencil.io Resources used & interesting links Lego Time Star Wars: https://www.flickr.com/photos/eurobricks-starwars/5223334274/in/photolist-8XyXiu-7BJ9Xp-c2btBw-davQBK- 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: http://www.sciencemag.org/news/2015/10/ bizarre-reactor-might-save- nuclear-fusion 300SL: https://www. flickr.com/photos/smfan/7181631212/in/photolist-bWBJKN-o52kEN- 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 http://www.quickmeme.com/meme/3stqet Big Data Europe: https://www.big-data-europe.eu/ Docker Logo: http://www.silicon.de/41608942/microsoft-optimiert-windows-server- 2016- fuer-die- cloud/ webCAT: https://github.com/tenforce/webcat Banksy Van: http://artcentron.com/2016/06/22/banksy-graffiti-art-swat-van-sale/ #prettyPhoto Banksy Bananas: https://www.touchofmod ern.com/sales/banksy-8a9ea26d-040f-4435-ada1-86e7a6b4a05c/pulp-fiction-bananas Your Data Stories platoform: http://platform.yourdatastories.eu/ Star Wars Clones box: https://www.flickr.com/ 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: https://blog.adafruit.com/2012/12/31/github-has-big-dreams-for- open-source-software-and-more/ Twitter Logo: https://en.wikipedia.org/wiki/File: Twitter_bird_logo_2012.svg mu-ruby-template: https://github.com/mu-semtech/mu-ruby-template mu-cl-resources: https://github.com/mu-semtech/mu-cl-resources mu-project: https://github.com/ mu-semtech/mu-project https://www.flickr.com/photos/thecampbell/538006470/in/photolist-PxqzC-VvKpZz-5fxVBU-9BdHcy-jun5Rc-b3hJyr-4kwAzq-4aDxKG-9eikzy-oN1cS- 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 https://www.flickr.com/photos/cluczkow/8690663851/in/photolist-eeXVzV-82JLku-fJ9vu-c7ZA4w-fjWxes- 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/ https://en.wikipedia.org/wiki/Leuven https://en.wikipedia.org/wiki/Tielt-Winge https://en.wikipedia.org/wiki/ Mechelen https://en.wikipedia.org/wiki/Ghent http://dbpedia.org/sparql?default-graph- uri=&query=SELECT+%3Fname+%3Fsite%0D%0AWHERE+%7B%0D%0A++%3Fs+a+%3Chttp%3A%2F%2Fwww.wikidata.org%2Fentity %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+ https://www.flickr.com/photos/cali4beach/6790834651/in/photolist-bm5Ny4-pQkJgC-dYksek-9PKymD-beLUSg-egPTkg-5gjPjk-ghTSVc-9dPT9n- 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 https://openthebox.be https://www.flickr.com/photos/mrsbluff/3176611820/in/photolist-5QGY2j- 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 https://www.flickr.com/photos/gsfc/ 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 http://ap-verlag.de/clickandbuilds/WordPress/MyCMS4/wp-content/uploads/2017/08/grafik-gartner-hype-cycle-2017.jpg https://media.gcflearnfree.org/content/5690213b4ba91213b0054eb9_01_08_ 2016/start_interface_background.png https://www.flickr.com/photos/michael_wacker/17148486915/in/photolist-s8mtHv-agNv1-4cour1-XZD99V-5ykQv2-7FZrKM-Di7LgY-jXbgSS-fYzPax-92GCXs-eCA45-fzMq36- 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 https://media.gcflearnfree.org/content/5690213b4ba91213b0054eb9_01_08_2016/start_interface_background.png https://www.flickr.com/photos/michael_wacker/17148486915/in/photolist-s8mtHv-agNv1-4cour1-XZD99V-5ykQv2-7FZrKM-Di7LgY-jXbgSS-fYzPax-92GCXs-eCA45-fzMq36-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 https://www.flickr.com/photos/113306963@N05/36557530146/in/photolist-XGsU4U-oGo3ik-TEaP7K-WRMiBi-XymJYe-XGsR6u-V5fVcP-kjF94x-9o8SH7-VW8c8m-XavzLf- 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 https://commons.wikimedia.org/wiki/File:Teacup_clipart.svg

×