Monthly Reading - July 2019
소프트웨어 환멸감
이번 달에 개발자들 사이에서 엄청나게 돌았던 글이다. Computer Science 의 관점에서 매우 비효율적으로 돌아가고 있는 현재의 IT 산업을 비판하는 글이다.
이 글에서는 동의하는 부분도 있지만, 동의하지 못하는 부분도 있다. 모든 것이 전부 비효율적으로 이루어져있다는 면에서는 동의를 하지만, 결국 우리가 궁극적으로 하고자 하는 것은 유저들에게 도움이 되는 소프트웨어를 전달하는 것이므로, 그 관점에서 global optimization 을 해야 하는 것이다.
이 글의 필자는 좁은 관점에서의 optimization 에 대한 이야기를 하고 있는 듯 하다. 그럴려면 System Programming 을 빡시게 할 수 있는 곳으로 가야 하지 않을까.
UUID or GUID as Primary Keys? Be Careful!
우리들이 PK 를 정할 때 별 고민없이 사용하는 UUID 에 대해 고찰하게 하는 글이다. UUID 를 쓰면 결국 human-readable 하지 않고, FK 를 할 때 너무 많은 데이터를 쓴다는 것이다.
맞는 말이긴 하지만, BIGINT PK + Exposable 로 UUID 를 사용하라는 결론은 좀 동의하기 힘들다.
DBMS는 어떻게 트랜잭션을 관리할까?
그냥 대충만 알고 있었던, DBMS 의 트랜잭션에 관한 설명이다. 잘 몰랐던 fsync
에 대해서 알게 된 계기가 되었다.
Why Uber Engineering Switched from Postgres to MySQL
DB 스터디를 하면서 보게 된 글이다. Uber 에서 PostgresSQL 을 쓰다가 MySQL 로 전환하게 된 이야기이다. Uber 에서 주요하게 고려했던 이유 중 하나는 Secondary Index 처리 방식인데, Postgres 의 경우 바로 Disk 의 위치를 가리키게 되면서 Disk 의 변경이 많은 경우 Write Amplification 이 일어나게 된다고 한다.
반면 MySQL 의 경우, Secondary Index 가 Primary Index 를 바라보고 Primary Index 가 Disk 를 바라보므로 상대적으로 Disk 위치 변화에 대해 조금만 데이터 수정이 필요하다고 한다.
Tech야,놀자 준비 후기
테크 밋업을 어떻게 준비했는지에 대한 글이다. 할 일이 있을지도 몰라 인덱스용으로 적는다.
파이썬 - 클래스를 사용하지 않기
파이썬에서 class 를 사용하지 않고 custom data 를 표현하는 방식을 다룬 글이다.
SKIP List of ZETS (Redis)
Redis 의 Sorted Set 에 사용되는 Skip List 를 어떻게 구현했는지에 대한 설명이다. 무엇보다 사이트가 나쁘지 않은 것 같아 종종 들릴 예정이다.