WebRTC�
How we built ITMS2014+
...and did not pay for software licences
Martin Kováčik
@martinkovacik
#01
Why open source ?
#02
ITMS2014+ architecture
#03
Some interesting numbers
#04
Lessons learned & Final thoughts
Wrong
“Let’s build it on open source, it’s FREE”
Better
What are the requirements ?
Are they met by existing open source frameworks, libraries, tools... ?
Are they mature enough and alive ?
… and then, build it on open source :)
Requirements
In no particular order ...
Compiled language
Requirements
In no particular order ...
Localhost development with minimal external dependencies
Actual developer machine
Requirements
In no particular order ...
No JSFs, Liferays, ...
Database requirements
Application server requirements
#02
ITMS2014+ architecture
#01
Why open source
#03
Some interesting numbers
#04
Lessons learned & Final thoughts
ITMS2014+ architecture stack
Full list at: www.itms2014.sk/we-love-oss (version 6.3+)
Git branching model (http://bit.ly/197szRP)
Audit subsystem - roll your own
Requirements:
A LOT of data
Audit subsystem - roll your own
“MongoDB is web scale”
Requirements:
A LOT of data
Audit subsystem - ELK + Redis Stack
Server 1
+
Logstash forwarder
Server n
+
Logstash forwarder
. . .
Redis
+
Logstash indexer
Elasticsearch
Kibana
Audit subsystem - ELK + Redis Stack
Online documentation server
Requirements:
Online documentation server
Requirements:
140 lines of GO code
Testing + App monitoring
#03
Some interesting numbers
#01
Why open source
#02
ITMS2014+ architecture
#04
Lessons learned & Final thoughts
What people think...
… how it really is
Is ITMS2014+ big ?
java | ? |
sql | ? |
css | ? |
jrxml | ? |
js | ? |
utf8.properties | ? |
xml | ? |
html | ? |
go | ? |
LOC per filetype
Number of unique screens
?
Project build time ?
?
Is ITMS2014+ big ?
java | 864160 |
sql | 298228 |
css | 56764 |
jrxml | 53717 |
js | 38448 |
utf8.properties | 16228 |
xml | 13212 |
html | 9326 |
go | 294 |
LOC per filetype
Number of unique screens
1224
Project build time ?
01:30 min excl. tests
12:58 min incl. tests
#04
Lessons Learned & Final thoughts
#01
Why open source
#02
ITMS2014+ architecture
#03
Some interesting numbers
ORM
is DIFFICULT to tame
generates suboptimal queries
N+1 behind every corner
only good for CRUDs
Sometimes you don’t need
Enterprise Service Bus
When not sure prototype
DO NOT trust white collar architects & product materials
Things change. Adapt.
Developer productivity is crucial
Experiment !
you may be surprised what happens :)
Prefer simple solutions
&
Don’t be MEGALOMANIAC
Thanks!
Martin Kováčik
@martinkovacik