마이크로 서비스 유저 서비스처럼 config에서 설정파일 받게 수정 1. Orders 서비스와 Catalogs 서비스에 Kafka Topic를 적용- Orders 서비스에 요청된 주문의 수량 정보를 Catalogs 서비스에 반영- Orders 서비스에서 Kafka Topic로 메시지 전송 -> Producer- Catalogs 서비스에서 Kafka Topic에 전송된 메시지 취득 -> Consumer 2. 동기화 코드 [1]order-service -> KafkaProducerConfig.java// 카프카 활성화@EnableKafka// 이 클래스를 설정 파일로 사용, bean을 관리@Configurationpublic class KafkaProducerConfig { @Bean // kaf..
1. Kafka1). Kafka란?실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공- 모든 시스템으로 데이터를 실시간으로 전송하어 처할 수 있는 시스템- 데이터가 많아지더라도 확장이 용이한 시스템- Producer/Consumer 분리- 메시지를 여러 Consumer에게 허용- 높은 처리량을 위한 메시지 최적화 2). Kafka Broker- 실행된 Kafka 애플리케이션 서버- 3대 이상의 Broker Cluster 구성- Zookeeper 연동 - 역할 : 메타데이터(Broker ID, Controller ID 등) 저장 - Controller 정보 저장- n개 Broker 중 1대는 Controller 기능 수행 - Controller 역할 - 각 Br..
FeignClient- REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 1. FeignClient1). 구현OrderServiceClient.java@FeignClient(name = "order-service")public interface OrderServiceClient { // 다 퍼블릭이라서 따로 적을 필요는 없다 @GetMapping("/order-service/{userId}/orders") List getOrders(@PathVariable String userId);} UserServiceImpl.java @Override public UserDto getUserByUserId(String userId) { UserEnti..
Rest Template 작동방식1. 조회 Rest Template 적용1). user-service -> UserServiceApplication.java 빈 추가@Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } 2). user-service -> UserServiceImpl.java@Override public UserDto getUserByUserId(String userId) { UserEntity userEntity = userRepository.findAllByUserId(userId); if (userEntity == null) th..
오늘은 대칭키와 비대칭키를 이용한 암/복호화, user-service application.yml의 설정 일부를 config-service으로 옮긴 뒤 config-service의 설정을 사용하게 할 것이다.그리고 설정파일의 정보를 암호화할 것이다1. 암호화의 종류1). Symmetric Encryption (대칭키 : 암호화, 복호화 키가 동일)- Using the same key 2). Asymmetric Encryption (비대칭키 : 암호화, 복호화 키가 다름)- Private and Public Key : 암호화 or 복호화 할 때 Private 키와 Public 키를 사용함(중복 안되게)- Using Java keytool : 자바에서 제공하는 암호화, 복호화 인터페이스 2. 암호화/복호화1..
설정 파일의 값을 변경했을 때 변경된 값을 가져갈 수 있는 방법은 3가지다- 서버 재기동 [패스] 1. Actuator refreshrefresh 어플리케이션의 모니터링과 상태, 변경된 내용을 체크할 수 있는 End Point를 제공하지만어플리케이션의 서버가 여러개, MSA면 refresh를 일일이 수동으로 해야되기 때문에 번거롭다 2. Spring cloud bus- 분산 시스템의 노드(MSA)를 경량 메시지 브로커(Rabbit MQ)와 연결- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)Spring Cloud Config Server에 마이크로 서비스가 다 연결되어 있는 상태이다Config Server과 연결되어 있는 Spring Cloud Bus가 마이크로 서비스에다가 ..
1. Spring Cloud Config란?- 분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보(application.yml)을 외부 시스템에서 관리- 하나의 중앙화된 저장소에서 구성요소 관리 가능- 각 서비스를 다시 빌드하지 않고, 바로 적용 가능- 애플리케이션 배포 파이프라인을 통해 DEV-UAT-PROD 환경에 맞는 구성 정보 사용 2. application.yml 우선순위application.yml -> application-name.yml -> application-name-.yml 3. ecommerce.yml 파일 생성디렉토리 생성 후 ecommerce.yml 파일 생성$ git add ecommerce.yml$ git commit -m "upload ecommerce yml file..
1. AuthenticationFilter란?- Spring Security를 이용한 로그인 요청 발생 시 작업을 처리해 주는 Custom Filter 클래스 2. User-Service -> AuthenticationFilter.java@Slf4jpublic class AuthenticationFilter extends UsernamePasswordAuthenticationFilter { // final AuthenticationManager authenticationManager; private final UserService userService; private final Environment env; public AuthenticationFilter(Authenticat..
1. CustomFilter[gateWay-service] CustomFilter.java@Component@Slf4jpublic class CustomFilter extends AbstractGatewayFilterFactory { public CustomFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // Custom Pre Filter return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); ServerHtt..
1. Gateway란?서버 최앞단에 위치하여 모든 API 호출을 받는다. 받은 API 호출을 인증한 후, 적절한 서비스들에 메세지를 전달될 수 있도록 한다기능 : 인증 및 권한부여, 서비스 검색 통합, 응답 캐싱, 속도 제한, 부하 분산, 로깅, 추적, 상관관계, IP 허용 목록에 추가 등 2. 프로젝트 생성gateway-service [Lombok, Eureka Discovery Client, Gateway]first-service [Lombok, Spring Web, Eureka Discovery Client]second-service [Lombok, Spring Web, Eureka Discovery Client]3. 예제1. application.yml// First-Serviceserver: ..