2. 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
3. Some history
Share code on personal projects
Rails is not über-productive
Stay light, choose later
Use microservices and semantic model
5. 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
8. Simple mental model
TenForce supports publishing of open data.
- Use DCAT standard
- EDCAT 2.0 released
- mudCAT = back-end
- webCAT = front-end
- Custom configurations to match
specific customer needs.
11. 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.
14. Semantic models
We use the ECAS login for ESCO-related projects.
ESCO is a taxonomy of all Skills Competences and Occupations in Europe.
The Dacota team finds and classifies content. Brains for hire!
17. 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
- Runs on the Big Data Europe Platform
Share using Docker
18. Share using Docker
We are part of Big Data Europe
Making Big Data:
- Easy to get started
- Cheaper to maintain
… in any domain
- Now including Smart Big Data:
=> Semantics + Big Data = <3
20. Reuse everything
- Templates: basics for a service
- Configurable services
- mu-cl-resources
- Ember add-ons
- Hierarchy service + add-on
- Login service + add-on
21. 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
]
28. What we learned
- Extremely productive
- Code reuse
- Easy for juniors
- Customers like front-end
- Database performance is okayish
- Conscious playing with alternative solutions
30. Trigger microservices by changes in
semantic model.
Example:
- Compute KPIs when a new dataset is added
- Send email/tweet by writing it to the triplestore
Reactive programming
32. More authority
Describe authorization outside the microservices:
- Simplify mental model
- Help in sharing content
- Open gate to advanced
applications
search for Jonathan Langens if you want to know more
33. More interactivity
Push cache updates to all visiting clients.
Almost no development time to create
basic interactive applications
(eg: updating KPIs, chat applications, …)