고운플랫폼 / 사용자 매뉴얼 / 컴포넌트 프레임워크

소프트

고운플랫폼 / 사용자 매뉴얼 / 컴포넌트 프레임워크

리치 앱

사용자 매뉴얼 > 내용보기

 
목록 | 맨 위로 | 위로 | 아래 | 이전 | 다음

제목 : 컴포넌트 프레임워크

글쓴이: 고운플랫폼 | 게시한 날짜: 2017-05-18
| 글 날짜: 2016-08-16 | 열람수: 0 | 추천수: 0 | 비난수: 0

고운플랫폼의 컴포넌트 프레임워크

1. 서론

고운플랫폼은 컴포넌트 기반으로 개발된 시스템으로, 컴포넌트의 구성을 동적(dynamic)으로 적용할 수 있다는 특징이 있습니다.

오늘날 수 많은 웹 애플리케이션이 컴포넌트 기반으로 개발되지만, 그것의 구성을 변경하고 적용하기 위해서 웹 서비스를 중지한 후 다시시작 해야 하는 정적(static)인 방법을 사용합니다. 고운플랫폼에서는 시스템도구에 포함되어 있는 리치 앱을 사용하여, 웹 서비스를 중단하지 않고 애플리케이션의 구성을 변경하고 적용할 수 있는 동적인 방법을 제공합니다.

이 글은 동적 구성(dynamic configuration)이 가능한 컴포넌트 시스템으로서의, 고운플랫폼의 장점에 대하여 설명합니다.

2. 컴포넌트의 정의

컴포넌트(component) 시스템이란, 표준화된 인터페이스를 만족하는 부품을 조립하여 하나의 기능을 완성하도록 할 수 있는 시스템을 말합니다. 컴포넌트 오디오 시스템으로 예를들면, 스피커, 메인앰프, 믹싱엠프, CD 플레이어, 라디오 튜너 각각은 컴포넌트이고 이들 각각과 연결되는 컴포넌트는 이미 정해져 있습니다. 스피커는 메인앰프에, 메인앰프는 믹싱앰프에, 믹싱앰프에는 CD 플레이어와 라이오 튜너가 연결되어야 하는데, 여기에서 각각의 장치간의 연결방법이 인터페이스 입니다.

컴퓨터 소프트웨어에서 컴포넌트의 개념은 ActiveX, EJB 에서 시작되었습니다. 이들 프레임워크에서 컴포넌트는 구제적인 기능의 제공자(provider)이고 이것의 수요자(consumer)는 컴포넌트의 컨테이너(container)에 해당됩니다.

C++Java와 같은 객체지향 프로그래밍 언어는 컴포넌트 기반 시스템의 개발에 자주 사용됩니다. 하지만, 이것으로 개발되었다 하더라고 모두가 컴포넌트 시스템은 아닙니다. 컴포넌트 시스템이 되려면 전체 시스템을 이루는 각각의 구성요소가 컴포넌트 기반으로 개발되어야 합니다.

고운플랫폼을 구성하는 데이터원본, MVC 콘트롤러, MVC 뷰, 리치 앱, 메뉴 등 모든 요소는 컴포넌트이고, 이들은 정해진 규칙에 의해 조립되어 하나의 애플리케이션을 완성합니다.

3. 컴포넌트 프레임워크의 목적

컴포넌트 시스템의 목적은 생산성, 품질, 인적자원의 배치 등의 경영성과와 직접적으로 관련이 있습니다. 잘 만들어진 컴포넌트는 이것의 인터페이스를 만족하는 여러곳에서 사용되므로 생산성을 향상시키고, 컴포넌트의 명확한 역할은 개발자가 집중하도록 하는데 도움이 되어 소프트웨어의 품질을 높이고, 인적자원 계획의 유연성을 제고합니다.

4. 컴포넌트 구성의 적용

4.1. 정적(static) 적용

EJB, 스프링프레임워크, 스트러츠와 같이 널리 알려진 웹 애플리케이션 프레임워크의 대부분은, 주로 XML로 된 설정파일이나 의존성 주입를 사용하여 웹 서비스의 시작 초기에 정적(static)으로 컴포넌트를 구성할 수 있는 방법만을 제공합니다.

이들 프레임워크를 사용해 개발된 시스템에서 웹 서비스를 재시작 하지 않고 동적으로 적용할 수 있으려면 별도의 수단을 제공하는 프레임워크가 필요합니다.

4.2. 고운플랫폼의 동적(dynamic) 적용

