본문 바로가기
반응형

Spring/Spring Security4

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) ② ① 편에서는 Session Clustering을 위해 Session 저장소를 Spring 내부가 아닌 Key-Value 형태의 DB인 Redis에 저장하고 확인해봤습니다. 또한 ① 편에서 만든 스프링은 로컬 환경에 초점을 두고 있었습니다. ② 편에서는 개발 서버에 배포할 수 있도록 ① 편 스프링에 몇 가지 코드를 추가하도록 하겠습니다. 그럼 먼저 포스트에 사용되는 기술들의 버전 정보에 대해 나열하도록 하겠습니다. ① 편의 로컬 개발 환경과 배포할 Docker 환경의 다른 부분이 있으니 주의하세요. 개발 도구: IntellJ Ultimate Spring Boot: 2.5.9 Gradle Docker CentOS 7 => Docker Container Nginx => CentOS 7에 설치 MySQL 5.7.. 2022. 2. 17.
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.
반응형