개요나는 지난 회사에서도, 토이/사이드 프로젝트를 진행할 때에도 주로 RDB를 사용해왔다. 그래서 그런지 항상 약속한듯이 Primary key 관리 전략으로 Auto-Increment Key(단조 증가하는 정수 키)를 사용해왔다.그러던 중 이직을 하며 트래픽이 매우 큰 서비스를 다루게 되었는데, 이 서비스는 MongoDB라는 NoSQL DB를 사용한다. 그런데 이 DB에서는 ObjectID라는 난수 문자열같이 생긴 값을 Primary Key로 사용하는 것이 아닌가? 처음에는 왜 더 공간 차지도 많이 하고, 범위 정렬도 안 될 것 같은 이런 키를 사용할까? 라는 의문이 들었다. 하지만 이 ObjectID에 대해 학습하게 되면, MongoDB의 설계 철학과 왜 이런 키를 사용하게 되었는지를 이해할 수 있다...
로컬 PC에서 k8s 환경에 배포된 레디스 클러스터에 클러스터 모드로 연결하려 했는데, 연결이 되지 않았다.이런 상황에서 어떤 해결책이 있는지, 내가 어떤 해결책을 택했는지를 이 글을 통해 정리해보고자 한다. 문제 상황: Standalone 모드로는 연결이 되는데, Cluster 모드로 연결이 안 돼요클러스터 내 단일 노드에 포트 포워딩(kubectl port-forward) 후 연결하는 것은 잘 되었으나, 클러스터 모드로는 연결이 되지 않았다. 레디스 클러스터는 여러 노드가 데이터를 분산 관리하기 때문에, 나는 클러스터 모드로의 연결이 필요했다.레디스 클러스터에 대해서 단순히 ‘샤딩을 한다’ 정도의 지식만 가지고 있던 나는 그냥 단순히 모든 노드에 포트포워딩을 한 뒤 모든 노드 IP:PORT를 명시하..
TIL(Today I Learned)TILTIL은 2021년부터 사용하고 있는, 학습한 내용을 마크다운 형식으로 정리해서 올리는 깃헙 프로젝트이다.처음에는 단순히 배운 내용을 정리하는 용도로 사용했는데, 더 효율적으로 학습할 수 있는 도구로 사용하면 좋지 않을까? 해서 이런저런 고도화를 해 보고 있다.왜 하는가?나는 배운 내용은 무조건 글로 정리하는 편이다. 머릿속에 얽혀 있는 지식을 내 언어로 한 번 정제해야 더 기억에도 오래 남고, 나중에 복기해서 다시 뇌에 담기에도 좋기 때문이다.처음에는 이 목적으로 블로그를 썼었는데, 블로그를 운영하다 보니 단순히 새로 알게 된 지식을 블로그에 포스팅하는 것이 과연 영양가가 있는가? 하는 고민이 들었다. 지식의 습득은 공식 문서나 도서가 더 효율적이고, 나 또한 ..
이렇게 또 한 해가 흘렀다! 작년인 2024년에는 하반기에 번아웃이 찾아옴과 동시에 회고글에 개인적인 이야기가 너무 많이 담겨서 회고글을 블로그에 올리지는 못했었는데, 올해부터는 다시 회고글을 블로그에도 업로드 해보려고 한다. 2025년, 어떤 목표가 있었는가?나는 매년 KPT 회고를 하고 있기에, 작년과 재작년 회고의 Try 부분에 있었던 것들을 얼마나 이뤘는가를 먼저 점검해보고자 한다.도전을 두려워하지 말기 (달성)나는 굉장히 신중하고, 안정을 추구하는 타입의 사람이다. 항상 스스로를 ‘돌다리 100번 두드려보고 건너는 사람’이라고 표현하는데, 그 또한 이 이유에서이다.물론 나의 이러한 성향 덕분에 득을 본 것도 많았지만, 몇몇 영역에 있어서는 이러한 나의 신중한 성격이 내 시야를 좁게 만들기도 한..
추석맞이 1인 개발정말 긴 추석연휴였다. 이 긴 시간을 어떻게 보낼까 하다가, 오랜만에 1인 개발로 원하는 서비스를 하나 뚝딱 만들어보았다.이번 서비스는 정말 나를 위해 탄생한 서비스다. 나는 출퇴근길에 대중교통에서 휴대폰으로 기술블로그/뉴스 등을 읽으며 시간을 보내는 편인데, 항상 아쉬움을 느끼는 포인트가 있었다.읽고 배운 내용을 금방 잊어버림잊어버리지 않으려면 간단하게라도 기록을 남겨야 하는데, 모바일 환경으로 읽다보니 읽은 내용을 체계적으로 기록 & 관리하기 어려움 (모바일 노션은 UI가 너무 불편)그래서 어떻게 하면 출퇴근길에 가볍게 읽은 글들의 내용을 잘 기록하고, 관리하고, 복기할 수 있을까 고민하다가 이에 최적화된 서비스를 만들어보았다.길다면 긴 연휴였지만 하나의 서비스를 처음부터 끝까지 완..
이 글은 JWT에 대한 개념을 다루지 않습니다. JWT의 개념을 숙지한 다음 해당 글을 읽으시면 더 많은 도움을 받을 수 있습니다. JWT 암호화 알고리즘, 왜 중요할까?JWT는 인증/인가 시스템에서 널리 사용되는 토큰 포맷이다.이러한 JWT를 발급하고 인증하는 과정에서, 암호화 알고리즘을 선정하는 것은 아래 요소들에 큰 영향을 미친다.보안성: 키 유출 시 얼마나 위험한가? 얼마나 오래 안전한가?성능: 토큰의 발급 및 검증 속도는 얼마나 되는가?확장성: 다수의 서비스가 검증에 참여할 수 있는가? 새로운 서비스가 검증을 수행하고자 할 때의 난이도는 어떠한가?운영 난이도: 구현이 쉬운가? 디버깅 및 문제 추적이 쉬운가? 키 관리와 배포가 얼마나 쉬운가?그리하여 이번 글에서는 JWT를 다룰 때 주로 사용되는 ..