인증/인가 설계부터 배포 자동화까지 한 사이클을 직접 구축해 본 백엔드 엔지니어입니다.
Keycloak · Vault · K3s로 인증 플랫폼을 만들고, 쿼리 튜닝으로 API 응답 시간을 231배 개선한 경험이 있습니다.
주력: Java / Spring Boot / Spring Security — 인증 설계, API 개발, 쿼리 최적화
확장: K3s / Argo CD / Vault — GitOps 배포 자동화, 시크릿 관리
인증 구현에서 끝내지 않고, 인증 위임 → 배포 자동화 → 시크릿 관리까지 한 사이클을 직접 경험하기 위해 시작했습니다.
인증 서버
- 로그인을 직접 구현하지 않고 Keycloak에 인증을 위임하는 구조로 설계 (Spring Security + OAuth2)
- 여러 소셜 로그인 분기 코드를 Keycloak 단일 연동으로 통합 → 인증 관련 코드 50% 이상 감소 (provider별 파싱 클래스 제거 기준)
- "어디까지가 Spring Security 책임이고, 어디부터가 Keycloak 책임인지" 경계를 명확히 분리
운영 인프라
- 코드 push만 하면 자동 배포되는 GitOps 파이프라인 구축 → 배포 과정을 수동 5단계 → 자동 1단계로 축소 (변경 이력)
- 앱 비밀번호(DB, API 키 등)를 코드에 넣지 않고 Vault가 실행 시점에 자동 주입하는 구조로 전환 → Git에 시크릿을 두지 않는 구조 확보
- Vault를 2대로 분리하여 "잠금 해제용"과 "비밀번호 저장용" 보안 경계를 나눔
- 반복되는 수동 세팅을 스크립트화하여 초기 구축 30분 → 자동 5분으로 단축 (runbook + bootstrap 스크립트 기준)
- 아키텍처 변경마다 "이전 구조 → 문제 → 개선"을 README에 누적 기록 (현재 10+ cycle)
Spring Boot Keycloak K3s Argo CD Vault GitHub Actions Kustomize
개인 프로젝트 · 1인 · 2025.03 ~ 2025.04 · 쿼리 분석/최적화/검증 담당
feed-postgresql-query-tuning
피드 서비스의 목록 조회가 1.77초로 느린 원인을 분석하고 단계적으로 개선한 프로젝트입니다.
- 원인 분석: 4-table LEFT JOIN으로 인한 데이터 폭증 + 인덱스 미사용 + 외부 정렬 발생 확인 (EXPLAIN ANALYZE)
- 1차 개선: 불필요한 JOIN을 EXISTS 서브쿼리로 교체 + 쿼리 분리 → 1.77초 → 0.216초 (8배)
- 2차 개선: 복합 인덱스 + 커버링 인덱스로 디스크 접근 최소화 → 0.216초 → 7.66ms (28배)
- 캐시 전략: Redis 2단계 캐시 (공개 피드만 캐시) 도입 → 캐시 히트율 90%+ 달성
- 부하 검증: Locust로 동시 1,000명 부하 테스트 수행 → 900~1,100 RPS 달성
PostgreSQL Redis Spring Boot JPA Locust HikariCP


