In-Flight Asset Management with Neo4j - Michael Wilmes @ GraphConnect London 2013

Post on 15-Jan-2015

3.111 views 1 download

Tags:

description

Being part of a flagship project that brings next-generation Inflight-Entertainment systems onto passenger aircrafts, Michael Wilmes tackles the operational aspects of managing IT systems in flight, on ground and anywhere in between. He will give insight on what key factors made Neo4j the database of choice during development of a custom tailored asset management application and how Neo4j was integrated using technologies like Spring, Thymeleaf, Bootstrap and D3.js.

Transcript of In-Flight Asset Management with Neo4j - Michael Wilmes @ GraphConnect London 2013

>  Inflight Asset Management

Nov 14, 2013

About us

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 2

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 3

§  Lufthansa - leading group of European quality carriers §  more than 103 million passengers in 2012 Passenger Airlines

Catering

Maintenance, Repair & Overhaul (MRO)

Logistics

IT Services

§  Lufthansa Cargo AG - One of the world’s leading cargo airlines

§  1,724 million tons of freight / mail shipped in 2012

§  Lufthansa Systems AG - One of the leading IT service providers for the airline and aviation industry

§  Around 450 customers worldwide, more than 300 airlines

§  LSG Sky Chefs - The world’s largest airline caterer §  Provider of integrated inflight service solutions

§  Lufthansa Technik - worldwide leading provider of maintenance, repair and overhaul services for civil aircraft

§  More than 33 operating subsidiaries and affiliates

Michael Wilmes

Solution architect @ BoardConnect

► michael.wilmes@lhsystems.com

► @theeagermichael

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 4

The product

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 5

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 6

The problem

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 7

Business Rules

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 8

Aircrafts

Software

Hardware Lifecycle information

Configuration

Virtual Containers

Content Items Licenses

How to keep track of what we rolled out?

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 9

The questions

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 10

Database How to efficiently store and receive complex data maintaining high performance?

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 11

Access How to provide easy access to data backend via web proven technologies?

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 12

Visualization How to visualize complex networks and dependencies?

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 13

The attitude

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 14

Radical inclusion

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 15

Acceptance Accept the complexity and nature of the product. Welcome data were possible. Sense might not be immediately apparent.

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 16

Embrace change. Product develops at a rapid change. Live with it. Welcome connectivity. API first. Make the added value accessible.

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 17

The approach

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 18

Features and Requirements

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 19

Realtime access by aircraft installations and BC suppliers

Asset Management

Constant performance independant of query

type and size of dependency trees

Schema agility to easily accomodate

product innovations.

Configuration Database

Realtime access for unattended device

configuration

Master Data Management

Complete Real-World view of BoardConnect environment as it IS.

Horizontal scale-out possibility

Operational Database

Does the problem nature really differ from social networks?

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 20

Actually NO.

Big value lies in the relation of information. Modern approachs targeting the social network world might be equally well suited to asset management problem scopes.

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 21

The architecture

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 22

REST API

UI

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 23

Asset Management

Aircraft Data Feed

Media Library

CMS

CMDB

misc. ETL

>  Development goals

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 24

WebService

Business Logic

Embedded Database

ready for use instantly, grows with the needs

low maintenance efforts, low cost development

easy visualization

whiteboard friendly (instant documentation) embraces change

easy deployment

maps reality 1:1

The good thing?

§  We start from

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 25

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 26 (this is a blank page)

Spring Framework Why? § Great community backing § Approaching today‘s problems (NOSQL, Enterprise-Integration, REST, Big Data) § Lightweight deployment

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 27

Neo4j Embedded Why? § Puts the database back into the application domain. § Induces no additional restraints. § Avoiding dead-ends. Provides capable foundation for future queries not yet foreseen. § „What you see is what it is“. Transparency.

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 28

Neo4j Embedded Why?

A perfect match for the radical inclusion paradigm

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 29

Spring Data Neo4j Why? § Allows for POJO domain based development § Natural extension of the Spring Data provided programming model § Provides a high level uniform access to the persistence layer while allowing core-API fallback

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 30

Spring Data REST Why? § Exposes domain objects using auto generated full fledged CRUD controllers § Supports custom DAO queries § Keeps you API on par with your ever evolving domain model

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 31

Thymeleaf Why? § Natural templates. Finally. § It‘s HTML you write. Well layed out. Standalone. § Easy integration with Spring MVC § Easy to learn and well documented

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 32

Boostrap Why? § Rapid UI development using CSS § Fallback to JS where needed § Responsive Web Design § Well established framework

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 33

D3.js Why? § Because it‘s awesome

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 34

>  Layered architecture, self containment

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 35

Neo4j Embedded

Spring Data Neo4j

Spring Framework

Business Layer

Spring MVC

Thymeleaf

Bootstrap D3.js

Spring Data REST }

.jar

The application

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 36

>  Oh my.... A graph!

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 37

D3.js / Autocomplete

Direct access (A

JAX

)

springdata REST

Implementation

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 38

>  Use rich relations where possible

Aircraft-[:CONTAINS]->AccessPoint

Aircraft-[:CONTAINS]->Server

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 39

Aircraft-[r:CONTAINS_BCAP]->AccessPoint

Aircraft-[r:CONTAINS_BCS]->Server

X

>  Graph aware POJO using SDN

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 40

@NodeEntity public abstract class AbstractAsset implements Asset, LastModifiedDateAware, Authored {

@GraphId private Long nodeId;

@NotNull @Indexed(unique = true, level=Level.INSTANCE) private String uuid;

@NotNull @Size(min = 3, max = 50) @Indexed(level=Level.INSTANCE) private String name;

private Date dateLastModified;

>  SDN provided ApplicationEventHandler (e.g. setting lifecycle properties)

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 41

@Override public void onApplicationEvent(BeforeSaveEvent event) ... { LastModifiedDateAware entity = (LastModifiedDateAware) event.getEntity(); entity.setDateLastModified(new Date()); … }

...things get even better with Neo4j 2.0 and SDN 3.0, especially §  labels §  optional constrains

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 42

>  Thymeleaf integration

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 43

Query examples

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 44

>  Single question ! Single query ! Instant response…

► What aircrafts have to be supplied with a new SSD in order to remove the movie from being shown to public?

► Are all licenses present that are needed for playback of all movies inside the freshly inserted hard drive on aircraft?

match (bcs)-[:INSTALLED_IN]-()-[:CLONED_FROM]->()-[CONTAINS*]->(video)-->(license) where bcs.name=… return license

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 45

>  Demo

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 46

Q & A

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 47

>  Ressources

Lufthansa Systems – http://www.lhsystems.com Neo4j – http://www.neo4j.org Spring – http://spring.io Spring Data Neo4j - http://www.neo4j.org/develop/spring Spring Data REST - http://projects.spring.io/spring-data-rest Thymeleaf - http://www.thymeleaf.org D3.js - http://d3js.org Bootstrap - http://getbootstrap.com

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 48

Michael Wilmes

Solution architect @ BoardConnect

► michael.wilmes@lhsystems.com

► @theeagermichael

Nov 14, 2013 Inflight Asset Management | Michael Wilmes Chart 49