| User-service와 Spring Cloud Gateway 연동 💻 user-service.java > application.yml server: port: 0 spring: application: name: user-service datasource: url: jdbc:postgresql://localhost:5432/basic username: postgres password: 1234 driver-class-name: org.postgresql.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true eureka: instance: hostname: localhost instanc..
| Spring Cloud Config의 이해 Cloud-native 애플리케이션의 중요한 이슈 중 하나는 분산된 서비스에 대한 설정과 관리이다. 개발자는 배포된 서비스와 서비스 환경 개수 만큼 설정을 변경하는데 많은 시간을 소비해야 한다 서비스가 수평적으로 확장되는 Auto Scaling이 될 때마다 서비스의 설정을 직접 변경해 줘야 한다. Spring Cloud Config는 분산되어 있는 여러 서비스의 설정을 관리할 수 있는 서버와 클라이언트를 제공한다 Spirng Cloud Config는 파일 및 git형태로 가지고 있을 수 있다. 마이크로서비스가 실작할 때 Spring Cloud Config에서 관리하는 설정 정보를 요청한다 마이크로서비스는 다양한 환경에서 실행될 수 있으므로 Spring Clo..
| MSA의 단점 및 해결책 단점 해결책 SpringCloud 다수의 필요한 서비스는 어떻게 찾는가? 서비스 디스커버리 Eureka 사용하기 위한 다수 서비스의 인스턴스를 어덯게 결정해야 하는가? 클라이언트-사이드 로드 밸런싱 Ribbon 개별적인 서비스가 응답하지 않을 때 어떤 일이 발생하는가? 결함허용 Circult-Breaken/Hystrix 보안, 속도제한과 같은 서비스 접근을 어떻게 제어하는가? 서비스 보안 OAuth2 다수의 서비스는 서로 어떻게 커뮤니케이션 하는가? HTTP/메시징 Feign/Spring Cloud Stream 서비스간 ACID는 어떻게 달성하는가? CQRS Condujctor/Camel/.... | Spring Cloud 소개 Netflix OSS(Open Source So..
Eureka Flow 먼저 apigateway와 first-service , second-service의 pom.xml에 org.springframework.cloud spring-cloud-starter-netflix-eureka-client 가 추가되어 있어야 한다. 그리고 apigateway와 first-service , second-service의 application.yml에 eureka를 등록해 준다. eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka 그리고 apigateway에는 application.yml에 uri를 수정해준다. ..
| Logging Filter 참고: https://mangchhe.github.io/springcloud/2021/04/18/SpringCloudGateway/ [Spring Cloud] Gateway로 Filter, LoadBalancer 구현 Spring Cloud Gateway를 구현하는 방법부터 여러 종류의 필터들과 로드밸런싱 적용에 대해서 알아보자 mangchhe.github.io LoggingFilter.java package com.kyhslam.apigatewayservice.filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFil..
| 모든 라우터에 공통으로 적용할수 있는 Global Filter 학습 모든 필터에 공통으로 적용할 수 있다. 모든 필터의 가장 첫번째와 마지막에 실행된다. GlobalFilter.java package com.kyhslam.apigatewayservice.filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.server.reac..
| Custom Filter Custom Filter를 적용하기 위해서는 AbstractGatewayFilterFactory를 상속받아 사용해야한다. JWT - json web token CustomFilter.java package com.kyhslam.apigatewayservice.filter; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.server.reactiv..
| Filter 적용해보기 > 1. Java 방식 2. 설정파일(application.yml) Predicate: 조건 분기, 요청오면 어떤 조건인지 확인하는 부분 Pre Filter Post Filter 참고 URL : https://wonit.tistory.com/500 application.yml server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service # cloud: # gateway: # routes: # - id: firs..
비동기 서비스가 가능하다. zull은 동기방식 이였다. apigateway Server server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ predicates: - Path=/first-service/** - id: second-service uri: http://localhost:8082/ predi..
🔗 역할 인증 및 권한 부여 서비스 검색 통합 응답 캐싱 정책, 회로 차단기 및 Qos 다시 시도 속도제한 부하 분산 로깅, 추적, 상관관계 헤더, 쿼리 문자열 및 청구 변환 IP허용 목록에 추가 🔗 Spring Cloud에서의 MSA간 통신 방법 RestTemplate Feign Client 아래 사이트 공부하기 https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-3API-Gateway-nvk2kf0zbj MSA 제대로 이해하기 -(3)API Gateway 지난 포스팅에서 MSA를 구성하는 아키텍처 요소에 대해 살펴보았습니다. Inner Architecture와 Outer Archite..
Monolithic 모든 업무로직이 하나의 애플리케이션 형태로 패키지 되어 서비스 애플리케이션에서 사용하는 데이터가 한곳에 모여 참조되어 서비스 되는 형태 MSA HTTP RESOURCE API 각 서비스에 맞게 다른 프로그래밍 언어와 데이터베이스를 선택적으로 사용할 수 있다.(- Martin Fowler) | MSA 아키텍처 예시 참고 url : https://velog.io/@minsuk/MSA-Springboot
지속적인 통합, CI(Continuous Integration) 통합서버, 소스관리(SCM), 빌드도구, 테스트 도구 ex)Jenkins, Team CI, Travis CI 지속적인 배포 Continuous Delivery Continuous Deployment Pipe line 12 Factors(https://12factor.net) : 서비스 시 고려해야할 12가지 항목 Monolithic 모든 업무로직이 하나의 애플리케이션 형태로 패키지 되어 서비스 애플리케이션에서 사용하는 데이터가 한곳에 모여 참조되어 서비스되는 형태 일부 기능만 수정해도 전체 애플리케이션 빌드, 배포를 다시 해줘야 한다. MSA (Microservice) There is a bare minimum of centralized m..