튜토리얼 139

카우치베이스(Couchbase) 서버-#6 아키텍쳐 구조 살펴보기

Couchbase Server#6. Couchbase server 구조 조대협 http://bcho.tistory.com 이번에는 마지막으로 카우치베이스의 아키텍쳐에 대해서 알아보도록 하자노드와 클러스터 (Node & Cluster)노드는 물리적인 서버에서 기동하는 하나의 카우치베이스 인스턴스로, 카우치 베이스는 여러 개의 노드로 이루어진 클러스터로 구성된다 클라이언트 SDK (Client SDK)프로그래밍 언어별로 카우치베이스에 접근하기 위한 API(SDK)를 제공한다. vBucket 개념카우치베이스는 실제데이타와 물리서버간의 맵핑을 vBucket이라는 것을 이용해서 관리한다. 카우치베이스는 키-밸류 스토어이다. 그래서, 각 키가 어디에 저장되어 있는지를 vBucket이라는 단위로 관리 하는데. 키에 ..

카우치베이스(Couchbase) 서버-#3 node.js를 이용한 카우치베이스 서버 CRUD 구현하기

Couchbase Server#3. node.js를 이용하여 카우치베이스에 CRUD 구현하기 조대협 http://bcho.tistory.com SDK를 이용한 프로그래밍 이제, 프로그래밍 언어를 이용해서 실제로 카우치베이스에 데이타를 저장해보자. 카우치베이스에서 지원하는 데이터 타입 앞서 예제에서 카우치베이스 웹콘솔을 통해서 JSON 도큐먼트를 저장해봤다. 카우치베이스는 JSON 도큐먼트뿐만 아니라, 키-밸류 스토어 형식으로 일반 string(문자열), integer(숫자)도 저장할 수 있다. JSON 도큐먼트 이외의 데이터 형은, 콘솔에서는 테스트가 불가능하고, SDK를 이용해서 프로그램을 작성해서 테스트를 해야 한다. SDK를 이용한 데이터 접근 카우치베이스의 데이타를 접근하기 위한 메서드들은 다음과..

카우치베이스(Couchbase) 서버-#2 기본 개념 잡기

Couchbase Server#2 기본 개념 잡기 조대협 http://bcho.tistory.com개념 잡기 카우치베이스 서버 설치가 끝났으면 기본적인 개념을 잡아보도록 하자. Document 기반의 Key-Value 스토어 카우치 베이스느 키, 밸류 스토어이다 하나의 유니크(Unique)한 키에, 값을 저장하는 방식이다. 저장 되는 값은 JSON 도큐먼트가 저장된다. 키는 최대 250 바이트, 값(밸류)의 경우에는 카우치베이스 버킷의 경우 20MB, Memcached 방식의 버킷의 경우 1MB 까지 저장이 가능하다. 저장할때, 키와 값뿐만 아니라 메타데이타가 같이 저장되는데, 메타 데이타에는 CAS,TTL,Flag 값 3가지가 저장된다.저장할때, 키와 값뿐만 아니라 메타데이타가 같이 저장되는데, 메타 ..

카우치베이스(Couchbase) 서버-#1 소개 및 설치하기

Couchbase Server#1 소개 및 설치 조대협 http://bcho.tistory.com 근래에 여러 NoSQL이 소개되었지만 그중에서 좋은 솔루션인데도 불구하고 그다지 국내에서는 널리 알려지지 않은 카우치베이스에 대해서 소개하고자한다. 모바일 게임중에 유명한 쿠키런의 경우 카우치베이스를 백엔드로 사용하고 있는데, 안정성이나 성능등이 매우 뛰어나고, 사용하기 또한 매우 쉽다. 오늘은 고성능 NoSQL 서버인 카우치베이스(CouchBase) 에 대해서 소개하고자 한다. 소개 예전에 메모리 캐쉬 솔루션인 memcached에 디스크 persistence 기능을 추가하여 membase라는 솔루션이 있었는데, 이 제품에 Apache의 카우치디비(CouchDB)를 기반으로 새롭게 만든 솔루션이 카우치베이스..

빠르게 훝어 보는 node.js - #14 - Passport를 이용한 사용자 인증 구축

빠르게 훝어보는 node.js#14 - Passport를 이용한 사용자 인증 구축조대협 (http://bcho.tistory.com) Passport는 node.js용 범용 인증 모듈이다. 기본적인 HTTP Basic Auth에서 부터 HTTP digest authentication, OAuth,OpenID 등 다양한 인증 프로토콜을 지원하며, Facebook이나 Twitter,Google등과의 연계된 SSO 인증을 포함하여 약 140가지의 인증 모듈을 포함한다. 그러면Passport를 이용하여, 어떻게 사용자 인증을 구현할 수 있는지 살펴보도록 하자.이러한 다양한 인증에 대해서 미리 구현해 놓은 것을 passport에서는 Strategy라고 한다. Facebook 인증을 위해서는 facebook str..

