본문 바로가기

분류 전체보기

(34)
240815 WebClient 1️⃣ WebClientSpring 5부터 지원하는, Spring WebFlux에서 제공하는 비동기식 HTTP 클라이언트주로 서버 측에서 다른 API나 웹 서비스와 통신하기 위해 사용됩니다.브라우저에서 동작하는 클라이언트 애플리케이션을 직접 개발하기 위한 도구는 아닙니다.서버 측에서 HTTP 요청을 보낼 수 있게 해주는 역할을 합니다.Non-Blocking, Blocking HTTP 요청을 모두 지원Spring MVC의 RestTemplate (Blocking)을 대체할 수 있습니다.WebClient가 필요한 이유WebClient는 서버 사이드 애플리케이션에서 다른 서비스와 통신할 때 유용합니다.마이크로서비스 간 통신:마이크로서비스 아키텍처에서 서비스 간 통신이 필요할 때, WebClient를 사용해 다..
240815 Reactive Streaming 데이터 처리 1️⃣ HTTP 프로토콜 기반 실시간 통신 방법| Long  Polling, SSE, WebSocket① 통신 방법 비교비교 요약특징Long PollingSSEWebSocket통신 방향단방향 (서버 → 클라이언트)단방향 (서버 → 클라이언트)양방향 (서버 ↔ 클라이언트)연결 방식비지속적지속적지속적재연결요청마다 새로운 연결자동 재연결기본 제공 안 됨(클라이언트 구현 필요)서버 부하높음 (반복적인 연결/해제)중간 (지속적 연결)낮음 (지속적 연결, 양방향)브라우저 지원거의 모든 브라우저에서 지원대부분의 최신 브라우저에서 지원대부분의 최신 브라우저에서 지원사용 예시제한적 실시간 통신실시간 알림, 뉴스 피드, 주식 가격 업데이트실시간 게임, 채팅, 금융 거리 시스템 1. Long Polling통신 방식: 클라이..
240810토 phi-3 mini Phi-3 Mini는 Phi-3 모델 시리즈의 경량화된 버전으로, 대규모 언어 모델(LLM)의 성능을 최대한 유지하면서도 더 작은 크기와 효율성을 제공하도록 설계된 모델입니다. 이 모델은 자원이 제한된 환경, 특히 모바일이나 임베디드 시스템에서의 활용을 염두에 두고 개발되었습니다. 다음은 Phi-3 Mini에 대한 자세한 설명입니다.1. 모델 개요Phi-3 Mini는 Phi-3 패밀리의 일원으로, 파라미터 수를 크게 줄여 경량화된 모델입니다. 일반적으로 대형 언어 모델이 요구하는 자원보다 훨씬 적은 자원으로도 실행할 수 있도록 설계되었습니다.목적: Phi-3 Mini는 다양한 자연어 처리(NLP) 작업에서 효율적인 성능을 제공하며, 특히 실시간 처리와 자원 최적화가 중요한 환경에서 사용되도록 설계되었습니..
240810토 임베디드 LLM, 서버 기반 LLM 1. 임베디드 LLM 사용 시 장점과 단점장점:실시간 응답성: 모델이 로컬 환경에서 동작하기 때문에 네트워크 지연 없이 실시간으로 반응할 수 있습니다. 특히, 네트워크 연결이 불안정하거나 끊기는 상황에서도 안정적인 성능을 유지할 수 있습니다.데이터 프라이버시: 데이터가 로컬에서 처리되므로, 민감한 데이터를 서버로 전송하지 않고도 모델을 활용할 수 있습니다.운영 비용 절감: 서버를 운영하고 유지보수하는 비용이 들지 않으므로, 장기적으로 비용을 절감할 수 있습니다.단점:제한된 성능: 임베디드 시스템의 제약으로 인해, 사용할 수 있는 모델의 크기와 성능이 제한적입니다. 고성능 LLM의 경우 임베디드 시스템에서 동작하기 어렵습니다.업데이트 및 유지보수: 로컬에 있는 모델을 업데이트하거나 유지보수하는 데 어려움이..
240809금 Spring Data R2DBC 1️⃣ R2DBC란- Reactive Relational Database Connectivity- 관계형 데이터베이스에 리액티브 프로그래밍 API를 제공하기 위한 개방형 사양- 드라이버 벤더가 구현하고 클라이언트가 사용하기 위한 SPI① Reactive Relational Database Connectivity✔️ Reactive- 리액티브 프로그래밍을 통해 데이터를 비동기적으로 처리한다.- 리액티브 프로그래밍은 데이터 흐름과 변화에 반응하는 방식으로 프로그래밍을 한다. ✔️ Relational Databaes- 전통적인 관계형 데이터베이스- ex) MySQL, PostgreSQL, SQL Server ✔️ Connectivity- 리액티브 프로그래밍과 관계형 데이터베이스 두 가지를 연결하는 API를 제..
240804 Spring MVC vs Spring WebFlux 동시성 모델Spring MVC동기적 요청 처리- 서블릿 기반의 동기적 요청-응답 모델을 따른다.- 클라이언트의 요청을 처리할 때, 서블릿 컨테이너는 요청을 스레드 풀에서 하나의 스레드로 할당한다. 블로킹 I/O- 모든 요청은 블로킹 방식으로 처리된다.- 요청을 처리하는 동안 해당 스레드는 응답이 완료될 때까지 차단된다.Spring WebFlux비동기적 요청 처리- 비동기, 논블로킹 요청-응답 모델을 따른다.- Netty, Undertow와 같은 논블로킹 I/O 런타임 위에서 동작할 수 있다. 논블로킹 I/O- I/O 작업이 완료되기를 기다리지 않고 바로 다음 작업을 수행한다.- 높은 동시성을 처리할 수 있다. 스레드 모델Spring MVC스레드 당 요청- 각 클라이언트 요청은 서블린 컨테이너에서 스레드 ..
240804 Operators :: Sequence 내부 동작 확인 | doOnXXXX() Operator doOnXXXX()- Consumer 또는 Runnable 타입의 함수형 인터페이스를 파라미터로 가진다.- 별도의 리턴 값이 없다.- 디버깅 용도로 많이 사용된다.연산자설명예시 및 용도doFirst스트림이 구독되기 전에 호출된다.구독 전 초기화 작업doOnSubscribeFlux 또는 Mono가 구독될 때 특정 작업을 수행한다.초기화 작업, 로깅, 모니터링doOnRequest구독자가 데이터를 요청할 때 호출된다.요청 로그, 요청량 모니터링doOnNext각 데이터 항목이 emit될 때 호출된다.데이터 처리 로그, 데이터 검증doOnEach각 신호(onNext, onComplete, onError)마다 호출된다.모든 신호 로그, 각 신호 처리doOnComplete스트림..
240804 Operators :: Sequence 변환 | map, flatMap, concat, merge, zip, and, collectList, collectMap 요약map(): 단일 값 변환, 새로운 Publisher 생성하지 않음.flatMap(): 여러 Publisher로 변환 후 병합.concat(): 여러 Publisher를 순차적으로 연결.merge(): 여러 Publisher를 병렬로 실행하여 병합.zip(): 동일한 인덱스의 데이터를 Tuple로 묶어 emit.and(): 여러 Publisher가 완료될 때까지 기다리며 완료 신호만 emit.collectList(): 데이터를 List로 수집하여 단일 Mono로 emit.collectMap(): 데이터를 key-value 쌍으로 변환하여 Map으로 수집, 단일 Mono로 emit. ma..
240720 Testing :: StepVerifier, TestPublisher PublisherProbe 요약- StepVerifier는 Publisher의 전체 흐름을 단계별로 검증할 때 유용하다.- TestPublisher는 임의의 데이터 발행과 비정상 시나리오 테스트에 유용하다.- PublisherProbe는 특정 Publisher가 호출되었는지 검증할 때 사용된다.도구주요 목적주요 기능StepVerifierPublisher의 단계별 검증Publisher의 각 단계를 순서대로 검증TestPublisher임의의 데이터 발행 및 비정상 시나리오 테스트임의의 시점에 데이터, 완료 신호, 에러 신호 발행PublisherProbe내부 Publisher 호출 검증Publisher 신호 기록 및 검증 1️⃣ StepVerifier- Reactor Stream의 동작을 단계별로 검증할 수 있는 도구- Publishe..
240720 Reactor의 Context Reactor에서의 ContextContext 란어떤 상황에서 그 상황을 처리하기 위한 정보 Context의 요소- 상황- 목표- 정보 Reactor에서의 ContextReactor의 구성요소 사이에서 특정 기능을 수행하기 위해 전파되는 key-value 형태의 저장소 Reactor Context의 구성 요소- 상황 : Reactor의 구성요소들의 체인 ( 구성요소 예 : Operator)- 목표 : 특저 기능 수행- 정보 : key-value 형태의 저장소Context 특징- key-value 형태의 저장소- Reactor Component 간에 전파되는 요소- 전파 방향 : Downstream → Upstream- Subscriber와 매핑된다 : 구독이 발생할 때마다 해당 구독과 연결된 하나의 Co..