| 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
Filter 테스트 includedFilters : 컴포넌트 스캔 대상을 추가로 지정 excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyExcludeComponent { } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { } @MyIncludeComponent public class BeanA { } @MyExcludeComponent public class BeanB ..
지속적인 통합, 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..
1. Dependency 추가 io.springfox springfox-boot-starter 3.0.0 2. SwaggerConfig package com.kyhslam.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @..
OrderApiController.java package com.kyhslam.api; import com.kyhslam.domain.Order; import com.kyhslam.domain.OrderItem; import com.kyhslam.repository.OrderRepository; import com.kyhslam.repository.OrderSearch; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequiredArgsConstructor public class OrderApiCo..
package com.kyhslam; import com.kyhslam.domain.*; import com.kyhslam.domain.item.Book; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.persistence.EntityManager; @Component @RequiredArgsConstructor public class InitDb { private final InitSer..
API 설계 시 주의점 API 파라미터 받을때나 보낼때는 절대로 엔티티를 사용하면 안된다. 항상 DTO를 만들어서 필요한 정보만 내보내도록 해야한다! 필수! import java.util.List; import java.util.stream.Collectors; @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; /** * 멤버 조회 * 문제점 : 엔티티 모든것이 노출 등 * @return */ @GetMapping("/api/v1/members") public List membersV1() { return memberService.findMem..
MemberApiController.java /** * 수정 API * @param id * @param request * @return */ @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request){ memberService.update(id, request.getName()); Member findMember = memberService.findOne(id); return new UpdateMemberResponse(findMember.getId(), findMember.getN..
꼭 API스펙을 위한 별도의 DTO를 만들어 사용하는것이 제일 좋다. 실무에서는 API 만들때 엔티티를 직접 받지도 말고 보내지도 말라.(직접 노출X) MemberApiController.java package com.jpabook.api; import com.jpabook.domain.Member; import com.jpabook.service.MemberService; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import o..