본문 바로가기

Programming137

자바와 함수형 프로그래밍 함수형 프로그래밍과 자바의 객체지향 프로그래밍은 문제에 대한 접근 방식이 다르다. 1. 함수형 프로그래밍 ? 함수란 ? f(x) => input을 입력할 때 output을 반환하는 것 => 자바에서는 method 함수는 역할을 고려할 때 동사에 가깝다. => method 명명을 동사로 짓는다. 반대로 객체는 명사 형태로 짓는다. 동사의 형태로 추상화하는 것이 쉬울 때가 있다. 명령형 프로그래밍 Imperative Programming 선언형 프로그래밍 Declarative Programming OOP 객체 지향 프로그래밍 How to do? 어떻게 해야 할까? Functional Programming What to do? 무엇을 해야 할까? 예를 들어, 유저 리스트가 주어졌을 때 검증되지 않은 유저들의 .. 2023. 6. 2.
[Spring Cloud] Kafka 를 사용한 마이크로서비스 간 데이터 전송, 단일 데이터베이스를 사용해 동기화 문제를 해결하기 Order MicroService -> Catalog MicroService - orders service에 요청된 주문의 수량 정보를 catlogs service에 반영 - orders service에서 kafka topic으로 메시지 전송 (producer) - catalogs service에서 kafka topic에 전송된 메시지 취득 (consumer) db - order service -> message Queing Service (Kafka) 데이터 동기화 문제 해결 - OrderService에 요청된 주문 정보를 DB가 아니라 Kafka Topic으로 전송 - Kafka Topic에 설정된 Kafka Sink Connect를 사용해 단일 Db에 저장 -> 데이터 동기화 즉, 데이터베이스 입장.. 2023. 6. 2.
카프카 Kafka 콘솔에서 사용하기 Kafka - Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트 (브로커: 중간 서버, 메시지: 다양한 데이터 가능) - 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공 카프카 이전의 방식 - end to end 연결 방식의 아키텍처 - 데이터 연동의 복잡성 증가 - 서로 다른 데이터 파이프라인 연결 구조 - 확장이 어려움 카프카 탄생의 배경 -> 모든 시스템으로 데이터를 실시간으로 전송하여 처리할 수 있는 시스템 -> 데이터가 많아지더라도 확장이 용이한 시스템 보내는 쪽과 받는 쪽이 누가 보내고 누가 받는지를 전혀 신경 쓰지 않게 된다. - Prdocuer / Consumer를 분리 Kafka Broker = Kafka Application Serv.. 2023. 6. 2.
[Spring Cloud] 마이크로서비스 간의 통신 RestTemplate, FeignClient, Error decoder, 동기화 문제 동기 방식과 비동기 방식으로 나누어 생각할 수 있다. 동기방식의 문제점은 해당 요청이 끝날 때까지 다른 작업을 할 수 없다는 것이다. 요청 - 컨트롤러 - 서비스 // => 이것을 하나의 프로세스라고 하면 끝나야 다음 작업이 진행된다. - 일반적인 방식의 동기 방식 - AMQP를 통한 비동기 방식 Eureka discovery service를 사용하면 기본적으로 round robin 방식으로 순차 처리가 가능하다. 이때 설정에 따라서 dispatch 하는 방식을 다르게 정할 수도 있다. (지역, 시간대, 리소스 등 => 분산) 1. RestTemplate Http 프로토콜을 통해 다른 API를 연결하는 방식 클라이언트 요청 -> localhost:8000/user-service/users -> rest .. 2023. 6. 2.
[Spring cloud] 비대칭키로 암호화하기 Jdk keytool을 사용한다. 먼저 keystore라는 폴더를 생성한다. 이곳에 private 키를 보관한다. 해당 폴더로 가서 터미널에서 다음과 같이 입력한다. keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=name, OU=API Development, O=msapractice.co.kr, L=Seoul, C=KR" -keypass "test1234" -keystore apiEncryptionKey.jks -storepass "test1234" -genkeypair: 키 쌍(공개키 및 개인키)을 생성하는 옵션. -alias apiEncryptionKey: 생성되는 키 쌍에 대한 별칭을 지정. 이 별칭은 나중에 키 스토어에서 해.. 2023. 6. 1.