Go
1. 개요
1.1. 문서 개요
1.1.1. 목적
본 문서(Go 애플리케이션 개발 가이드)는 Open PaaS 프로젝트의 서비스팩(Mysql, MongoDB, RabbitMQ, Radis, GlusterFS)을 Go 애플리케이션과 연동하여 서비스를 사용하고 애플리케이션을 배포하는 방법에 대해 제시하는 문서이다.
1.1.2. 범위
본 문서의 범위는 Open PaaS 프로젝트의 Go 애플리케이션 개발과 서비스팩 연동에 대한 내용으로 한정되어 있다.
1.1.3. 참고 자료
2. Go 애플리케이션 개발가이드
2.1. 개요
Open PaaS에 등록된 다양한 서비스팩을 Go언어로 작성된 애플리케이션과 바인딩하고 해당 애플리케이션에 바인딩된 환경정보(VCAP_SERVICES)에서 각 서비스별 접속정보를 획득하여 애플리케이션에 적용하여 이용 할 수 있도록 Windows 환경에서 Go 애플리케이션을 작성 할 수 있도록한다.
2.2. 개발환경 구성
Go 애플리케이션 개발을 위해 다음과 같은 환경으로 개발환경을 구성 한다.
OS : Windows 7 64bit
Go : 1.5.2
IDE : Intellij IDEA
Intellij IDEA 는 Commnuity와 Ultimate 버전이 있는데, Community 버전은 Free이고, Ultimate 버전은 은 30-day trial버전이다.
2.2.1. Go SDK설치
Go SDK 다운로드

다운로드
Go SDK : go1.5.2.windows-amd64.msi
Go SDK 설치
go1.5.2.windows-amd64.msi 더블클릭하여 설치를 실행한다.

“실행” 버튼 클릭

“Next” 버튼을 클릭

“Next” 버튼을 클릭

Go SDK가 설치될 디렉토리 선택 후 “Next” 버튼 클릭

“Install” 버튼 클릭


“Finish” 버튼 클릭
2.2.2. IntelliJ IDEA설치
IDEA 다운로드



다운로드 : ideaIC-15.0.2.exe
IntelliJ IDEA 설치
ideaIC-15.0.2.exe 더블클릭하여 설치를 실행한다.

“Next” 버튼 클릭

설치위치 지정 후 “Next” 버튼 클릭

“Next” 버튼 클릭

“Install” 버튼 클릭


“Run IntelliJ IDEA Community Edition” 체크 선택
“Finish” 버튼 클릭
2.3. 개발
샘플 애플리케이션에의 데이터 관리는 MySQL, MongoDB 중에 하나를 이용하기 때문에 API 요청시 요청 본문에 DBType 값을 가지고 결정한다.
2.3.1. 샘플 애플리케이션 연동
Go 샘플 프로젝트 연결

“Import Project” 선택

다운로드 받은 Go 샘플 어플리케이션의 위치를 지정
“Ok” 버튼을 클릭

“Next” 버튼 클릭 - “Next” 버튼 클릭

“Next” 버튼 클릭

“Finish” 버튼 클릭
2.3.2. 샘플 애플리케이션 환경설정
IntelliJ IDEA 환경에 Go Plugin 설치 및 Go 샘플 어플리케이션의 환결설정

File > Settings 선택

Plugins > Browse repositories 선택

“Go” 를 검색 후, 조회된 결과에서 Go 를 선택 후 Install 버튼을 클릭

“Restart IntelliJ IDEA” 선택

“Restart” 버튼 클릭

File > Project Structure... 선택

Project SDK 영역의 “New” 버튼 클릭

“Go SDK” 선택

“Go SDK” 설치된 디렉토리 선택 후 “OK” 버튼 클릭

“OK” 선택

go-sample-app 프로젝트에서 “main.go” 파일을 선택
오른쪽 상단에 “Configure Go Libraries” 선택

Global libraries 영역에는 Go SDK 디렉토리 선택
Project libraries 영역에는 Go 샘플 어플리케이션이 위치한 디렉토리 선택
“OK” 버튼 클릭

오른쪽 상단의 “Change module type to Go and reload project” 선택

“Reload project” 선택

2.3.3. VCAP_SERVICES 환경설정 정보를 통한 연동
개방형 플랫폼에 배포되는 애플리케이션이 바인딩된 서비스별 접속 정보를 얻기 위해서는 애플리케이션별로 등록되어있는 VCAP_SERVICES 환경설정 정보를 읽어들여 정보를 획득 할 수 있다.
1). 개방형 플랫폼의 애플리케이션 환경정보
서비스를 바인딩하면 JSON 형태로 환경설정 정보가 애플리케이션 별로 등록된다.
VCAP_SERVICES 정보 구조
2). VCAP_SERVICES 정보 추출 방법
VCAP_SERVICE 정보 중 “uri” 정보를 추출하여 리턴한다.
부모 엘리먼트 (VCAP_SERVICE)
첫번째 엘리먼트 (p-rabbitmq) 서비스 이름 정보
두번째 엘리먼트 (credentials) 정보
세번째 엘리먼트 (uri) 정보
VCAP_SERVICES 구조 참조
2.3.4. config.ini 파일을 통한 Database, Redis, RabbitMQ 연동
1). config.ini
mysql 연결정보 설정
2). 연동 샘플
2.3.5. GlusterFS 연동
1). 파일 Upload
클라이언트에서 보낸 요청에서 파일을 읽어들여 GlusterFS Server로 전송
2). GlusterFS Server 연결 및 파일전송
GlusterFS Server로 연결을 맺고 파일을 전송
3). GlusterFS 연결정보
VCAP_SERVICES에서 정보 추출
2.4. 배포
cf cli 명령어를 이용하여 Go 샘플 어플리케이션을 배포한다.
cf cli가 설치되어 있고, cf login이 이미 되어 있다는 가정하에 진행한다.
Go 샘플 애플리케이션에의 데이터 관리는 MySQL, MongoDB 중에 하나를 이용하기 때문에 배포시 환경변수 정보(dbtype)에 데이터베이스 이름(mysql or mongodb)를 설정하여 배포한다..
2.5. 테스트
curl 명령어를 통해 command 창에서 직접 테스트 할 수 있다.
Last updated
Was this helpful?