Archive for the ‘Note’ Category

단순한 RESTful Web Service HTTP methods

Friday, November 13th, 2009

대부분 RESTful API에서 접하는 GET, POST 방식 외에 PUT, DELETE 방식에 대해 알아보고 HTTP method를 단순하게 생각해봤다.

우선 HTTP method를 요청하는 URI는 자원으로 생각하고,

  • GET은 자원의 정보 반환
  • PUT은 자원의 생성 또는 갱신
  • DELETE는 자원의 삭제
  • POST는 자원에 자료 처리

의미를 생각한 쇼핑몰 API 요청 예

PUT /api/product/123 HTTP/1.1 {상품 정보 데이터}
- 123 상품 등록/갱신

GET /api/product/111 HTTP/1.1
- 123 상품 정보 반환

DELETE /api/product/111 HTTP/1.1
- 123 상품 삭제

POST /api/order/send HTTP/1.1 {상품번호=123&방식=택배…}
- 123 상품 택배 배송 처리

참고


미래의 인재가 되기 위한 준비

Tuesday, September 29th, 2009
새로운 미래가 온다10점
다니엘 핑크 지음, 김명철 옮김/한국경제신문

평소 어떤 일을 할 때 항상 기존 보다 낳은 방법으로 창의적인 결과를 만들어 내고 싶은 욕구가 있다. 새로운 시도를 하면서 어려움을 겪을 수 있지만 내가 맡은 일을 보다 즐겁고 열정적으로 할 수 있는데 그 의미와 행복을 느낀다.

‘새로운 미래가 온다’에선 내가 궁극적으로 추구하는 삶, 그리고 그 이상의 새로운 미래 인재에 대해 설명한다. 디자인, 스토리, 조화, 공감, 놀이, 의미 이것이 미래인재의 6가지 조건이고, 이에 대한 배경과 함께 흥미로운 이야기로 쉽게 동의하며 이해할 수 있었다.

미래인재 조건의 대부분은 과거 개발자인 나에게 우선 필요하지 않거나 간과되는 능력들이었다. 하지만 현재 이미 느껴지고 있다. 새로운 미래에 필요한 인재가 되기 위한 앞으로의 노력에 많은 도움이 될 것 같다.


우분투 서버 8.10으로 업그레이드 후 부팅 에러

Friday, September 18th, 2009

Share photos on twitter with Twitpic

apt-get upgrade를 실행하여 우분투 서버 8.10으로 업그레이드 했다. 업그레이드를 성공적으로 마치고 재부팅을 했는데.. 부팅 하다가 에러메세지가 나오고 (initramfs) 쉘로 빠지는 문제가 발생했다. 그래서 구글링으로 원인을 찾아봤는데 다행히 간단한 해결방법으로 쉽게 해결했다.

우분투 8.10 릴리즈 노트 : Boot failures on systems with Intel D945 motherboards (Bug 290153).

# 원인 : 인텔 D945 메인보드 시스템에서 우분투 서버 8.10 업그레이드 시 버그
인텔 D945 메인보드 시스템의 우분투 8.10에서 SATA 하드 드라이브를 늦게 인식하는 문제가 있습니다. 이런 문제로 부팅 중 “Gave up waiting for root device.” 메세지와 함께 busybox initramfs shell로 빠지게 합니다.

# 해결 : 위의 우분투 릴리즈 노트에 지시한대로 따라 했다.

  1. initramfs shell 에서 “exit” 를 입력하여 부팅이 계속 진행
    (initramfs) exit
  2. 부팅이 된 후에 /boot/grub/menu.lst 편집기로 열어 현재 커널 부분에 “rootdelay=90″ 추가
    kernel /boot/vmlinuz-2.6.27-14-server root=UUID=58786110-f5f0-44c4-b117-a86fed0a7b26 rootdelay=90 ro quiet splash

memcached : 분산 메모리 객체 캐싱 시스템

Tuesday, September 15th, 2009

실시간 웹 기술을 알아보던 중 트위터와 같은 대규모 서비스에서 사용한 캐시 시스템 중 많이 들어본 memcached를 알아보고 요점만 정리해봤다.

memcached는 분산 메모리 객체 캐싱 시스템으로 일반적으로 데이터베이스 부하를 메모리 캐시로 대신하여 웹서비스 속도를 대폭 향상하는데 사용되는 시스템이다.

내부 동작은 엄청 복잡하겠지만 동작 방식은 쉽게 설명되어 있었다.

  1. 여러대의 각 서버에서 메모리 크기를 지정하여 데몬을 실행
  2. 각 서버 메모리는 하나의 공용 캐시 메모리로 관리
  3. memcached 라이브러리를 통해 객체 읽기/쓰기

memcached 라이브러리는 거의 모든 언어에 지원한다.
http://code.google.com/p/memcached/wiki/Clients

RDBMS의 문제

  • RDBMS의 특성상 ACID 조건을 충족시키기 위해 읽기/쓰기 쓰레드 블럭처리를 하면서 오버헤드가 발생

메모리 캐시는 블럭과 같은 오베헤드가 없고, 해시 테이블을 사용하여 매우 빠른속도로 RDBMS의 한계를 극복하는 좋은 대안이 될 수 있다.

트위터는 여러단계의 캐시를 사용하는데 중요한건 모든 DB를 캐시하여 서비스한다고 한다. 전체 메모리 용량이 얼마나 될까?..

나도 이런 분산 시스템 기반의 대규모 서비스를 제공해보고 싶은 욕망이^^ 열심히 구상해봐야지.. Google AppEngine에서도 memcache를 지원하니 한번 해봐야겠다.


위젯뱅크의 위키백과 지식상자

Wednesday, May 20th, 2009
예전에 위젯경진대회의 작품으로 만든 위젯이 위젯뱅크에 등록됬다.

다음에서 친절하게도 이쁘게 디자인을 입혀 주니 훨 괜찮아 보이넹ㅎㅎ