블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 11. 3. 18:19 Middleware, Cloud/Cloud

Node.js로 개발한 간단한 애플리케이션을 CloudFoundry로 배포해 보자. 현재 클파(CloudFoundry)는 무료이지만 조만간 유료로 가지 않을까 생각된다. 특징을 보자 


▶ 클파 설치하기

  - 우선  http://www.cloudfoundry.com/  으로 가서 Sign Up 한다 (신청한 메일계정으로 비밀번호가 온다)

  - http://www.rubyinstaller.org/ 사이트로 가서 ruby를 설치한다. (설치시 path 설정여부에 check를 한다. ruby의 gem을 사용하기 위함으로 node.js의 npm와 같은 package 설치 관리자로 보면 된다)


  - d:>gem install vmc  (클파 관리 유틸 vmc를 설치 한다. 한참을 설치하니 그냥 기다리자)

  - vmc의 target을 클파로 지정을 한다 (api.cloudfoundry.com) 그런후 신청한 계정으로 로그인을 한다


  - 하단에 첨부된 파일 적절한 위치에 푼다음 해당 디렉토리로 이동한다

  - 클파에 애플리케이션을 Push 한다 (vmc push <URL해드> 예) vmc push nulpulum 으로 하면 웹 호출 주소가 http://nulpulum.cloudfoundry.com 이 된다. 자세한 사항은 vmc help 로 살펴보자. 최초에는 사용하려는 service에 대하여 물어본다 이때 mongoDB 1개만을 만든다.)



  - 배포된 애플리케이션의 정보를 보자

  - 브라우저에서 호출하여 보자 


  - 간단하게 자신의 애플리케이션을 배포하여 바로 확인해 볼 수가 있다. 등록가능한 애플리케이션에 대해 보려면 vmc services 명령으로 확인해 보면 된다. 


* 첨부파일 : Node.js + Express + MongoDB를 사용한 간단한 CRUD 애플리케이션 

cloudFoundry mongodb.zip



<참조>

  - Open Source Cloud PaaS

  - Spring쪽에서 만든거라 Spring Framework을 지원하고, Node.js등 최신 기술을 지원한다 

  - 클파 이해하기

  - 클파 VMC 사용

'Middleware, Cloud > Cloud' 카테고리의 다른 글

Cloud9IDE 사용하기  (0) 2012.11.15
Ubuntu 에 JDK 1.7 설치하기  (0) 2012.11.15
posted by 윤영식
2012. 11. 3. 12:11 Middleware, Cloud/OSGi

예전 프로젝트할 때 WAS를 재기동하지 않고 애플리케이션과 SQL을 관리툴을 통하여 reloading 하는 프레임워크를 만든적이 있다. 또는 솔루션에서 액션을 수행하는 어뎁터 Java 코드를 관리툴을 통하여 입력하면 WAS의 재기동없이 신규 및 업데이트가 가능하게 한적이 있다. 그때 마다 사용했던 것이 ClassLoader 이다. 


좀 더 발전적이게 Plugin처럼 만들고 싶다는 생각을 했지만 게으름으로 미루다 OSGi에 관심을 갖게 되었다. 솔루션을 만들때 통신, 데이터 관리, 어드민 관리, 서비스등을 별도의 버전으로 관리하고 싶었다. OSGi 이면서 J2EE와 같은 Enterprise급 또는 솔루션 개발을 진행할 수 없을까 고민하던 중 찾은 Eclipse Virgo!  


  - 이일민씨의 기고글 : Virg 들어가기

  - Ted Won씨의 블로그 : Virgo 이해

  - 공식 Virgo Wiki


딱 내가 찾던 미들웨어 기능을 고스란히 가지고 있는 Eclipse Virgo를 사용해 보자 

Virgo는 두가지 종류의 버전을 제공한다 


  - Virgo Kernel : Runtime Platform for OSGi based java applications

  - Virgo Web Server : Virgo Kernel + Tomcat Server, OSGi based Web Application 배포 가능 



▶ Virgo 설치 


  1) 다운로드 :  http://www.eclipse.org/virgo/download/ (현재 v3.5.0)

  2) Virgo Server for Apache Tomcat 으로 시작해 보자

  3) bin/startup.bat 를 수행하면 OSGi bundle를 로딩하고 tomcat이 시작된다

  4) 웹 admin console을 들어가 보자 (http://localhost:8080,  id: admin pwd: springsource)

  5) 상단의 메뉴를 클릭하면 반영된 bundle내용 및 기타 상태정보와 deploy등을 수행할 수 있다

  6) Virgo에서 제공하는 모니터링 툴을 실행해 보자 (<Virgo_Home>/bin/jconsole.bat 실행)

  7) jconsole 로그인 (admin / springsource)

  8) JVM에 대한 기본적인 모니터링 항목(memory, thread info, loaded classes, tomcat JMX info) 등을 다양하게 모니터링 할 수 있다 

