달력

1

« 2021/1 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  
2009. 5. 18. 06:48

Google App Engine Java Overview 좋아하는 것/Google2009. 5. 18. 06:48

Google App Engine에 Java버전 SDK를 다운받고, Springframework을 이용하여, 간단한 MVC모듈을 이용하여 테스트해보고, Google 서버로 테스트해보고 그동안 아무로 작업을 하지 못했다.
개인적으로 여러가지 좋지 않은 일들이 있었기도 하고, 그리고 주말을 제외하면 나만의 관심사들을 깊이 있게 공부하기에는 시간들이 부족하기도 하고, 음.. 변명거릴 찾으려니, 구차하기까지 하다.

오늘은 잠시 스타벅스에 들러서, 잠시 "Google App Engine Java"에 대한 자료들을 살펴보고 있는 중이다.
그리고 살펴보고 있는 자료를 간략하게 나마 정리하고 있는 중이다.

다음 자료를 참고함.
 
 
App Engine Jave Overview
    - Java 표준 기술
        : Java의 표준 기술들로 web applicaions을 개발하고, 이를 구글의 확장성 있는 Infrastucture위에서
          구동 가능하도록 함.
        : 이를 위해서 Java은 Java 6 JVM환경과 Java Servlets interface, 그리고 표준 Interface를 통해 
          App Engine의 확장가능한 Datastore와 Serviece에 제공한다.
            .JDO, JPA, JavaMail 그리고 JCache 등
   
    - Google Plugin for Eclipse
        : Eclipse를 통해서 제공되는 Plugin은 개발을 새로운 프로젝트를 생성하고, 디버그를 도와준다.
        : 이는 Google Web Toolkit을 통해 Cross plotform에서 개발을 용이하도록 도와준다. 
        : 다음 the Java Getting Started Guide 를 통해서 Google App Engine에서 소개 자료를 찾아 볼수 있다.
 
    - The Java Runtime Environment
        : App Engine은 Java 5 JVM상에서 Appliction을 동작시킨다.
        : App Engine SKD는 Java 5와 그 이상의 버전을 지원한다.
        : App Engine 은 Web Application을 위해서 Java Servlet 표준을 사용한다.
            . Java Server Pages, static files and data files 그리고 web.xml과 같은 설정 파일이 
              Standard WAR 디렉토리 구조 안에정의됨.
        : JVM은 보안적인 측명에서 별도로 Appliaciond의 서비스를 지원하도록 분리되어 동작한다.
        : 제약사항으로 App은 Threads를 생성학나 local file system에 데이터를 쓰거나,
          임의로 네트워크 커넥션을 만들수 없다.
        : 더 많은 내용들은 Servlet Environment 를 참조한다.
 
    - The Datastory, the Services and the Standard Interfaces
        : App Engine은 확장성 있는 서비스들을 제공하는데,
            . Application들이 persistant data를 저장하고,
            . 네트워크를 통해서 리소스에 접근하고,
            . 이미지 데이터들을 처리할 수 있도록 해준다. 
        : Datastore은 2가지 표준 자바 Standard Inteterface를 제공한다.
            . Java Data Objects (JDO) 2.3
            . Java Persistence API (JPA) 1.0
        : 위 두개의 Interface는 DataNucleus Access Platform 를 사용할 수 있도록 구현되어져 있다.
        : App Engine은 Memcache를 제공한다. 이는 Datastrore의 Query들과 계산 결과를 캐싱해서
            전달할 있도록 한다. 
            . Java Interface는  JCache (JSR 107)을 구현하였다.
        : URL Fetch 서비스는 다른 웹의 Resource에 접근할 수 있도록 도와준다.
            . Http/Https를 이용하는 다른 서버와 통신이 가능하다.
            .  java.net.URLConnection 를 사용한다.
        : Mail Service
            .  JavaMail Interface를 이용하여 email 메시지를 전송할 수 있음.
        : Image Service
            . Applications에서 이미지를 변환할 수 있도록 서비스를 제공함.
            . 이미지의 크기를 변환하거나 다른 포멧으로 변환이 가능토록 함.
         : Authentication
            . Google Account를 이용한 인증이 가능함.
            . Google Account는 사용자의 계정을 생성하거나, Sign-in할 수 있음.
            . 이미 사용자가 Google의 Account를 가지고 있다면, 이를 Application에 사용할 수 있음.
            
    - Sheduled Tasks
        : Application은 특정한 주기로 Task를 시작할 수 있도록 설정해서 실행할 수 있다.
        : 이는 Unix와 Linux의 Cron Jobs와 유사한다. 다음의 Cron Jobs 를 참조.
    - Java Tools
        : App Engine Java SDK는 몇가지 툴을 포함하고 있다.
            . Test Application
            . Uploading the Application files
            . Downloading log data
            . Apache Ant
            . Google Web Toolkit (GWT)
        : Development server
            . Local에서 application의 개발과 테스트가 가능하도록 도와줌
            . Server는 App Engine의 Data store와 service 그리고 Sandbox를 시뮬레이션을 도와준다.
            . 개발 서버는 data store의 인덱스와 쿼리를 Application에서 테스트 할 수 있도록 도와준다.
        : AppCfg
            . 이 툴은 Command-line인터페이를 제고하여 application을 Google App Engine에서 실행할 수
                있게 도와준다.
            . Application을 Upload하고 index의 구성를 수정하고, Application의 로그를 다운로드 해준기도 한다.
            . 세부 내용은 다음의 "AppCfg"의 내용을 참고한다.
 
