728x90
가변 비트레이트 스트리밍은 네트워크의 상태 혹은 전송속도등을 기반으로 대역폭이 소화할 수 있는 정도의 고화질(즉, 높은 비트레이트를 가진 소스를 이용하도록)의 부분 컨텐츠를 전송하는 방식을 이야기 한다. 물론 대역폭이 떨어지거나 네트워크 혼잡도가 높아지면서 전송 효율이 떨어지면 낮은 부분 컨텐츠로 변경하여 전송하는 민첩함을 가지고 있기도 하다.

이 같은 가변 전송을 하기 위해서는 가변 전송을 하고자 하는 컨텐츠를 다양한 비트레이트로 인코딩을 하는 과정이 선행 되어야 한다. 고화질의 원본 소스파일은 서비스 하고자 하는 비트레이트의 종류만큼 복수개의 파일로 인코딩이 되어야 하고 가변 스트리밍을 위하여 전체 길이의 파일을 2~10초 단위의 부분 동영상으로 나누어 저장하게 된다. 예를들어 1분짜리 동영상을 3개의 비트레이트로 가변 비트레이트 스트리밍을 한다면 10초 단위로 부분 동영상을 만든다고 할 때, 총 30개의 파일(각 비트레이트 별로 10개씩)로 나누어져야 하는 것이다

 
그렇다면 사용자, 즉 엔드유저는 파일이 이렇게 쪼개져 있다는 것을 어떻게 알 수 있을까? 가변 비트레이트 스트리밍이 시작되는 시점에 사용자의 플레이어는 인코딩된 파일들의 조각 정보가 담겨 있는 메니페스트(Manifest) 파일을 받게 되고 이 파일이 담고 있는 비트레이트의 종류, 부분 파일의 식별 방법에 따라 적절한 파일을 HTTP 로 요청하여 받게된다.

[ 가변 비트레이트 전송 프로토콜의 종류 ]
- MPEG_DASH (Dynamic Adaptive Streaming over HTTP)
- Adobe Dynamic Streaming for Flash (HDS)
- Apple HTTP Adaptive Streaming for iPhone/iPad/STB (HLS)
- Microsoft Smooth Streaming


참고 : http://en.wikipedia.org/wiki/Adaptive_bitrate_streaming

- NoPD - 
728x90
728x90
리눅스 계열의 운영체제를 사용하다 보면 참 편리하게 쓰는 것이 apt-get 이나 yum 과 같은 패키지 관리자다. 업데이트가 필요한 패키지를 확인해주고 간단한 명령으로 설치해주는 것은 바쁜 현대인들(?)에게 무척이나 반가운 기능일 수 밖에 없다. 당연히 같은 피가 섞여 있는 맥 운영체제 Mac OS 에도 둘 중 하나는 있겠지 했으나 현실은 그렇지 못했다.


