본문 바로가기
반응형

Spring20

나를 위한 Thymeleaf 특징 정리 현재 업무에서 Vue.js, React와 같은 자바스크립트 라이브러리를 사용하여 웹을 구성하는 CSR 방식이 아닌 Thymeleaf를 사용한 SSR 방식의 웹 애플리케이션을 개발중입니다. Thymeleaf를 사용해보면 확실히 jsp 보다는 spring과 찰떡궁합인 것을 느끼게 되고 편리한 기능이 많아서 좋은 거 같습니다. 다만 기능이 많기에 모든 기능과 attribute를 외우는 것은 힘들기 때문에 (feat. 기억보단 기록을) 사용하면서 유용했던 기능이나, 근본적인 Thymeleaf의 특징을 앞으로 차차 정리해볼까 합니다. 이번 포스트에서는 영한님의 Spring MVC 2편에서 Thymeleaf의 특징을 잘 정리해주셔서 MVC 2편 강의를 토대로 제 입맛에 맞게 다시 정리해보려고 합니다. 특징 - 서버.. 2022. 2. 25.
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.
Spring Data JPA - 상속(Inheritance) + 다대다(N:M) 관계 엔티티를 설계하면서 Parent 클래스를 상속 받은 Child 클래스들 간의 다대다(N:M) 관계를 맺어야 하는 요구사항이 있어서 어떻게 해결했는지 정리해보려고 합니다. 어떤 상황인지 이해하실 수 있도록 예시를 들겠습니다. - 개발자 A, B, C, D가 있습니다. - 개발자는 회사에 재직 중이며, [대기업은 삼성전자, SK, etc..], [IT 서비스업은 네이버, 카카오, etc..]가 있습니다. - 서로 다른 업종을 가진 기업은 서로 협약을 맺을 수 있습니다. (ex. 삼성전자 네이버) - 같은 업종끼리의 협약은 고려하지 않도록 하겠습니다. 위와 같은 유사한 예시의 요구사항을 토대로 프로젝트를 진행하고 있었는데 이 문제를 어떻게 해결해야 할 까?를 생각했을 때 다음과 같이 엔티티를 설계 할 필요가 .. 2022. 1. 9.
반응형