블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

 IBM 블루믹스의 openwhisk 에 대한 소개


조대협 (http://bcho.tistory.com)


오늘 IBM의 블루믹스 세미나에 다녀왔습니다.

세미나 내용중에서 흥미로운 기술들이 있어서 간단하게 소개합니다.

IBM 블루믹스 클라우드의 새로운 기능으로 Openwhisk 라는 서비스입니다http://www.ibm.com/cloud-computing/bluemix/openwhisk/

https://developer.ibm.com/openwhisk/ 아마존의 람다 기능과 유사한 기능인데 개념을 보면 다음과 같다.

 

이벤트가 발생하면, 이벤트 내용을 받아서 비지니스 로직이 들어 있는 액션을 수행한다.

아래 그림을 보면 REST API로 호출하거나 또는 데이타 베이스에 어떤 내용이 변경이 되거나 또는 Kafka와 같은 메세지 큐에 새로운 메세지가 들어오면 정해진 규칙 (이를 Openwhisk에서 Rule이라고 한다.)에 따라서 비지니스 로직을 호출한다. 이 비지니스 로직 덩어리를 Action이라고 하는데, Action을 여러개로 묶어서 아래 그림과 같이 체이닝이 가능하다.



 

이벤트 방식으로 비지니스 로직을 Invoke해주는 방식인데, 뒷단에 ActionAuto scaling이 가능해서 시스템의 용량등에 상관 없이 사용이 가능하다.

또한 이 ActionSwift, node.js, Java 와 같이 다양한 언어로 구현이 가능하다.

개발자는 아래 인프라를 신경쓸 필요가 없이 비지니스 로직만 구현하면 된다는 것이다.

 

과금 정책은 실제 Action이 실행되는 시간만 과금이 된다. 해당 로직을 수행하는데 30ms만 걸렸다면 30ms에 대한 금액만 과금된다. 유사한 기능을 EC2와 같은 VM위에 올리면, CPU를 많이 사용하는 로직일 경우 계속 CPU가 큰 CM을 켜놔야 하기 때문에 비용이 많이 나오지만 이 구조를 사용하면 비용이 딱 사용한 부분만 나온다.

 

다른 흥미로운 점은 IBM이 이 기능을 개발하면서 이 Openwhisk를 오픈소스화 했다는 것이다.

소스는 https://github.com/openwhisk/openwhisk 에 있는데, 이 말은 블루믹스를 사용하지 않더라도 AWS나 구글 글라우드에 Openwhisk를 옮길 수 있다는 것이다. 즉 클라우드 락인에 대한 문제를 해결하고 시작했다는 것이다.

 

AWS 람다와 유사한데, 근래 들어서 이런 형태의 기능들이 클라우드에 많이 나오는 것 같다.

톰캣이나 파이썬 장고와 같은 웹서버나 미들웨어를 알필요도 없고 복잡한 설정이나 스케일링에 대한 고려를 할필요도 없고 클라우드 자체를 플랫폼으로 그위에 비지니스 로직만 올리는 형태로 점점 클라우드가 발전해 가는 모습이 보인다.  나중에는 미들웨어 없이 클라우드 자체에 코드만 올리는 형태가 되지 않을까? 이미 AWS에서는 람다, 다니나모, S3, API 게이트웨이등을 조합하면 별도의 미들웨어 없이 왠만한 API들은 구현이 가능하다.

 

저작자 표시 비영리
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

IBM Blumix #1-첫번째 node.js 애플리케이션 개발

bcho.tistory.com

조대협


지난번에 bluemix에 대한 간략한 소개를 (http://bcho.tistory.com/940) 하였다. 오늘은 첫번째 node.js 애플리케이션을 만들어보도록 하자

먼저 bluemix에 가입을 한후에, 대쉬보드에 들어가서 "Create App" 을 선택한후에, "SDK for Node.js"를 선택한다.


여기에, 애플레케이션 이름을 넣는다. 애플리케이션 이름을 넣으면, node.js 애플케이션의 디폴트 웹 URL명도 똑 같이 애플리케이션명.mybluemix.net으로 지정된다. 


위의 그림과 같이 node.js 애플리케이션이 생성된 것을 볼 수 있다. 소스코드를 수정하기 위해서, 코드를 git repository로 전환한다.

위의 메뉴에서 ADD GIT 버튼을 누르면 소스코드가 저장된 저장소를 git로 변경해준다. 그후에 아래와 같이 GIT URL이 생성된 것을 확인할 수 있다.



다음으로 IDE를 이용하여, git remote repository를 이 URL로 연결해준다. 여기서는 WebStorm 7.x를 사용하였다.

코드를 받아서 /package.json을 확인해보면 다음과 같다.

{

"name": "NodejsStarterApp",

"version": "0.0.1",

"description": "A sample nodejs app for Bluemix",

"dependencies": {

"express": "3.4.7",

"jade": "1.1.4"

},

"engines": {

"node": "0.10.26"

},

"repository": {}

}

기본적으로 express 3.4.7 버전과 jade 1.1.4 버전을 사용하고 있으며, node.js 버전은 0.10.26 버전을 이용한다.
그러면 코드를 수정해보자 /views/body.jade 파일에 아래와 같이 Learning node.js 문자열을 추가해주고, 코드를 commit/push 한다.

        p Thanks for creating <span class = "blue">Learnig node.js</span>. Get started by reading our <a href = "https://www.ng.bluemix.net/docs/#starters/nodejs/index.html#nodejs">documentation</a> or use the quick start guide under your app in your dashboard.



별도의 코드 배포나 작업없이 push가 된 코드는 node.js에 적용된다.

아래와 같이 수정한데로 "Learning node.js" 문자열이 출력되는 것을 확인할 수 있다.

대쉬 보드에서 프로젝트를 선택하면, "ADD GIT" 버튼이 있던 자리에 "CODE"라는 아이콘이 생긴것을 볼 수 있는데, 여기를 들어가면 git repository내에 저장된 코드를 볼 수 있고, 좌측의 git 아이콘을 눌러서 확인해보면, 코드 변경 이력을 아래와 같이 확인할 수 있다.




※ 참고 자료 : https://hub.jazz.net/tutorials/jazzeditor/ 에 설명이 잘 나와 있음. (추천)






저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


IBM 블루믹스 소개

 

PaaS

IBM 블루믹스는 IBM에서 제공하는 PaaS(Platform As A Service) 클라우드 서비스이다. 아마존과 같은 서비스가 VM을 제공하는 IaaS(Infra as a service)라면, 블루믹스는 node.js, Java와 같은 런타임을 미리 깔아놓고, 거기에 소스코드를 넣어서 돌리는 구조이다. IaaS의 경우 Linux Windows Server와 같은 OS VM 기반으로 제공하기 때문에 직접 미들웨어를 설치해서 사용해야 하지만, PaaS의 경우 이미 설치된 미들웨어 위에 코드만 돌리면되기 때문에, 아무래도 관리가 편리하다. 

그러면 왜 PaaS인가?

얼마전까지만 해도, 개발 트렌드의 중심은 기업체에서 개발하는 B2C서비스였다. 페이스북이나 네이버와 같은 서비스들이 대표적인데, B2C 서비스들은 대용량의 사용자를 커버해야 하고, 세세한 튜닝이나 설정 변경이 필요하고 다소 복잡한 아키텍쳐 구조를 가지기 때문에, 직접 인프라를 세팅하고 미들웨어를 설치하는 것이 오히려 유리했다. 그래서 IaaS를 많이 사용했는데,

근래에 들어서 개발의 중심이 모바일 앱이 되고 스타트업이 중심이 되면서, 적은 인원으로 빠르게 개발하고 관리할 수 있는 플랫폼이 필요하게되었고, 그로 인해서, Google App Engine이나, Heroku와 같은 PaaS 서비스가 각광받게 되었다.

IBM의 블루 믹스는?

지원 플랫폼

블루믹스는 APPS라는 개념을 가지고 있는데 이는 하나의 서비스로 보면된다. 이 안에, 서비스를 기동하기 위한 node.js mongodb와 같은 미들웨어를 묶어서 배포 할 수 있다. 아래 그림은 실제로 Terry라는 App mongodb 서비스를 추가하는 화면이다.



<App 에 추가할 서비스를 선택하는 화면>

매우 편하다. 클릭 몇번만으로, 내가 원하는 플랫폼을 쉽게 설치할 수 있다.

아래 화면은 node.js mongodb,redis로 구성된 서비스 환경이다.



<node.js mongodb,redis로 구성된 App>

현재 지원되는 플랫폼은 Java, Node.JS, Ruby on rials, Ruby Sinatra등을 지원한다.

부가 서비스 들은, 앞에서 언급한 mongodb, redis이외에도, rabbitMQ, IBM MQ, memcached,Work flow engine, Cloudant (CouchDB 계열) 등의 미들웨어 서비스 이외에도 Single Sign On, IOT (사물인터넷)등의 서비스를 부가로 지원한다. (꽤 많음)


코드 저장 및 반영

런타임에 적용되는 코드들은, 블루믹스에서 제공되는 git 저장소를 사용하면 된다.



<블루믹스 git 저장소>

재미있는 것중의 하나는, 웹브라우져상에서 코드 개발 에디터 기능 자체도 제공한다. 아래는 node.js의 코드를 웹 개발환경에서 편집하는 화면이다.



<블루믹스내에서 코드 편집하는 화면>

그리고, Atlassian JIRA와 같은 이슈 트랙킹 시스템을 제공한다. 공동 프로젝트를 관리하기 위해서는 태스크를 관리할 수 있는 시스템이 필요한데, 블루믹스에서는 IBM Jazz를 기반으로한 태스크 관리 시스템을 제공하고 있다. 개인적으로 예전에 Jazz를 사용했을때 상당히 무겁고 복잡하다는 느낌을 받았는데.. 어떤지는 조금 더 써봐야 알 수 있겠다.



<Jazz를 이용한 Task 정의 화면>

블루믹스는 앞에서 본것과 같이 서비스를 제공하기 위한 플랫폼만을 제공하는 것이 아니라, 형상관리,태스크 관리 및 빌드/배포 까지 자동화한 ALM (Application Life cycle management) End2End 기능을 제공한다.


서비스 관리

아래 화면은 node.js의 인스턴스 수를 조정하는 화면인데, 정말 쉽다. 아래 인스턴스 개수 숫자를 올려주면, 그만큼의 인스턴스가 가동되고, 각 인스턴스별 메모리양을 설정할 수 있다.



<그림. Node.js의 인스턴스 수를 조정하는 화면>

좀 특이한 점이 아마존처럼 VM단위로 과금을 하는게 아니라, 나한테 정해진 메모리 용량에 따라서, 이 안에서 인스턴스를 마음대로 만들 수 있는 개념인데, 구체적인 과금에 개념에 대해서는 향후에 조금 더 테스트를 해보고 올리도록 하겠다.

 

지금까지 간략하게나마 IBM PaaS 클라우드 블루믹스에 대해서 알아보았다. 특징은 무엇보다 쉽다!! 이다. 블루믹스 클라우드는 가입하면 무료 평가기간 동안 사용할 수 있으며 다른 클라우드 처럼 신용카드 번호를 넣지 않아도 된다. (URL : https://ace.ng.bluemix.net)

서버 개발 환경이 필요한 사람이 있으면 꼭 한번 사용해보기를 추천한다.

알림 : 본글은 IBM 블루믹스로 부터, 스폰서를 받는 글이 아닙니다!!! 혹시나 오해하지 마시기를..

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
 

티스토리 툴바