반응형 Spring Security5 Spring Security - Nginx LB + 세션 클러스터링(Session Clustering) ③ ③ 편을 정리하기 앞서 ①, ② 편에 대해서 정리를 하고 진행하도록 하겠습니다. 1. ①, ② 편의 목적은 Nginx의 LB 기능을 이용하여 무중단 배포를 하려고 함입니다. 1-1. ① 편에서는 Session Clustering을 위해 스프링의 Session을 위부 Redis로 이관하였습니다. 1-2. ② 편에서는 로컬에서 개발한 ① 편의 스프링을 개발 서버의 스펙에 맞게 수정과 추가를 하였습니다. 2. 그럼 여기서 무중단 배포를 하려고 하는데 왜 갑자기 Session Clustering이지?라고 생각할 수 있습니다. 혹은 그냥 Nginx conf 파일 설정해서 port 다르게, LB 사용해서 애플리케이션 2개 띄우면 되는 거 아니야?라고 생각할 수도 있습니다. 3. 그러나 제가 프로젝트에서 사용한 인증.. 2022. 2. 21. Spring Security - Nginx LB + 세션 클러스터링(Session Clustering) ① 애플리케이션을 배포했을 때 비정상적으로 종료될 수 있기 때문에 사수님께서 Nginx를 사용하여 무중단 배포를 구축해보라고 하셨었습니다. 그래서 Nginx의 LB(Load Balancing) 기능을 사용하여 위 "구성도(이때 당시는 Redis가 없음)"처럼 배포하였습니다. 개발 중이던 Spring 애플리케이션은 Spring Security의 Form 인증(Session/Cookie) 방식을 사용하고 있었습니다. 별도로 Session을 관리하는 저장소(Redis) 없이 2개의 Spring 애플리케이션을 배포하고 테스트해본 결과 8080에서 로그인하여 여러 번 요청(Nginx에 weight를 설정했습니다.)을 보내서 8081 포트의 Spring으로 요청했을 때 8081 기준으로는 인증되지 않은 요청이기 때문에.. 2022. 2. 9. Spring Security - Form 인증 로그인 SSAFY(삼성 청년 SW 아카데미)에서 진행한 프로젝트에서 Spring Security를 사용하여 JWT + OAuth 2.0 방식을 사용하여 SNS 로그인과 토큰 인증을 처리한 경험이 있습니다. 1개의 프로젝트를 약 6~7주 진행했었는데, 시간 내에 Spring Security를 완벽하게 이해하고 넘어가기 힘들었기 때문에 완성된 코드를 약간의 수정을 하는 정도로 사용하였습니다. 그럼에도 SSAFY에서 진행한 프로젝트에서 Spring Security를 사용하여 인증/인가를 처리하였기에 그 경험을 토대로 재직 중인 회사의 서비스의 인증/인가를 Spring Security로 사용하였습니다. 회사에 프론트엔드 개발자가 없었고, 없어도 Vue.js를 사용한 경험이 있기 때문에 풀스택 개발을 진행해도 되지만, .. 2022. 2. 6. Spring Data JPA - Self-Reference Spring Security를 사용한 프로젝트에서 권한에 계층을 두도록 설계했습니다. 계층을 부여하는 Entity는 Self Reference 하였고, 제가 만든 클래스에 ApplicationRunner 인터페이스를 상속하여 애플리케이션이 구동될 때 DB에서 값[권한 계층 정보]을 읽어 세팅하도록 하였습니다. 근데 애플리케이션이 구동되는 시점에 권한 계층 관련한 쿼리가 여러 번 나가는 것을 확인하여 튜닝했고 거기서 배운 것들을 정리해보도록 하겠습니다. [Spring Security에 대한 내용은 제외하고, JPA에서 Entity가 자신을 참조하는 Self-Reference, @JoinColumn의 속성인 referencedColumName을 제대로 숙지하지 못하여 생긴 삽질] 프로젝트 버전 개발 도구: .. 2021. 12. 20. Spring Data JPA - Auditing 오늘은 Spring Data JPA에서 제공하는 유용한 기능인 Auditing에 대해서 정리해보려고 합니다. 백엔드 그리고 DB 쪽 개발을 하다 보면 테이블에 공통적으로 들어가는 Column이 있습니다. 등록한 날짜 마지막으로 수정한 날짜 등록한 사람 마지막으로 수정한 사람 그래서 Spring Data JPA에서는 테이블에 들어가야 하는 위와 같은 필수적인 Column을 쉽게 사용할 수 있도록 Auditing이라는 기능을 제공합니다. [순수한 JPA를 사용했을 때의 방법]과 [Spring Data JPA에서 제공하는 방법] 2가지로 나누어서 정리하겠습니다. 프로젝트 버전 개발 도구: IntelliJ Ultimate Spring Boot: 2.5.7 Java 11 h2 Database Spring Data.. 2021. 11. 28. 이전 1 다음 반응형