반응형

분류 전체보기 509

Apache Kafka 활용 (2)

앞으로 구현할 데이터 동기화를 위한 Kafka 개요입니다. 복수의 같은 서비스가 하나의 DB를 사용하기 위해서 Kafka로 동기화 하는 방법을 알아보겠습니다. Orders Service에서 Kafka Topic으로 메시지 전송 -> Producer 요약 MariaDB 설정 Order service에 Producer 생성 테스트 소스코드 MariaDB 설정 Order service에서 사용할 테이블을 만들겠습니다. create table orders ( id int auto_increment primary key, product_id varchar(20) not null, qty int default 0, unit_price int default 0, total_price int default 0, use..

카테고리 없음 2022.01.23

Apache Kafka 활용 (1)

앞으로 구현할 데이터 동기화를 위한 Kafka 개요입니다. Orders Service에 요청된 주문 수량 정보를 catalogs Service에 반영 Orders Service에서 Kafka Topic으로 메시지 전송 -> Producer Catalogs Service에서 Kafka Topic에 전송된 메시지 취득 -> Comsumer 요약 Catalog Service에 Consumer 추가 Order Servie에 Producer 추가 테스트 소스코드 Catalog Service pom.xml에 dependecy 추가합니다. org.springframework.kafka spring-kafka Kafka 서비스를 다룰 패키지를 만들어 줍니다. Catalog 서비스는 물류를 기록하기 때문에 Consume..

IT/Spring Cloud 2022.01.23

데이터 동기화 - Kafka 설정

앞으로 구현할 데이터 동기화를 위한 Kafka 설정 개요입니다. 운영의 안정성을 위해서 어떤 서비스는 다중화해 놓습니다. 다중화된 서비스에서 데이터베이스는 어떻게 해야할까요. 만약에 아래와 같이 각각의 서비스가 데이터베이스를 가지고 있다면 데이터가 동기화되지 않을 것입니다. 하나의 데이터베이스를 두고 동기화하는 것이 쉬워보입니다. 이럴 때에 Messaging Queuing을 사용합니다. 대표적인 솔루션으로 Kafka가 있습니다. 이번 장에서 데이터 동기화를 위한 Kafka 설정을 설명하겠습니다. Kafka로 데이터를 보내고, Kafka에서 데이터를 받기 위해서 Kafka Connect를 설치하겠습니다. Kafka Connect Source는 Source System의 데이터를 Kafka으로 보냅니다. K..

IT/Spring Cloud 2022.01.08

Microservice간 통신 - FeignClient 방식

앞으로 구현할 Microservice간 통신의 개요입니다. RestTemplate보다 더 직관적입니다. 호출하려는 HTTP endpoint에 대한 Interface를 생성하면 됩니다. 요약 Feign Dependency 추가 client 패키지를 만들어서 Feign Client Interface 생성 호출하는 서비스에 Interface 구현 error 패키지를 만들어서 FeignErrorDecoder 클래스 생성 소스코드 Dependency를 추가합니다. org.springframework.cloud spring-cloud-starter-openfeign Feign Client Interface를 생성합니다. client 패키지를 만들고, OrderServiceClient.java 인터페이스를 만듭니다...

IT/Spring Cloud 2022.01.07

Microservice간 통신 - RestTemplate 방식

앞으로 구현할 Microservice간 통신의 개요입니다. user-service로 요청해서 order-service의 DB 데이터 가져오겠습니다. 기존에는 order service에 직접 접근해서 주문 목록을 받았지만, 이번에는 user service에서 주문 목록을 받아보겠습니다. 마이크로서비스간에 통신을 위해서 Rest Template을 이용하겠습니다. 요약 UserServiceApplciation.java에 RestTemplate 빈 생성 UserController.java에서 원하는 endpoint 선택 endpoint에서 사용하는 서비스(ex. userServiceImpl)에서 RestTemplate 객체 생성 필요한 설정은 config service의 user-service.yml에 저장 소..

IT/Spring Cloud 2022.01.06

비대칭키 암호화

앞으로 구현할 Configuration 서비스의 개요입니다. 요약 keystore 디렉토리 생성 publicKey와 privateKey 만들기 Config Server의 bootstrap.yml에 설정 Config Server에서 사용하는 설정 파일(yml) 변경 소스코드 키를 저장할 keystore 디렉토리를 생성합니다. 그리고 privateKey와 publicKey를 생성합니다. 디렉터리 생성 : mkdir keystore 디렉터리 이동 : cd keystore privateKey 생성 : keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=Kenneth Lee, OU=API Development, O=joneconsulting.co..

IT/Spring Cloud 2022.01.05

대칭키 암호화

앞으로 구현할 대칭키 암호화의 개요입니다. user-service의 application.yml에 있는 정보를 config server에 저장하여 암호화하고 사용하겠습니다. Spring Cloud Config 서버에서 암복화화를 합니다. 요약 Config Server에 bootstrap.yml을 만들고 (대칭)암호화키 설정 Config Server에서 관리하고 싶은 정보를 repository의 yml에 옮기기 ( user-service의 DB 접속 정보를 옮김 ) Postman으로 비밀번호를 암호화하고, 암호화된 해당 비밀번호를 Config Server의 user-service.yml에 입력 소스코드 Config service에 Dependency를 추가하겠습니다. org.springframework.c..

IT/Spring Cloud 2022.01.05

Spring Cloud Bus

앞으로 구현할 Spring Cloud Bus 서비스의 개요입니다. 분산 시스템입니다. 마이크로서비스는 데이터(메시지)를 미들웨어(분산 시스템)에 보내면, 해당 데이터(메시지)가 필요하다고 설정해 놓은 어떤 마이크로서비스가 가져가는 방식입니다. 설정 정보를 변경하는 방법은 이전 시간에 배운 Actuator의 refresh가 있습니다. 혼자 많은 서버를 관리하다 보면 서버 하나 하나를 refresh를 해야하는 번거로움이 있을 수 있습니다. 여기서는 Spring Cloud Bus를 이용해서 설정 정보를 알아서 서비스들이 가져가서 적용하도록 해보겠습니다. AMQP를 이용해서 통신하고 RabbitMQ를 이용합니다. AMQP (Advanced Message Queuing Protocol) 의미 : 메시지 지향 미들..

IT/Spring Cloud 2022.01.05

Configuration Service

앞으로 구현할 Configuration 서비스의 개요입니다. 분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보(application.yaml)를 외부 시스템에서 관리 하나의 중앙화 된 저장소에서 구성요소 관리 가능 각 서비스를 다시 빌드하지 않고, 바로 적용 가능 애플리케이션 배포 파이프라인을 통해 Dev - Stg - Prd 환경에 맞는 구성 정보 사용 Spring Cloud Config Server는 설정 정보를 가지고 와서 마이크로서비스에 적용합니다. Config Server가 읽어들이는 구성 파일의 우선 순위가 있습니다. 1. application.yml 2. application-name.yml : 예시) ecommerce.yml 3. application-name-.yml : 예시) e..

IT/Spring Cloud 2021.12.30

User Microservice - 회원 로그인

앞으로 구현할 유저 서비스의 개요입니다. APIs 입니다. 기능 URI (API GW 사용 시) URI (API Gateway 미사용 시) HTTP Method 사용자 로그인 /user-service/login /login POST 프로젝트는 이전에 사용하던 User-Service를 가져옵니다. 회원 로그인 구성은 아래와 같습니다. 사용자로부터 email과 password를 받습니다. attempAuthentication() 메소드로 인증을 시작합니다. UsernamePasswordAuthenticationToken으로 email과 password를 토큰으로 만들어 줍니다. loadUserByUsername() 메소드에서 usename( email과 동일 )로 데이터베이스에서 사용자 정보를 가져와 Use..

IT/Spring Cloud 2021.12.17
반응형