API 보안 실제: Rate Limiting, API Key 관리, IP 제한
공개 API를 운영하다 보면 예상치 못한 대량 요청에 시달릴 수 있다. Rate Limiting과 API Key 관리로 API를 보호하는 방법을 정리했다.

개발과 기술에 대한 이야기를 기록합니다.
공개 API를 운영하다 보면 예상치 못한 대량 요청에 시달릴 수 있다. Rate Limiting과 API Key 관리로 API를 보호하는 방법을 정리했다.

admin/user 두 역할로 시작했는데, 요구사항이 복잡해지면서 RBAC만으로 부족해졌다. ABAC까지 고려한 권한 설계를 정리했다.

서비스가 3개로 늘어나면서 각각 로그인을 구현하는 게 지옥이었다. SSO로 한 번의 인증으로 모든 서비스에 접근하게 만든 이야기.

비밀번호 찾기가 CS의 절반을 차지했는데, Passkey를 도입하니 비밀번호 자체가 필요 없어졌다. 근데 구현이 생각보다 복잡했다.

SQLite는 모바일에서만 쓰는 줄 알았는데, Turso와 Litestream 덕분에 프로덕션 웹 서비스에서도 진지하게 쓸 수 있게 됐다.

운영 중인 테이블에 컬럼을 추가했다가 서비스가 5분간 멈췄다. 무중단으로 스키마를 변경하는 전략을 배운 이야기.

검색 기능이 필요할 때마다 Elasticsearch를 써야 하나 고민했는데, PostgreSQL의 Full-Text Search만으로도 충분한 경우가 많았다.

단순 SELECT만 쓰다가 JSONB, CTE, Window Function을 알게 되니 SQL 한 줄로 해결되는 것들이 급격히 늘었다.

Redis를 단순 캐시로만 쓰고 있었는데, 세션 관리, 실시간 랭킹, Pub/Sub, Rate Limiting까지 가능한 만능 도구였다.

혼자 개발하면 코드 리뷰를 받을 수 없다고 생각했는데, AI 코드 리뷰 도구가 그 역할을 해줬다. PR마다 자동으로 리뷰받는 세팅을 정리했다.

LLM API를 처음 연동했을 때 토큰 비용 폭탄, 응답 지연, 할루시네이션에 당황했다. 실제로 배운 LLM API 활용법을 정리했다.

AI가 파일을 읽고, DB를 조회하고, API를 호출할 수 있게 해주는 MCP. USB처럼 AI와 도구를 표준화된 방식으로 연결하는 프로토콜을 정리했다.

ChatGPT는 질문에 답하지만, AI Agent는 스스로 계획하고 도구를 사용해 작업을 완료한다. 이 차이가 왜 중요한지 정리했다.

AI에게 '로그인 만들어줘'라고 했더니 엉망인 코드가 나왔다. 프롬프트를 구조화하니 결과물이 완전히 달라졌다.

세 가지 AI 코딩 도구를 실제로 써보고 비교했다. 자동완성, 코드 생성, 리팩토링 각각 어디가 강한지 솔직한 후기.

테스트 유형별 차이와 활용

PWA의 특징과 구현 방법

오픈 소스 기여의 방법과 가치를 경험을 통해 이해한 과정

멱등성의 개념과 구현 방법을 경험을 통해 이해한 과정

내 서버가 해킹당하지 않는 이유. 포트와 IP를 검사하는 '패킷 필터링'부터 AWS Security Group까지, 방화벽의 진화 과정.
