클라우드 컴퓨팅 & NoSQL 386

In memory dictionary Redis 소개

redis Introduction IntroRedis는 "REmote DIctionary System"의 약자로 메모리 기반의 Key/Value Store 이다.Cassandra나 HBase와 같이 NoSQL DBMS로 분류되기도 하고, memcached와 같은 In memory 솔루션으로 분리되기도 한다.성능은 memcached에 버금가면서 다양한 데이타 구조체를 지원함으로써 Message Queue, Shared memory, Remote Dictionary 용도로도 사용될 수 있으며, 이런 이유로 인스탄트그램, 네이버 재팬의 LINE 메신져 서비스, StackOverflow,Blizzard,digg 등 여러 소셜 서비스에 널리 사용되고 있다.BSD 라이센스 기반의 오픈 소스이며 최근 VMWare에 ..

MultiThread로 RabbitMQ에서 메세지를 읽어서 MongoDB에 쓰는 예제 (Python)

import pikaimport astimport pymongoimport datetimeimport loggingimport timeimport sys,traceback,socket,threadingfrom datetime import datetimefrom time import sleep # configurationMONGODB_NAME = "terrydb"HOSTNAME = ':'+socket.gethostname()QUEUE_NAME = 'hello'MONGODB_URL= 'mongodb://localhost'RABBITMQ_URL='localhost' LOG_FORMAT = ('[%(levelname)s] %(asctime)s %(name)s : %(message)s')LOGGER = loggi..

RabbitMQ 기본 기동

1. 설치- Erlang 설치- Rabbit MQ 다운로드 후 설치 2. 기본 명령서버 기동 : sbin/rabbitmq-server start. 윈도우즈에서는 services.msc에서 서비스로 시작상태 체크 : sbin/rabbitmqctl status서버 중지 : sbin/rabbitmqctl stop3. Web Admin 모듈web admin 모듈 enable - "rabbitmq-plugins enable rabbitmq_management" (이다음 서비스를 restart해야 함)http://localhost:15672/ 접속후 guest/guest로 로그인

Redis Single Thread 모델에 대해서.

다음글은 페이스북 서버사이드 아키텍트 그룹 세미나에서 강대명씨가 발표한 내용을 정리한 글입니다. Redis acc from Dae Myung Kang Redis는 Single Thread Model이다. (중요)이로 인해서 긴 Transaction이 들어 오면, 그 Tx를 처리하기 위해서 다른 request를 처리 못하는 현상이 발생한다.대표적으로Flushall이나 Keys는 List 전체를 Scan하는 구조로, 100만개 처리시 1초, 1000만개 10초,1억개 100초가 소요된다.이를 예방하기 위해서, 데이타를 전체 하나의 Collection에 넣는 것이 아니라 여러개의 Collection에 나눠서 처리하는 방안이 좋다. 각 Collection당 보통 10,000개 정도의 데이타를 저장하는 것이 좋다..

개발과 운영의 조화 - Devops #2/2

1편 글 링크 - http://bcho.tistory.com/815Devops의 정의 이러한 개념들을 적극적으로 적용한 기업들이 Netflix, Flicker와 같은 인터넷 서비스 기업이다. 기존 개발 프로세스에 비해서 훨씬 빠르게 고객의 요구 사항을 반영해 내가고 있다. Flicker의 경우에는 하루에 10번 정도 [1]Deploy를 한다고 한다. 일반적인 인터넷 서비스가 한달에 한번 업데이트 빨라야 일주에 한번인데, 하루에 10번이라면, 경쟁 구조 자체가 틀려진다.PuppetLab (Configuration management 자동화툴)의 블로그[2]에 따르면 Devops를 적용할 경우,경쟁사에 비해서 30배 정도 더 자주 Deployment를 할 수 있으며, Deployment 실패 비율도 50% ..

개발과 운영의 조화 - Devops #1/2

기존 개발 체계의 문제점전통적인 개발 운영 체계일반적인 개발 운영 체계는 다음과 같다. 개발팀에 의해서 개발이 끝나면, 시스템은 테스트를 거쳐서 운영팀에 이관되고, 운영팀은 해당 시스템을 배포 및 관리 운영한다. 일단 이관된 시스템은, 개발팀이 일체 관여하지 않고, 운영팀에 의해서 현상 유지 된다. 문제점 1. 누구의 잘못인가? 불행의 시작시스템을 운영하다 보면, 반드시 장애가 생기기 마련인데, 문제는 여기부터 시작된다. 개발은 “애플리케이션” 을 볼 수 있지만, 아랫단의 “인프라 시스템”을 볼 수 있는 능력이 없다. 반대로 운영팀은 “인프라 시스템” 을 잘 알지만, “애플리케이션” 자체에 대해서는 잘 모른다.그러다 보니, 서로 자기 분야의 문제가 아니라고 하면서 서로 책임 미루기를 하게 되고, 문제 해..

Docker 소개

Docker란 무엇인가?개념 잡기Docker는 Linux 기반의 Container RunTime 오픈소스이다. 처음 개념을 잡기가 조금 어려운데, Virtual Machine과 상당히 유사한 기능을 가지면서, Virtual Machine보다 훨씬 가벼운 형태로 배포가 가능하다. 정확한 이해를 돕기 위해서, VM 과 Docker Container의 차이를 살펴보자.아래는 VM 에 대한 컨셉이다. Host OS가 깔리고, 그 위에 Hypervisor (VMWare,KVM,Xen etc)가 깔린 후에, 그위에, Virtual Machine이 만들어진다. Virtual Machine은 일종의 x86 하드웨어를 가상화 한 것이라고 보면된다. 그래서 VM위에 다양한 종류의 Linux나, Windows등의 OS를 설..

Auto scaling out

클라우드 컴퓨팅 서비스에서 서비스의 부하량과 사용량에 맞게 탄력적으로 컴퓨팅 자원을 늘렸다가 줄였다 하는 auto scaling 기능은 기존의 인프라가 가지지 못한 큰 장점 중의 하나이다. 아마존 클라우드 서비스는 이 auto scaling 기능을 서비스로 제공하고 있다. Auto scaling의 기본 개념 아마존에서 제공하는 auto scaling의 기본 개념은 다음과 같다. 여러 개의 EC 인스턴스들을 auto scaling group이라는 하나의 그룹으로 묶어 놓는다. 그리고 각 인스턴스들은 ELB 로드 밸런서를 통해서 로드가 분산된다. 이 그룹을 Cloud Watch라는 아마존의 클라우드 모니터링 솔루션을 통해서 자동으로 감지하게 되는데, 사용자가 정의 해놓은 일정한 조건 (예를 들어 평균 CPU..

Amazon의 CDN 서비스 Cloud Front

Cloud Front조대협Cloud Front는 CDN (Contents Delivery Network) 서비스 이다. 이미지나 동영상 같은 정적인 컨텐츠들을 서비스하는데, 서버가 있는 데이타 센터에서 서비스를 하게 되면, 네트워크 latency 때문에 성능이 저하가 되기 때문에, 전세계의 여러 개의 데이타 센터에 서버(이를 edge node 또는 edge server라고 함) 를 넣고, 클라이언트와 가까운 데이타 센터로 부터 컨텐츠를 제공하는 서비스 이다.얼마나 많은 지역별 데이타 센터에 edge node를 설치하고 서비스를 제공하느냐, 각 edge node의 네트워크 대역폭이나 용량은 충분하느냐가 서비스의 품질을 결정하는데, 세계적으로 Akamai와 Limelight 등의 업체가 유명하다.아마존의 경..