분산 환경의 합의 알고리즘 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..
Chapter2. Data Models and Query Languages
2023. 4. 9. 14:17
스터디/Designing Data-Intensive Applications
이번 챕터에서는 데이터베이스에서 데이터를 표현하는 다양한 형태의 모델에 대해 살펴보려고 합니다. 먼저, 관계형 데이터베이스의 데이터 모델부터 시작하여, 다양한 NoSQL 데이터베이스에서의 데이터 모델까지(document database, graph database) 다양한 형태의 데이터 모델에 대해 살펴볼 것입니다. 이러한 데이터 모델은 각각의 장단점을 갖고 있으며, 특정한 사용 사례에 적합한 데이터 모델을 선택하는 것이 중요합니다. 또한, 이번 챕터에서는 각 데이터 모델에 대한 쿼리 유형도 다룰 예정입니다. 관계형 데이터베이스의 경우 SQL을 사용하여 데이터를 검색하며, NoSQL 데이터베이스의 경우 각각의 데이터 모델에 맞는 쿼리 언어를 사용하여 데이터를 검색합니다. 데이터 모델링과 쿼리 유형에 대한..
Chapter1. Reliable, Scalable and Maintainable Applications
2023. 4. 8. 14:36
스터디/Designing Data-Intensive Applications
챕터 1은 데이터를 다루는 애플리케이션을 신뢰할 수 있고 확장 가능하며 유지 보수할 수 있는 형태로 개발하는 방법을 살펴보는 큰 그림을 제시합니다. 저자는 신뢰성, 확장성 및 유지 보수성이라는 세 가지 특성에 중점을 두어 애플리케이션을 개발하는 방법을 소개합니다. 신뢰성(Reliability) 신뢰성이 높은 애플리케이션은 다음과 같은 특징을 갖습니다: 애플리케이션은 예상한 대로 동작합니다. 시스템은 예상치 못한 사용자 동작에도 견딜 수 있습니다. 예상된 부하 상황에서도 애플리케이션은 정상적으로 동작합니다. 권한이 없는 요청을 차단할 수 있습니다. 저자는 애플리케이션의 신뢰성을 저하시킬 수 있는 두 가지 요소인 failure와 fault를 설명합니다. Failure는 시스템이 사용자 요청을 처리할 수 없는..
[Armeria] Armeria contribution - Log unhandled exceptions
2023. 3. 11. 01:18
Open Source/Armeria
이번 포스팅에서는 LINE의 대표적인 오픈소스인 Armeria에 기여한 경험을 공유하고자 합니다. Armeria Armeria는 Java, Kotlin 또는 Scala로 작성된 오픈 소스 비동기 HTTP 및 gRPC 클라이언트 및 서버 프레임워크입니다. Armeria는 java 진영의 대표적인 비동기 서버 프레임워크인 Netty를 기반으로 하며 netty를 더 쉽게 사용할 수 있는 API를 제공합니다. Netty를 기반으로 요청을 비동기적으로 처리하므로 확장성이 크다는 장점이 있습니다. Contribute Armeria는 annotated service를 통해서 요청을 처리할 수 있습니다. @Get("/hello") public String hello() { return "hello" } 하지만 anno..
[출판] <비전공자의 정석> 무료 전자책
2023. 2. 13. 18:39
Career/활동
보러가기 , 첫 번째 전자책을 작성 완료했습니다. 비록 제목이 다소 과장됐지만 너그러운 마음으로 봐주시면 감사하겠습니다 ^^... . 이 책은 IT업계가 처음인 비전공자 또는 개발자로 취업하시고자 하는 분들에게 방향성을 제시하기 위해 만들었습니다. 책의 줄거리는 비전공자인 제가 어떻게 개발자가 됐는지, 개발자 취업을 위해 어떻게 준비했는지와 마지막으로 멘토링과 다양한 비전공자분들을 만나면서 받았던 대표적인 질문들에 대한 FAQ 형식으로 구성됩니다. 이 책은 모든 취업준비생이 대기업에 갈 수 있다고 얘기하지 않습니다. 하지만 좋은 IT 기업을 목표로 한다면 준비를 어떻게 해야 하는지 방향을 잡지 못하는 분들께 최대한 도움이 될 수 있도록 작성하였습니다. 책의 마지막에는 멘토링이 필요하신 분들께서 제게 직접..
[AI] AI 시대에서 개발자로 살아남기 - 새로운 문제 해결 기법 AI
2023. 2. 2. 01:13
Artificial Intelligence
ChatGPT의 등장으로 또 한 번 IT에 지각변동이 일어나고 있습니다. 개발자가 쉽게 대체되지는 않겠지만 개인적으로 AI 시대에 뒤처지는 개발자는 대체될 가능성이 높다고 생각합니다. AI 모델을 직접 개발하는 것은 제 목표가 아닙니다. 애플리케이션에 이미 개발된 AI를 활용하거나 AI를 입맛에 맞게 fine tuning 할 수 있는 능력을 키우는 게 제 목표입니다. "AI 시대에서 개발자로 살아남기" 시리즈를 통해 AI 모델을 활용해서 어떻게 애플리케이션을 개발하고 fine tuning을 하는데 필요한 지식을 공유하고자 합니다. 이 시리즈에서는 원리를 학습하고 응용하는 방법을 배우는 전통적인 학습 순서보다는 이 둘을 적절히 번갈아가며 AI를 응용할 수 있는 능력을 키우려고 합니다. 비즈니스 목표와 AI..