목차 지난 글에서, 도커로 카프카를 실행하고 자바 프로젝트의 yml파일을 아래와 같이 구성했다. spring: kafka: topic: myTopic: test-topic consumer: bootstrap-servers: localhost:9092 group-id: test auto-offset-reset: earliest producer: bootstrap-servers: localhost:9092 이번 글에선 위 설정을 바탕으로 실제 프로듀서와 컨슈머를 구현한 뒤, 간단한 사칙연산을 구현해 보겠다. 들어가기 전에 먼저, 위 설정은 보안과 관련된 부분이 전부 제거된 상태이기 때문에 MSK 사용 시 해당 설정을 추가해야 한다. KafkaProducerConfig 먼저 프로듀서에 대한 설정이다. 굉장히 ..
목차 한 달쯤 전에 올렸던 글에서, 야심 차게 MSK를 도입하겠노라고 선언을 했었다. [Cloud]Java 17 + WebFlux 환경에 AWS MSK 도입하기(1) - MSK? [Cloud]Java 17 + WebFlux 환경에 AWS MSK 도입하기(1) - MSK? 목차 Apache Kafka 아파치 카프카는 그 유명한 링크드인에서 개발해 11년에 공개한 오픈소스 메시지 브로커 프로젝트이다. Message Broker 오픈소스는 그렇다 치고 메시지 브로커라는 단어를 처음 보니 gnidinger.tistory.com 그 이후 이리 구르고 저리 구르다가 알게 된 사실은, 로컬 환경에서 MSK로 접근하는 건 불가능한 것은 아니지만 쉽지 않다는 것. 가장 쉽게 MSK에 접근하는 방법은 같은 VPC안에 EC..
[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 마지막으로 연산자를 정리한 게 벌써 거의 세 달 전이다. 회사에 들어와 웹플럭스로 개발을 하며 정리하고 싶은 건 산더미 같았지만 다른 공부할 것이 너무 많고 바쁜 데다가 프로젝트까지 겹쳐 전혀 정리를 하지 못했다. 그래서 오랜만에 돌아온 연산자 정리 시간. 웹플럭스 연산자 사전이라도 있으면 좋겠다. defer() defer 연산자는 Mono와 Flux 둘 모두에서 사용가능한 연산자이다. 이 연산자는 리액티브 프로그래밍에서 지연 평가(Lazy Evaluation)를 수행하기 위한 연..
작은 프로젝트를 개발하면서는 만날 일이 없지만, 의외로 회사에서 일하다 보면 3분이 넘는 요청을 처리해야 하는 경우가 종종 있다. 스프링 부트의 경우, application.yml에 명시적인 타임아웃 설정이 없다면 연결 타임아웃은 기본 30초, 읽기 타임아웃은 기본적으로 무제한으로 설정된다. 하지만 AWS를 이용해 배포를 하는 경우, 특별히 설정을 해주지 않으면 60초 만에 타임아웃 에러가 뜨는데, 이런 경우 .yml 파일에 명시적으로 타임아웃을 길게 적어도 해결되지 않는 것을 확인할 수 있다. 해결 방법은 AWS의 어느 서비스를 사용하느냐에 따라 다르겠지만, 나의 경우 EC2, ELB, Route53을 사용하고 있다. 이런 경우 해결책은 생각보다 허무한데, 우선 AWS 콘솔에 로그인한 뒤, EC2에서 ..
[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 목차 WebFlux Operators [WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 글의 순서는 연산자의 중요도나 로직의 흐름과는 아무 관련이 없다. 그저 내가 코드를 읽다가 마주친 순서를 마구잡이로 적어놓은 메모장에 근거할 뿐. 글 제목에 '+'가 붙어있는 이유는 연산자가 아니더라도 처음 봤거나 알아야 할 것 같은 경우라 판단이 들면 이 글에 같이 추가해 버렸기 때문이다. 굳이 연산자와 그 외 클래스를 나누어야 할..
목차 평소에 관성적으로 써오면서도 정확히 무슨 역할을 하는지 몰랐던 애너테이션 몇 개를 정리하고 넘어가려고 한다. 대상은 아래와 같다. @Lazy @LazyCollection @JsonManagedReference @JsonBackReference @JsonIgnoreProperties @JsonProperty @Lazy 스프링 프레임워크를 사용하면 소프트웨어 시작시 애플리케이션 컨텍스트 로드와 함께 등록된 모든 빈들이 생성된다. 따라서 코드의 규모가 커지고 빈의 개수가 많아질수록 필연적으로 메모리 점유율이 올라가고 시작시간이 느려질 수밖에 없는데, @Lazy는 이런 문제를 조금이라도 해결하기 위해 스프링 프레임워크에서 지원하는 애너테이션이다. 해당 애너테이션을 붙인 빈은 자동으로 지연로딩(Lazy Lo..
[WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 Method vs. Operator 별생각 없이 메서드나 연산자라는 단어를 마구 뒤섞어 쓰다가 의문이 들었다. 같은 뜻의 단어를 두 개나 사용할 필요가 있을까? 하고. 해서 연산자 정리도 할 겸 아주 얕게 알아보았는데, 결론부터 말하면 둘은 다른 개념이지만 아주 남남은 아니다. 요약하면 아래와 같다. 메서드(Method) - 클래스나 객체 내부에 정의된 함수. Mono와 Flux 역시 내부에 많은 메서드를 가지고 있음 연산자(Operator) - 실제 연산에서 사용되는 메서드. 스트림의 데이터 처리를 연산이라고 부르기 때문에 붙..
원래 계획은 리액티브 스트림에 이어서 모노, 플럭스까지 정리하는 거였지만, 하나도 모르는 내가 한 번에 몰아 정리하기는 불가능하다는 판단이 들어 글을 나누었다. 읽고, 실습해도 이상하게 개념이 잡히지 않는 웹플럭스, 쪼개서 알아보자. Reactive Streams 리액티브 스트림은 비동기/논블로킹 처리를 위한 스트림 기반의 프로그래밍 모델이다. 또한 데이터 생산자와 소비자 사이에서 백프레셔를 지원해 데이터의 흐름을 제어할 수 있으며, 이는 리액티브 선언문에 쓰여있는 대로 병목현상이나 예기치 못한 소프트웨어의 정지를 방지한다. 리액티브 스트림의 탄생 이전에는 라이브러리마다 다른 방식으로 같은 목적의 프로그램을 구현해야 했으며, 2013년 넷플릭스와 레드햇을 위시한 기업들이 공동으로 개발하며 표준화 작업을 ..
오늘 아침까지만 해도 그게 그거라고 생각하고 내키는 대로 사용해 왔는데, 문득 굳이 같은 기능을 두 개나 만들었을 리가 없다는 생각이 들어 알아보게 되었다. 사전지식이 필요하다면 한없이 많이 필요하고 아니라면 아니라서, 일단 딱 둘의 공통점과 차이점에 대해서만 정리하고 넘어간다. CascadeType.Remove orphanRemoval = true 공통점 부모 엔티티 삭제시 자식 엔티티도 함께 삭제 차이점 연관관계를 끊어도 자식 엔티티 유지 연관관계가 끊기면 자식 엔티티 삭제
목차 인증이 끝난 사용자를 애너테이션으로 분류하는 구현을 하다가 몇 가지 애너테이션을 만나게 되었다. 우선 (CP로)구현은 끝났는데 뭔지는 알고 넘어가야 할 것 같아서. 하나씩 알아보자. @Documented @AuthenticationPrincipal @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.PARAMETER, ElementType.TYPE}) public @interface SignInUser { } @Documented 해당 애너테이션이 메타 애너테이션으로 설정된 애너테이션을 JavaDoc에 포함시킨다. JavaDoc은 기본적으론 애너테이션에 대해선 문서화를 해주지 않는다고 한다. @AuthenticationPrincipal 인증이 끝난 ..
- Total
- Today
- Yesterday
- 스프링
- spring
- 동적계획법
- 알고리즘
- 세모
- a6000
- 여행
- 리스트
- 세계일주
- 스트림
- 맛집
- 칼이사
- 지지
- Backjoon
- RX100M5
- 야경
- 남미
- 자바
- java
- Python
- 세계여행
- 백준
- BOJ
- 기술면접
- Algorithm
- 파이썬
- 중남미
- 유럽여행
- 유럽
- 면접 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |