제공 :
한빛 네트워크
저자 : Noah Gift
역자 : 김인희
원문 :
Getting Started with the Google App Engine
데이터스토어 실전 돌입
아직은 인증 부분에서 막연하게 이해했더라도 일단은 넘어가고, 또 다른 강력한 API를 소개하도록 하겠다. 데이터스토어 API를 통해 지속성 데이터(persistent data)를 저장하고 애플리케이션을 통해 다시금 검색할 수도 있다. 이를 위해 앞선 코드에서 보았듯이 데이터스토어를 임포트하고 다음과 같이 모델을 정의하기만 하면 된다.
class ChangeModel(db.Model):
user = db.UserProperty()
input = db.IntegerProperty()
date = db.DateTimeProperty(auto_now_add=True)
위와 같이 간단한 클래스 작성만으로 이제 지속성 데이터를 생성하고 사용할 수 있게 되었다. 다음은 데이터베이스에서 최근 10개의 동전 교환 내역을 검색하고 그 결과를 보여주기 위해 파이썬 API로 작성한 클래스이다.
class Recent(webapp.RequestHandler):
"""Query Last 10 Requests"""
def get(self):
#collection
collection = []
#grab last 10 records from datastore
query = ChangeModel.all().order("-date")
records = query.fetch(limit=10)
#formats decimal correctly
for change in records:
collection.append(decimal.Decimal(change.input)/100)
template_values = {
"inputs": collection,
"records": records,
}
path = os.path.join(os.path.dirname(__file__), "query.html")
self.response.out.write(template.render(path,template_values))
이 중에 가장 중요한 부분은 다음 두 줄의 코드이다.
query = ChangeModel.all().order("-date")
records = query.fetch(limit=10)
이 코드에서는 데이터스토어에서 쿼리 결과를 가져와서 그 중에 10개의 레코드만을 추출한다. 이 코드를 이용해서 많은 양의 레코드를 가져온다든지, 또는 다른 식으로 정렬한다든지 등의 몇 가지 간단하고 재미있는 실험을 해보는 것도 좋다. 이 실험을 통해 즉각적이고 재미있는 피드백을 얻을 수 있을 것이다.
URLS 실전 돌입
어느새 실용 튜토리얼을 거의 다 끝냈고 이제 남은 부분은 main 함수뿐이다. 눈치가 빠른 독자라면, 각 URL이 change.py에서 정의한 클래스와 대응된다는 사실을 알 수 있을 것이다. URL에 종속적인 애플리케이션의 일부분을 변경하면서 URLS의 이름을 바꿔보도록 해보자. 이 과정을 통해 URLS이 어떻게 동작하는지 쉽게 파악할 수 있을 것이다.
GAE에 대한 부가적인 정보
파이썬 웹 프레임워크, GAE, 그리고 Webob
GAE에서 흥미로운 것 중에 하나는 webapp라고 하는 매우 간단한 WSGI 호환 웹 애플리케이션 프레임워크이다. 이 프레임워크의 대부분을 차지하는 핵심 부분은 이안 빅킹(Ian Bicking)이 제작한 서드파티 라이브러리인 Webob를 약간 수정해서 얻은 결과이다. Webob에는 HTTP 요청과 응답을 처리하는 객체가 있으며 지난 몇 년간 이안은 끊임없이 개발을 진행하였다. 덧붙이자면, 파일런(Pylons) 웹 프레임워크 또한 내부적으로 Webob를 사용하며 다만 기존의 Webob와 약간 다른 것은 기존의 응답 객체가 GAE의 webapp 프레임워크에 있는 커스터마이징된 응답 객체로 대체 됐다는 점이다.
GAE의 기본 웹 프레임워크는 구글이 여러 개의 프레임워크를 조합하여 만들었으며, 파일런, web.py, 장고와 같은 유명한 파이썬 기반의 프레임워크에서도 동작이 가능하다. Zope 3와 Grok이 올해 여름쯤에 GAE에서도 동작할거란 논의가 있는데, 곧 열릴 구글 I/O 이벤트에서 그 면모가 드러날 수도 있다. 또한 지금까지 장고 템플릿만 GAE에 포함되어 있었지만 조만간 장고 기반의 또 다른 프레임워크인 Jinga, Mako, 그리고 Genshi의 개발 버전 등도 만나볼 수 있을 것이다. 다른 프로젝트나 특별한 프로그램에 대한 링크는 참고자료에 소개했다.
구글 I/O 이벤트
이 튜토리얼로 인해 GAE로 마이스페이스(MySpace)나 페이스북(Facebook)과 같은 사이트를 개발하고 싶은 마음이 생겼으면 구글 I/O 이벤트에 참석하는 것도 좋은 방법이다. 필자는 5월 28~29에 샌프란시스코에서 열리는 구글 I/O 이벤트에 참석할 예정이며 벌써부터 들떠있는 상태이다. 운이 좋게도 구글 제품 수석 책임자 톰 스타키(Tom Stocky)와 예전에 전화 인터뷰를 진행한 적이 있었는데, 그는 구글 I/O 이벤트에 대해 다음과 같은 말을 남겼다. "구글 I/O는 차세대 웹 애플리케이션 구축에 큰 축을 담당하고 싶은 개발자를 위한 행사이다." 구글 I/O는 개발자용 제품을 만드는 구글의 기술팀이 한 자리에 모이는 올해 들어 첫 번째 행사이다.
요약
이번 기사에서는 기본적인 애플리케이션을 만들기 위해 GAE의 몇 가지 세부사항에 대해 빠르게 알아보았다. 내용 전개가 너무 빠르다고 생각한다면 공식 튜토리얼을 꼼꼼히 살펴보길 바란다. 공식 튜토리얼을 이미 다 보았다면, 기사에서 소개한 예제 코드에서 몇 가지 아이디어를 내보거나 귀여운 ‘호박’ 색깔의 CSS를 가져다 사용해 보는 것도 좋다.
GAE를 10점 만점으로 점수를 준다면 9.5를 주고 싶다. 필자에게 GAE의 개발 환경이 잘 맞았고 GAE의 툴로 복잡한 애플리케이션을 개발하는데 아무런 문제가 없었기 때문이다. 템플릿에 몇 가지 더 많은 옵션을 주는 것도 좋았겠지만, 필자에게는 그것마저 문제가 되지 않았다. GAE 애플리케이션을 만드는데 푹 빠지는 것이 두려워 에스프레소 커피머신을 숨겨야 할 정도로 그 매력에 반해버렸다. 궁금한 점이 있거나 GAE 프로젝트 작업에 대해 의뢰할 것이 있다면 언제든지 연락하기 바랍니다.
참고자료
저자 노아 기프트(Noah Gift)는 현재 장고 웹 애플리케이션인 Diskbot, 렌더링 툴, 자동화 소프트웨어 설치툴인 osxsmartdeply와 같은 오픈 소스 프로젝트들에 참여하고 있다. 또한, TurboGears 프로젝트중에 하나이면서 그룹 기획 소프트웨어의 WordPress를 지향하는 feestje에서 공동작업을 진행하고 있다.