CSRF: 클릭 한 번에 계좌가 텅텅
나는 그냥 재미있어 보이는 링크를 눌렀을 뿐인데, 내 이름으로 송금이 되었습니다. 로그인된 상태를 악용하는 교묘한 공격, CSRF를 이해하기까지의 여정.

개발과 기술에 대한 이야기를 기록합니다.
나는 그냥 재미있어 보이는 링크를 눌렀을 뿐인데, 내 이름으로 송금이 되었습니다. 로그인된 상태를 악용하는 교묘한 공격, CSRF를 이해하기까지의 여정.

회원가입 폼을 없애고 '구글로 로그인' 버튼을 달면 쉬울 줄 알았습니다. 하지만 Redirect URI 에러, State 파라미터, HTTPS 문제 등 OAuth 2.0의 복잡함에 압도당했죠. OAuth의 4단계 '댄스'와 실제적인 해결책(NextAuth.js), 그리고 모바일 앱에서의 딥링크 처리까지 깊이 있게 다룹니다.

사용자가 늘어나서 서버를 증설했는데, 로그인이 자꾸 풀린다는 항의가 들어왔습니다. 세션(Session) 인증의 한계와 토큰(Token, JWT) 인증으로의 전환, 그리고 Refresh Token 도입기입니다.

RDBMS와 NoSQL의 아키텍처(B-Tree vs LSM), CAP 이론, ACID 트랜잭션 격리 수준, 그리고 샤딩 전략과 NewSQL까지.

로그인과 권한 체크를 혼동해서 발생했던 실제 보안 사고 사례와, 이를 '공항 보안 검색'과 '호텔 카드키'에 비유하여 명쾌하게 정리했습니다. JWT 구조부터 OAuth 2.0, 그리고 MSA 환경에서의 인증 전략까지.

데이터베이스 복제를 통한 고가용성과 읽기 성능 향상을 경험을 통해 이해한 과정

데이터베이스 샤딩의 개념과 대규모 트래픽 처리를 경험을 통해 이해한 과정

기능 하나를 추가했을 뿐인데, DB CPU가 100%를 찍는 상황이 있다. 원인은 ORM의 '지연 로딩'이 만든 N+1 문제다. 1000번의 쿼리를 1번으로 줄인 최적화 과정과, 주니어 개발자가 흔히 저지르는 ORM 실수들을 정리해본다.

파일 복사(Copy)와 링크(Link)의 차이를 몰라 디스크 용량을 2배로 낭비했던 흑역사. Inode의 개념부터 `rm` 명령어의 비밀, 그리고 npm과 pnpm이 링크를 활용하는 방법까지.

데이터베이스 커넥션 풀의 개념과 성능 최적화를 경험을 통해 이해한 과정

하이퍼바이저 Type 1, 2의 차이부터 컨테이너 격리 기술(Namespace), AWS Firecracker 마이크로 VM, 그리고 비용 최적화 전략까지.

CPU는 하나인데 프로그램은 수십 개 실행됩니다. 운영체제가 0.01초 단위로 프로세스를 교체하며 '동시 실행'의 환상을 만드는 마술. 선점형 vs 비선점형, 기아 현상(Starvation), 그리고 현대적 해법인 MLFQ를 파헤칩니다.

데이터베이스 트랜잭션의 개념과 ACID 특성을 경험을 통해 이해한 과정

엄청난 데이터를 아주 적은 메모리로 검사하는 방법. 100% 정확도를 포기하고 99.9%의 효율을 얻는 확률적 자료구조의 세계. 비트코인 지갑과 스팸 필터는 왜 이것을 쓸까요?

컨테이너 기술의 바이블. 리눅스 커널 심층 분석(Namespaces, Cgroups)부터 프로덕션 배포를 위한 보안 하드닝, 트러블슈팅, 그리고 용어 사전까지.

DB 설계의 기초. 데이터를 쪼개고 쪼개서 이상 현상(Anomaly)을 방지하는 과정. 제1, 2, 3 정규형을 쉽게 설명합니다.

문자열 검색에 특화된 트리 자료구조. 접두사 트리(Prefix Tree)라고도 불리는 Trie의 구조와 삽입/검색 과정, 그리고 메모리 효율을 극대화한 Radix Tree까지 다뤄봤습니다.

로딩이 3초 넘으면 사용자의 53%가 이탈합니다. 구글이 중요하게 보는 3가지 지표(LCP, INP, CLS)와 최적화 기법.

시각 장애인, 마우스가 고장 난 사용자, 그리고 미래의 나를 위한 배려. `alt` 태그 하나가 만드는 큰 차이.

클래스 이름 짓기 지치셨나요? HTML 안에 CSS를 직접 쓰는 기괴한 방식이 왜 전 세계 프론트엔드 표준이 되었는지 파헤쳐봤습니다.