간단하게 읽는다는 것이 정리를 하게되니 쉽지가 않다.
하지만 정리하진 않은면, 기억에서 금방 사라지기 때문에, 어쩔수 없다.
Posted by 행복상자

댓글을 달아 주세요

2009. 5. 8. 09:04

Google Trend로 보는 웹 기술 좋아하는 것/Google2009. 5. 8. 09:04

Google Trend를 이용해서, 최근에 사용되고 있는 웹 기술들을을 한번 살펴 보았다.
기술이라는 것이 단지 인기에 의해서 흥하고 망하는 것은 아니지만, 사람들이 관심을 끌고 있는 기술들이 무엇인지 안다면, 분명히 그 이유가 있다. 그리고 이를 안다면 개발하고자 하는 프로젝트에 적용할 때, 적지 않은 도움이 될거라고 생각된다.

내가 회사에서 관련 있는 프로젝트는 ExtJS를 기본 Javascript Framework로 사용하고 있는데, ExtJS는 라이센스가 유료이다. 그리고 많은 Component를 개발자에게 제공하지만, 이를 숙달할수 있도록 익히기 위해서는 약 2달정도의 공부할 수 있는 시간이 필요하다. 왜냐하면, Javascript와 CSS의 기본을 충분히 알지 못한다면, 각 Componet를 원하는대로 쉽게 제어하기 힘들기 때문이다.
그래서, 최근에는 JQuery를 검토하고 있고, 이는 생각보다 개발자드의 코드를 많이 줄여주고, 코드를 단순화 시키는데 도움이 된다. 

Google Trend를 통해, 이러한 기술들에 대한 사람들의 관심도를 알아보기 위해서 검색을 해보니, JQuery에 대한 관심도가 상승곡선을 타고있고 Prototype과 ExtJS는 상대적으로 낮은 traffic을 보여주고 있다.

     jquery: 6.40    prototype: 9.80    extjs: 1.90

 위 그래프는 JQeury의 관심도가 ExtJS보다 약 6배정도 높다는 것을 보여주고 있다. (ExtJS를 1이라고 볼때, JQeury는 6.40의 traffic을 보여주고 있다.)  Prototype의 traffic은 초기부터 현재까지 거의 일정하다. 이를 사랑하는 사람들이 꾸준한 애정을 가지고 있다고 할 수 있다.

다음은 개인적으로 관심을 가지고 있는 Microsoft의 ASP.NET MVC에 대한 사람들의 관심도를 알아볼 것이다.
최근에 ASP.NET 3.5의 Extention으로 마이크로소프트 사는 MVC프레임워크를 개발하고 1.0버전을 공식 발표했다.
이에 대한 사람들의 관심도는 기대 이상으로 보인다. 향후에 이를 이용해서 개발하는 개발자들이 꾸준하게 늘거라 생각한다. 그리고 MS에서는 Asp.net에서 제공하는 기본 Javascritp framework으로 JQuery를 제공하고, 이를 Visual studio에서 툴로서 지원하고 있다. 

최근에 많이 사용하고 있는 Spring MVC와 Structs를 비교해서 검색해 보았다.
Spring MVC는 꾸준하게 관심도를 유지하는 반면에, Structs는 시간에 지남에 따라 상대적으로 관심도가 줄어 들오 있다. 이에 반해 MS의 ASP.NET MVC는 최근에 발표된 이후로 많은 관심을 끌고 있음을 아래 차트를 통해서 알수 있다.
 
    spring mvc: 2.10    struts mvc: 1.00    asp.net mvc: 1.40  

위의 차트가 모든 것을 다 말해줄수는 없다. 최근에 발표되었기 때문에 MS의 ASP.NET MVC가 사람들의 관심을 끌고 있을 수도 있고, 검색 조건에 따라서 차트의 결과가 달라질 수도 있기 때문이다.
그러나 분명한 것은 개인적으로는 MS에서 발표한 MVC 프레임워크와 Scheffold 기능은 오픈 소스에서 진행되었던 여러 프로젝트의 장점들을 따서 만들었기 때문에 개발자들에게 도움이 될거라는 점이다.

