Amazon Managed Streaming for Apache Kafka - MSK

나는 항상 우리의 고객이 스트리밍 데이터를 이용하는 것을 보며 놀라곤 한다. 예를들어 기업과 전문가 집단에게 가장 신뢰받는 뉴스기업 중 하나인 Thomson Reuters 의 경우 데이터를 수집하고 분석 및 시각화 하여 사용자 경험의 지속적 개선을 지원하는 솔류션을 구축했다. Hayday, Clash of Clan 및 Boom Beach 같은 게임을 제공하...

Consul

Consule는 서비스 디스커버리(Service discovery)와 설정을 관리하는 툴이다. Consule는 분산&클라우드 환경에 적응하기 위한 고가용성, 유연한 스케일링, 분산시스템의 특징을 가진다. Consul의 핵심 기능은 아래와 같다. 서비스 디스커버리 Health Checking KV(Key/Value) 저장소(Store) 멀티 데이터센터...

GRPC

gRPC는 구글이 개발한 오픈소스 RPC(Remote procedure call) 시스템이다. HTTP/2와 Interface description language인 프로토콜 버퍼(Protocol Buffers)를 기반으로 하고 있다. 인증, 양방향 스트리밍, timeout, cancellation, 블럭킹, 넌블럭킹등의 기능을 제공한다. gRPC를 이용하...

The Behavior of Channels

처음 go의 채널을 사용 했을 때, 나는 채널을 데이터 구조체(스트럭처)처럼 다루는 실수를 했다. 채널은 고루틴(goroutine)사이에서 큐를 제공하고, 자동으로 데이터를 동기화 해주는 것이라고 보았기 때문이다. 이렇게 채널을 구조체로 보는 것 때문에, 복잡하고 나쁜 동시성 코드를 만들게 됐다. 시간이 지나면서 채널을 스트럭처로 보는 대신, 행위에 중점...

Kubernets Concepts

쿠버네티스(혹은 K8s)는 컨테이너기반 애플리케이션과 서비스의 운영, 디플로이 자동화, 스케일링을 위한 소프트웨어 도구다. 도커 컨테이너 기반의 운영 툴 중에서는 가장 빠르게 성장하고 있는 소프트웨어라고 할 수 있다. 2014년 구글은 K8s를 오픈소스로 전환했다. 쿠버네티스는 아래의 목적으로 사용하기 위한 기능들을 제공한다. 컨테이너 플랫폼 마이크로 서...

JDFS

Joinc Distributed File System이다. 오브젝트 스토리지를 위한 분산 파일 시스템과 블럭 스토리지를 위한 분산 파일 시스템을 구현한다. 일반 파일 시스템에 마운트 해서 사용 할 수 없다. ls, copy, rm 과 같은 일반적인 파일 시스템 작업을 할 수 없다. 이 작업을 위해서는 FUSE와 같은 고수준 파일 시스템이 필요하다. HDFS...

분산 운영체제 구현

내가 관심있는 분야는 인프라 관점에서는 SaaS및 PaaS이며, 애플리케이션 관점에서는 메시징 플랫폼으로 메시징 플랫폼 구성 관점에서 살펴보려 한다. 보통 분산 운영체제가 애플리케이션의 실행을 목적으로 하기 때문에, 약간은 다른 내용이 될 수 있다. 내가 구상중인 분산 메시징에 대한 아이디어는 를 참고하기 바란다. 여기에서는 메시징 인프라를 실제 구현하기 ...

Distributed Operating System

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

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

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

Go - Concurrency

Go - Concurrency개념적으로 고루틴(Gorutines)은 thread, coroutines, processes 등과 혼동될 수 있다. 용어에 따른 개념의 혼란을 피하기 위해서 "고루틴"이라는 새로운 용어를 만들었다고 한다. 실제 사용하다보면, 멀티 스레드, 멀티 프로세스 등과 비슷하면서도 해석과 사용에 미묘한 차이가 있음을 알 수 있다. 고루틴...