[Central Dogma] 설정 관리의 최강자
2023. 6. 9. 21:04
Open Source/Central Dogma
Central Dogma는 라인에서 개발 및 관리하는 오픈소스입니다. 공식 사이트에서 CD(Central Dogma)는 다음과 같이 정의됩니다. Central Dogma is an open-source highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2. 정의만 가지고 CD가 정확이 무엇을 하는지 모르겠으니, 그 기능에 대해 살펴보겠습니다. json, yaml, xml 형태의 설정파일을 CD에 저장하고 관리할 수 있습니다. 고가용성을 위한 복제 기능(multi-master repliaction)을 제공하고, 변경사항을 관리할 수 있습니다(version controlled ..
Chapter 7. Transactions
2023. 6. 6. 10:25
스터디/Designing Data-Intensive Applications
이번 장에서는 백엔드 개발자라면 매우 중요한 트랜잭션에 대해 소개합니다. 트랜잭션의 기본 개념과 더불어 다양한 DBMS에서 어떻게 트랜잭션을 구현하는지 살펴볼 수 있는 장이므로, 시간이 나실 때 읽을 것을 추천합니다. ACID Atomicity 원자성을 의미합니다. 트랜잭션 단위로 묶인 작업은 모두 성공하거나 모두 실패하는 트랜잭션의 속성입니다. MySQL은 트랜잭션의 원자성을 보장하기 위해 WAL(Write-Ahead Log)라는 로그성 파일을 활용합니다. 트랜잭션이 수행되는 과정에서 발생하는 데이터 변경을 로그로 WAL에 추가합니다(append). 만약 알 수 없는 이유로 시스템이 다운됐을 때, DBMS는 WAL를 참고해 반영되지 않은 트랜잭션의 작업을 디스크에 반영합니다. 트랜잭션이 WAL를 사용해..
[Career] 난 잘하고 있는걸까?
2023. 6. 4. 12:46
Career/회고
2년 만에 스타트업 CEO로 일하는 동갑내기 지인을 만났습니다. 그동안 배운 것을 이야기하며 즐거운 시간을 보냈습니다. 대화 중 가장 인상 깊었던 주제는 "주어진 일만 하는 사람과 자신의 목표를 향해 나아가는 사람은 어떤 경험적 차이가 있을까"였습니다. 친구들 또는 지인들과 얘기해 보면 현재가 만족스럽기 때문에 지금 하는 일에 충실한 사람들이 있고, 자기만의 목표가 있어 지속적으로 새로운 목표를 세워 열심히 도전하는 사람들이 있습니다. 이번 포스팅에서는 후자 유형의 사람들이 어떻게 동기부여를 얻는지 생각해 보고, 스스로 후자 유형이라고 생각하는 제가 목표를 향해 제대로 나아가고 있는지 회고해보고자 합니다. 대화를 나눈 지인분께서는 리스크를 감수하며 도전해 목표를 달성한 경험이 있습니다. 대학 졸업 후 창..
[Database] Isolation level에 따른 동시성 문제 분석
2023. 4. 30. 23:42
Database/Database 필수
데이터베이스 트랜잭션은 설정된 isolation level에 따라 방지할 수 있거나 방지할 수 없는 동시성 문제가 존재합니다. ANSI SQL(미국 표준 협회의 SQL 표준)은 isolation level에 따라 방지해야 하는 최소한의 동시성 문제를 다음과 같이 정의합니다. Isolation level Dirty ReadNonrepeatable ReadPhantom ReadSerialization Anomaly Read uncommittedOOOORead committedXOOORepeatable read XXOOSerializableXXXX데이터베이스 구현체(MySQL, PostgreSQL 등)는 위 ANSI SQL을 따르기도 하지만 각각의 구현 방법에 따라 방지할 수 있는 동시성 문제가 달라질 수 있..
Cassandra는 어떻게 대규모 쓰기를 처리할까
2023. 4. 22. 16:58
논문
이번 포스팅에서는 분산환경에서 대규모 쓰기 처리를 지원하는 Cassandra 데이터베이스에 대해 살펴보겠습니다. Cassandra는 데이터를 저장할 때 SSTable을 활용합니다. SSTable은 상업용 데이터베이스에서 데이터를 저장하기 위해 사용되는 B tree와 성격이 많이 다르기 때문에 Cassandra를 이해하기 위해서는 SSTable에 대한 이해가 필요합니다. SSTable이 궁금하시다면 아래 포스팅을 참고해 주세요. Chapter 3. Storage and Retrieval 이번 챕터에서는 데이터베이스에 저장되는 데이터의 형태와 저장 방식에 따른 장단점에 대해 살펴보겠습니다. 데이터베이스는 데이터를 효율적으로 저장하고 찾기 위해 인덱스를 활용합니다. code-run.tistory.com Abs..
분산 환경의 합의 알고리즘 Paxos
2023. 4. 13. 08:09
논문
이번 포스팅에서는 Paxos 알고리즘에 대해 살펴보겠습니다. 분산 시스템에서 여러 대의 서버가 서로 다른 데이터를 가지고 있을 수 있기 때문에 동시성과 일관성을 보장하는 것은 쉬운 문제가 아닙니다. 이런 문제를 해결하기 위해 분산 환경에서 노드 간 합의를 도출하는 알고리즘인 Paxos가 등장하게 되었습니다. Paxos 알고리즘은 Leslie Lamport가 제안한 알고리즘으로, 분산 시스템에서 노드 간 합의를 도출하는 알고리즘 중 가장 널리 사용되는 알고리즘 중 하나입니다. 이번 포스팅에서는 Leslie Lamport의 "Paxos Made Simple" 논문을 읽고 Paxos가 어떻게 분산 환경에서 노드 간 합의를 도출하는지 살펴보겠습니다. 하지만 논문만으로는 이해가 쉽지 않기 때문에, 논문의 내용을 ..
LSM-Tree는 왜 사용할까
2023. 4. 11. 22:04
논문
이번 포스팅에서는 Patric O'Neil의 "The Log-Structured Merge-Tree" 논문을 읽고 LSM Tree가 등장한 이유, 특징, 그리고 동작 원리에 대해 살펴보겠습니다. Abstract 해당 논문이 발표된 시기에는 "activity flow management system application"의 수요가 증가하고 있었습니다. 이 시스템은 일련의 활동을 관리하고 최적화하기 위해 사용되며 대표적인 기능으로는 task tracking, workflow automation 가 있습니다. 이러한 시스템은 애플리케이션 레벨에서 히스토리성 데이터를 저장하는 동시에 데이터베이스에서 시스템 복구를 위해 해당 데이터가 저장되는 시점에 로그성 데이터를 추가로 저장합니다(Write ahead log)..
Chapter 3. Storage and Retrieval
2023. 4. 10. 23:10
스터디/Designing Data-Intensive Applications
이번 챕터에서는 데이터베이스에 저장되는 데이터의 형태와 저장 방식에 따른 장단점에 대해 살펴보겠습니다. 데이터베이스는 데이터를 효율적으로 저장하고 찾기 위해 인덱스를 활용합니다. 이러한 인덱스를 저장하는 방식을 크게 분류하면 log-structured 형태와 page-oriented 형태의 저장방식으로 구분됩니다. Log Structured Indexes Hash Table 가장 기초적인 데이터 저장 및 조회 방법으로는 해시 테이블을 사용할 수 있습니다. 이 방법은 Key-value 형태의 데이터를 메모리 상에 유지하면서 주기적으로 디스크로 플러시합니다. 데이터는 append 형식으로 디스크 파일 끝에 추가됩니다. 디스크에 저장된 데이터는 segment 단위로 구분하며, 더 이상 쓰기 작업이 없는 seg..