그러던 중 찾은 것이 바로 Homebrew 라는 도구. 맥 운영체제인 OS X 에서 사용할 수 있는 루비 기반의 패키지 관리도구다. 사용방법은 apt-get 이나 yum 과 크게 다르지 않다. Ruby 스크립트를 이용해서 보다 체계적인 사용도 가능하다는 것이 장점. 설치 방법도 간단해서 굳이 Hoembrew 웹사이트 (http://brew.sh/) 를 방문할 필요도 없이 터미널에서 아래 명령어를 입력하면 끝.

 
이제 Mac OS X 에서도 간단하게 패키지를 설치하는 기쁨을 맛보도록 해보자. 아직도 내겐 너무 어색한 Mac OS X ~

- NoPD - 
728x90
728x90
Node.js 가 등장한 이후 간단히 테스트 목적의 웹 서버를 만드는 일이 손쉬워졌습니다. 단순한 Static 컨텐츠의 노출이 아닌 이상 닷넷을 이용하던 자바를 이용하던 뭔가 무거운 개발도구를 실행하고 코드 몇 줄을 넣은 후 컴파일 해야 했다면 Node.js 는 그런 번거로움과 불필요함을 한방에 날려주고 있습니다.

새롭게 옮긴 직장에서 고객사의 PUT Request 에 대한 처리를 해야 할 일이 생겼는데 고객사의 API 에 대고 신나게 테스트를 할 수 있는 것도 아니고 해서 간단하게 가상머신에 Node.js 와 Express 모듈을 이용하여 RESTful API (..라고 적었지만 그냥 PUT Request 를 처리하는...) 를 만들어 봤습니다. 혹시나 RESTful API 의 CRUD 액션을 간단히 구현할 필요가 있으신 분들 참고하시라고 올려둡니다. Node.js 와 Express 모듈을 설치하신 뒤 소스코드를 참고해서 보시면 됩니다. REST 호출 이외에도 처리를 위해 Jade 모듈도 설치후 설정이 들어가 있는데요, 이 부분은 필요하신 경우 선택적으로 쓰시면 되겠습니다.

(참고로 현재 시점에서의 Node.js 와 Express 최신 버전을 따르고 있기 때문에 보시는 시점에 따라 해당 엔진과 모듈의 행동양태가 변경되면 동작하지 않을 수도 있습니다 ^^;;)

// express_server.js
var express = require('express');
var app = express();

app.configure(function() {
	app.set('views', __dirname + '/views');
	app.set('view options', { layout: false });
	app.use(express.methodOverride());
	app.use(express.bodyParser());
	app.use(app.router);
	app.use(express.static(__dirname + '/public'));
	console.log('configure successful...');
	console.log('view directory is ' + __dirname + '/views');
	console.log('static directory is ' + __dirname + '/public');
});

app.get('/hello', function(req, res) {
	res.render('index.jade', {
			message:'hello world'
	});
});

// TYPE 1 (RESTful) : call "/puttest/3"
app.put('/puttest/:id', function(req, res) {
	res.send('received id :' + req.params.id);
});

// TYPE 2 (Traditional) : call "/puttest" with body parameter "id=9" then
app.put('/puttest', function(req, res) {
	res.send('received id :' + req.body.id);
});

app.configure('production', function() {
	app.use(express.logger());
	app.use(express.errorHandler());
});

app.configure('development', function() {
	app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.listen(81);

위의 소스코드에서 사용한 Jade 템플릿은 아래와 같이 간단하게 되어 있습니다. 그냥 그렇구나 하시면 될 것 같습니다.
// Jade 렌더링 테스트용 : /views/index.jade
#{message}

[ Node.js 의 기초를 위한 추천 도서 ]
인기 저자 윤인성 작가의  "모던 웹을 위한 Node.js 프로그래밍" [자세히보기]


- NoPD -
728x90
728x90
통신사, 소위 텔코(Telco.)라고 불리우는 기업들이 클라우드 사업을 많이 전개하고 있습니다. 구글이나 마이크로소프트, 아마존과 같은 IT 기업과 더불어 클라우드 인프라 사업, 클라우드 플랫폼 사업 등에서 늘 눈에 띄는 것이 통신사이기도 합니다. 클라우드 사업을 전개하는 사업자들은 각기 클라우드 사업을 통해서 얻고자 하는 목적이 다릅니다. 전통적인 데이터 센터 사업자들, IT 기반의 솔루션 기업, 이동통신사 혹은 유무선 통합 사업자들은 모두 목적이 다를 수 밖에 없습니다.

SK텔레콤은 어떤 목적을 가지고 클라우드 사업을 전개하고 있는 것일까요? 다음주 목요일 여의도 콘래드 호텔에서 열리는 SK텔레콤의 클라우드 컨퍼런스, Cloud Inspire 2013 에서는 그런 이야기들을 다루고 있습니다. SK텔레콤이 바라보는 클라우드 전략에 대한 이야기도 듣고, 최근 트렌드와 맛있는 점심(!)까지 먹을 수 있는 좋은 기회를 놓치면 안되겠죠? 클라우드는 이제 특별한 것이 아니라 공공재, 일반재가 된지 오래입니다. 클라우드에 대한 감각을 늘 잃지 않기 위해서 이런 행사들은 꼭 챙겨서 보시길 추천해 드립니다!


행사의 아젠다를 하나씩 살펴보면 들을만한 세션들도 많이 준비가 되어 있습니다. 카카오톡 게임 플랫폼에서 "활" 이라는 게임으로 단순 아케이드가 아닌 대전게임의 개시를 했던 네시삼십삼분 정원호 팀장 발표를 비롯해서 클라우드를 어떻게 게임 서비스에 활용할 것인지를 이야기하는 SK텔레콤 강인식 매니저의 세션도 놓치면 안될 것 같은 세션입니다.

한국 클라우드 업계에서 테크 구루로 군림(?)하고 계시는 S Core 의 김우현 팀장은 작년에 이어서 올해도 변화된 클라우드 인프라 트랜드를 선물해 주실 것 같습니다. 최근 마이크로소프트의 맹추격을 받고 있지만 여전히 서버 가상화 부문에서 타의 추종을 불허하는 VMware 의 양승도 부장의 VDI 세션도 기업의 IT 담당자, CIO 라면 꼭 챙겨봐야 할 세션입니다.

그리고 개발자 출신이라면 누구나 아실, OKJSP 대표를 역임했고 JCO 의 중추적 역할을 하고 계시는 허광남 대표의 핸즈온 세션은 클라우드 인프라에 대한 거부감을 없애고 가상 인프라를 이용한 개발 환경, 서비스 환경 구성에 대한 Man-To-Man 지식 전달의 장이 될 것 같습니다.


- NoPD -
728x90

+ Recent posts