[Overview] 탭에서 Memory, CPU, Thread수, 로딩된 Class수 등을 볼 수 있다. 



[Threads] 탭에서 각 스레드의 정보를 볼 수 있다. 하단 왼쪽의 스레드를 클릭하면 하단 오른쪽에 정보가 나온다. 


[MBeans]탭에서 Tomcat의 JMX 뿐만 아니라 Virgo 관련 JMX 정보도 볼 수 있다 


  9) Virgo가 사용하는 기본 Library Path(repository/ext)와 유저 Library Path (repository/usr). 기본 OSGi Bundling만 인식한다 

  10) Log는 configuration/serviceability.xml 안에 설정을 하면 serviceability 디렉토리에 로그가 쌓인다 (logback 사용)

  11) OSGi telnet console을 사용하고 싶다면 configuration/osgi.console.properties 중 telnet.enabled=true 로 수정 그리고 Virgo를 재기동한다


  12) OSGi CLI 기반 연결 기본 port 는 2401 변경하고 싶다면 위의 properties파일에서 포트 번호를 변경하고 접속한다

  13) osgi> lb 명령을 수행하면 현재 번들의 상태를 알 수 있다

  14) 번들을 보면 OSGi Kernel, Apache Felix, Apache MINA등이 Active이고 Spring, SLF4J 등이 Resolved 상태이다


Virgo는 OSGi개념위에 J2EE 플랫폼기반 애플리케이션을 만들 수 있게 해준다. 


posted by 윤영식
2012. 10. 30. 21:52 NodeJS/Concept


Node.js를 위한 Web Framework으로 Express 를 사용한다. GitHub에도 상당한 순위에 올라와 있고, rail 방식과 유사하다. Connect 모듈을 기반으로 템플릿은 EJS와 Jade를 기반으로 하고 있다. 



