라프트 합의 알고리즘(Raft Consensus Algorithm)

개요 Raft는 복제된 로그(replicated log)를 관리하기 위한 합의 알고리즘이다. 단일 노드(예로 단일 인스턴스의 데이터베이스)에서는 클라이언트에게 값을 받아서 저장하는게 어려운 일이 아니다. 하지만 노드가 여러개라면 어떻게 합의를 해야할까? 이게 바로 분산 시스템에서의 합의 문제이다. Raft라는 물건은 분산 합의를 위한 프로토콜이다. Raft의 노드는 다음 세 가지 상태 중

8 min read

More issues

Burp suite로 Proxy 구성하고 App의 API들 살펴보기

개요 앱에서만 서비스를 하는 친구들의 API를 보고 싶다면 어떻게 할까? Burp suite를 사용하면 간단하다. 방법이 이 친구만 존재하는건 아니지만 이런 경우에는 이게 제일 간단하다고 생각한다. 원리는 간단하다. MITM이다. 그럼 인증서 적용된건 어떻게 할건데? 중간에 껴서 가짜 인증서를 주면 된다. 물론 일반적인 시나리오에서는 이와 같은 방법으로 누군가를 공격하는 것은 힘들다. 왜
6 min read

xv6 Chapter 1 - 운영체제 구조 (1)

서문 우선 교재와 저장소 * 교재: https://hyeyoom.github.io/xv6-x86-book/book/chapter_1.html * 저장소: https://github.com/hyeyoom/xv6-public 번역본은 있으니 코드를 분석해보자 부팅하기 UEFI가 등장하고 사용된지 십수년이나 되었지만 그럼에도 불구하고 고대 기술이 되어가는 부팅 방식을 보는 것도 유효하므로 잘 따라가보자. BIOS라는 물건은 ROM 같은 곳에 저장된 프로그램인데, 이
10 min read

어른의 문답법

어른의 문답법: How to have impossible conversations: A Very Practical 어른의 문답법어른의 문답법 작품소개: 철학, 논리학, 인식론에서 길어 올린 어른을 위한 대화법 강의『이기적 유전자』저자 리처드 도킨스 강력 추천바야흐로 ‘갈등의 시대’다. 저녁 식탁에서, 온라인에서, 직장에서, 정치 현장에서 우리는 수많은 갈등을 마주한다. 나의 편견과 남의 편견이 만나면 생각의 접점이란
7 min read

Consistent Hashing

수평 확장(Horizontal Scaling)을 위해서는 데이터를 여러 서버에 균등하게 나누어야 한다. 아마 샤딩 관련 경험이나 글을 읽었다면 알고 있을 내용이다. 일관된 해싱도 데이터를 균등하게 나누고 재배치가 발생할 때 전체 재배치를 막는 친구이다. rehash 문제 N개의 서버에 키를 균등하게 나누는 방법은 다음과 같다 dbIndex = hash(key) % N 나머지 정리에 의해
7 min read

m1 mac에서 xv6 빌드

운영체제 만들기 스터디를 시작했다. xv6를 학습하기로 했다. 참고로 gdb는 안붙어서 골때리는 중.. 코드 건드리기 싫어서 macports를 사용하려 했으나 차선생님께서 제안한 방법이 마음에 들어서 이걸로 소개한다. Requirements 우선 저장소는 다음과 같다. https://github.com/mit-pdos/xv6-public 여기서 일단 클론 ㄱㄱ 그리고 qemu와 i686-elf-gcc를 설치한다. $ brew install qemu i686-elf-gcc 설정 및 실행
1 min read