회고 — 일, 사람, 여유

  • 회고

한 달 전쯤부터 회고글을 쓰려고 생각을 했지만 이런 저런 일이 주위에서 생기고 다른 일들이 우선 순위가 높다보니 이제서야 쓰게 되었다. 글은 개인적으로 앞뒤로 시간적 여유를 두고 쓰는 것을 선호한다. 이런 저런 생각들이 떠오를 수 있는 시간이 필요하고 그것들이 얼기설기 엮여 글로 나타나기 때문이다. 하지만 지금은 더 늦어지면 몇 달 동안 느꼈던 것들이 바래질 거 같아서… 더 보기 »회고 — 일, 사람, 여유

HoneyBadgerBFT Protocol에 대해서

이 글은 BFT 기반 합의 알고리즘 중에 하나인 HoneyBadgerBFT에 대해서 어떤 특징을 가지고 어떤 식으로 동작하는지 설명하고자 한다. 과거에서부터 지속적인 오퍼레이션이 중요한 어플리케이션들은 BFT 계열의 프로토콜을 도입하여 fault-tolerant한 시스템을 만들고자 하였다. 분산 시스템에 대한 관심이 높아지면서 어떤 노드 혹은 컴포넌트가 제대로 동작하지 않는지 시스템 내부적으로 확인할 수 있는 failure-detection과 시스템 내부에서 어떤 컴포넌트가 제대로 동작하지… 더 보기 »HoneyBadgerBFT Protocol에 대해서

Diffie-Hellman Key Exchange

One disadvantage of symmetric cryptosystems which require private key like AES is that the private key must be exchanged. And Diffie-Hellman key exchange algorithm enables exchange private keys over a public channel. So it can solves following dilemma. Alice and Bob want to share a secret key which is going to be used in a symmetric cipher,… 더 보기 »Diffie-Hellman Key Exchange

Create New SmartContract Programming Language with Go — Parser Part

This is the third post about project which creates new Smart Contract programming language with go. In the previous post, we’ve introduced you the motivation of this project, why we decided to built new Smart Contract language and brief architecture, and how we implement the first component lexer. The project still WIP and open source so you can… 더 보기 »Create New SmartContract Programming Language with Go — Parser Part

Create New SmartContract Programming Language with Go — Lexer part

This is the second post about project which creates new smart contract language with go. In the last post, introduced about project concept, why we decided to built new smart contract language and brief architecture. The project is WIP and open source so you can visit github and feel free to contribute to our project. Prev Post: New… 더 보기 »Create New SmartContract Programming Language with Go — Lexer part

Create New SmartContract Programming Language with Go — New Project Motivation, Concept

This post is about why we started to create new programming language for smart contract (with go). Motivation There are two well known blockchain these days, bitcoin and ethereum. and bitcoin has bitcoin script and ethereum has solidity for programming its own smart contract. Both have pros and cons: In the case of bitcoin, it has no state concept and bitcoin script… 더 보기 »Create New SmartContract Programming Language with Go — New Project Motivation, Concept

Promise: 구현해보며 원리 살펴보기

이번 포스팅은 Promise가 어떤 원리로 동작하는지 직접 구현해보면서 살펴보는 내용을 담고 있다. 그렇기 때문에 기본적으로 Promise를 몇 번 사용해본 경험이 있다는 전제하에 글을 작성하고 있다. 그래서 Promise에 대해서 처음 들어본다면 다음과 같은 글을 미리 읽고 읽는 것을 추천한다. Simple Promise 위와 같이 Promise는 간단히 보면 state machine으로 생각할 수 있다. 최초로 Promise가 생성되었을 때는 ‘pending’… 더 보기 »Promise: 구현해보며 원리 살펴보기

어떤 사람이 되고 싶나?

  • 회고

하루 휴가를 내고 하루 종일 카페에서 멍하니 있으면서 ‘어떤 사람이 되고 싶나?’라는 질문을 던졌을 때 답답한 마음이 들었다. 답이 바로 떠오르지 않았고 뭘 해야될지 몰라서 터덜터덜 집으로 돌아왔다. 집으로 와서도 한 시간 정도 멍하니 있었다. 그랬을 때 오후에 했던 질문에 대해서 답에 대한 몇 개의 후보군이 우후죽순 떠올랐고 (사실 답이란 건 없지만…) 그것들을 정리해보았다. 계속… 더 보기 »어떤 사람이 되고 싶나?

Query Service 성능 개선기 두 번째 이야기

두 번째 Query Service 성능 개선기를 작성하게 되었다. 첫 번째에서 문제가 다 해결된게 아니냐 싶을 수도 있지만 슬프게도 다 해결된 것은 아니었다. 여전히 DB의 사용률에 따라 조회 시간의 차이가 롤러코스터급으로 들쭉날쭉 했고 이를 반드시 해결해야 서비스 릴리즈를 할 수 있었다. 또한 DB에 엄청난 속도로 데이터가 쌓이고 있었기 때문에 이런 상황에도 전혀 무관하게 일정한 조회 시간을… 더 보기 »Query Service 성능 개선기 두 번째 이야기

Query Service 성능 개선기 첫 번째 이야기

작년 4분기부터 올해 초까지 현재 근무하고 있는 회사에서 제공하고 있는 Saas 솔루션의 대시보드 개발을 맡았다. Spring Boot와 JPA를 이용하였고 현재는 베타버전이 거의 완성되었다. 개발 막바지에 Query Service의 성능과 관련된 이슈를 경험하여 글로 남기려고 한다. 이번 포스팅에서는 성능을 개선해야하는 Query Service가 어떤 서비스인지 컨텍스트에서 간단히 설명하고 어떤 문제가 있었으며 그것을 소프트웨어 레벨에서 어떻게 해결하려고 했는지를 써보려고한다.… 더 보기 »Query Service 성능 개선기 첫 번째 이야기