분류 전체보기 14

A Brief Introduction to Modern Password Hashing: Argon2 Variants and Balloon Algorithm

1. Argon2 Argon2 is more than just a password hashing algorithm. This is a framework that offers flexibility based on its variants, each tailored to specific threat models. Core Features Memory-hardness Designed to consume significant amounts of memory, thwarting both time-memory trade-offs and hardware-based attacks. Parallelism Supports parallel processing, making it efficient on multi-core sy..

Simple Topics 2023.09.19

MySQL 8.1 출시 (Innovation Release와 LTS 알아보기)

개요 MySQL의 최신 버전인 8.1이 발표되었다. 이번 8.1은 이전 버전인 8.0이 출시된 지 무려 5년이 지난 뒤에야 출시한 이례적인 케이스. 그렇다면, MySQL 8.0의 다음 버전 출시가 왜 이렇게까지 늦어진걸까? 그 이유는 MySQL 8.0에서는 정식 버전이 출시된 이후에도 계속해서 큰 기능들을 추가하기로 결정했기 때문이었다. (그래서 초기 8.0.11과 최신 8.0.11에서는 정말 동일한 버전인지 의심스러울 정도로 기능이 늘어났다) 새로운 기능을 최대한 빨리 출시하고 싶다는 생각에서 그런 전략을 취했지만, 그 대가로 버전 번호의 업데이트가 늦어지는 결과를 초래했다 (그래서 MySQL 발전이 멈췄다고 생각하시는 분들도 계신데, 8.0대에서 계속 발전하고 있다) 결국 MySQL도 정식 버전을 두..

Simple Topics 2023.07.19

Inside Garbage Collection(Shenandoah, ZGC)

목차 들어가기 전에 Stop the world 란? GC의 종류 Shenandoah GC 개요 Jdk Support Shenandoah GC Cycle Shenandoah Core Concepts Performance Guidelines and Diagnostics ZGC 개요 Jdk Support ZGC Cycle ZGC Core Concepts 마치며 들어가기 전에 우선 Shenandoah GC로 바로 들어가기 전에, GC 에 대한 간략한 이해(Stop the World)와 다른 어떤 GC들이 존재하는지 살펴보고 나서 들어가도록 하겠습니다. Stop the world 란? Stop the world(이하 STW)는 JVM이 Garbage collection(이하 GC)을 수행하기 위해 애플리케이션의..

Presentation 2023.06.05

What is IO_uring? (Inside IO_uring)

예전에 SSD, HDD에 대한 글을 살펴본 것 처럼, I/O 처리 방식은 시스템 성능에 큰 영향을 미칩니다. Coding for SSDs – Part 1: Introduction and Table of Contents | Code Capsule Translations: This article was translated to Simplified Chinese by Xiong Duo and to Korean by Matt Lee (이 성욱). Introduction I want to make solid-state drives (SSDs) the optimal storage solution for my key-value store project. For that reason, I had t codecapsul..

Research 2023.05.29

첫 회고

