46
By Antonio Castellón (as Blue-Infinity consultant) , February, 2014 for Philip Morris International R&D CIKB Software Architecture Design Proposal

CIKB - Software Architecture Analysis Design

Embed Size (px)

Citation preview

Page 1: CIKB - Software Architecture Analysis Design

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

Problem : Data Complex

Page 3: CIKB - Software Architecture Analysis Design

Problem : Data Complex to Model

Page 4: CIKB - Software Architecture Analysis Design

Problem : Dynamic Data ( Uncertainty )

End User requirements and data itself sometimes generate different types of uncertainty

Page 5: CIKB - Software Architecture Analysis Design

Problem : GUI - User experience

I’m not stupid but …. this interface

is too complicated !!!

Page 6: CIKB - Software Architecture Analysis Design

Problem : GUI - Adaptable + Flexible

Page 7: CIKB - Software Architecture Analysis Design

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

“The Solution” is a mix of 4 …

Page 9: CIKB - Software Architecture Analysis Design

“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

“The Solution” – Brick 1

An Architecture

Page 11: CIKB - Software Architecture Analysis Design

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

Architecture – The response

Page 13: CIKB - Software Architecture Analysis Design

Architecture – The response

Open Service Gateway initiative

Defines the standard.

Page 14: CIKB - Software Architecture Analysis Design

Architecture – OSGi supported by

Page 15: CIKB - Software Architecture Analysis Design

Architecture – OSGi implemented by …

. . .

Page 16: CIKB - Software Architecture Analysis Design

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

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

A set of Data

“The Solution” – Brick 2

Page 19: CIKB - Software Architecture Analysis Design

Data

NoSQL( Not Only SQL )

Page 20: CIKB - Software Architecture Analysis Design

Data – NoSQL – Different implementations

Page 21: CIKB - Software Architecture Analysis Design

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

Data - NoSQL – Compare

98% of the business requirements

There is still billions of nodes and relationships

Page 23: CIKB - Software Architecture Analysis Design

Data – Our selection

Graph Databases

Page 24: CIKB - Software Architecture Analysis Design

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

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

Data - Graph Databases – Why?

Fits very well with complex data

Page 27: CIKB - Software Architecture Analysis Design

Data - Graph Databases – Why?

Fits very well with Bio-Informatics

0.9 Billion relationsips

Page 28: CIKB - Software Architecture Analysis Design

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

Data - Graph Databases – What is it?

Properties

Labels

Relationships

Page 30: CIKB - Software Architecture Analysis Design

Data - Graph Databases - Implemented by …

Page 31: CIKB - Software Architecture Analysis Design

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

Data - Graph Databases – Compare

Page 33: CIKB - Software Architecture Analysis Design

Data - Graph Databases - Neo4j customers

Page 34: CIKB - Software Architecture Analysis Design

Data - Graph Database - Neo4j - Partners

Page 35: CIKB - Software Architecture Analysis Design

Data - Graph Database - Neo4j - Licenses

Page 36: CIKB - Software Architecture Analysis Design

“The Solution” – Brick 3

A cool User Interface

Page 37: CIKB - Software Architecture Analysis Design

GUI

+

Page 38: CIKB - Software Architecture Analysis Design

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

GUI - AngularJS – What is it?

RESTful+

JSON

Page 40: CIKB - Software Architecture Analysis Design

GUI - D3.js – What is it?

Page 41: CIKB - Software Architecture Analysis Design

GUI - D3.js – Rich and cool interfaces

Page 43: CIKB - Software Architecture Analysis Design

GUI - Licenses

No requires any payment to use or to modify their code.

Page 44: CIKB - Software Architecture Analysis Design

“The Solution” – The last brick

At least a mad developer to do it (joke)

Page 45: CIKB - Software Architecture Analysis Design

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

Thanks you for your attention.

End