28
GraphQL @ LeanIX Patrick Surrey & Dr. Niklas Henrich

GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Embed Size (px)

Citation preview

Page 1: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

GraphQL @ LeanIX

Patrick Surrey & Dr. Niklas Henrich

Page 2: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

2

Patrick Surrey

• At LeanIX for about a year

• Frontend Developer

Page 3: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

3

Niklas Henrich

• At LeanIX for about half a year

• Frontend Developer

Page 4: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Namhafte Unternehmen vertrauen bei ihrenHerausforderungen in der IT bereits auf LeanIX

4

Merger&Acquisition

Risiko-Management

ITKomplexitätsreduktion

DigitaleTransformation

Energie

Versicherung

Industrie

E-Commerce

Gesundheit

Logistik

Chemie&Pharma

Medien

Page 5: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

TOOL DEMO

5

Page 6: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Document ITArchitecture

Collaborate withinIT Community

Analyze, Design andExecute Roadmaps

Page 7: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Key Focus: Document complex IT Landscapes

7

Page 8: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

LEANIX 4.0:“PATHFINDER”

8

Page 9: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

LeanIX Data Model – Overview

9

Interface

Application

Provider

ITComponent

Project

UserGroup

DataObject

Tech.Stack

BusinessCapability

Process

Page 10: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

LeanIX Data Model – Overview

10

ITComponent

CustomFactSheets

CustomRelations

CustomAttributesA

B

C

LeanIXEAMDataModel LevelsofFlexibility

A

Page 11: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

LeanIX Data Model – Overview

11

ITComponent

CustomFactSheets

CustomRelations

CustomAttributesA

B

C

LeanIXEAMDataModel LevelsofFlexibility

Project

B

Page 12: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

LeanIX Data Model – Overview

12

CustomFactSheets

CustomRelations

CustomAttributesA

B

C

LeanIXEAMDataModel LevelsofFlexibility

Product

C

Page 13: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

13

Page 14: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Pathfinder is a complete rewrite of the LeanIX Core

14

Elastic&Graph

View

Controller

Model

DB

SinglePage App

API

DB

API

Frontend Services

BackendMicro Services

InfrastructureServices

Page 15: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

REST APIs are great – but have limitations

15

/capabilities /applications

GET GET

Page 16: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

16

“A query language for your API”

http://graphql.org/

Page 17: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

17

History

• 2012nativemobileclientforNewsFeed

• Early2015announcedpublicly(https://www.youtube.com/watch?v=9sc8Pyc51uU)

• Sep.2015officiallyopensourced

• Nov.2016:Manymoreusers

Page 18: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

18

Basic idea

Server

WHATisavailable

Client

WHICHdataisneeded

1.Schema

2.Datarequirements

Java,Node,Ruby,PHP,Go,Scala,.NET… SimpleHTTP-Client

http://graphql.org/code/

Page 19: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

LIVE DEMO

19

Page 20: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

20

Angular 2 architecture

HttpService

AuthHttpService

GraphqlService

CommentsServiceCommentsComponent

httpreq.

WriteComment CommentsList

UserInfo UserInfo Comment

loadComments()

toJSON &checkforerrors

BuildGraphQLquery

Page 21: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

21

Angular 2: Improvements

• String concatenation for query building

• Hard to unit test

• Hard to manipulate and combine

è Abstraction: Query, Fields, Parameters (utilize TypeScript)

Page 22: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Backend Architecture -Read Data

22

Arbiter(Domain-Level)

(Requestparsing)

TransitiveQueries SearchRetrieval

Page 23: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Backend Architecture -Write Data

23

Arbiter(Domain-Level)

(Requestparsing)

Page 24: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Backend Architecture -Write Data

24

Arbiter(Domain-Level)

(Requestparsing)

Page 25: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Backend Architecture -Write Data

25

Arbiter(Domain-Level)

(Requestparsing)

EventBus

Page 26: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Lessons learned

26

• Use GraphiQL early on (no need for cURL or Postman)

• No dead ends – it’s all a graph

• Be prepared to redesign

• Be prepared to discuss (generic vs. specific)

• No best practices / patterns available yet

Page 27: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Summary

27

Page 28: GraphQL in LeanIX Enterprise Architecture Management @ Bonnagile Meetup

Summary

28

Thanks!Questions?