cikb - software architecture analysis design
TRANSCRIPT
![Page 1: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/1.jpg)
By Antonio Castellón (as Blue-Infinity consultant) , February, 2014
for Philip Morris International R&D
CIKB Software Architecture Design Proposal
![Page 2: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/2.jpg)
Problem : Data Complex
![Page 3: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/3.jpg)
Problem : Data Complex to Model
![Page 4: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/4.jpg)
Problem : Dynamic Data ( Uncertainty )
End User requirements and data itself sometimes generate different types of uncertainty
![Page 5: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/5.jpg)
Problem : GUI - User experience
I’m not stupid but …. this interface
is too complicated !!!
![Page 6: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/6.jpg)
Problem : GUI - Adaptable + Flexible
![Page 7: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/7.jpg)
Problem : GUI – Technology + Design
Be careful with awesome solutions that not fit design and engineering at the same time
![Page 8: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/8.jpg)
“The Solution” is a mix of 4 …
![Page 9: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/9.jpg)
“The Solution” - Is a mix of …
An Architecture
A set of Data
A cool User Interface
And a mad developer to do it (joke)
![Page 10: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/10.jpg)
“The Solution” – Brick 1
An Architecture
![Page 11: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/11.jpg)
Architecture – we aim to
• Reduce the complexity• To be reusable• Easy in deployment• Allows dynamic updates• To be adaptive• Fast in responses• Low memory profile• To provide security• …
![Page 12: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/12.jpg)
Architecture – The response
![Page 13: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/13.jpg)
Architecture – The response
Open Service Gateway initiative
Defines the standard.
![Page 14: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/14.jpg)
Architecture – OSGi supported by
![Page 15: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/15.jpg)
Architecture – OSGi implemented by …
. . .
![Page 16: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/16.jpg)
Architecture – In summary, OSGi goals are …
Service Oriented + Modular (bundles)
Bundle (x)
Service (x’)
Service (y)
Service (x)
![Page 17: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/17.jpg)
Architecture – OSGi : Simple overview
Console Logging Admin …
Web ServerWAB
Application 1
WAB Application
2…
Application Service 1
Application Service 2 …
…
OSGi Instance 1
JVM
…
Bundles to be developed for us
Bundles to be installed
![Page 18: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/18.jpg)
A set of Data
“The Solution” – Brick 2
![Page 19: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/19.jpg)
Data
NoSQL( Not Only SQL )
![Page 20: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/20.jpg)
Data – NoSQL – Different implementations
![Page 21: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/21.jpg)
Data - NoSQL – Comparing data structure
Image from: http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
![Page 22: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/22.jpg)
Data - NoSQL – Compare
98% of the business requirements
There is still billions of nodes and relationships
![Page 23: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/23.jpg)
Data – Our selection
Graph Databases
![Page 24: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/24.jpg)
Data – Graph Databases – Why?
Flexible data structureDoesn’t matter if the relations will change in the future.
Closer match to business logic
![Page 25: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/25.jpg)
Data – Graph Databases – Why?
Natural query system You tell what you want, not how to get it.
with recursive cluster (party, path, depth) as ( select cast(@userId as character varying), cast(@userId as character varying), 1 union ( select (case when this.party = amc.userA then amc.userB when this.party = amc.userB then amc.userA end), (this.path || '.' || (case when this.party = amc.userA then amc.userB when this.party = amc.userB then amc.userA end)), this.depth + 1 from cluster this, chat amc where ((this.party = amc.userA and position(amc.userB in this.path) = 0) or (this.party = amc.userB and position(amc.userA in this.path) = 0)) AND this.depth < @depth + 1 ) ) select party, path from cluster where not exists ( select * from cluster c2 where cluster.party = c2.party and ( char_length(cluster.path) > char_length(c2.path) or (char_length(cluster.path) = char_length(c2.path)) and (cluster.path > c2.path) ) ) order by party, path;
SQL = several hours to be executed
VS
START b = node:User(UserId=‘Manolo') MATCH (b) --(friend)--(friendoffriend) RETURN count(friendoffriend)
Cypher Language = 635ms
![Page 26: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/26.jpg)
Data - Graph Databases – Why?
Fits very well with complex data
![Page 27: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/27.jpg)
Data - Graph Databases – Why?
Fits very well with Bio-Informatics
0.9 Billion relationsips
![Page 28: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/28.jpg)
Data – Graph Databases – Why?
Fast Prototyping and developmentWe don’t need to lose too much time to define the schema (fine-grained).
![Page 29: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/29.jpg)
Data - Graph Databases – What is it?
Properties
Labels
Relationships
![Page 30: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/30.jpg)
Data - Graph Databases - Implemented by …
![Page 31: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/31.jpg)
Data - Graph Databases - Compare
Name API Query Methods
Consistency Staff (people) / Community
OrientDB Java Traverser API, Blueprints, Rexster
Own SQL-like Query Language, Gremlin
ACID, MVCC 3 / Low
Neo4j Java, Python, JPython, Ruby, JRuby, JavaScript (Node.js), PHP, .NET, Django, Clojure, Spring, Scala, or REST (any language)
Cypher (native/preferred), Native Java APIs (special cases), Traverser API, REST, Blueprints, Gremlin
ACID 42 / Very High
DEX Java, C++, .NET
Native Java, C# and C++ APIs, Blueprints, Gremlin
Consistency, durability and partial isolation and atomicity
5 / ?
![Page 32: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/32.jpg)
Data - Graph Databases – Compare
![Page 33: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/33.jpg)
Data - Graph Databases - Neo4j customers
![Page 34: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/34.jpg)
Data - Graph Database - Neo4j - Partners
![Page 35: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/35.jpg)
Data - Graph Database - Neo4j - Licenses
![Page 36: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/36.jpg)
“The Solution” – Brick 3
A cool User Interface
![Page 37: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/37.jpg)
GUI
+
![Page 38: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/38.jpg)
GUI
UI Graphs
Model / View / Controller ( on Browser using Jscript )
JAX-RS (RESTful web services) JSON responses
On OSGi bundle as a webservice
On Browser client
Data Driven Documents
![Page 39: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/39.jpg)
GUI - AngularJS – What is it?
RESTful+
JSON
![Page 40: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/40.jpg)
GUI - D3.js – What is it?
![Page 41: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/41.jpg)
GUI - D3.js – Rich and cool interfaces
![Page 43: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/43.jpg)
GUI - Licenses
No requires any payment to use or to modify their code.
![Page 44: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/44.jpg)
“The Solution” – The last brick
At least a mad developer to do it (joke)
![Page 45: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/45.jpg)
Architecture – Current draft
KARAF :: OSGi kernel platform
Shell admin web admin console
ServiceMix (Optional) :: Enterprise Service Bus
Groovy 2.2.1 Runtime
Jetty Server 8.1.9 Runtime
CIK
B
Neo4j 2.0.0 Server
Core ( Business )
Database connector
CVS connector
SAW connector
LIMS connector
User Portal
UCSD Connector
XML Connector
AngularJS + D3.js
…Admin Portal
…
![Page 46: CIKB - Software Architecture Analysis Design](https://reader034.vdocuments.net/reader034/viewer/2022051520/58a353ad1a28ab14598b4f99/html5/thumbnails/46.jpg)
Thanks you for your attention.
End