Upload
phungdien
View
215
Download
0
Embed Size (px)
Citation preview
Lupapiste – an interactive service for citizens
with HTML 5 JS + Clojure + MongoDB
Nääsvillen oliopäivät 13.12.2012
Senior Software Designer
Timo Lehtonen [email protected]
Solita – an ICT company from Nääsville
2012
Finlayson 1962: Thousands of people in manufacturing business
Copyright: Tampereen kaupungin kuva-arkisto
Finlayson 2012: 200 people manufacturing Online businesses, BI solutions, ERP systems, …
Aloitus Aamulehti 23.8.2012
Lupapiste handles 16 permit types in 20 pilot municipalities in the first phase
Haikala, I., and J. Märijärvi. "Ohjelmistotuotanto. 11. p." Jyväskylä: Gummerrus Kirjapaino Oy (2006).
Haikala, I., and J. Märijärvi. "Ohjelmistotuotanto. 11. p." Jyväskylä: Gummerrus Kirjapaino Oy (2006).
Pekka Abrahams-son at Oliopäivät 2012: ”Be ready to fail. Create a theory.”
Pasi Kovanen, Jarkko Järvenpää, Vincit at Oliopäivät 2012: try, measure and learn, try again
A similar circle of ”do, make a theory, do (fail?) again!”
MongoDB
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
{”ok”: ”true”}
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
{”ok”: ”true”}
GET /rest/application
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
{”ok”: ”true”}
GET /rest/application
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
{”ok”: ”true”}
GET /rest/application
Clojure back-end
POST /rest/command: {”command”: ”add-comment”
”applicationId”: ”123”
”text”: ”Autotallin räys…”}
Command
MongoDB
Application Architecture
{”ok”: ”true”}
GET /rest/application
4
Be slow – design the schema first. Design it using a UI demo.
A new foundation added at Oliopäivät 2012.
Be slow - schema first
Schema - Greek word skhēma - shape, diagram, or more generally plan.
Source: Uusi sivistyssanakirja freely translated
4
Be slow – design the schema first. Design it using a UI demo.
Be slow - schema first
Schema - Greek word skhēma - shape, diagram, or more generally plan.
Source: Uusi sivistyssanakirja freely translated
Plan 1. Lupapiste data model diagram
4
Be slow – design the schema first. Design it using a UI demo.
Be slow - Proof the schema with real data
Plan 1b. Data model with explanation.
Schema - Greek word skhēma - shape, diagram, or more generally plan.
Source: Uusi sivistyssanakirja freely translated
4
Be slow – design the schema first. Design it using a UI demo.
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Int 1 Int 2
BI
Int 3
Clojure back-end
REST API
JSON
REST API
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Integration 1
Clojure back-end
REST API
JSON Integration 2
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Integration 1 Integration 3
Clojure back-end
REST API
JSON
REST API
Integration 2
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Integration 1 Integration 3
Clojure back-end
REST API
JSON
REST API
Integration 2
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Integration 1 Integration 3
Clojure back-end
REST API
JSON
REST API
Integration 2
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Integration 1 Integration 3
Clojure back-end
REST API
JSON
REST API
Integration 2
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Integration 1 Integration 3
Clojure back-end
REST API
JSON
REST API
Integration 2
BI
Big Data
Then build an app on top of it
HTML 5 JS SPA UI
Clojure back-end
REST API
JSON
BI
Integration 1 Integration 3
REST API
Integration 2
Database
HTML 5 JS SPA UI
Clojure back-end
REST API
JSON
BI
Integration 1 Integration 3
REST API
Integration 2 Then build an app on top of it
Relational database has a schema. It has a plan with constraints.
Database
HTML 5 JS SPA UI
Clojure back-end
REST API
JSON
BI
Integration 1 Integration 3
REST API
Integration 2 Then build an app on top of it
Relational database has a schema. It has a plan with constraints.
Database
HTML 5 JS SPA UI
Clojure back-end
REST API
JSON
BI
Integration 1 Integration 3
REST API
Integration 2 Then build an app on top of it
Relational database has a schema. It has a plan with constraints.
Database
HTML 5 JS SPA UI
Clojure back-end
REST API
JSON
BI
Integration 1 Integration 3
REST API
Integration 2 Then build an app on top of it
Relational database has a schema. It has a plan with constraints.
4
Be slow – design the schema first. Design it using a UI demo.
1. The society has constraints, because people make errors
• You can not build a sauna everywhere, because its unsafe of would ruin the beautiful lake scenes
2. Use database schema with constraints, because people make errors
• You cannot refactor data model field names easily, so use a schema and a validator to prevent future errors
3. Then build an app on top of it