고운플랫폼의 사용자 인터페이스를 위한 애플리케이션은 모델-뷰-콘트롤러 페이지와 리치 앱 두 가지가 있습니다. 이들는 콘텐츠가 생성되는 위치에따라 애플리케이션의 구성과 실행이 서버와 클라이어트로 각각 다른데, 이를 위해 서로다른 다음의 두 프레임워크가 별도로 존재합니다.

  1. 모델-뷰-콘트롤러 프레임워크
  2. 리치 애플리케이션 프레임워크

이 둘의 애플리케이션 구성설정은 모두 데이터베이스에 저장되고, 사용요청이 있는 시점에 애플리케이션의 컴포넌트가 동적으로 구성되어 서비스됩니다.

모델-뷰-콘트롤러 프레임워크의 애플리케이션은 서버의 애플리케이션 풀(pool)에 캐시됩니다. 이것은 콘텐츠의 생성에서 애플리케이션의 컴포넌트 구성에 소모되는 오버헤드를 제거하는데, 고운플랫폼에서 웹페이지의 응답이 대단히 빠른 이유가 여기에 있습니다.

리치 애플리케이션 프레임워크의 애플리케이션은 클라이언트인 웹 브라우저에서 구성되지만, 이것의 설정데이터는 서버에서 캐시됩니다.

5. 웹 서비스의 변경사례 비교

고운플랫폼의 사용자 인터페이스 프레임워크는 컴포넌트의 구성 변경에서 웹 서비스를 중단하지 않습니다. 웹 서비스를 통해 소통을 하는 어떤 프로젝트에서 새로운 게시판이 필요한 경우, 운영담당자 기준으로 다음의 사건이 있을 것 입니다.

  • 컴포넌트 기반 시스템의 경우

    1. "설정을 추가하고 시스템을 재시작해야 하니 결과는 내일 확인하세요" 라고 답변을 합니다.
    2. "금일 몇시에 어떠어떠한 사유로 시스템을 재시작해야 하니 모두 알아두세요" 라고 공지를 합니다.
    3. 시스템 사용자가 없을 것 같은 저녁 10시까지 야근을 하다가, 시스템 설정을 변경한 후 재시작 합니다.
    4. 시스템이 잘 동작하고 있는지 확인한 후, 프로젝트 담당자에게 메일을 보냅니다.
  • 컴포넌트 기반 시스템도 아닌 경우

    1. "이런저런 사유로 완료되면 연락드리겠습니다" 라고 답변을 합니다.
    2. 최악의 경우, 데이터베이스 테이블이 새로 추가할 수도 있습니다.
    3. 게시판 소스 프로그램을 찾아서, 복사하고, 수정하고, 메뉴을 추가하는 등, 거의 새로 개발을 하다시피 작업을 합니다.
    4. "기능추가 작업을 완료했으니 곧 적용하겠습니다" 라고 프로젝트 담당자에게 메일을 보냅니다.
    5. 웹 서비스의 수정과 재시작 절차를 거칩니다.
    6. 운이 나쁘면 웹 서비스의 시작이 실패하는 경우도 있습니다.
  • 고운플랫폼은 시스템 도구에 있는 리치 앱을 사용하여 다음 작업을 합니다.

    1. 프로젝트 데이터원본에 새로운 데이터원본을 추가합니다.
    2. 프로젝트 페이지 뷰에 새로온 페이지를 추가합니다. 기존 설정을 복사하여 뷰의 데이터원본만 바꾸어도 됩니다.
    3. 프로젝트 메뉴의 사이트맵 아래에 새 메뉴를 추가하고 URI를 설정합니다.
    4. 프로젝트 메뉴의 리치 앱 아래에 새 메뉴를 추가하고 리치 앱 컴포넌트를 설정합니다.
    5. "새로고침"하여 확인합니다.

사실 수 많은 사용자가 사용하는 클라우드 서비스에서, 전혀 새로운 기능의 추가나 심각한 유지보수의 목적이 아닌, 유사한 기능의 추가와 제거를 위해 시스템을 재시작 하는 것은 있을 수 없는 일 입니다.

6. 결론

고운플랫폼은 컴포는트 기반으로 개발된 시스템으로, 컴포넌트 구성변경에 대하여 웹 서비스를 재시작 하지 않고 적용할 수 있습니다.

고운플랫폼의 런타임에는 데이터베이스에 저장되어 관리되어지는 주요 객체를 주기억장치에 캐시합니다. 이 글에서 주중하고 있는 컴포넌트 구성변경의 동적적용은 고운플랫폼의 캐시 메커니즘으로 인해 더욱 의미가 있습니다.

모델-뷰-콘트롤러와 리치 애플리케이션 프레임워크에 대한 더 많은 정보는 이 글의 하위 스레드에서 찾을 수 있습니다.