개요 생산자(procuder)와 카프카 스트림(kafka streams)이 서로 Json으로 메세지를 주고 받도록 한다[참고1]. 커스텀 Serde를 선언하고 카프카 스트림 설정의 value_serde에 등록한다. Serde란? Serde란 Serializer<>와 Deserializer<> 담긴 Wrapper...
카프카 스트림이란?(kafka stream)
스트림이란? 한 방향으로 흐르는 연속된 데이터 흐름[참고1[참고2] 카프카 스트림이란? 카프카 스트림은 스트림을 처리하는 라이브러리이다. 카프카 스트림은 소비자(consumer)에서 동작한다. 예를 들면, ‘블로그 포스트 조회 수’ 같은 이벤트와 같이 실시간으로 갱신되는 데이터를 처리할 수 있다. 카프카 스트림 특징 카프...
MultipartFile.getInputStream() java.nio.file.NoSuchFileException in async
개요 비동기 함수 안에서 MultipartFile.getInputStream() 실행 시 임시 파일이 없다는 에러가 난다. 원인 컨트롤러에서 multipart/form-data 요청을 받으면 해당 파일이 임시 경로에 저장되는 듯 하다. 이때 MultipartFile.getInputStream() 실행하면 임시 파일에서 stream ...
카프카, JsonSerializer 사용하기
개요 카프카 생산자(producer) value serializer를 JsonSerializer로 설정한다. 카프카 소비자(consumer) value deserializer를 JsonDeserializer로 설정한다. 소비자 그룹마다 다른 json을 message로 받을 수 있도록 한다. 환경 java 21 spring ...
spring security 6에서 oauth2.0 구현하기(google)
개요 spring security 6을 이용하여 oauth2.0 인증을 구현해본다. 예시에서는 oauth 2.0 인증 프로바이더로 google을 사용한다. Oauth 2.0 이란 표준화된 인증 방식을 의미한다. 한 곳에서 Ouath 인증을 하면 이 인증을 공유하는 애플리케이션끼리 별도의 인증 없이 인증할 수 있다[참고1]. 일...
카프카, 정확히 한 번(kafka, exactly once)
개요 카프카의 생산자(producer)의 메시지가 소비자에게 정확히 한 번만 배달되도록 할 수 있을까? 결론은 소비자(consumer)의 작업이 카프카 내부에서만 이뤄진다면 정확히 한 번 메세지를 배달하는 것이 가능하다. 하지만 소비자의 작업이 RDBMS와 같은 외부 저장소까지 포함한다면 정확히 한 번 메세지를 배달한다고 보장할 수 없다...
Support for the experimental syntax 'decorators-legacy' isn't currently enabled
현상 next.js에서 api 개발 시 typeorm을 적용하려고 하니 에러가 발생한다. 아마 typeorm의 데코레이터 문법이 원인으로 보이며 바벨에서 데코레이터 문법으로 지원하게 설정해주면 된다. 해결방안 @babel/plugin-proposal-decorators 설치 npm install @bab...
solana DApp 인증 구현
개요 solana DAPP에서 지갑인증을 구현해본다. 지갑으로 인증된 유저만 특정 페이지를 조회할 수 있도록 처리할 수 있다. How to Integrate Sign-in Authentication with a Solana Wallet을 그대로 따라 진행한다. 중요한 부분만 설명을 추가한다. 환경 next.js로 DApp을 ...
certbot, DNS 인증 시 자동 갱신하게 만들기(AWS Route 53)
설명 certbot에서는 여러 방식으로 웹서버 소유권 인증을 지원한다. getting-certificates-and-choosing-plugins 와일드카드 인증서를 발급받기 위해서는 DNS를 사용하여 인증을 받아야 한다. 여러 DNS를 지원하지만 여기서는 AWS Route53 기준으로 설명한다. 최초 발급 방법과 자동갱신 방법을 함...
certbot, webroot 방식으로 인증서 발급받기
설명 webroot 방식으로 certbot 인증서를 발급받는다. certbot 도커를 활용하여 인증서를 발급 받는다. 예시에서 인증 받을 도메인은 helloworld.com으로 가정한다. 사전 준비 nginx를 띄우고 Route 53 DNS에서 서버IP와 도메인을 연결한다. 이를 통해 도메인을 입력하여 서버로 http 접속이 가능...