Upload
-
View
149
Download
4
Embed Size (px)
Citation preview
GAE와 CloudSQL을 이용한 전자결재 시스템 개발
2014.7.5. 선지헌
Who Am I
이름 : 선지헌 ([email protected])
경력
- SI 프로젝트 10년
- 시스템 운영 3년
- 솔루션 개발 1년 반
좋아하는 것 : 밀리터리, 애니메이션, 만화, 자동차 etc
1. GAE (Google App Engine) - 정의
Google의 인프라 스트럭쳐를 이용하여 원하는 웹 애플리케이션을 개발 / 배포 / 관리 할 수 있는 Cloud Computing 플랫폼
H/W + WAS,WebServer + Storage =
1. GAE (Google App Engine) - 지원 언어 및 위치
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
1. GAE (Google App Engine) - 특/장점
1. Platform
- 애플리케이션(SaaS) 및 H/W(IaaS)를 대신하는 개발/운영 플랫폼 제공(PaaS)
- 개발자 및 운영자는 H/W의 구성과 설정에서 해방됨
2. 지원 언어
- Java, Python, PHP, Go에 대한 환경 제공
- 개발자가 Local 환경에서 테스트 가능 (일부 제한 있음)
3. 배포의 간소화
- GAE에 배포(Deploy) 하는 것으로 모든 배포가 완료
1. GAE (Google App Engine) - 특장점
4. 능동적인 트래픽 대응 (Auto Scaling)
- 어플리케이션에 대한 요청(Request)에 대응해 GAE가 자동으로 instance(CPU 자원) 추가 및 회수 함
Application
Instance Instance ….
1. GAE (Google App Engine) - 특/장점
5. Sandbox
- 어플리케이션 코드 및 데이터에 대해 외부 어플리케이션 / 사용자 접근 금지 (GAE 어플리케이션은 Sandbox 환경에서 실행됨 - 보안)
- Sandbox 환경에서 실행됨에 따라 일부 작업에 제한 발생
-> 로컬파일 열어서 쓰기, 소켓 연결 열기, 멀티 스레드 불가
6. Cloud Datastore 제공 (= BigTable)
- 무료 제공 (일정 용량(1GB) 이상부터 과금, $0.006/ GByte-day)
- 구글이 자신들의 서비스에 사용하는 NoSQL
- RDBMS를 대체하기 위한 개념은 아님 (용도가 다름)
- RDBMS와 유사한 쿼리문 지원 (제약있음)
1. GAE (Google App Engine) - 특/장점
7. Quota 존재
- Request, Mail, URLFetch 등의 기능 및 API 호출에 일일 제한량 존재
1. GAE (Google App Engine) - 개발시작
이클립스설치
GAE플러그인설치
※ 최신 GAE SDK ver : 1.9.6 (JDK 1.7 필요)
GAE프로젝트생성
GAE 배포
2. CloudSQL - 정의
1. Google이 제공하는 Cloud MySQL Instance 로서 MySQL 5.5와 동일한 (일
부 제한 있음) 기능을 제공함.(현재 5.6 beta 지원)
2. Google의 인프라 스트럭쳐를 사용하므로 DB를 위한 서버H/W가 필요 없음.
3. 2013년 6월 1일 공식 Release
2. CloudSQL - 특징
1. Google Cloud 환경에서 MySQL 5.5 Instance 호스팅
2. DB Instance 최대 크기는 250GB
3. 동기 / 비동기 복제 기능 제공
- 동기 복제 : (비동기복제에 비해) 느린 쓰기 속도, 빠른 데이터 정합성
- 비동기 복제 : (동기복제에 비해) 빠른 쓰기 속도, 느린 데이터 정합성
4. MySQL dump를 이용한 데이터베이스 import / export 제공
2. CloudSQL - 특징
5. 콘솔 사이트 제공 (https://console.developers.google.com)
- MySQL 클라이언트 프로그램을 사용하기 위한 IP 할당 가능
6. 유료 서비스 - D1 레벨 (512MB RAM) : 0.1 USD / hour (DB Up Time 기준)
- D0 ~ D32 레벨 제공
7. 매일 일백업 자동 지원
- 추가 비용 없음
- 특정 일을 선택하여 리스토어 가능 (약 10분 소요)
- 백업 시간 설정 가능
2. CloudSQL - 제약
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() 함수 미지원
3. 전자결재 시스템 개발 - 상황(Me)
프로젝트, 시스템 운영 etc
2013년 1월
프로젝트는 끝나고 시스템도 안정화 되고… 뭐 재미난 거 없
나...
3. 전자결재 시스템 개발 - 상황(회사)
한국에선 결재가 필요한데...
구글 앱스 좀 팔려고 하니 고객사들이 하나같이 “전자결재는 있나요?” 라고 물어봄
3. 전자결재 시스템 개발 - 고민
개발기간
필요 H/W스펙
팔리긴 할까
개발인원
가능한짧게
알수없음
것두 모르지
Only MeAPP서버관리하기싫다
DB 서버관리
이것두하기싫음
3. 전자결재 시스템 개발 - Why GAE?
GAE On Premise
내 책임 애플리케이션
애플리케이션, 데이터베이스, 운영체제, 웹서버,
WAS서버, 로드밸런싱, 보안(서버해킹)
Auto Scaling 자동 제공 일반적으로 불가능
인프라 Google이 제공(GAE)- WAS, DB 서버 필요- 개발, 운영 서버 필요
배포GAE에 한번 배포하는
것으로 완료- 서버 병렬화 된 경우 서버별로 배포 필요- 서버 위치에 따라 제약이 있을 수 있음
비용 싸다 비싸다 (H/W 비용, DC이용 비용 etc)
3. 전자결재 시스템 개발 - 결재프로세스
3. 전자결재 시스템 개발 - 서비스구조
구글 클라우드 플랫폼
Cloud Datastore(NoSQL)
CloudSQL(Cloud RDBMS)
Cloud Data Storage
(첨부파일)
구글 앱 엔진 (GAE)
Java
Jetty (Web / WAS 서버)
전자 결재
JQuery JQuery Mobile
3. 전자결재 시스템 개발 - 사용기술
전자결재 시스템
JAVA
Mail APIURLFetch
API
GoogleDrive API
CloudSQL
Cloud StroageJQuery
3. 전자결재 시스템 개발 - 팁
1. API 호출은 BackOff 방식으로
- API 호출이 언제나 100% 성공한다는 보장은 없음
- 따라서 오류가 났을 경우를 대비해 재시도 하는 로직이 포함되어야 함.
3. 전자결재 시스템 개발 - 팁
2. GAE Quota
- GAE는 Request와 각종 API에 대해 Quota가 존재함. (Quota 이상 사용시 과금)
- 운영시에는 GAE 애플리케이션을 유료 전환하고 Mail API에 대해 미리 Quota 추가 요청을 해야
함.
3. 전자결재 시스템 개발 - 팁
3. Maximum Daily Budget 조정 (필수)
- 하루 과금 한계 등록
- Maximum Daily Budget을 등록하지 않는 경우 유료화 하더라도 Over Quota 에러가 발생할 수
있음
3. 전자결재 시스템 개발 - 팁
4. 배포 버전 관리
- 여러 개의 버전을 올리고 그 중 하나를 Default로 지정할 수 있음.
- 새 버전 배포 -> 테스트 -> Default 변경
3. 전자결재 시스템 개발 - 팁
5. 여러 명의 개발자가 개발하는 경우
- 각 개발자 별로 개발용 GAE 애플리케이션 생성하여 작업
- 이 경우 애플리케이션의 URL이 서로 상이하므로 URL값을 애플리케이션에서 사용하는 경우 프
로퍼티화 하여 관리하는 것이 좋음
3. 전자결재 시스템 개발 - 팁
6. CloudSQL 편하게 사용하기
- MySQL 워크벤치 사용 (다른 MySQL 클라이언트 사용 가능)
- 구글 디벨로퍼 콘솔에서 CloudSQL 인스턴스의 설정 변경 필요
: IP할당, root password 설정, 인가된 접근 IP 등록
4. 운영
※D 사의 경우 (2013년 9월 1일 오픈)
1. 사용인원 : 약 400명
2. 월 결재 문서 생성 건 수 : 약 8,000 ~ 10,000 건
3. 외부 기간계 연동 : SAP, 자체 인사시스템
4. 사용 패턴 : 매월 마지막 주 사용량 집중 (월 마감)
Auto Scaling !!
4. 운영
※D 사 월 운영 비용
1. GAE 운영 비용 : 70 ~ 90 USD
2. CloudSQL 운영 비용 : 70 ~ 90 USD
-> 월 약 200 USD 소요
4. 운영
※ DB의 백업 및 복구
- 구글 디벨로퍼 콘솔을 통해 백업
상황 확인 및 복구 가능 ( https:
//console.developers.google.com )
- 백업은 설정에 따라 자동으로 매
일 이루어 짐.
- 복구는 Restore 링크를 클릭하
면 되며 약 10~15분 소요됨.
4. 운영
※ 참고URL
GAE Down Time 알람 그룹스
> https://groups.google.com/forum/#!forum/google-appengine-downtime-notify
토론
> https://groups.google.com/forum/#!forum/google-appengine
감사합니다.Q&A는 메일로...