async 6

서버리스 오픈소스 - knative #2 비동기 처리를 위한 Eventing

Serveless를 위한 오픈소스 KNative #2 Eventing 조대협 (http://bcho.tistory.com) knative의 다른 모듈로써는 비동기 메세지 처리를 위한 eventing 이라는 모듈이 있다. 카프카나, 구글 클라우드 Pub/Sub, AWS SQS와 같은 큐에서 메시지를 받거나 또는 Cron과 같은 타이머에서 이벤트가 발생하면 이를 받아서 처리할 수 있는 비동기 메커니즘을 제공하는 모듈이라고 보면 된다. 메시지 큐나 cron 과 같이 이벤트를 발생 시키는 자원들은 knative에 event source 라는 Custom Resource로 등록이 되고, 등록된 event source는 이벤트가 발생되면 지정된 knative 서비스로 이벤트 메시지를 HTTP로 전송한다. 이때 이벤..

로그 프레임워크 #1 - 자바 로그 프레임웍 종류

로그 시스템 #1 - 자바 로그 프레임웍 조대협 (http://bcho.tistory.com)로그 시스템 로그 시스템은 소프트웨어의 이벤트를 기록 함으로써, 소프트웨어 동작 상태를 파악하고 문제가 발생했을때 이 동작 파악을 통해서 소프트웨어의 문제를 찾아내고 해결하기 위해서 디자인 되었다. 주로 로그 파일이라는 형태로 하나의 파일에 이벤트들을 기록하였다. 그러나 소프트웨어 스택이 OS, 미들웨어, 사용자 애플리케이션 (자바나 파이썬등으로 구현된 애플리케이션)으로 점점 다중화되고 시스템이 대형화 되면서 한대가 아니라 여러대의 서버에 로그를 기록하고 또한 마이크로 서비스 아키텍처로 인하여 서버 컴포넌트가 분산됨에 따라서 로그를 수집해야할 포인트가 많아지게 되었다. 이로 인해서 로그 시스템이 분산 환경을 지원..

빠르게 훝어 보는 node.js - redis 사용하기 (ioredis 클라이언트 버전)

빠르게 훝어 보는 node.js - redis 사용하기 (ioredis 클라이언트 버전) 조대협 (http://bcho.tistory.com) 지난 포스팅에서 http://bcho.tistory.com/1098 node.js에서 redis 사용에 있어서 node-redis 클라이언트를 사용했는데, 조금 더 리서치를 해보니, node.js의 redis 클라이언트는 지난번에 포스팅한 node-redis 클라이언트와 ioredis라는 클라이언트가 가장 많이 사용된다. ioredis 클라이언트가 조금 더 최근에 나온 클라이언트인데, https://github.com/luin/ioredis Bluebird promise 지원, 트렌젝션 지원등 훨씬 더 많은 기능을 제공하고, 사용법이 node-redis와 거의 유..

빠르게 훝어 보는 node.js - promise를 이용한 node.js에서 콜백헬의 처리

Promise를 이용한 node.js에서 콜백헬의 처리 조대협 (http://bcho.tistory.com) 앞의 글(http://bcho.tistory.com/1083) 에서 async 프레임웍을 이용한 콜백헬을 처리 하는 방법에 대해서 알아보았다.async 프레임웍 이외에, 콜백헬을 해결할 수 있는 프레임웍으로 promise가 있다.Promise는 원래 콜백헬을 해결하기 위한 프레임웍이 아니라, 프로그래밍 패턴중의 하나로 지연 응답을 통해서 동시성을 제어 하기 위한 목적으로 만들어졌다. 자바스크립트에서는 Jquery의 Deferred나, CommonJS에 구현되어 있고, ECMAScript5 표준에 포함되서 크롬,파이어폭스,인터넷익스플로러 9 버전등에 포함되어 있다.구현체가 많아서 설치해야 한다. n..

빠르게 훝어 보는 node.js - async 프레임웍을 이용한 콜백헬의 해결

빠르게 훝어 보는 node.js - async 프레임웍을 이용한 콜백헬의 해결 조대협 (http://bcho.tistory.com) 콜백헬의 정의 node.js는 자바스크립트의 콜백 패턴을 사용한다. 그래서 함수들을 순차적으로 실행하고자 할때 콜백 함수들의 중첩이 생겨서 코드가 복잡해지는 문제가 생긴다. 코드가 복잡해지고, 코드의 가독성이 떨어져서 유지 보수가 매우 힘들어진다. 파일을 읽어서 쓰는 코드를 보자 var fs = require('fs'); var src = '/tmp/myfile.txt'; var des = '/tmp/myfile_async.txt'; fs.readFile(src,'utf-8',function(err,data){ console.log(data); if(err){ console..

Vert.x Worker Concept

Worker에 대한 개념 설명[개인 공부 노트이기 때문에 설명이 매우 어렵습니다. 나중에 다 이해하면 다시 개념 정리해서 올리도록 하겠습니다.]관련 코드 : https://github.com/bwcho75/vertx_study/tree/master/worker_sample 앞단의 Network 핸들러 (TCP,HTTP)등에서 request를 읽은 후에, Event Bus 를 통해서 Backend의 Worker로 보낸다. 이 개념은 JMS나 MQ등을 이용해서 뒷단에서 Message Consumer 들이 처리하는 Q 기반의 Async 기반의 개념과 매우 유사하다. 그럼 Vert.x에서 차이점은 이 Worker가 작업을 처리한 후에, 작업을 끝내면 작업 완료 메시지가 Message Producer (즉 Net..