state of-the-art web applications using microservices and linked data
TRANSCRIPT
State-of-the-art Web Applications using Microservices and Linked Data
Aad Versteden & Erika Pauwels
www.tenforce.com yourdatastories.eu
What is mu.semte.ch?
We were able to reuse a lot :-)
Supported by yourdatastories.eu
- Integrating data sources
- Making investigative journalism easy
- Check http://yourdatastories.eu :)
How we think about it
Why did we build it?
Why did we build it?- Personal projects
- Need code reuse
- Uncertain future (who will be the next big player)
- Change in web frontend landscape
- Change in web backend landscape
- Change in deployment landscape
- Need to roll your own
Many actors, one semantic model
Semantic model in mu.semte.ch
- Semantic model is the application’s domain
- Each microservice is an actor
- Integration is easy
- [FUTURE] Evaluate reasoning for complex or evolving applications
Automatic integration of services is awesome
… it is the bulk of what we explain to the un-indulged ...
… but you already know that ...
… give a taste of semantic technologies without a full buy-in.
Productivity is key
[Docker] Ease of installation & deployment- Completely isolated environment (like a Virtual Machine)
- Automatic download & installation
books:
image: madnificent/books-service:1.0.0
links:
- db:database
[JSONAPI] Automatic communication with frontend- Guidelines for REST resources on JSON APIs
- Limit discussion, point to jsonapi.org
{ "data": [{
"attributes": {
"name": "db",
"scaling": 1
},
"id": "ff9a62f3-6ecd-47da-95b1-aa310d29ffa5",
"type": "services",
"relationships": {
"pipeline": {
"links": { "self": "/services/ff9a62f3-6ecd-47da-95b1-aa310d29ffa5/links/pipeline-instance",
"related": "/services/ff9a62f3-6ecd-47da-95b1-aa310d29ffa5/pipeline-instance" }
}
}
}]}
- Make simple tasks simple
- Help follow best practices, don’t force
[Templates] Simple microservices
== Dockerfile ==FROM semtech/mu-ruby-template:1.2.0-ruby2.1 MAINTAINER Aad Versteden <[email protected]>
== web.rb ==get '/:id/count' do resp = query " PREFIX votes: <http://mu.semte.ch/vocabularies/ext/votes/> PREFIX mu: <http://mu.semte.ch/vocabularies/core/> SELECT (COUNT(?user) AS ?votes) WHERE { GRAPH <#{settings.graph}> { ?user votes:plusOne/mu:uuid \"#{sparql_string params['id']}\" } } "
status 200 { data: { attributes: { votes: resp.first["votes"].to_i } } }.to_jsonend
[Templates] Extensible services- Make simple tasks simple
- Help follow best practices, don’t force
(define-resource catalog () :class (s-prefix "dcat:Catalog") :properties `((:title :string ,(s-prefix "dct:title")) (:description :string ,(s-prefix "dct:description"))) :has-one `((publisher :via ,(s-prefix "dct:publisher") :as "publisher")) :has-many `((dataset :via ,(s-prefix "dcat:dataset") :as "datasets")) :resource-base (s-url "http://tenforce.com/catalogs/") :on-path "catalogs")
- Some backend services have standard frontend components
- The road towards web components
- Not semantic
[Ember addons] Sharing frontend code
> ember install ember-mu-login
= application.hbs =
{{login-form}}
Ease mental model
- A step towards semantic applications
- Extensive sharing of code
- Encourages experimentation
- State-of-the-art frontend applications
- It’s just a step
In conclusion
<Thank You> need more?
Erika Pauwels
- @ErikaPauwels
- http://github.com/erikap
Aad Versteden
- @impulsater
- http://github.com/madnificent
http://mu.semte.ch - http://tenforce.com - http://github.com/mu-semtech
This study was funded by yourdatastories.eu, as were parts of the microservices.