개발 2

Haskell 책 한 권 읽었다

함수형 프로그래밍을 좀 더 깊게 이해하고 싶어서 Haskell 책을 한 권 끝내보자 하는 결심을 세웠다. Haskell 은 순수 함수형 언어로 유명하니 함수형 프로그래밍을 제대로 이해하려면 한 번쯤은 해보고 싶다는 생각도 들던 참이었다. Haskell 책으로 유명한 책은 LYHGG 라고도 불리는 이라 이 책을 골랐다. 번역서 퀄리티가 좋지 않다는 이야기는 들었는데, 확실히 만족스러운 퀄리티는 아니었다. 원서는 온라인으로도 읽을 수 있으니 관심이 있으면 http://learnyouahaskell.com/chapters 에서 읽어보자. 책 한 권을 읽으면서 Haskell(이하, 하스켈)에 아주 능숙해지지는 않았지만, 코드를 읽을 수 있는 수준까지는 올라온 것 같다. 더불어 함수형 프로그래밍에 대해서도 좀 더..

Tech Note 2021.05.16

Consistent Hashing 일관된 해싱

배경 분산 처리 기법 중의 하나이다. 파티셔닝이나 로드 밸런싱 등 분산 처리에서 사용하는 방법 중 하나라고 할 수 있다. Karger 등이 소개한 기법이고, 해당 논문은 여기서 볼 수 있다. 파티셔닝이나 로드 밸런싱을 할 때 Key를 기반으로 하면 문제가 생겨서 나온 방법이다. 예를 들어, 이름을 A~Z 로 정렬한 데이터를 파티셔닝 한다고 해보자. 이때 key를 ‘A’, ‘B’ … ‘Z’로 잡아서 파티셔닝을 하면 다음과 같은 문제가 생긴다. 파티셔닝의 목적은 데이터를 각 DB 노드들이 균등하게 들고 있을 때가 Best Case이다. 하지만 key를 특정 알파벳으로 하면, ’S’, T’ 등 특정 알파벳으로 데이터가 쏠리고(skewed), ‘X’, ‘Y’ 등 잘 쓰이지 않는 알파벳을 가진 DB 노드에는 데이..

Tech Note 2020.12.27