gae와cloud sql을이용한 전자결재 개발

37
GAE와 CloudSQL을 이용한 전자결재 시스템 개발 2014.7.5. 선지헌

Upload: -

Post on 19-Jul-2015

149 views

Category:

Small Business & Entrepreneurship


4 download

TRANSCRIPT

Page 1: Gae와cloud sql을이용한 전자결재 개발

GAE와 CloudSQL을 이용한 전자결재 시스템 개발

2014.7.5. 선지헌

Page 2: Gae와cloud sql을이용한 전자결재 개발

1. GAE(Google App Engine)

2. CloudSQL

3. 전자결재 시스템 개발

4. 운영

목차

[email protected]

Page 3: Gae와cloud sql을이용한 전자결재 개발

Who Am I

[email protected]

이름 : 선지헌 ([email protected])

경력

- SI 프로젝트 10년

- 시스템 운영 3년

- 솔루션 개발 1년 반

좋아하는 것 : 밀리터리, 애니메이션, 만화, 자동차 etc

Page 4: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 정의

[email protected]

Google의 인프라 스트럭쳐를 이용하여 원하는 웹 애플리케이션을 개발 / 배포 / 관리 할 수 있는 Cloud Computing 플랫폼

H/W + WAS,WebServer + Storage =

Page 5: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 지원 언어 및 위치

[email protected]

1. 지원언어

Python, Java, PHP, Go

2. Position

IaaS (Infrastructure-as-a-Service)

PaaS (Platform-as-a-Service)

SaaS (Software-as-a-Service)

ex) Google Compute Engine

ex) Salesforce

ex) Google App Engine

Page 6: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 특/장점

[email protected]

1. Platform

- 애플리케이션(SaaS) 및 H/W(IaaS)를 대신하는 개발/운영 플랫폼 제공(PaaS)

- 개발자 및 운영자는 H/W의 구성과 설정에서 해방됨

2. 지원 언어

- Java, Python, PHP, Go에 대한 환경 제공

- 개발자가 Local 환경에서 테스트 가능 (일부 제한 있음)

3. 배포의 간소화

- GAE에 배포(Deploy) 하는 것으로 모든 배포가 완료

Page 7: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 특장점

[email protected]

4. 능동적인 트래픽 대응 (Auto Scaling)

- 어플리케이션에 대한 요청(Request)에 대응해 GAE가 자동으로 instance(CPU 자원) 추가 및 회수 함

Application

Instance Instance ….

Page 8: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 특/장점

[email protected]

5. Sandbox

- 어플리케이션 코드 및 데이터에 대해 외부 어플리케이션 / 사용자 접근 금지 (GAE 어플리케이션은 Sandbox 환경에서 실행됨 - 보안)

- Sandbox 환경에서 실행됨에 따라 일부 작업에 제한 발생

-> 로컬파일 열어서 쓰기, 소켓 연결 열기, 멀티 스레드 불가

6. Cloud Datastore 제공 (= BigTable)

- 무료 제공 (일정 용량(1GB) 이상부터 과금, $0.006/ GByte-day)

- 구글이 자신들의 서비스에 사용하는 NoSQL

- RDBMS를 대체하기 위한 개념은 아님 (용도가 다름)

- RDBMS와 유사한 쿼리문 지원 (제약있음)

Page 9: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 특/장점

[email protected]

7. Quota 존재

- Request, Mail, URLFetch 등의 기능 및 API 호출에 일일 제한량 존재

Page 10: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 관리콘솔

[email protected]

https://appengine.google.com/

Page 11: Gae와cloud sql을이용한 전자결재 개발

1. GAE (Google App Engine) - 개발시작

[email protected]

이클립스설치

GAE플러그인설치

※ 최신 GAE SDK ver : 1.9.6 (JDK 1.7 필요)

GAE프로젝트생성

GAE 배포

Page 12: Gae와cloud sql을이용한 전자결재 개발

2. CloudSQL - 정의

[email protected]

