[실시간 대용량 서비스] 모니터링의 다음 단계: 로그 기반 관측 설계
·
Spring/Spring 실습
Prometheus와 Grafana를 통해 요청 수, 에러율, 응답 시간, JVM 상태 등 주요 지표를 실시간으로 확인할 수 있게 되었다.이를 통해 시스템의 이상 징후를 빠르게 감지할 수 있는 기틀은 마련되었다. 실제 운영 관점에서 한가지를 더 챙겨보아야 할 점이 있었는데어떤 API에서 에러를 발생 시켰는가?특정 사용자의 요청 흐름은 문제가 없는가?처리 시간이 비정상적으로 길었던 요청은 무엇이 있는가?동일한 예외가 언제부터 반복되고 있는가?Metrics는 무엇이 비정상적인가를 알려주지만, 왜 그런일이 발생했는가 까지의 설명은 해주지 않았다.이 지점에서 로그 기반 관측 환경 즉, ELK의 도입 필요성을 느끼게 되었다. ✓ Metrics와 Logs의 역할 구분Observability는 일반적으로 다음 세 가..
[실시간 대용량 서비스] Prometheus 모니터링 시스템 실제 적용기
·
Spring/Spring 실습
개념 정리와 설계 의도를 담았던 이전 포스팅에 이어서 실제 구현을 진행하고 나서의 내용들을 정리해보고자 한다. [실시간 대용량 서비스] 모니터링 시스템 구축은 왜 필요한가 ?프로젝트의 구현과정을 어느정도 경험하면서 모니터링 시스템은 왜 필요한지에 대한 궁금증이 생겼다. 모니터링 시스템은 종류도 많고 담당하는 역할도 정말 다양한데 그 중에서도 나는 이번stark77.tistory.com이미 CI/CD 기반 배포 환경이 구성되어 있었기 때문에,모니터링 시스템 또한 Docker 기반 구조 안에서 자연스럽게 통합하는 방향으로 접근했다. 그리고 프로젝트의 설정을 진행했는데, 가장 먼저 필요했던 건 의존성 추가를 통해 정상적으로 모니터링이 동작할 수 있도록 하는 부분이었다. implementation 'org.s..
[실시간 대용량 서비스] 모니터링 시스템 구축은 왜 필요한가 ?
·
Spring/Spring 실습
프로젝트의 구현과정을 어느정도 경험하면서 모니터링 시스템은 왜 필요한지에 대한 궁금증이 생겼다. 모니터링 시스템은 종류도 많고 담당하는 역할도 정말 다양한데 그 중에서도 나는 이번 프로젝트에서 Grafana + Prometheus를 활용한 모니터링 시스템 구축을 진행하고자 한다. 📝 모니터링 시스템의 종류와 비교 정리위에서 설명했듯 모니터링 시스템의 종류는 아래와 같이 다양했다.구분대표 툴역할장점단점적합한 환경Metrics 수집Prometheus메트릭 수집/ 저장Kubernetes 표준, 강력한 쿼리(PromQL), 오픈소스초기 세팅 필요컨테이너 /클라우드 환경시각화Grafana대시보드/알림다양한 데이터소스, Alert 기능별도 구성 필요거의 모든 환경로그 분석ELK Stack로그 저장/검색강력한 ..
[실시간 대용량 서비스] JWT 인증에서 블랙리스트로도 충분한데, 왜 화이트리스트를 선택했을까?
·
Spring/Spring 실습
지난 JWT 인증/인가 방식에 대한 설계를 정리한 이후, 인증인가에 대한 대화를 주고받는 과정에서 다음과 같은 질문을 받았다. “블랙리스트와 화이트리스트의 차이가 정확히 무엇인가요?”“화이트리스트에서 하려는 제어를 블랙리스트로는 구현할 수 없나요?” 이미 구현은 끝났지만, 이 질문에 명확히 답하기 위해서는 왜 그런 선택을 했는지를 개념적으로 다시 정리할 필요가 있다고 느꼈다.🤔 블랙리스트란?블랙리스트란 다시 말하자면 이미 문제가 된 토큰 목록이다.JWT 인증 구조에서 블랙리스트는 보통 다음을 의미한다로그아웃된 AccessToken탈취가 의심되어 강제로 만료한 토큰특정 정책에 의해 더 이상 유효하지 않은 토큰정리하면, 원래는 유효했지만 지금은 사용하면 안되는 토큰을 따로 기록해두는 방식이다.💡 블랙리스..
[실시간 대용량 서비스] AccessToken / RefreshToken 분리 설계와 Redis 화이트리스트
·
Spring/Spring 실습
🤔 왜 인증 구조에 대해 고민했는가이번 최종 프로젝트는 온라인 교육 플랫폼을 목표로 한 백엔드 서버 구현이었다.기능 자체는 회원가입, 로그인, 강의 수강, 주문 등 비교적 익숙한 영역이었지만 인증/인가 파트를 제대로 맡아서 해본 적이 없었다는 점과 프로젝트 초기 설계 단계부터 인증을 어떻게 가져갈 것인가는 단순히 구현하는 것으로 그칠 수 있는 문제가 아니었다. 설계 및 여러 교육 플랫폼들을 찾아보며 우리 프로젝트에 필요한 요구사항은 아래와 같았다. 다중 디바이스 로그인 가능 (PC / Mobile / Tablet 등...) 관리자 / 강사 / 수강생 역할 분리향후 계정 공유 방지, 동시 로그인 제한 정책 확장 가능성API 서버의 수평 확장 고려이를 통해 세션 기반 인증보다는 Stateless 한 구조가..
[실시간 대용량 서비스] 최종 프로젝트 발제
·
Spring/Spring 실습
📄 프로젝트 개요본 프로젝트는 자유 주제로 진행된 최종 프로젝트로, 온라인 교육 플랫폼을 목표로 한 백엔드 서버 구현에 초점을 두었습니다. JWT 기반 인증·인가 구조를 중심으로 사용자, 강의, 주문, 관리자 기능을 확장 가능한 아키텍처로 설계하고 구현했으며,단순 기능 구현보다는 설계 의도와 구조적 일관성을 중요하게 고려했습니다. 🎯 프로젝트 목표JWT 기반 stateless 인증/인가 구조 설계 및 구현역할(Role) 기반 접근 제어 정책 명확화 (STUDENT / LECTURER / ADMIN)도메인 규칙을 코드로 표현하는 도메인 중심 설계리뷰 및 확장을 고려한 일관된 아키텍처 구조 유지기능 추가 시 기존 구졸르 해치지 않는 설계 경험🧱 아키텍처 개요본 프로젝트는 4-Layer Architect..