책을 하나 샀다. '구글 앱엔진 시작하기' . 어쩌면 이 Post는 그 책에 대한 간략 정리일 수도 있겠다.
작년에 프로젝트에서 나는 이미 Google App Engine(GAE)과 Amazon EC2를 활용한 프로젝트를 리딩한바 있다.
그때는 똘똘한 팀원에게 GAE를 완전히 맞겼다.
하지만, 이제 나도 대충은 공부해야할것 같아서 잽싸게 GAE를 파보련다.
1. Google App Engine이란?
일단 Cloud Computing에 대해서 초간단 정리를
Could Computing은 아래와 같이 서비스를 나눌 수 있다.
* Iaas(Infrastructure as a Service) : 하드웨어나 네트워크 같은 인프라를 서비스 형태로 사용
ex. Amazon EC2
* SaaS(Service as a Service) : 소프트웨어를 CD와 같이 독립적인 물리적 매체로 제공하지 않고 네트워크를 통해 배포 하여 사용하는 서비스.
ex. Google Apps, Salesforce CRM, Open API로 활용되는 검색 엔진같은 서비스
* PaaS(Platform as a Service) : IaaS위에서 미리 정의된 다양한 인터페이스를 이용하여 플렛폼을 서비스로 제공
ex. Google App Engine
즉 'GAE는 PaaS에 속하는 Google의 서비스로써,
High Availability와 Performance를 제공하기 위한 System 서비스(IaaS)을 기반으로
SW를 구동할 수 있는 SW실행환경(Platform)을 제공하여, 주어진 API를 활용하여
응용 SW를 구축할 수 있도록 한 SW 개발 및 운용 환경' 으로 정의할 수 있겠다.
2. GAE 개발 환경 세팅하기
Galio와 JDK 1.6.0 update 18을 설치후에 Google Update Site에 가서 설치 하면 끝! (쉽다)
3. HelloWorld 잽싸게 만들어보기
HelloWorld는 새로운 세계의 시작점이면서 이를 이해함으로써 상당히 많은것을 알 수 있다.
Google의 New Web Applicatnoi Project를 사용해서 HelloWorld만들어 봤다.
그런데 이를 어쩌랴.. 그냥 서블릿이다. --; 아직까지는 먼가 기존과 다른점 못발견했다.
아마도 GWT(Google Web Toolkit)으로 뛰어 넘어야 할지 모르겠다.
4. GAE를 사용한 SW아키텍처 구축시 주요 고려 사항
- 엔진 호스팅(속도문제) : GAE의 엔진 호스팅은 미국 캘리포니아 마운틴 뷰에 있다. 위치가 꼬롬하다. 네트웍의 속도에 대한 분명한 언급이 있을 것이다.
- 구글 Application의 데이터 스토어: Google은 BigTable을 기반으로한 엔진 데이터 스토어라는 곳에 데이터를 저정하게 되어 있다. (아마존 SDB같은 놈인가?)
- Google Authentication API : Google 계정과 연동 가능하다. (Security의 authentication에 대한 대비는 되겠으나, 계정의 Google Dependency라는 큰 문제가 존재한다..)
- Socket Open: 보안 문제로 인해서 Application에서 Socket을 직접 못열게 한다. 대안으로 URL Request API를 제공
- Mail API : Google에서 제공한 유한 발송 API를 활용한다.
- Cache : memcached기반 캐시 시스템 제공
- 이미지 프로세싱API : 이런걸 다 지원하네
-관리자 콘솔: 이건 내가 수도 없이 봤다.
제약 사항 : 실제로 개발할때 이 문제 때문에 개발자는 몇개의 Google ID를 가져야 한다.
5. 프로젝트 빌드 자동화
- 오.. 여기에서 Linux에서 매일 특정 시점에 SVN에서 Checkout해서 GAE에 배포 하는 스크립트가 있다. (유용할것 같다. p. 47)
6. Testing
- jWebUnit을 사용하여 네트워크를 통한 가상 클라이언트를 에뮬레이팅 하게하여 테스팅 한다.
이쯤 알았으면 되었다. 다음에는 샘플을 구해서 구동시켜봐야겠다.
요기 자바로된 시작하기 좋은 글이 있다.