기본 콘텐츠로 건너뛰기

Google App Engine에 Spring framework 환경 만들기


어제는 근로자의 날이라서 출근하지는 않았었다. 그리고 전날은 부부동반 모임이 있어서, 늦에 들어온 것을 핑계삼아 간만에 게으름도 피우고 그랬다. 아니 사실은 게으름을 피운 것운 것이 아니라, 감기인지 못살인지 몸이 좋지 않아서 누워서 오전을 보냈다. 선천적으로 늦잠을 좋아하지 않는 관계로 시간이 무척 아까웠다.

무엇을 할까 고민하다가, Google App Engine에 스프링으로 간단한 페이지를 한번 올려봐야지라는 생각이 들었다.
최근에 Google의 Eclipse 플러그인과 SDK는 이미 설치해서 간단한 것들은 적용해 본 상태여서, Google의 App Engine의 인증만 남은 상태이므로 남은 작업은 정말 간단하다.

만약 Eclipse에 Google App Engine Plugin과 SDK를 설치 하지 않았으며,
이전에 블로그에 올렸던 다음의  글을 "Google App Engine SDK 설치 및 실행" 를 참조 하기 바란다.

위와 같이 Google App Engine을 위한 기본 환경을 만들었으면, Spring Framework를 다운 받아야 한다.
이미 Spring Framework를 이용하여 개발한 경험이 있는 개발자라면, 기존에 가지고 있던 Library들을 그대로 사용하면 되지만, 그렇지 않은 개발자라면 www.springframework.org 에서 다운 받아야 한다.
                      - Spring Framework 2.5 Dependency Version Download

지금은 SpringFramework 3.0M3가 공개되고 있지만, 정식 Release된 2.5.5버전을 예제 작성에 사용할 것이다.
(물론 다른 버전을 사용해도 큰 영향은 없을거라 생각된다. 환경만 잘 맞추어 주면 말이다.)

자 이제 본론으로 들어가서, Google App Engine의 Eclipse Plugin을 정상적으로 설치하게 되면, Eclipse의 상단 메뉴텝에 다음과 같이 3개의 아이콘들이 생겨난 것을 볼수 있을 것이다.

  


위에 첨부한 메뉴 이미지 중에서 왼쪽에 있는 메뉴 아이템을 클릭하여 "New Web Application Project"창을 아래와 같이 띄운다.

위의 창에 생성할 프로젝트 이름을 입력하고, 기본적으로 생성할 패키지명도 입력한다. 만약 Google Web Toolket를 사용하기 원하지 않으면 체크박스에서 체크 표시를 지워주고 하단에 있는 "Finish"버튼을 클릭하면 된다.

프로젝트를 생성하면 기본적인 Servlet을 예제로 제공한다. 자 일단 테스트를 위해서 이를 실행해 보자.
아래와 같이 "Debug As" 메뉴의 서브 메뉴인 "Web Application" 를 실행시키면 웹서버가 실행된다.



이를 확인하기 위해서는 웹브라우져의 주소창에 "http://localhost:8080" 입력하여 실행하면 된다.

정상적으로 동작하는 것을 확인하면, 이제 스프링을 실행할 수 있는 환경을 만들어 보겠다.
예제는 아는 사람들에게는 잘 알려져 있는 "step-by-step" 를 예제로 작업할 것이다. 환경을 만들어 주기 위해서는 이전에 다운 받은 Springframework에서 Spring.jar, Spring-mvc.jar 그리고 common-log.jar 파일을 WEB-INF/lib 디렉토리 아래로 복사한다. (아래  그림 참조)

common-log.jar 파일은 Google에서 제공하는 logging 패키지를 이용해도 되지만, Spring의 "DispatcherServlet"을 로딩할때 에러가 나기 때문에 넣어준 것이다. 위의 "step-by-step" 예제를 따라하면, 기본적인 웹페이지를 작성할 수 있을 것이다. 다만, "Ant Build"에 관한 내용과 "Unit Test"에 관한 부분은 크게 신경 쓰지 않아도 된다.