1. Google이 제공하는 Cloud MySQL Instance 로서 MySQL 5.5와 동일한 (일

부 제한 있음) 기능을 제공함.(현재 5.6 beta 지원)

2. Google의 인프라 스트럭쳐를 사용하므로 DB를 위한 서버H/W가 필요 없음.

3. 2013년 6월 1일 공식 Release

Page 13: Gae와cloud sql을이용한 전자결재 개발

2. CloudSQL - 특징

[email protected]

1. Google Cloud 환경에서 MySQL 5.5 Instance 호스팅

2. DB Instance 최대 크기는 250GB

3. 동기 / 비동기 복제 기능 제공

- 동기 복제 : (비동기복제에 비해) 느린 쓰기 속도, 빠른 데이터 정합성

- 비동기 복제 : (동기복제에 비해) 빠른 쓰기 속도, 느린 데이터 정합성

4. MySQL dump를 이용한 데이터베이스 import / export 제공

Page 14: Gae와cloud sql을이용한 전자결재 개발

2. CloudSQL - 특징

[email protected]

5. 콘솔 사이트 제공 (https://console.developers.google.com)

- MySQL 클라이언트 프로그램을 사용하기 위한 IP 할당 가능

6. 유료 서비스 - D1 레벨 (512MB RAM) : 0.1 USD / hour (DB Up Time 기준)

- D0 ~ D32 레벨 제공

7. 매일 일백업 자동 지원

- 추가 비용 없음

- 특정 일을 선택하여 리스토어 가능 (약 10분 소요)

- 백업 시간 설정 가능

Page 15: Gae와cloud sql을이용한 전자결재 개발

2. CloudSQL - 제약

[email protected]

1. 사용자 정의 함수 미지원 (?)

2. LOAD DATA INFILE 문 미지원

3. SELECT…. INTO OUTFILE 문 미지원

4. SELECT…. INTO DUMPFILE 문 미지원

5. INSTALL PLUGIN 문 미지원

6. UNINSTALL PLUGIN 문 미지원

7. CREATE FUNCTION 문 미지원 (?)

8. LOAD_FILE() 함수 미지원

Page 16: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 상황(Me)

[email protected]

프로젝트, 시스템 운영 etc

2013년 1월

프로젝트는 끝나고 시스템도 안정화 되고… 뭐 재미난 거 없

나...

Page 17: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 상황(회사)

[email protected]

한국에선 결재가 필요한데...

구글 앱스 좀 팔려고 하니 고객사들이 하나같이 “전자결재는 있나요?” 라고 물어봄

Page 18: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 만들자!

[email protected]

잼있겠다만들자!

Page 19: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 고민

[email protected]

개발기간

필요 H/W스펙

팔리긴 할까

개발인원

가능한짧게

알수없음

것두 모르지

Only MeAPP서버관리하기싫다

DB 서버관리

이것두하기싫음

Page 20: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 환경결정

[email protected]

앱엔진으로 GO!

Page 21: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 이득

[email protected]

개발기간

필요 H/W스펙

팔리긴 할까

개발인원APP서버관리

DB 서버관리

Page 22: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - Why GAE?

[email protected]

GAE On Premise

내 책임 애플리케이션

애플리케이션, 데이터베이스, 운영체제, 웹서버,

WAS서버, 로드밸런싱, 보안(서버해킹)

Auto Scaling 자동 제공 일반적으로 불가능

인프라 Google이 제공(GAE)- WAS, DB 서버 필요- 개발, 운영 서버 필요

배포GAE에 한번 배포하는

것으로 완료- 서버 병렬화 된 경우 서버별로 배포 필요- 서버 위치에 따라 제약이 있을 수 있음

비용 싸다 비싸다 (H/W 비용, DC이용 비용 etc)

Page 23: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 결재프로세스

[email protected]

Page 24: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 서비스구조

[email protected]

구글 클라우드 플랫폼

Cloud Datastore(NoSQL)

CloudSQL(Cloud RDBMS)

Cloud Data Storage

(첨부파일)

구글 앱 엔진 (GAE)

Java

Jetty (Web / WAS 서버)

전자 결재

JQuery JQuery Mobile

Page 25: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 사용기술

[email protected]

전자결재 시스템

JAVA

Mail APIURLFetch

API

GoogleDrive API

CloudSQL

Cloud StroageJQuery

Page 26: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 팁

[email protected]

1. API 호출은 BackOff 방식으로

- API 호출이 언제나 100% 성공한다는 보장은 없음

- 따라서 오류가 났을 경우를 대비해 재시도 하는 로직이 포함되어야 함.

Page 27: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 팁

[email protected]

2. GAE Quota

- GAE는 Request와 각종 API에 대해 Quota가 존재함. (Quota 이상 사용시 과금)

- 운영시에는 GAE 애플리케이션을 유료 전환하고 Mail API에 대해 미리 Quota 추가 요청을 해야

함.

Page 28: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 팁

[email protected]

3. Maximum Daily Budget 조정 (필수)

- 하루 과금 한계 등록

- Maximum Daily Budget을 등록하지 않는 경우 유료화 하더라도 Over Quota 에러가 발생할 수

있음

Page 29: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 팁

[email protected]

4. 배포 버전 관리

- 여러 개의 버전을 올리고 그 중 하나를 Default로 지정할 수 있음.

- 새 버전 배포 -> 테스트 -> Default 변경

Page 30: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 팁

[email protected]

5. 여러 명의 개발자가 개발하는 경우

- 각 개발자 별로 개발용 GAE 애플리케이션 생성하여 작업

- 이 경우 애플리케이션의 URL이 서로 상이하므로 URL값을 애플리케이션에서 사용하는 경우 프

로퍼티화 하여 관리하는 것이 좋음

Page 31: Gae와cloud sql을이용한 전자결재 개발

3. 전자결재 시스템 개발 - 팁

[email protected]

6. CloudSQL 편하게 사용하기

- MySQL 워크벤치 사용 (다른 MySQL 클라이언트 사용 가능)

- 구글 디벨로퍼 콘솔에서 CloudSQL 인스턴스의 설정 변경 필요

: IP할당, root password 설정, 인가된 접근 IP 등록

Page 32: Gae와cloud sql을이용한 전자결재 개발

4. 운영

[email protected]

※D 사의 경우 (2013년 9월 1일 오픈)

1. 사용인원 : 약 400명

2. 월 결재 문서 생성 건 수 : 약 8,000 ~ 10,000 건

3. 외부 기간계 연동 : SAP, 자체 인사시스템

4. 사용 패턴 : 매월 마지막 주 사용량 집중 (월 마감)

Auto Scaling !!

Page 33: Gae와cloud sql을이용한 전자결재 개발

4. 운영

[email protected]

※D 사 월 운영 비용

1. GAE 운영 비용 : 70 ~ 90 USD

2. CloudSQL 운영 비용 : 70 ~ 90 USD

-> 월 약 200 USD 소요

Page 34: Gae와cloud sql을이용한 전자결재 개발

4. 운영

[email protected]

※ GAE 시스템 상태 콘솔

Page 35: Gae와cloud sql을이용한 전자결재 개발

4. 운영

[email protected]

※ DB의 백업 및 복구

- 구글 디벨로퍼 콘솔을 통해 백업

상황 확인 및 복구 가능 ( https:

//console.developers.google.com )

- 백업은 설정에 따라 자동으로 매

일 이루어 짐.

- 복구는 Restore 링크를 클릭하

면 되며 약 10~15분 소요됨.

Page 36: Gae와cloud sql을이용한 전자결재 개발

4. 운영

[email protected]

※ 참고URL

GAE Down Time 알람 그룹스

> https://groups.google.com/forum/#!forum/google-appengine-downtime-notify

토론

> https://groups.google.com/forum/#!forum/google-appengine

Page 37: Gae와cloud sql을이용한 전자결재 개발

[email protected]

감사합니다.Q&A는 메일로...