Redis로 Session 관리하기 사이드 프로젝트에서 JWT를 쿠키에 저장하는 방식으로 인가를 구현하게 되었습니다. 처음에 각각 명확한 장/단점이 존재하는 쿠키 방식과 세션 방식 중 고민을 많이 했었는데, JWT 정보가 클라이언트 측에 저장되다 보니 쿠키에 저장된 JWT 정보만 탈취하면 너무나도 쉽게 계정을 도용해서 접속할 수 있을 것 같다는 생각이 들었습니다. 사용자가 얼마나 될지 모르겠지만, 그래도 사용자에게 로그인에 대한 찝찝함을 제공하지 않으려면 그래도 안전한 세션 방식을 활용하는 것이 좋을 것 같아서 세션 방식으로 다시 적용하게 되었습니다. (찾다 보니 쿠키, 세션의 장점을 모두 활용하는 방식으로 함께 적용한다고도 합니다.) . 세션 저장소는 in-memory data store(redis)를..
2023년 회고 늦은 회고로.. 글은 올해(2024년도) 기준으로 작성되었다. Intro 2023년에도 잔디를 구멍 없이 심는 목표로 달려왔지만.. 아쉽게도 몇 군데 구멍이 보여서 아쉽다. 그래도 2023년을 열심히 달려온 나를 위해 박수로 시작을..👏🏼 2023년도는 정말 다사다난했다.. 기쁘고 감사한 시간이 많았던 만큼 힘들고 슬픈 시간도 있었지만, 돌아보면 결국 하나님께 감사드릴 일들뿐이다. 크고 작은 사건을 통해 작고 초라했던 나를 더 나은 사람으로 만들어 주시고, 주변에 좋은 사람들을 붙여 주시고, 부족한 것들을 채워주시고.. 돌아보면 모든 것이 감사한 한 해였다. 회사 프로젝트 2023년도에 기억에 남는 큼지막한(?) 프로젝트는 OOAh luxe, AppleCare+ 후 가입 서비스, DB 탈..
Spring WebClient Spring WebClient 먼저 알아보고, WebClient vs. RestTemplate 를 간략하게 비교해 보자. . Spring 5 WebClient Baeldung - Spring 5 WebClient 내용 정리 ✏️ . Web Client: 웹 요청을 수행하기 위한 주요 진입점을 나타내는 인터페이스 Spring Web Reactive 모듈의 일부로 개발되었으며, 기존의 RestTemplate 대체 HTTP/1.1 프로토콜에서 동작하는 반응형 non-blocking solution non-blocking 클라이언트이고 spring-webflux 라이브러리에 속하지만 동기/비동기 작업을 모두 지원 . Dependencies spring-boot-starter-web..
Spring MVC Custom Validation 일반적으로, 사용자 입력 검증이 필요할 경우 Spring MVC는 미리 정의된 검증자를 제공한다. 하지만, 좀 더 특정한 유형의 입력을 검증해야 할 경우 사용자 정의 검증 로직을 자체적으로 생성할 수 있다. . Dependency Spring Boot를 사용한다면 spring-boot-starter-web 라이브러리에서 hibernate-validator을 의존하고 있으므로 추가할 필요는 없다. org.hibernate:hibernate-validator . Custom Validation 들어가기 전에 검증 로직 구현을 위해 필요한 ConstraintValidator 인터페이스를 살짝 확인해 보자. 주어진 객체 유형 T에 대하여 주어진 제약 조건 A를..
SocketUtils.findAvailableTcpPort() BindException: 주소가 이미 사용 중입니다 Jenkins Build periodically Schedule 기능을 활용하여 스프링 배치를 주기적으로 빌드해 주고 있다. . 그러던 어느 날..🌅 Jenkins 에 새로운 배치 아이템이 추가될수록 아래 에러가 종종 발생하기 시작했다. org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server ... Caused by: java.net.BindException: 주소가 이미 사용 중입니다 . 로그를 보아하니.. 포트는 랜덤으로 할당되고 있는 것 같아서 관련 코드를 확인해 보았다...
Nginx 무중단 배포 System Architecture . Install Nginx # 도커 이미지 가져오기 $ docker pull nginx # nginx 서버 기동 $ docker run -itd -p 80:80 -v /home/ec2-user/app/nginx:/usr/share/nginx/conf --restart=always --name nginx -u root nginx # 가동 서비스 확인 $ docker ps -itd i: t 옵션과 같이 사용. 표준입력 활성화. 컨테이너와 연결되어있지 않더라도 표준입력 유지 t: i 옵션과 같이 사용. TTY 모드로 사용하며 bash 사용을 위해 반드시 필요 d: 컨테이너를 백그라운드로 실행. 실행시킨 뒤 docker ps 명령어로 컨테이너 실행 확..
Docker & Jenkins 배포 자동화 구축 System Architecture . Install Docker # Install $ sudo yum update -y # 인스턴스에 있는 패키지 업데이트 $ sudo yum install -y docker # docker 설치 $ docker -v # 버전 확인 # Setting $ sudo systemctl enable docker.service # 재부팅 시 docker 자동 실행 설정 # Start $ sudo systemctl start docker.service # docker 서비스 실행 $ systemctl status docker.service # docker 서비스 상태 확인 . Install Jenkins docker search, p..
AWS EC2 & RDS Free Tier 구축 System Architecture . AWS EC2 & RDS 구축 AWS EC2 & RDS 구축 방법은 향로님의 블로그 가 참고하기 좋은 것 같다. 2023년 10월 기준 UI 가 블로그 이미지와 약간 다르긴 하지만 기본적인 설정은 동일하다. . 그 밖에도 자세한 구축 방법은 많은 블로그에서 다루고 있어서 구축 과정에서 참고하면 좋을 내용들을 다뤄보려고 한다. . AWS 프리티어 무료 사용량 EC2(Amazon Elastic Compute Cloud) : 클라우드에서 제공되는 크기 조정 가능한 컴퓨팅 월별 750시간 무료 (EC2 인스턴스 하나를 풀로 돌려도 남는 시간) EC2 인스턴스 하나당 750시간 가동이 기준이므로, EC2 인스턴스 두 개를 돌린..