Naver oAuth2 로그인 

oAuth2는 외부 서비스에게 자신의 자원을 이용 할 수 있도록 인증과 권한을 관리해주는 시스템이다. 페이스북, 구글, 다음, 네이버등의 거대 인터넷회사들은 oAuth2를 이용해서 자신들이 가지고 있는 자원들을 이용할 수 있도록 허가하고 있다. 자세한 내용은 문서를 참고하자. 여기에서는 네이버의 oAuth2를 이용해서 네이버의 자원을 사용하는 방법에 대해서...

Mongodb 

MongoDB(이하 몽고디비)는 오픈 소스 기반의 문서 지향 데이터베이스 시스템(Document-oriented database system)이다. JSON(JSON은 아니고 유사한 BSON을 사용한다)을 사용하며 스키마가 필요 없기때문에 NoSQL 데이터베이스로 분류한다. Ad hoc 질의를 사용한다. 애드혹은 특정한 목적을 위해서라는 뜻을 가진다. 즉...

Distributed Operating System 

SaaS와 PaaS 분야(이하 SaaS로 통일)에 관심을 가지고 있다. SaaS인프라는 두 개 이상의 컴퓨터 시스템으로 구성된 클러스터링 환경에서 작동을 한다. CPU, Memory, Disk와 같은 자원을 마치 하나의 컴퓨터인 것 처럼 통합한 후, 유저가 요청 할 때 적당한 크기의 자원을 할당해서 애플리케이션을 실행한다. 이를 위해서 1. 자원을 통합 1...

Consistent Hash 기반의 대량 메시지 처리 인프라 

IoT 플랫폼에서 사용 할 수 있는 대용량 메시지 처리 시스템 개발에 대한 아이디어를 정리한다. 크게 두 가지 아이디어가 있을 건데, 그 중 consistent hash를 이용한 방법을 살펴본다. 이 메시지 처리 인프라는 아래의 특징들을 가지고 있다. 1. 유저간 채팅 서비스가 목적이 아니다. 유저간 채팅 서비에도 사용 할 수 있긴 하지만, IoT를 구성...

Docker Storage 

도커 스토리지를 다루기 전에 도커 이미지와 컨테이너의 관계를 살펴봐야 할 것 같다. 도커는 하나의 이미지로 부터 하나 이상의 컨테이너가 실행 될 수 있다. 하나의 프로그램 이미지(프로그램 파일)로 부터 하나 이상의 프로세스가 실행되는 것과 같은 이치다. 아래는 프로세스의 실행을 묘사한 그림이다. 프로그램에서 프로세스가 실행되지만 원본 프로그램은 변경이 되지...

Container 기반 가상화 시스템에서의 Service Discovery 

컨테이너(Container)를 기반 가상화 시스템이라고 해서 가상머신(Virtual machine) 기반 가상화 시스템과 다를 점은 없다. 컨테이너 가상화를 위한 네트워크, 스토리지 가상화 기술은 가상머신 가상화에서 이미 완성됐다. 단지 머신을 가상화 하느냐 하지 않느냐의 차이만 있을 뿐이다. 그러므로 컨테이너 기반 가상화 시스템을 만든다고 하면, 기존에 ...

logrotate를 이용한 로그 파일 관리 

백앤드 애플리케이션의 대부분이 REST 방식의 웹 애플리케이션이다. 애플리케이션들은 모두 아파치 웹 서버 방식의 엑세스로그를 남긴다. 일반유저들이 사용하는 API들이다 보니 상당한 크기의 로그파일들이 만들어진다. 일주일만 그냥 둬도 파일의 크기가 수 기가바이트를 넘어갈 판이다. 모든 로그 파일들은 ELK로 어차피 색인이 되기 때문에, 굳이 시스템에 남겨두거...

tty.js 

코드가 많은 사이트다. 그래 아래처럼 웹에서 직접 코드를 수정도 하고 실행도 할 수 있도록 코드 실행기를 붙였다. 유용하긴 한데, 코드를 실행하고 그 결과를 화면에 출력하는 방식이라서 표준입력이나 python interactive mode등을 사용 할 수 없다. 그래서 웹 터미널 애플리케이션을 찾아보기로 했다.구글님에게 물어 물어서 언어 기반이고 tty.j...

도커 개요 

이 문서는 도커레퍼런스가 아니다. 기본적인 이해와 사용이 가능하도록 하는데 목적이 있다. 도커는 오픈소스기반의 컨테이너 소프트웨어다. 도커 컨테이너는 애플리케이션을 실행하기 위해서 필요한 코드, 런타임, 시스템 툴, 시스템 라이브러리 등을 모두 포함한채로 배포 할 수 있다. 덕분에 컨테이너는 어떤 환경에서도 동일하게 작동한다.도커는 리눅스 운영체제에서 실행...

우분투 apt 패키지 저장소 구축 

우분투 리눅스 운영체제는 데비안으로 부터 파생된 .deb 기반의 패키지 관리 시스템을 가지고 있다. 나는 현재 개발 중인 애플리케이션을 효율적으로 배포하기 위해서 프라이빗 패키지 저장소를 만들기로 했다. 배포 프로세스는 다음과 같다. 1. Git을 이용해서 개발한다. 1. CI툴은 git에서 코드를 가져와서 최신 빌드를 만든다. 1. 빌드가 끝나면 .de...