클라우드 컴퓨팅 & NoSQL 384

IBM Bluemix 클라우드의 Openwhisk 소개

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와..

빠르게 훝어 보는 node.js - async 프레임웍을 이용한 콜백헬의 해결

빠르게 훝어 보는 node.js - async 프레임웍을 이용한 콜백헬의 해결 조대협 (http://bcho.tistory.com) 콜백헬의 정의 node.js는 자바스크립트의 콜백 패턴을 사용한다. 그래서 함수들을 순차적으로 실행하고자 할때 콜백 함수들의 중첩이 생겨서 코드가 복잡해지는 문제가 생긴다. 코드가 복잡해지고, 코드의 가독성이 떨어져서 유지 보수가 매우 힘들어진다. 파일을 읽어서 쓰는 코드를 보자 var fs = require('fs'); var src = '/tmp/myfile.txt'; var des = '/tmp/myfile_async.txt'; fs.readFile(src,'utf-8',function(err,data){ console.log(data); if(err){ console..

다르게 생각해볼만한 클라우드 컴퓨팅 활용 전략

다르게 생각해볼만한 클라우드 컴퓨팅 활용 전략 조대협 (http://bcho.tistory.com) 근래에 스타트업 기반의 빠른 속도의 개발을 경험하고, 클라우드 컴퓨팅 도입 전략에 대해서 고민할 기회가 생겨서 여러 자료를 검토하던중에 퍼블릭 클라우드 도입 전략에 대해서 기존과 다른 접근 방식이 필요하다고 생각되어 그 내용을 정리합니다. 특정 벤더의 의존성 배제 퍼블릭 클라우드 하면 거의 공식 처럼 AWS 클라우드가 소위 말해서 갑이었으나, 근래에 들어서 구글이나 마이크로소프트가 큰 딜을 잡아나가면서 약간씩 구도가 바뀌고 있는 형상이다. 특히 구글의 Spotify와, Quizlet의 사례를 보면 구글 사용사례이기 때문에 구글이 좋다는 이야기지만, 내용을 디테일하게 살펴보면 꽤나 재미 있는 인사이트를 얻을..

빠르게 훝어 보는 node.js - monk 모듈을 이용한 mongoDB 연결

monk 모듈을 이용한 mongoDB 연결 조대협 (http://bcho.tistory.com) mongoDB 기반의 개발을 하기 위해서 mongoDB를 설치한다. https://www.mongodb.org/ 에서 OS에 맞는 설치 파일을 다운로드 받아서 설치한다.설치가 된 디렉토리에 들어가서 설치디렉토리 아래 ‘./data’ 라는 디렉토리를 만든다. 이 디렉토리는 mongoDB의 데이타가 저장될 디렉토리이다. mongoDB를 구동해보자. % ./bin/mongod --dbpath ./data Figure 1 mongoDB 구동화면 구동이 끝났으면 mongoDB에 접속할 클라이언트가 필요하다. DB에 접속해서 데이타를 보고 쿼리를 수행할 수 있는 클라이언트가 필요한데, 여러 도구가 있지만 많이 사용되는 ..

node.js에서 multipary와 multer를 이용한 파일 업로드 하기

node.js에서 multiparty와 multer를 이용한 파일 업로드 하기 조대협 (http://bcho.tistory.com) node.js의 장점중의 하나가 비동기 IO를 이용해서 IO 처리에 강하다는 것이다.그중에서 특히나 활용할만한 것중의 하나는 파일 업로드 이다.node.js에서 파일 업로드는 다양한 방식으로 구현이 가능하고 이를 지원하는 모듈도 많은데, 그중에서 busboy,multer, multiparty 등이 많이 사용된다. 여기서는 multiparty와 busboy에 대해서 소개하고자 한다. Multiparty를 이용한 파일 업로드multiparty모듈을 사용하기 위해서는 multiparty모듈에 대한 의존성을 추가해야 한다. 다음은 package.json 파일에 multiparty ..

분산 코디네이터 Zookeeper(주키퍼) 소개

ZooKeeper란 무엇인가?조대협 (http://bcho.tistory.com) 소개 분산 시스템을 설계 하다보면, 가장 문제점 중의 하나가 분산된 시스템간의 정보를 어떻게 공유할것이고, 클러스터에 있는 서버들의 상태를 체크할 필요가 있으며 또한, 분산된 서버들간에 동기화를 위한 락(lock)을 처리하는 것들이 문제로 부딪힌다. 이러한 문제를 해결하는 시스템을 코디네이션 서비스 시스템 (coordination service)라고 하는데, Apache Zookeeper가 대표적이다. 이 코디네이션 서비스는 분산 시스템 내에서 중요한 상태 정보나 설정 정보등을 유지하기 때문에, 코디네이션 서비스의 장애는 전체 시스템의 장애를 유발하기 때문에, 이중화등을 통하여 고가용성을 제공해야 한다. ZooKeeper는..

REST JWT(JSON Web Token)소개 - #2 node.js에서 JWT 사용하기

REST JWT(JSON Web Token)소개 - #2 node.js에서 JWT 사용하기조대협 (http://bcho.tistory.com) Jwt-simple을 이용한 node.js에서 JWT 토큰 사용하기앞에서 http://bcho.tistory.com/999 JWT 토큰에 대한 개념에 대해서 간략하게 알아보았다. 그러면,실제로 JWT 토큰을 어떻게 생성하고 파싱하는 지를 node.js를 샘플을 통해서 알아보도록 하자.시작부터 말하자면. 너무 쉽다. 쉬워도 너무..!!node.js에는 여러가지 JWT 라이브러리가 있지만 그중에서 가장 사용이 편리한 라이브러리는 jwt-simple 이라는 라이브러리가 있다. 먼저 npm을 이용해서 해당 패키지를 설치한 후에 다음과 같은 코드를 작성한다.var jwt ..

분산 대용량 큐-Apache Kafka에 대한 검토

분산 대용량 큐-Apache Kafka에 대한 검토 내용 정리 실시간 빅데이타 분석 아키텍쳐를 검토하다가 아파치 스톰을 보다보니, 실시간 데이타 스트림은 큐를 이용해서 수집하는 경우가 많은데, 데이타의 양이 많다 보니 기존의 큐 솔루션으로는 한계가 있어서 분산 대용량 큐로 아파치 카프카(Kafka)가 많이 언급된다.그래서, 아키텍쳐를 대략 보고, 실효성에 대해서 고민을 해봤는데, 큐의 기능은 기존의 JMS나 AMQP 기반의 RabbitMQ(데이타 기반 라우팅,페데레이션 기능등)등에 비해서는 많이 부족하지만 대용량 메세지를 지원할 수 있는 것이 가장 큰 특징이다. 특히 분산 환경에서 용량 뿐 아니라, 복사본을 다른 노드에 저장함으로써 노드 장애에 대한 장애 대응 성을 가지고 있기 때문에 용량에는 확실하게 ..

Spark 노트

Spark을 살펴보기전에, 단순하게 빅데이터 실시간 분석을 위한 스트리밍 플랫폼 정도로 생각했다.CEP 영역에 해당하는 Apache Storm 과 같은 개념으로 생각했었는데, Spark의 특징은 스트리밍은 하나의 특징일 뿐이고 조금 더 일반적인 클러스터링 플랫폼이다.여러개의 컴퓨터를 묶어서 무언가(?)를 할 수 있는 플랫폼의 개념으로, 무엇인가 처리를 클러스터에 분산하여 실행하도록 해준다.무언가가 데이타 분석도 될 수 있고, 머신 러닝이나 기타 여러가지가 될 수 있다. Spark은 기존의 하둡의 Map & Reduce의 성능 문제, MR 기반의 복잡성을 제거하고자 탄생했다. 메모리 기반의 처리를 통해서 기존의 MR에 비해 성능을 올리고 조금더 쉬운 데이타 접근을 목적을 두고 탄생했다. Spark은 이미 ..

Thrift, Avro and Protocol Buffers

Thrift에 대해서 잘 설명해놓은 글 http://thrift-tutorial.readthedocs.org/en/latest/thrift-stack.htmlThriftRPC 지원프로그래밍 언어 커버리지가 넓음TLS 기반의 Secure 프로토콜 지원Map,List 지원 PBIDL 정의가 조금 더 직관적"Serialize/Deserialize 전용 (Message 정의용) :그래서 다른 Transport 프로토콜이 필요함"-다른 Protocol을 통해 Tunneling 함 (HTTP,AMQP,심지어 Thrifit까지,Netty의 경우 확장 플러그인이 있음)Map,List등을 지원하지 않음