728x90
로그 파이프라인 구축 도구 정하기로그 수집 도구`Log Stash` : 많은 레퍼런스와 안정성 보장, JVM 기반으로 리소스 사용량 높음`Fluentd` : 리소스 사용량 높은 편`Vector` : `Log` 뿐 아니라 `Metrics`, `Tracing` 지원`Promtail` : `Loki` 와 통합이 잘 되지만, `Log` 만 지원하고 단순 처리만 가능따라서 `Vector` 로그 저장 도구`ES` : 리소스 사용량을 감당할 수 없음`Loki` : 기존 `Grafana` 와 통합 쉬움따라서 `Loki` 이렇게 프로젝트 팀원 분이 결정해 주셨다. 👍👍(나도 앞으로 기술을 선택할 때, 현재 상황에 맞춰서 장단점을 보고 골라야겠다고 다짐했다.) 그럼 이제 `Loki` 로 로그를 저장하고, `Vector..
전체 아키텍처 개요그리고 이 시스템은 다음과 같은 특징을 가진다.JWT 기반 토큰 인증 (`Access Token` + `Refresh Token`)일반 로그인과 소셜 로그인 통합 지원게스트 사용자 지원 및 회원 전환 시 데이터 이관쿠키 기반 토큰 저장으로 XSS 공격 방어Redis 를 활용한 Refresh Token 관리핵심 컴포넌트 구조1. PrincipalMember - 통합 사용자 정보 객체public class PrincipalMember implements UserDetails, OAuth2User { private final Member member; private final Map attributes; // 일반 로그인용 생성자 public PrincipalMe..
나만의 메모장 프로젝트 - 트러블슈팅로그인 vs 게스트 세션 관리문제로그인한 사용자와 로그인하지 않은 사용자를 모두 지원해야 하는 게 목표였는데,세션에서 사용자 정보를 꺼내는 방식을 고민하게 되었다.해결로그인 시: session.setAttribute("loginMemberId", loginMember.getId());게스트 진입 시: session.setAttribute("guestId", UUID.randomUUID().toString());메모 저장 시: 두 값 중 존재하는 값을 기준으로 writerId 식별 후 저장 유효성 검사 메시지 미출력문제@NotBlank 등 유효성 검사가 동작했지만, 타임리프에서 메시지가 보이지 않았다.해결@GetMapping 에서도 @ModelAttribute 를 사용..