Backend Development/Spring boot (38) 썸네일형 리스트형 Tomcat redis session cluster 설정 웹 개발 시 이중화 등의 HA 구성을 할때나 다른 서버와의 인증 정보를 공유 하고자 할 때는 Tomcat 간에 session cluster 기능을 통해 세션 동기화를 할 수 있다. 이때 공용 세션 저장소로 redis 메모리 DB를 활용할 수 있고 아래 리포지터리에서 제공하는 라이브러를 가지고 구현을 할 수 있다. https://github.com/ran-jit/tomcat-cluster-redis-session-manager/wiki 현재 사용하는 Tomcat이 버전이 9.0.65 대로 위 tomcat-cluster-redis-session 라이브러리 중 tomcat-cluster-redis-session-manager-2.0.4 버전을 사용해 보기로 했다. 다운로드를 하고 압축을 풀면 아래 4가지 라이.. [Backend] Konga api gateway admin 활용 이전 포스트에서는 Kong api gateway opensouce버전 및 konga admin web 서버를 설치하는것을 알아봤다. 이번 포스트에서는 실제로 konga admin에서 service 및 route를 설정해보고 postman 으로 api gateway를 거쳐 실제 backend까지 잘 도달하는지 확인해 보고자 한다. 우선 localhost:8080으로 backend api 서버를 띄어두고 /api/v1/users란 api 를 테스트 api로 삼았다. 아래는 우선 kong에서 최종적으로 도달할 backend 주소를 입력하고 service url을 등록한다. 적절한 name을 입력하고 host에 실제 backend 주소, port에 실제 backend service port 그리고 service.. [Backend] Kong Api Gateway 설치 Backend 시스템을 개발시 에 많은 API를 만들게 되나 API 관련해서 체계적으로 Access control 관리나 모니터링, Flow control등을 구현하려면 또다른 노력이 든다. 이럴때 앞단에 API Gateway를 설치하면 손쉽게 위 고민들을 해결 할수 있다. 많은 API Gateway를 설치할 수 있지만 Opensource 로도 제공하고 도커로 쉽게 설치할 수 있는 Kong gateway를 설치해 보고자 한다. Kong Api Gateway 공식 페이지는 다음과 같다. https://konghq.com 손쉽게 인스톨이 가능한 Docker 인스톨에 대한 설명은 다음 페이지에 소개되어 있다. https://docs.konghq.com/gateway/latest/install/docker ht.. [Spring boot] Chrome Cookie SameSite 해결하기 보통 Backend 에서 사용자 인증을 완료하고 Token 전달의 수단으로 Cookie를 많이 사용한다. Backend 로직에서 브라우저 Cookie 저장을 위해서 다음과 같이 보통 설정을 하게 된다. package com.deeplify.tutorial.oauthlogin.utils; import org.springframework.util.SerializationUtils; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Base64; import java.util.Optional; public.. [Spring boot] Tomcat 배포 시 Path Rewrite 하기 웹 어플리케이션을 개발 시 외부 API Gateway 를 통해 웹 어플리케이션 Launch가 되는 경우가 많이 있다. 이런 경우에 본인의 어플리케이션을 구분하기 위해 앞단에서 특정 path가 삽입되는 경우가 많이 있다. 예기치 않게 중간에 path가 삽입되면 application 입장에서는 url path 처리를 하기 위해 Front end단 수정이 가해질 수 밖에 없다. 이런 경우에 Tomcat path rewrite 기능을 통해 해당 path를 제거해 주면 최초 만들어진 url 로 app을 동작 시킬 수 있게 된다. Tomcat rewrite.config 작성 apache-tomcat-9.0.65\conf\Catalina\localhost\rewrite.config RewriteCond %{REQUE.. [Spring Boot] Spring boot embedded tomcat https 적용 Spring boot를 이용해서 웹 어플리케이션을 만들었을때 최종적으로 https 적용을 고려하게 된다. HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이 보안이 강화된 HTTP라는 것을 짐작할 수 있다. HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매우 쉽다. 예를들어 로그인을 위해서 서버로 비밀번호를 전송하거나, 또는 중요한 기밀 문서를 열람하는 과정에서 악의적인 감청이나 데이터의 변조등이 일.. [Spring Boot] Quartz 배치 (scheduler) clustering Spring application을 구축하다 보면 spring scheduler를 이용해서 cron job을 많이 사용하게 된다. 그러나 이중화나 쿠버네티스에서 여러 pod를 실행하게 되면 다수의 was에서 job이 중복해서 실행이 되게 된다. 이를 위해서 특정 Node의 was에서만 job을 실행되게 인자나 property를 뺄 수 있으나 배포시에 노드마다 설정을 지정해주어야 하는 번거로움이 생긴다. 이럴때 Spring boot + Quartz 배치를 사용하고 Clustering 기능을 켜면 Cluster 기능으로 fail over를 방지 할 수도 있고 동시에 여러잡이 실행되는것도 방지 할 수 있다. Spring Quartz 라이브러리 Import pom.xml에 아래 spring-boot-starte.. [Spring boot] Tomcat (windows) + War 배포 하기 Apache Tomcat 다운로드 및 압축 해제 Apach Tomcat 9.0대 Download는 아래 Url에서 수행한다. https://tomcat.apache.org/download-90.cgi 추세에 맞게 64bit용 zip파일을 다운받고 원하는 위치에 Extract 해둔다. Spring boot application 수정 사항 Spring boot application main에서 다음과 같이 extend 및 implement를 추가한다. @EnableConfigurationProperties(AppProperties.class) @SpringBootApplication // Main class에서 SpringBootServletInitializer를 상속하고, implements를 구현한다. .. 이전 1 2 3 4 5 다음