Spring의 "DispatcherServlet"을 이용한 기본적인 예제는 큰 에러 없이 작성될거라 믿는다. 만약 에러가 난다면, Google의 SDK없이 만들어서 돌려보기 바란다. 기본적인 개념을 익히는데 큰 도움이 될거라 믿는다.

일단 http://localhost:8080 을 이용해서 무리가 없으면,



위 이미지의 메뉴중(붉은 박스로 안에 있는)에 세번째 아이템(비행기 모양의 버튼)을 클릭을 하여 "Deploy Project to Google App Engine" 윈도우를 띄운다.



위와 같은 창이 뜨면, 입력할 값들을 입력박스에 채워 넣고 Deploy를 실행하면 되는데, 이를 위해서는 Google App Engine의 인증이 필요하다. 인증을 위해서는 이미 구글의 Account가 있어야 하고, 이를 이용하여 Deplore를 진행할 수 있다.

아래의 이미지는 서버에서 서비스할 application을 위한 기본적인 정보인데, 간단하게 필요한 내용을 입력하면 된다.


위 화면의 "Applicatiion Identifier"는 자신이 원하는 App Engine상의 sub 도메인 역할을 하는 것이고, "Appication Title" 은 적절한 이름을 넣어주면 된다. 인증 관련된 부분은 특별한 설정 없이 그래도 놓은면, 누구다 다 접속이 가능하고, 별도의 추가 설정이 필요하면 "Edit" 링크를 눌러서 추가 설정을 해주면 된다. (자세한 내용은 구글에서 제공하는 가이드를 참고하기 바란다.)

설정을 마쳤으면 "Save" 버튼을 클릭하면 서버상의 설정을 마쳐지게 된다.

내가 작성한 셈플 프로그램은 여기에 있다.
    Sample Progrom 링크 : http://happyzoo2009.appspot.com/hello.htm

추가적인 사항으로는 Google App Engine에서 제공하는 DB는 공식적으로는 없다. 다만 Google App Engine의 Datastory를 이용이 가능하다. 하지만 이 역시도 Google에서 제공하는 Library를 통해서 JPA와 JDO틀 통한 이용이 가능하다. 이를 이용해서 Persistance 데이터들을 관리해서 사용해야 한다. 이의 사용은 기존의 관계형 DB와는 차이가 있다. 때문에 제대로 이용하기 위해서는 역시 공부하고, 분석하는 시간들이 필요하다.

하지만, 관계형 DB의 사용도 가능하나 역시 제약이 뒤 따른다. HSQLDB를 이용하여 in-memory상에서 동작을 시키는 경우이다. (이런 경우는 Hibernate의 이용이 가능하다. )

이제는 데이터를 어떤식으로 다룰지에 대한 고민들이 남아있다.
한가지 한가지씩 배워나가는 즐거움이 있는 장남감이다. SprignSource에선 Groovy와 Grails을 이용한 예제를 벌써 내 놓았다. 아직은 이들을 적용하고 싶은 생각은 없지만, 조만간 한번을 이들에 대해서도 공부하고 알아야 겠다는 생각은 늘상 가지고 있다. 일단은 Jruby를 먼저 적용해 보고 싶은 생각이 크다.





Posted by 행복상자

댓글

이 블로그의 인기 게시물

Google App Engine의 Database 비용 줄이기