계속 주니어이고 싶다는 우스갯소리를 종종 했는데, 어느덧 경력이 4~5년 정도 쌓였더라 (실력은 부족한데 경력만 쌓여가는 느낌이..ㅠㅠ) 돌이켜보니 2013년 즈음부터 개발을 시작했었고 2015년에 개발자(병특)로 첫 발을 내딛었다. 아직도 많이 부족하지만, 최근 지인분들과 대화하면서 예전엔 의미 없다고 생각했던 경험들이 돌이켜보니 그 경험들 덕분에 추상적으로 바라볼 수 있다거나, 어떤 부분을 맡더라도 해낼 수 있다는 자신감, 팀원을 배려할 수 있는 작업들이 보인다거나 하는 것들 생겨서 그래도 조금은 성장했다고 느꼈다. 사실 개발이 처음부터 즐거웠던 것은 아니다. (그래서 방황도 참 많이 했다) 그냥 좋은 동료이고 싶은 마음이 공부하는 이유였다. (당시에는 더 공부하거나 더 일한다고 돈을 더 주던 시절도..

- 2023.05.28

SBC 입문기 (다양한 파이의 세계)

이번에 휴가를 맞아 평소 하고싶었던 일들을 하기로 계획했다. 그 중 한가지가 k8s 홈 클러스터. 예전엔 집에 남는 데스크탑들이 몇 대 있었기에 k8s 홈 클러스터를 구축해서 rook + ceph 를 PoC 해보거나 할 수 있었는데, 이사를 거듭하면서 데스크탑을 하나 둘 처분하고 나니 클러스터는 힘들어졌다ㅠㅠ 데스크탑은 좀 부담되는 면이 있었기에 SBC 로 눈을 돌리던 중 지인분이 이런식으로 SBC 로도 잘 운영하고 계시다는 말을 듣고 홀린듯이 SBC 로 결정을 하게 되었다! (실 운영중인 스마트 홈 서버) 이번엔 라즈베리 파이로 구축해볼까? 하는 생각에 이것저것 찾아보다 보니, 생각보다 파이의 종류가 많았기에 선택 과정을 공유해보고자 한다. 살펴본 PI 종류는 아래와 같다 (사실 이외에도 훨씬 더 많지..

for fun 2023.05.19

UUID 의 세계(UUID 선택 가이드)

UUID 를 쓸 것이냐? ID 를 쓸 것이냐? 혹은 둘 다 쓸 것이냐? 오래된 논쟁이지만, 모든 상황에서 절대적으로 옳은 선택지가 존재하지 않는 논쟁이라고 생각하기에, 무의미한 논쟁에서 벗어나 내 시스템에는 어떤 선택지가 좋을까? 에 대해 같이 고민해봅시다 :) 들어가기전에 auto increment ID 는 DB 에서 PK 로 자주 사용됩니다. 하지만 ID 만 사용하게 되면 보안 문제가 생길 수 있습니다. 예를 들어, 일련번호와 같은 연속된 ID를 사용하는 경우, 공격자가 다른 사용자의 데이터에 접근할 가능성이 있습니다. 반면, UUID는 범용 고유 식별자로 128비트(아닌 경우도 있는데, 아래에서 다루겠습니다) 크기의 "거의" 중복되지 않는 값을 생성합니다. ID 의 단점 ID 의 단점은 앞서 설명드..

Simple Topics 2023.05.15

JDBC 살펴보기 (JDBC communication internals with postgresql)

우리는 DB 를 일상적으로 사용하고 있지만, 내부적으로 어떤 일이 발생하고 있는지 놓치고 있는 경우가 종종 있습니다. 이 포스팅을 통해 jdbc 와 DB 사이에 어떤 일이 일어나고 있는지, 그리고 선택 가능한 옵션이 어떤게 있는지, 발생하는 상황, 이유 등에 대해 알아봅시다 :) 체크포인트 simple protocol 과 extended protocol 의 차이점 왜 extended protocol 이 더 효율적이고 jdbc 드라이버에서 디폴트로 채택되었는가? 프로토콜을 이해하고 구현하는법 Extended Query Protocol postgreSql JDBC 드라이버에서 사용하는 디폴트 프로토콜은 Extended Query Protocol(이하 EQP) 입니다. EQP 는 Frontend/Backend..

Simple Topics 2023.05.14

PostgreSQL 15 살펴보기 (부제: Logical Decoding Message 의 이점)

PostgreSQL 15를 살펴보다가 재밌는 내용들이 보여서 오랜만에 작성한 포스팅. 오늘 포스팅을 하게 된 핵심 콘텐츠는 바로 pg_logical_emit_message(transactional boolean, prefix text, content text) 메소드. 메서드명을 통해, logical decoding message를 emit 할 수 있음을 유추할 수 있는데, 메서드를 바로 설명하기에 앞서 몇 가지 개념을 살펴보고 가자. 1. Logical Decoding Postgresql 공식 홈페이지 에는 아래와 같이 설명되어 있다. Logical decoding is the process of extracting all persistent changes to a database's tables in..

Research 2023.04.02