분류 전체보기 1274

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는 리소스에 대해서 행동을 정의하는 형태를 사용한다. 예를 ..

OAuth 2.0 based API 인증 메모

* Authroization Code- Redirect base / 서버 백엔드가 있는 경우 사용 - 파트너사가 API를 사용하는 시나리오에 유리* Implicit - Rediect base / 특히 Java script 처럼 서버 백엔드가 없는 경우 유용. Read Only 등에 사용* Resource Owner Password Credential - Client Id, Secret을 앱에 넣은 후, Client Id/Password로 인증하여, access token을 발급 받는 방식으로, Authorization Server와 Resource Owner가 같은 서비스인 경우 유용함 (자사 API 제공에 유용)* Client Crendetial- 유용한 Link서버 구현체 : http://oauth...

대용량 분산 시스템 아키텍쳐 디자인

대용량 분산 시스템 아키텍쳐 디자인 대용량 분산 시스템에 대한 아키텍쳐 설계에 대한 내용을 공유합니다. 아직 많이 부족합니다. 많은 피드백 부탁드립니다. 1. 아키텍쳐 설계 프로세스 대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론 from Terry Cho 2. 대용량 분산 시스템 아키텍쳐 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴 from Terry Cho 3. 대용량 분산 시스템 아키텍쳐 디자인 패턴 대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐 from Terry Cho 4. 레퍼런스 아키텍쳐 - SOA 대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐 from Terry Cho 5. 레퍼런스 아키텍쳐 - REST 대용량 분산 아키텍쳐 설계 #5. ..

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

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

Redis 간단 설치 노트 (Virtual Box 에 설치하기)

Ubuntu server 설치 X-windows 환경 설치 (최소 GUI 환경) - 설치해보니 느려서 못쓰겠음sudo apt-get updatesudo apt-get upgradesudo apt-get install --no-install-recommends ubuntu-desktop #최소설치startx Ubuntu telnet 환경 설정sudo apt-get install xinetdsudo apt-get install telnetd sudo vi /etc/hosts.allow 에서 ALL:ALL 추가 telnet service를 xinetd.conf에 추가sudo vi /etc/xinetd.conf에아래 내용을 추가service telnet{disable = noflags = REUSEsocket_..

힘들더라도 블로그를 계속해야..

오늘 세미나 발표 자료를 만드느냐고, 기존 블로그 글들을 쭈욱 찾아서 정리했는데...몇 달 지났다고, 내용이 새롭고 기억이 안나는 부분들이 많았다.그나마 블로그에 기록해놨으니 이정도이지.. 요즘 일이 너무 바뻐서, 기술 공부는 거의 못하고 있다.업무 자체도 관리 업무가 많아서.. 머리가 점점 나뻐지는 느낌이다. 교육도 못받고 있고.. 몬가 대책을 세우기는 해야 할텐데.여하튼간에. 아무리 바쁘더라도 블로그에 정리하고, 테스트 코드는 github에 계속해서 저장해나가야 겠다. 오늘 또 한번 느끼네...

사는 이야기 2014.05.09

빠르게 훝어 보는 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..