서론

개발자에게도 Graphite란 프레임워크는 굉장히 생소한 용어이다. 최근 IoT 분야의 FE 개발에서 Maximo framework와 연동하여 사용하는 Graphite 프레임워크는 무엇인지, 어떠한 특징들을 가지고 있는지 하나씩 정리해 볼 예정이다.

Graphite란 무엇인가?

Graphiteapplication framework 중 하나인데 가장 큰 특징으로는 선언적인 XML과 약간의 Javascript 문법을 사용하여 반응형 웹과 모바일 어플리케이션을 생성할 수 있다.

Graphite의 XML 파일들은(= MAML 파일이라고도 칭함) ReactJS 애플리케이션으로 자동적으로 변환된다. 그 과정속에서 data bindings, data formatting, localization, validation 등의 과정 또한 빌드시 자동적으로 수행된다. 이러한 과정들은 개발자가 앱개발을 쉽게 구성할 수 있도록 해주고 약간의 js문법으로 client side의 비즈니스 검증이 수행될 수 있다.


Graphite는 XML file에서 시작된다. Application Processor을 통해 XML 파일들은 ReactJS 컴포넌트들로 변환되게 된다.이 과정에서 Maximo와 Watson IoT 의 컴포넌트들이 연동된다. 자동적으로 생성된 이 어플리케이션은 기본적인 ReactJS build tool을 사용하며, Maximo에 배포된다.생성된 앱은 간단한 정적 HTML,CSS,JS 파일들로 구성되며 REST API를 사용하여 Maximo와 커뮤니케이션을 한다. 아키텍처는 아래 사진과 같다.

Graphite architecture


위의 다이어그램에 나와있듯이 Application Processor에서 XML파일을 변환할때 Component registry를 사용한다. 이 레지스트리는 UI component의 계약서 같은 역할을 한다. 레지스트리에는 각 컴포넌트의 속성, 관계, 예시등을 정의해놓는다. 이렇게 정의된 모든 것들은 XML에서 각각의 태그를 사용할때 검증용으로 사용된다. 따라서 레지스트리에 정의해 놓은 property 들만 xml 파일내에서 각 태그의 속성값으로 넣어 사용할 수 있게 된다. 이런것들은 어떻게 보면 약간의 부가 업무로 느껴질 수 있지만 시간이 지날수록 이러한 작은 역할들이 큰 효과를 내어 전체 체계가 더 견고해진다.

Note.
Graphite는 Maximo 기술요소이며 Maximo 안에 탑재되어 있다. 이 프레임워크는 pluggable 하며 다른 data source나 REST API와도 통합될 수있다. Graphite는 ReactJS 애플리케이션을 생성하지만 다른 추가적인 UI FE 아키텍처도 지원 가능하다.



ReactJS 앱을 생성하는 구조가 과연 효율적일까?

일반적으로 이에 대한 많은 궁금증들이 있다. 바로 React, Polymer, Angular 등을 사용하는 것보다 위와 같은 방식으로 생성하여 사용하는게 더 느리지 않을까?

이에 대해 몇가지 오해가 존재한다.
- Framework 없이 application을 생성하는게 더 빠를것이다.
-> 앱개발자가 앱을 생성할때 framework 없이 제작하였다 할지라도 그들은 결국에는 framework를 생성하게 될 것이다.

대부분의 개발에서 framework를 사용하는 이유는 바로 이런저런 여러 시행착오가 있었고 framework를 사용하여 개발하는것이 결국에는 더 빠르고 안정적인 시스템개발로 이어지기 때문이라고 생각한다. 이에 대한 Graphite의 장점들은 다음 포스팅에서 계속 진행하도록 한다.