Plugin

Table Of Contents

Executive Summary

본 문서는 개발자들이 Open PaaS 개발환경을 전자정부 프레임워크 개발환경에 설치하여 Open PaaS 기반의 애플리케이션을개발하기 위해 필요한 환경 구성 및 사용 방법을 제공하는데 목적이 있다. 본 가이드의 사용자는 자바 및 자바 웹 애플리케이션 개발에 대한 기본적인 지식이 있다는 것을 가정하였다.

아래의 2가지 단계에 따라 가이드가 작성 되어 있다.

  • Open PaaS개발환경 설치

  • Open PaaS개발환경 사용법

1. 문서 개요

1.1 목적

본 문서는 전자정부 표준프레임워크 개발환경 및 이클립스 통합개발환경에서 Open PaaS 개발환경을 설치하고, Open PaaS 개발환경을 통해 자바 웹 애플리케이션을 Open PaaS 환경에 배포, 관리 및 서비스팩 관리에 대한 가이드를 제공한다.

1.2 범위

본 문서에서 제공하는 가이드는) 전자정부 표준프레임워크 3.2.0 및 이클립스 케플러 버전(Kepler, 4.3.x 버전을 기준으로 작성하였다.

1.3 참고자료

본 문서는 클라우드 파운드리(Cloud Foundry)의 클라우드 파운드리 이클립스 플러그인 문서를 참조하였다. 클라우드 파운드리 이클립스 플러그인 문서 : http://docs.run.pivotal.io/buildpacks/java/sts.html

2. 개발환경 설치 전 준비사항

2.1 설치 전 준비사항

본 문서는 전자정부 프레임워크 3.1.1 버전 개발환경에서 설치하는 것을 기준으로 작성하였다. 전자정부 프레임워크 개발환경은 자바 언어로 작성되어 전자정부 프레임워크 개발환경 실행을 위해서는 자바 개발 킷(JDK) 또는 자바 실행 환경(JRE)가 설치되어 있어야 한다. Open PaaS 개발환경은 전자정부 프레임워크 개발환경에서 플러그인의 형태로 동작하므로 자바 개발 킷 설치 후 전자정부 프레임워크 개발환경을 설치한다. (Java의 버전은 7이상의 버전을 권장한다.) 또한 만약 전자정부 프레임워크 개발환경을 사용하지 않는다면 이클립스 통합개발환경 케플러(Kepler) 버전과 유사하므로 이클립스를 설치해도 무관하다

아래 설명에서 사용된 버전은 아래와 같다.

  • jdk-8u60

  • Eclipse-jee-kepler-SR2-win32-x86_64

  • openpaas_dev_env.jar

  • eGovFrameDev-3.1.1

2.2 자바 개발 킷 설치

  1. 아래 링크에 접속하여 “JavaSE Download” 페이지가 표시되면 중앙의 “JDK Download” 링크를 클릭하여 라이선스 동의 페이지로 이동한다.

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  2. 라이선스에 동의한 후 개발환경에 맞는 자바 개발 킷 설치 파일을 다운로드 받는다.

  3. 명령 프롬프트에서 “java –version” 명령을 실행하여 설치된 자바 버전이 정상적으로 출력되는지 확인한다.

2.3 전자정부 표준프레임워크 설치

전자정부 표준프레임워크 설치는 전자정부 표준프레임워크의 개발자 개발 환경 설치 가이드의 개발자 개발환경 설치(http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev2:clntinstall)를 참고한다.

버전은 3.1.1 버전을 사용한다

2.4 이클립스 통합개발환경 케플러 버전 설치

이클립스 통합개발환경 케플러 버전의 설치 절차는 다음과 같다.

  1. 이클립스 홈페이지의 이클립스 통합개발환경 다운로드 페이지(http://www.eclipse.org/downloads/)에 접속한다.

  2. 이클립스 통합개발환경 케플러 버전을 설치하기 위해서는 다운로드 페이지의 오른쪽 사이드바에 “MORE DOWNLOADS”에 “Eclipse Kepler(4.3)”을 클릭한다.

  3. 다운로드 화면이 표시되면, “Eclipse IDE for Java EE Developers” 의 우측에 사용하고 있는 운영체제에 적합한 다운로드 링크를 클릭하여 다운로드한다.

  4. 다운로드 받은 파일의 압축을 해제하고 “eclipse.exe” 파일을 실행하여 별도의 설치 없이 이클립스를 사용할 수 있다.

3. Open PaaS 개발환경 설치

본 절에서는 전자정부 표준프레임워크과 이클립스 통합개발환경에 Open PaaS 개발환경을 설치하는 절차를 기술한다. Open PaaS 개발환경이 포함되어 있는 전자정부 표준프레임워크 개발환경을 사용하는 경우 별도의 설치 없이 사용가능하며, 이클립스의 경우 “openpaas_dev_env.zip” 파일을 이용하여 플러그인으로 제공되는 Open PaaS 개발환경을 설치하여 사용한다.

3.1 전자정부 표준프레임워크에 Open PaaS 개발환경 설치

전자정부 표준프레임워크 개발환경에 Open PaaS 개발환경을 설치하는 절차는 다음과 같다.

  1. “Installing Software” 대화창과 함께 설치가 진행되며, “Security Warning” 경고창이 표시되면 무시하고 “OK” 버튼을 클릭하여 설치를 재개한다. “Cancel” 버튼을 클릭하면 설치 되지 않고 종료된다.

  2. 설치가 완료되면 “Software Updates” 대화창이 나타나고, Open PaaS 개발환경이 정상적으로 적용되기 위해서는 재시작이 필요하므로, “Yes” 버튼을 클릭하여 전자정부 표준프레임워크를 재시작한다. 만약 “No” 버튼을 클릭하면 전자정부 프레임워크는 재시작되지 않고 Open PaaS 개발환경을 이용 할 수 없다.

  3. 재시작을 완료하면 설치가 완료된다.

3.2 이클립스 통합개발환경에 Open PaaS 개발환경 설치

이클립스 통합개발환경에 Open PaaS 개발환경을 설치하는 절차는 “3.1 전자정부 표준프레임워크에 Open PaaS 개발환경을 설치”와 같으므로 참고한다.

3.3 Open PaaS 개발환경이 포함된 전자정부 표준프레임워크 개발환경 사용

전자정부 표준프레임워크 개발환경에는 Open PaaS 개발환경이 설치되어 있으므로, 추가적으로 설치할 필요없이 본 가이드의 4.개방형 플랫폼 서버 연결관리부터 진행할 수 있다.

4. 개방형 플랫폼 서버 연결 관리

본 절에서는 개방형 플랫폼 서버를 연결하는 방법에 대해 기술한다.

4.1 서버 추가

  1. 위 “URL”란에 표시되어 있는 URL 주소는 임의의 주소이며, 아래 절차를 따라 실제 Open PaaS가 배포되어 있는 플랫폼 서버 정보를 등록해야 한다. [**4.2 플랫폼 서버 정보 등록*](#42-플랫폼-서버-정보-등록)을 참고한다.

4.2 플랫폼 서버 정보 등록

4.3 서버 복제

개방형 플랫폼 서버 연결 정보에서 목표 스페이스는 수정할 수 없으며, 동일한 개방형 플랫폼 서버에서 다른 목표 스페이스로 변경하기 위해서는 기존 개방형 플랫폼 서버 연결 정보를 복제하여 목표 스페이스를 다시 설정해야 한다.

  1. 서버 복제를 위해 “Servers” 탭에서 복제를 원하는 서버를 선택 한 후, 오른쪽 버튼을 누르고 “서버 복제”를 선택한다.

4.4 서버 수정

서버 수정은 관리 서버 이름만 수정 가능하다

5. 애플리케이션 및 서비스팩 관리

본 절에서는 Open PaaS 개발환경에서 애플리케이션 및 서비스팩을 관리하는 절차를 기술한다.

5.1 애플리케이션 배포

“Add and Remove”로 추가하기

  1. (여기서부터는 첫 배포시에만 해당) “애플리케이션 상세 정보” 대화창이 표시된다. 이 대화창은 애플리케이션의 이름과 빌드팩 URL과 매니페스트 파일 저장 여부를 설정 해 줄 수 있는 대화창이다. “이름”란에 원하는 이름을 입력한다. (기본 값은 현재 프로젝트명이다.) “빌드팩 URL”은 해당 플랫폼에서 지원하지 않은(?) 다른 빌드팩을 사용 하고 싶을 때, 옵션 사항으로 등록하여 사용 할 수 있다. 만약 따로 사용할 빌드팩이 없다면 빈칸으로 비워두어도 무방하다. 매니페스트 파일 저장 여부를 체크박스로 표시한다. “Next” 버튼을 클릭하여 다음 페이지로 진행한다. “Finish” 버튼을 클릭하면 현재까지의 상태가 반영되어 배포가 된다. "Cancel” 버튼을 클릭하면 배포가 취소된다.

  2. “배포 실행” 대화창이 표시된다. 이 대화창은 애플리케이션의 도메인과 서브도메인을 지정해주고, “배포된 URL”을 확인하며, 메모리 제한 설정과 배포된 애플리케이션의 시작 여부를 설정 할 수 있다. “서브도메인”에 원하는 서브도메인명을 입력한다.(기본 값은 현재 프로젝트명이다.) 도메인을 선택한다. “배포된 URL”은 서브도메인과 도메인이 자동으로 결합되어 만들어지니 가만히 두어도 무방하다. 메모리 제한란에 메모리 제한값을 입력한다. (기본 값은 512이다.) 모두 설정 하였으면 “Next” 버튼을 클릭하여 다음 페이지로 이동한다. “Finish” 버튼을 클릭하면 현재까지의 상태가 반영되어 배포가 된다. “Cancel” 버튼을 클릭하면 배포가 취소된다.

  3. “서비스팩 선택” 대화창이 표시된다. 이 대화창은 애플리케이션에 바인딩 할 서비스팩 인스턴스를 추가 또는 바인딩 할 수 있다. 해당 애플리케이션과 바인딩을 원하는 서비스팩 인스턴스를 선택한다. 만약 원하는 서비스팩 인스턴스가 없다면, 서비스팩 추가라는 아이콘의 버튼을 클릭하여 서비스팩 인스턴스를 생성한다. 서비스팩 인스턴스 추가하는 방법은 5.6 서비스팩 인스턴스 추가를 참고한다. 원하는 서비스팩 인스턴스를 선택한 뒤, “Next” 버튼을 클릭하여 다음 페이지로 진행한다. “Finish” 버튼을 클릭하면 현재까지의 상태가 반영되어 배포가 된다. “Cancel” 버튼을 클릭하면 배포가 취소된다.

  4. “환경 변수” 대화창이 표시된다. 이 대화창은 애플리케이션에 환경 변수를 추가, 수정, 및 삭제를 할 수 있는 대화창이다. 환경 변수 추가 및 삭제, 수정은 5.4 애플리케이션 인스턴스 관리를 참고한다. 환경 변수를 추가 및 삭제, 수정을 완료 후, “Finish” 버튼을 클릭하여 배포를 완료한다. “Cancel” 버튼을 클릭하면 배포가 취소된다.

  5. 배포가 완료되면 서버 편집기의 “애플리케이션과 서비스팩” 탭에서 배포된 애플리케이션을 확인 할 수 있다.

드래그로 추가

  1. “Add and Remove” 과정과 동일하므로 해당 내용의 2번부터 참고한다.

애플리케이션 추가/삭제 버튼으로 추가하기

  1. “Add and Remove” 과정과 동일하므로 참고한다.

프로젝트 컨텍스트 메뉴로 추가하기

  1. “Package Exlporer” 에서 배포를 원하는 프로젝트를 선택한 뒤, 마우스 오른쪽 버튼을 클릭 후. “Run As” – “Run on Server”를 선택한다.

  2. "Run On Server” 대화창이 표시된다. 이 대화창은 배포를 원하는 서버를 선택하는 대화창이다. “Servers” 리스트에 있는 “Cloud” – “Open PaaS” 를 선택한다.(만약 리스트 화면에 “Cloud” – “Open PaaS”가 보이지 않는다면 서버를 추가하거나, “How do you want to select the server?” 에서 “Choose an existing server”를 라디오 버튼을 선택한다.) “Next” 버튼을 클릭하여 배포를 진행한다. “Finish” 버튼을 클릭하면 즉시 배포가 된다.

  3. “Add and Remove” 과정과 동일하므로 참고한다.

서버 추가시 추가하기

“서버 추가” 과정과 동일하므로 해당 내용 참고

5.2 애플리케이션 목록 확인

5.3 애플리케이션 라우트 관리

  1. 애플리케이션 라우트 관리를 원하는 개방형 플랫폼 서버를 더블 클릭하여 서버 편집기를 실행한다. 편집기에서 라우트라는 목록을 찾는다. “제거…” 버튼을 클릭한다.

  2. “클라우드 라우트 목록” 대화창이 표시된다. 이 대화창은 클라우드 라우트 목록을 조회 또는 제거 할 수 있는 대화창이다. 제거를 원하는 라우트를 클릭 한 뒤, “제거”를 클릭하고 “Finish” 버튼을 클릭하면 라우트가 삭제된다. “Cancel” 버튼을 클릭하면 삭제될 라우트들이 복구된다.

5.4 애플리케이션 인스턴스 관리

편집기의 오른쪽 화면에 애플리케이션 인스턴스에 대한 다양한 정보들이 표시된다. 표시되는 정보는 아래와 같다.

  • 일반 : 이름, 시작 상태, 매핑된 URL, 인스턴스 수, 매니페스트

  • 일반(애플리케이션 재시작 필요) : 메모리 제한, 환경 변수

  • 애플리케이션 동작 : 재시작, 정지, 갱신 및 재시작, 배포, 디버그

  • 애플리케이션 서비스팩 목록 : 이름 ,벤더, 플랜, 버전

  • 인스턴스 목록 : 호스트, 포트, CPU, 메모리, 디스크, 가동 시간

매핑된 URL 목록 조회

  1. 일반 섹션에서 매핑된 URL 목록 항목을 찾는다. “연필” 모양의 아이콘을 클릭한다.

  2. “매핑된 URL 설정” 대화창이 표시된다. 이 대화창은 ”매핑된 URL”을 관리 할 수 있는 대화창이다. 이 대화창의 첫 페이지에서 “매핑된 URL” 목록을 확인 할 수 있다.

매핑된 URL 추가

  1. “매핑된 URL 목록 조회” 과정을 진행한다.

  2. 현재 상태에서는 “매핑된 URL” 추가 사항이 플랫폼 서버에 반영되지 않았으므로 “매핑된 URL” 설정 대화창에서 “Finish” 버튼을 눌러야 최종 완료가 된다. 만약 “Cancel” 버튼을 클릭하면 지금까지 진행한 모든 작업들이 취소된다.

매핑된 URL 수정

  1. “매핑된 URL 목록 조회” 과정을 진행한다.

  2. “추가 또는 애플리케이션 URL 수정” 대화창이 표시된다. 이 대화창은 애플리케이션을 수정 할 수 있는 대화창이다. 원하는 서브도메인을 수정하고, 도메인을 선택하면 “배포된 URL”이 자동으로 작성된다. 작성이 완료 되었으면 “Finish” 버튼을 클릭한다.

  3. 현재 상태에서는 “매핑된 URL” 수정 사항이 플랫폼 서버에 반영되지 않았으므로 “매핑된 URL” 설정 대화창에서 “Finish” 버튼을 눌러야 최종 완료가 된다. 만약 “Cancel” 버튼을 클릭하면 지금까지 진행한 모든 작업들이 취소된다.

매핑된 URL 제거

  1. “매핑된 URL 목록 조회” 과정을 진행한다.

인스턴스 수 변경

메모리 제한

환경 변수 목록 조회

  1. “환경변수” 대화창이 표시된다. 이 대화창은 환경 변수를 관리 할 수 있는 대화창이다. 이 대화창의 첫 페이지는 환경 변수 목록을 보여준다.

환경 변수 추가

  1. “환경 변수 목록 조회” 과정을 진행한다

환경 변수 수정

  1. “환경 변수 목록 조회” 과정을 진행한다.

  2. 환경 변수를 추가하기 위해 환경 변수 목록에서 수정을 원하는 환경 변수를 클릭 후 오른쪽 “수정” 버튼을 클릭한다.

환경 변수 삭제

  1. “환경 변수 목록 조회” 과정을 진행한다

애플리케이션 재시작

애플리케이션 정지

애플리케이션 갱신 및 재시작

애플리케이션 배포

5.5 애플리케이션 삭제

  1. 애플리케이션 삭제를 원하는 개방형 플랫폼 서버를 더블 클릭하여 서버 편집기를 실행한다. 편집기에서 애플리케이션 목록을 찾아 삭제를 원하는 애플리케이션을 리스트에서 찾아 선택하고, 마우스 오른쪽 버튼을 클릭한 뒤, “제거” 버튼을 클릭한다.

5.6 서비스팩 인스턴스 추가

5.7 서비스팩 인스턴스 바인딩

  1. “서비스팩 바인딩 관리” 대화창이 표시된다. 이 대화창에서 서비스팩 인스턴스와 바인딩 또는 바인딩 해제할 애플리케이션을 선택할 수 있다. 리스트에서 바인딩 할 애플리케이션을 체크 한 후, “Finish” 버튼을 클릭하면 바인딩이 완료 된다.

5.8 서비스팩 인스턴스 바인딩 해제

  1. “서비스팩 바인딩 관리” 대화창이 표시된다. 이 대화창은 서비스팩 인스턴스에 바인딩 또는 바인딩 해제할 애플리케이션을 선택하는 대화창이다. 리스트에서 바인딩을 해제할 애플리케이션을 체크해제 한 후, “Finish” 버튼을 클릭하면 바인딩 해제가 완료 된다.

5.9 서비스팩 인스턴스 삭제

6. 매니페스트를 통한 설정

6.1 매니페스트 추가

  1. 애플리케이션을 배포한다. 배포방법은 “애플리케이션 배포” 과정을 참고한다.

6.2 매니페스트 저장

배포한 애플리케이션의 배포 설정을 매니페스트 파일(manifest.yml)로 저장할 수 있다.

7. 플러그인 설정(REST API 로그 추적 설정)

  1. “Preferences” 대화창에서 이클립스의 환경 설정을 할 수 있다 “Preferences” 대화창의 왼쪽 목록에서 개방형 플랫폼를 찾아서 클릭하고 아래의 “HTTP 로그 추적” 항목을 체크하면 “HTTP 로그 추적” 여부를 설정 할 수 있다. 콘솔창에 “HTTP 로그”를 찍고 싶다면 “HTTP 로그 추적”을 체크하고, 그렇지 않다면 체크하지 않는다. “OK” 버튼을 클릭하여 설정을 완료한다.

8. 예제 프로젝트 설명

해당 예제는 표준프레임워크 3.1 통합예제를 기준으로 작성하였다. 서비스와 어플리케이션이 바인딩된 상태에서 서비스에 어떻게 접근하는지 예제를 통해 설명한다.

8.1 의존성 추가

클라우드 플랫폼에서 서비스에 쉽게 접속할 수 있도록 해주는 Spring Cloud Connectors를 사용하기 위해 해당 의존성을 추가한다.

<!-- Spring Cloud Connector Start -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-spring-service-connector</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-cloudfoundry-connector</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>
<!-- Spring Cloud Connector End -->

8.2 cloud 네임스페이스 추가

src/main/resources/egovframework/spring/context-datasource.xml 파일을 열어 cloud 네임스페이스를 추가한다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cloud="http://www.springframework.org/schema/cloud"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/cloud http://www.springframework.org/schema/cloud/spring-cloud.xsd">

8.3 dataSource 설정 변경

기존의 dataSource 설정을 지우고 새로운 설정을 입력한다.

<cloud:data-source id="dataSource" service-name="serviceInstanceName">
    <cloud:connection properties="sessionVariables=sql_mode='ANSI';characterEncoding=UTF-8" />
    <cloud:pool pool-size="20" max-wait-time="200" />
</cloud:data-source>

8.4 dataSource 초기화 설정

애플리케이션 구동시 미리 작성한 SQL 스크립트를 실행하여 DB를 자동으로 초기화 하도록 설정한다.

  1. 스크립트 파일 이동 스크립트 파일에 접근하기 위해 script 폴더를 src/main/resources/egovframework로 이동시킨다.

  2. 스크립트 파일 수정 script_mysql.sql 파일을 수정한다. 기존 sql은 실행이 되지 않으므로 일부 수정한다. db생성 구문을 없애고 Drop Table 구문에 IF EXISTS를 추가한다.

sql

CREATE DATABASE EASYCOMPANY;

DROP TABLE IF EXISTS `IDS`;
DROP TABLE IF EXISTS `RTETNAUTH`;
DROP TABLE IF EXISTS `RTETNBBS`;
DROP TABLE IF EXISTS `RTETNCART`;
DROP TABLE IF EXISTS `RTETNPURCHSLIST`;
DROP TABLE IF EXISTS `RTETNDLVYINFO`;
DROP TABLE IF EXISTS `RTETNGOODS`;
DROP TABLE IF EXISTS `RTETNCTGRY`;
DROP TABLE IF EXISTS `RTETNGOODSIMAGE`;
DROP TABLE IF EXISTS `RTETNMBER`;
DROP TABLE IF EXISTS `RTETCCODE`;
  1. jdbc 네임스페이스 추가

    src/main/resources/egovframework/spring/context-datasource.xml 파일을 열어 jdbc 네임스페이스를 추가한다.

xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:cloud="http://www.springframework.org/schema/cloud"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/cloud http://www.springframework.org/schema/cloud/spring-cloud.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd">
  1. 데이터베이스 초기화 스크립트 등록

xml

    <jdbc:initialize-database data-source="dataSource">
        <jdbc:script location="classpath:egovframework/script/script_mysql.sql" />
        <jdbc:script location="classpath:egovframework/script/data_mysql.sql" />
    </jdbc:initialize-database>

8.5 배포시 주의사항

애플리케이션을 배포한다. 배포 방법은 애플리케이션 배포를 참고한다.

  1. 예제 프로젝트는 메모리를 많이 차지하기 때문에 배포시 메모리 설정은

    1024mb 이상으로 설정한다.

  2. 본 예제는 MySql 기반으로 작성하였다. MySql 서비스 인스턴스를

    생성하여 바인딩을 한다.

  3. cloud:data-source 의 service-name 설정과 바인딩시킬 서비스 인스턴스

    이름을 일치시켜야 한다.

Last updated