어떤 기술을 선택할지는 개발자의 몫이다. 기간과 리소스와 개발자들의 기술 수준을 고려해서 프로젝트 초기부터 잘 검토한다면, 효율적인 개발이 이루어질거라 믿는다. 초기에 제대로 검토하는 시간과 노력없이 프로젝트를 진행해서 나중에 땜빵으로 누더기를 만드는 프로젝트를 여러번 보아왔다. 이 또한 개발자의 양심과는 대치대는 것이지만, 후 작업과 품질 좋은 코드를 원한다면, 초기에 많은 시간이 들여야 한다.

항상 하는 이야기지만, 개발자는 코드로 이야기 해야한다.
Posted by 행복상자

댓글을 달아 주세요

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

무엇을 할까 고민하다가, 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: Upgrade now to Android 1.5 "Cupcake" SDK" 라는 타이틀로 ZDnet에 떴다.
드디어 Google에서 Android 1.5 정식 버전이 릴리즈 되었다. 물로 이에 대해 관심 있는 개발자라면, 다른 여러 경로를 통해서 들었을 것이다.

최근에 Apple에서는 iPhone SDK 3.0 베타를 공개했고, 이어서 6월에는 정식 버전이 공개될 예정이다.
이로 인하여 모바일 디바이스 개발자들이 양분될지도 모르지만, 이는 우려일거라 생각된다. 현재 Apple은 10억 다운로드를 전면에 내세우며, 비지니스 모델의 우월함과 개발자들의 절대적인 지지을 받고 있다.

이에 구글은 올해를 모바일 플랫폼의 입지를 세우는 중요한 해가 될거라 예상하고 있고, 최근 한국의 삼성전자는 6월에 Google Phone을 출시하려는 계획을 가지고 있고, 며칠전에 여러 신문사들이 이에 대한 기사를 다루었다.
다음은 동아일보에 나와 있는 "삼성 '구글폰' 6월 유럽 출시"라는 기사이다.
    기사 링크: http://www.donga.com/fbin/output?f=k__&n=200904280062

그리고, 구글폰이 미국에서 100만대가 팔렸다는 기사도 접할 수 있다. 이에 대한 기사는 여기를 참조하기 바란다.

안드로이드 SDK 1.5버전의 릴리즈는 중요한 시점에 발표되었고, 이를 통해서 새로운 방향을 모색할 수 있으리라 본다.
하지만, 이를 통해 개발하기 위해서는 기본적인 시뮬레이터와 개발을 위한 디바이스의 확보가 필수적인데, 아직까지는 국내에서 언제쯤 출시될지는 미지수이다.

자바 개발자들에게는 안드로이드는 또 다른 의미로 다가 올수 있기 때문에, 새로운 기회를 모색하고 있는 자바 개발자라면, 반드시 관심을 갖을 필요가 있을 거라 생각된다. 개인적인 생각일지 모르겠지만, 이러한 기회들을 지난 20년동안 그리크게 많지 않았다. 다만 머저 앞서갔던 사람들은 그 만큼 많은 기회를 얻었다는 것이다. 왜냐하면, 초반에는 희소성의 원칙이 지배하기 때문이다. 그리고 더 많은 패러다임의 변화를 체득한 사람들은 그렇지 않은 사람보다 여유로울 수 밖에 없다. 특히 개발에 대한 애정밖에 없는 순수한 개발자라면 더더욱 그렇다. 조만간 국내에서도 안드로이드 SDK를 이용하여 개발이 가능한 환경이 찾아 올것이다.

애플이든 구글이든 한 업체가 전체 시장을 다 먹을 수는 없을 거라 생각된다.
애플이 빠르게 시작하였지만, 아직까지는 시장이 만들어지는 단계이기 때문에(단지 하드웨어만 판다고 하면 이는 전혀다르다.), 향후의 행보는 쉽게 예측하기 어렵다. 다만 애플이 App Store를 통한 비지니스 모델이 성공하면서, 기업끼리의 경쟁에서 "개인과 개인" 또는 "개인과 기업"의 경쟁 구조로 Echo System을 만들어 버렸다. 이것이 언제까지 지속될지는 알수 없지만, 지식 노동자의 개인에게 기회를 제공했다는 점에서 큰 의미를 부여할 수 있다.

아래 링크는 위 블러그에서 참조 삼아 가져온 링크들이다. 이중에는 "Android 1.5 Version Notes"는 구글의 Adroid에 대해서 관심있는 개발자라면 한번 읽어 볼만하다. 

  • Top 5 features in Android 1.5 (Cupcake)
  • 1.5 Non-Working Apps List (as of 06apr2009)
  • Android 1.5 Version Notes
  • Flashing your Android Dev Phone with a Factory System Image
  • Planet Android
  • Follow Planet Android on twitter (@droidfeed)
  • 가끔씩은 기회를 기다릴수 있는 인내와 그리고 기회에게 먼저 다가갈 수 있는 용기가 필요하다.

    Posted by 행복상자

    댓글을 달아 주세요