REST API 디자인 가이드

REST API 디자인 가이드조대협(http://bcho.tistory.com)REST API 디자인을 보면, REST 사상에 맞춰서 제대로 디자인 (CRUD를 HTTP method에 맞춘)하기도 어렵고, URI Convention등이나 보안, 버전 관리등 고려할 사항이 많다. 이번 글에서는 REST API를 디자인에 대한 가이드를 소개하고자 한다.동사보다는 명사를 사용하자URL을 심플하고 직관적으로 만들자REST API를 URL만 보고도, 직관적으로 이해할 수 있어야 한다 URL을 길게 만드는것 보다, 최대 2 depth 정도로 간단하게 만드는 것이 이해하기 편하다./dogs /dogs/1234URL에 동사보다는 명사를 사용한다.REST API는 리소스에 대해서 행동을 정의하는 형태를 사용한다. 예를 ..

하이버네이트 쉽게 입문하기 (기초)-환경설정,입력조회 개발

하이버네이트 입문하기 (기초 #1) MyBatis만 사용하다가 근래에 들어서 Hibernate를 봐야하는 일이 생겨서, 늙은 나이에, Hibernate를 처음부터 보고 있다. 한국에서는 거의 MyBatis가 대세를 이루지만 해외의 경우 높은 생산성등을 이유로 Hibernate가 거의 대세를 이룬다. 그러나, 한국에서 안사용하는 이유 처럼, Hibernate는 자체적으로 쿼리를 생성하고, OR Mapper로써, 객체들을 DB에서 로딩할때, 레퍼런스된 객체등을 로딩하는등, 제대로 특성을 이해하고 사용하지 않으면 장애를 일으키는 경우가 많지 않기 때문에, 해외에 비해서 한국에서는 많이 사용되지 않는다. (SI에서 기피) 이글에서는 하이버네이트에 대한 간단한 사용법에 대해서 소개하고자 한다. 하이버네이트는 자바..

빠르게 훝어 보는 node.js - #13 Socket.IO 클러스터링

빠르게 훝어보는 node.js#13 - Socket.IO 클러스터링조대협 (http://bcho.tistory.com) node.js 노드가 하나가 아니라 여러개의 프로세스를 이용해서 운영할 때,socket.io를 어떻게 사용해야 할까? 이런 멀티 프로세스를 지원하기 위해서, node.js는 내부적으로 redis store를 지원한다. redis에는 publish/subscribe라는 기능이 있는데, 마치 메세지 큐처럼 메세지를 subscriber로 보낼 수 있는 기능이다.아래 그림을 보자,하나의 node프로세스에서 메세지를 보내면, 다른 프로세스로 redis를 통해서 메세지를 전달한다. 이때 메세지를 보내는 프로세스는 redis에 메세지를 “publish”하고 나머지 프로세스들은 “subscribe”를..

빠르게 훝어 보는 node.js - #12 Socket.IO 4/4 - 채팅방 기능 추가하기

빠르게 훝어보는 node.js#12 - Socket.IO (4/4)조대협 (http://bcho.tistory.com) 채팅 프로그램에 방(room/그룹)의 기능을 추가하기다음은 앞에서 만든 1:1 귓속말이 가능한 채팅에 “채팅방” 기능을 추가한 버전이다. var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var app = express(); app.use(express.bodyParser()); app.use(express.cookieParser('your secret here')); app.use(express.session());..

빠르게 훝어 보는 node.js - #11 Socket.IO 3/4 (1:1 귓속말 구현)

빠르게 훝어보는 node.js#11 - Socket.IO (3/4)조대협 (http://bcho.tistory.com) 앞서 작성한 대화방 http://bcho.tistory.com/896 에 이어서 이번에는 1:1 귓속말 대화가 가능한 기능을 추가해보자 귓속말이 가능한 대화방이번에는 특정 사용자가 다른 사용자에게 귓속말을 보내는 기능을 가지는 대화방을 만들어보자. 이를 통해서 특정 클라이언트 소켓에 메세지를 어떻게 보내는지를 배울 수 있다.이 대화방의 기능은 다음과 같다.Ÿ 대화방에 입장하는 손님들은 자동으로 대화명을 부여 받는다.Ÿ 사용자는 대화명을 바꿀 수 있다.Ÿ 사용자는 대화 수신자의 대화명을 선택하여 특정 사용자에게 귓속말을 보낼 수 있다.코드를 보면서 설명하도록 하자.app.js var ex..