Spring23 [Spring Cloud] Spring Cloud Gateway 구축하기 Spring Cloud Gateway 👍🏻스프링 기반 API Gateway마이크로서비스 아키텍처에서 라우팅, 로드 밸런싱, 필터링 등 역할을 수행Spring 5, Project Reactor를 기반으로 구축되어 비동기 및 논블로킹 기능 지원Netty 서버를 사용하여 높은 성능을 제공 Gradle 의존성 추가implementation 'org.springframework.cloud:spring-cloud-starter-gateway'implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'API Gateway 서버를 Eureka Server(서비스 디스커버리)에 등록하기 위해 eureka-client 의존성 .. 2023. 6. 12. [Spring Cloud] Client Side Load Balancer & API Gateway 개념 정리 Client Side Load BalancerNetflix RibbonClient Side Load Balancer : 클라이언트에 탑재되어 있는 Load BalancerHardware 가 필요 없이 Software 로만 가능 IP와 PORT가 아닌 서비스 이름으로 호출 (서비스 디스커버리 기능 지원)비동기 처리를 지원하지 않고, 동기적인 방식으로 요청을 전송한 후 해당 요청에 대한 응답을 기다리는 동안 블로킹된다.Blocking방식의 HttpClient인 RestTemplate만 지원Spring Boot 2.4부터 maintenance 상태대안책 : Spring Cloud LoadBalancer Spring Cloud LoadBalancer 👍🏻Client Side Load Balancer : 클라.. 2023. 6. 11. CORS(Cross-Origin Resource Sharing) 이해와 적용 이전에 프로젝트를 하면서 CORS 문제를 해결하기 위해 애먹은 적이 있다. https://velog.io/@minnseong/CORS-with-Spring-MVC-Security (이전에 사용한 velog) 그 때는 CORS 문제를 해결하는 데에 집중을 해서 CORS의 이해는 조금 부족했던 것 같다. 이번에 CORS에 대해 공부할 기회가 생겨, 이번 포스팅을 통해서 CORS의 이론적인 내용 위주로 정리하고 마지막에는 한번 더 Spring에서 CORS 정책을 해결하는 방법을 기록하려고 한다. SOP Same-Origin Policy 의 약자 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식으로, 같은 출처에서만 리소스를 공유할 수 있도록 하는 정책 Origin(출처)? Protocol + Host +.. 2023. 6. 8. [Spring Cloud] Eureka Client 구축하기 이전 포스팅에서 Eureka Server를 구축했으니, 서비스 디스커버리에 등록할 클라이언트를 구현하는 방법을 정리하고자 한다.Eureka Server 구축 : https://minnseong.tistory.com/13 Eureka Client 구축Gradle 의존성 추가implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' Euraka Client 활성화 (XXXApplication.java)@SpringBootApplication@EnableDiscoveryClientpublic class XXXApplication { public static void main(String[] args) { .. 2023. 6. 5. [Spring Cloud] Eureka Server 구축하기 Spring Cloud Netflix Eureka는 Spring Cloud Framework에서 제공한다.https://spring.io/guides/gs/service-registration-and-discovery/ Eureka는 MSA에서 사용하는 서비스 디스커버리 기능을 제공한다.Service Discovery는 분산 환경에서 각각의 서비스가 서로 찾고 통신할 수 있도록 도와준다.MSA과 같은 분산 환경에서는 서비스 간의 통신이 이루어지며, 이는 IP 주소와 Port를 이용하는 방식이다.하지만 클라우드 환경에서는 서비스가 동적으로 생성되거나, 컨테이너 기반으로 배포되어 IP 주소와 Port가 자주 변경된다.따라서 Service Discovery를 통해 동적으로 변하는 IP와 Port를 직접 알지 .. 2023. 6. 5. JWT (2) 스프링에서 JWT 사용하기 Gradle 의존성 추가 implementation 'com.auth0:java-jwt:4.2.1' https://mvnrepository.com/artifact/com.auth0/java-jwt/4.2.1 JWT 관련 설정 파일 생성 application-jwt.yml jwt: secretKey: access: expiration: 3600000 # 1시간 header: Authorization refresh: expiration: 1209600000 # 2주 header: Authorization-refresh jwt.secretKey 서버가 가지고 있는 개인키 암호화 알고리즘으로 HS512를 사용할 것이기 때문에, 64 bytes 이상의 영숫자 조합으로 아무렇게 작성 jwt.access.expira.. 2023. 5. 31. 이전 1 2 3 4 다음 more