Feb 17 Google App Engine의 Database 비용 줄이기 얼마전 iOS 개발자로 일하고 있는 친구와 함께 사진 공유 App을 런칭했다. ( App Store Link ). 어차피 돈 벌기 위한 작업이 아니었으므로 서버 비용을 최소화하는 방법으로 구현했다. 1. 사진 데이터는 Facebook에 올린다. 2. 우리 App에서 보여주기 위한 데이터(순위, 투표 현황 등)는 Google App Engine에 저장한다. 1 GB까지 무료이므로 어느정도 수준까지 무료로 서비스 가능. 이 이상이면 소액 지출로 해결한다. 1GB 이상의 데이터가 쌓일 정도면 일정 수준 성공한 서비스이므로 광고 등으로 유지 비용을 벌 수 있을 것이라 판단. 3. iOS App에서 cache를 적절히 활용하여 Google App Engine에 조회를 최소화한다. 위와 같은 방식으로 하면 초기 비용 없이 서비스를 한동안 제공할 수 있을 것이라 생각하고 App을 한달전 쯤 런칭하였는데... 딱 일주일만에 Google App Engine의 DB read 동작이 무료로 제공되는 한계치를 넘을려 하고 있었다. 어쩔 수 없이 유료화로 전환하여 약간의 비용을 지출하게 되었는데. 실제 사용자 수에 비해 DB read 횟수가 많아 보여 이를 감소하는 방법을 찾아 적용하였다. 혹시, Google App Engine을 사용하여 서비스를 구축하려는 분들에게 도움이 될 듯 싶어 공유한다. DB read 동작 횟수에 대한 정확한 이해가 필요 Entity를 읽으면 무조건 1회의 read 동작 Query를 실행하면 1회, Query에서 얻어지는 모든 Entity에 대해 1회의 read 동작 (read는 10...

카페24에서 스프링으로 만든 mvc 모델을 등록 http://m.blog.daum.net/liokingim/1944

블로그 통합검색 관련 서비스 펼치기 내 블로그 친구 리오의 오두막 글목록 방명록 cafe24에서 java spring mvc 사이트 만들기. 리오 | 2013.07.17 10:20 목록 크게 댓글 (1) | 댓글쓰기 카페24에서 스프링으로 만든 mvc 모델을 등록할려고 상당한 삽질을 한 끝에 드디어 성공했습니다. 그 방법을 등록합니다. 요구 사항 1. spring framework 3.3 2. java 3. oracle 10g 4. mvc 5. Controller 를 사용 카페 24에서 서비스하는 호스팅으론 위의 조건을 만족하지 않아서 두개의 호스팅을 신청하였습니다. 일단 데이타베이스는 oracle호스팅 으로 신청, Controller 설정은 불가능하여 Tomcat jsp 호스팅 을 신청하였습니다. mysql은 나중에 추가로 쓸려고 생각하기에 그냥 사용.  1. 스프링에서 새로운 프로젝트를 만들어서 샘플 소스를 만들어 봅니다. 2. 스프링 프로젝트를 선택합니다. 3. 스프링 mvc 프로젝트를 선택합니다. 4. 프로젝트의 패키지 명을 등록합니다.    5. 프로젝트에 위의 두개의 HomeController.java, home.hsp가 보입니다.  6. Run on server 를 클릭하여, 서버를 시작합니다.   7. 서버 실행화면이 뜨면 주소를 위와 같이 간단히 수정하여 위의 화면...

jdbc vs mybatis

파일 공유신청 Tistory JDBC와 Mybatis 차이 Study/SPRING FRAMEWORK 2015.02.12 11:35 Google App Engine으로 해보려다 DB를 MY SQL로 하다보니 Google App Engine을 쓸 수 없어  JAVA에서 유명한 Spring Framework를 쓰기로 했습니다. 일단 My Sql에 접근하기위해 JAVA에서는 JDBC가 있어야 한다고 하네요. 안드로이드에서는 SQLite로 간단하게 했는데, JAVA에선 알아야 할게 많네요;;ㅎ 일단 JDBC를 알아봤더니, Oracle, MySql, MS Sql에 접근하기 위한 드라이버 같은 거랍니다. 위 그림과 같이 JAVA 응용프로그램에서 DB에 접근하기위해 JDBC를 거쳐야 합니다. 아 MS에서 만든 ODBC란 놈도 있는데, 이놈은 Access나 Excel같은데도 접근이 가능한데, JAVA에서는 JDBC-ODBC 드라이버로 ODBC로 접근할 수 있습니다. 다시 본론으로 넘어가서 그럼 Spring Framework에서는 어떻게 하느냐... 바로 Mybatis라는 놈으로 쉽게 접근 할 수 있다하네요. 위 그림처럼 JDBC대신 My Batis를 씁니다. My Batis는 원래 ibatis인데, 2010년 아파치 ibatis...