▶ Express 설치하기  (http://expressjs.com/guide.html)

  • npm (Node Package Manager)을 이용하여 설치해 보자 (-g 옵션은 nodejs 설치 전체에 적용된다. -g 옵션을 안 주면 설치 디렉토리내애서만 영향을 미친다)

    설치가 완료되면 nodejs가 global 참조영역인 Application Data/npm/node_modules/express 라고 설치가 된다


  • express 명령으로 HelloExpress라고 만들어 보자. 그러면 기본적인 Web Application 골격이 생긴다. (WAS의 Context war 파일 생성되는 것으로 비유하면 되겠다. 예로
    > routes/*.js 파일은 web.xml의 url-mapping 설정과 유사하다
    > views/*.js 는 템플릿 엔진의 파일들이 위치한다 (ejs 또는 jade를 사용한다. ejs는 JSP 코딩과 유사하여 친숙하고, jade는 간결함이 좋다)
    > public/* 퍼블리싱 하는 static 파일들
    > app.js Express의 main 파일이다


  • HelloExpress 디렉토리로 이동하여 express가 의존관계에 있는 외부 modules를 설치한다


  • 설치가 완료된 후 node app 로 Express 프레임워크를 수행한다 (http server listening 이 포함되어 있음)



  • app.js 코드를 보자 

    > 외부모듈 express를 얻어와서 app변수에 정적 서버환경을 셋팅하고 있다.(default jade 템플릿 셋팅)
    > URL의 호출에 대한 맵핑을 담당하는 rounting 설정을 한다 
    > 맨 마지막줄에 http server 를 시작한다 

  • http://localhost:3000/dowon 이라는 url 셋팅을 해본다. 우선 app.js 에 routing 정보를 넣는다

  • HelloExpress/routes/user.js 안에 exports.dowon 을 추가한다 



  • HelloExpress/app.js 서버를 재시작 하고, 브라우져에서 호출한다.  



▶ Node를 위한 Jade Template 사용하여 표현하기

  • routing하기 위하여 user.js에 하드 코딩된 html 코드를 jade 템플릿으로 서비스하는 방법을 알아보자. 우선 views 디렉토리에 dowon.jade 파일을 만든다 (jade는 템플릿 엔진이다)



  • dowon.jade 템플릿 코딩을 한다 (자세한 사항은 http://jade-lang.com 사이트를 참조하자)

  • routes/index.js 안에 정보를 넣으면 app.js 안에서 routes.dowon으로 호출을 할 수 있다


  • routes/index.js 파일안에 설정한 index, dowon은 app.js 에서 routes.index 와 routes.dowon 으로 호출한다 


  • 재시작하고 브라우져에서 http://localhost:3000/dowon2 로 호출하면 jade 내역이 html로 변환되어 서비스 된다




    간단하게 Express Framework을 Node.js에 얻져서 사용하는 방법을 보았다. 사용하며 느낀것은 서비스를 위한 앞단의 url-mapping과 유사한 route 개념은 새롭게 개발할 필요없이 적용할 수 있어서 좋다. 그러나 domain 모델쪽의 개발과 persistence 영역의 개발에 대한 부분이 Express에 있는지 없다면 어떤 외부 module을 통하여 Express와 통합을 해야하는지  찾아 보아야 겠다. 

    * jade 설치 및 사용법 : http://blog.doortts.com/223


'NodeJS > Concept' 카테고리의 다른 글

[EJS] 사용하기  (0) 2012.12.15
[Node.js] Global Objects  (0) 2012.12.10
[Node.js] File I/O 사용하기  (0) 2012.12.10
[Node.js] EventEmitter 에 대하여  (0) 2012.12.10
[Node.js] debugger 사용하기  (0) 2012.12.10
posted by 윤영식
2012. 10. 30. 19:24 NodeJS/Modules



CoffeeScript는 Javascript 코드를 단축시키고 가독성을 높이며 {}와 ; 가 있는 코드로 부터 해방시켜준다. 실제 CoffeeScript 코드를 보았을 때 마치 영어 산문을 보는듯 했다. 만일 마틴파울러 아저씨가 이야기하는 Clean Code Style을 지향한다면 정말 영어 산문을 쓰는듯 코딩을 하면 된다. 


1) CoffeeScript 코드 짜고 JavaScript와 비교하기 

  - http://coffeescript.org/#top 로 들어가서 "TRY COFFESCRIPT" 상단 메뉴를 선택한다. 브라우저에서 coffeescript 코드를 치면 바로 javascript코드로 확인할 수 있다.


  - 그렇다면 이런 coffeescript 코드를 어떻게 배울 수 있을까? 구글에서 "smooth coffeescript"를 검색하고 interactive... 을 선택한다

  
HTML5 화면으로 웹상에서 CoffeeScript를 익히면서 학습을 할 수 있는 사이트이다. Edit 박스의 코드를 수정하면 하단의 결과값이 자동 변경되어 출력된다. 
CoffeeScript 디버깅툴이 내장된 상용툴을 사용해 보자 (http://www.jetbrains.com/webstorm/)


<국내 레퍼런스> 

  - coffeescript 개념부터 잘 정리된 사이트 : http://aroundck.tistory.com/958

posted by 윤영식
2012. 10. 30. 16:29 NodeJS

Node.js 를 배우기 위해서 Sublime Text 를 설치하고 Node를 설치하는 과정을 보자 



▶ Sublime Text에 Node 연동하기 

  • sublimet text를 설치하고 install package control을 설치했다면 ctrl+shift+p를 누르고 "install package" 입력후 Enter
  • 다음에 node라고 입력을 하면 node관련 패키지 3개가 나온다 각각 설치한다

  •  Node.js 엔진 설치를 위하여 http://nodejs.org/ 사이트 중앙에 있는 [Install]을 클릭하면 설치본이 다운로드 된다. 안내에 따라 설치를 하게되면 System Path에 자동으로 <NODE_HOME>/bin 디렉토리가 잡힌다
    기타 공식 설치 사이트 : https://github.com/joyent/node/wiki/Installation

  • node 문법으로 간단하게 java의 System.out.println과 같은 console.log를 타입핑후 hi.js 명칭으로 저장하고, ctrl + B 키를 누르면 Automatic Build가 된다. Tools -> Build System -> Automatic 이 체크되어 있다면 Syntax를 자동인지하여 Nodejs로 빌드하여 결과를 출력한다

TextMate만큼 막강한 Sublime Text를 통한 Node.js 개발 환경 구축이 완료되었다. 


* 참조 : Sumlime Text 2 설치 및 환경설정



▶ Nodejs 기본 파악하기 


> Nodejs 의 기본 명령 앞에 dot 를 붙인다. 



> 읽어 볼 만한 블로깅 글을 Link만 열거 한다. 

     Beginner Book : ManuelKiessling-NodeBeginnerBook.zip


posted by 윤영식