본문 바로가기
관리자

Programming-[Backend]

(393)
[카프카 핵심가이드] 5. 카프카 어드민 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 5. 프로그램 내에서 코드로 카프카 관리하기 5.1 AdminClient 개요5.1.1 비동기적이고 최종적 일관성을 가지는 APIAdminClient는 비동기 결과인 Future 객체를 `Result 객체`로 감싸서 작업이 끝날 때까지 대기하거나 작업 결과에 대해 일반적으로 뒤이어 쓰이는 작업을 수행하는 헬퍼 메서드를 가지고 있음최종적 일관성(eventual consistency)AdminClient API가 리턴하는 Future 객체의 완료 여부는 컨트롤러의 상태가 완전히 업데이트된 상태를 기준으로 한다. 즉 여러 브로커..
[카프카 핵심가이드] 3. 프로듀서 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 1. 카프카 프로듀서1.1 카프카 프로듀서 개괄프로듀서가 브로커에 메세지 전송 과정키와 파티션은 선택사항키와 값을 직렬화 후 바이트 배열 변환.파티션을 지정하지 않은경우 파티셔너를 통해 파티션이 결정되고 레코드 배치에 추가.별도의 쓰레드가 카프카 브로커에게 전송브로커는 메세지 응답을 돌려준다 성공의 경우 RecordMetadata 정보를 리턴한다(토픽,파티션,레코드 오프셋). 에러인 경우 에러를 리턴한다.에러를 받은 경우 몇번 더 재전송을 시도할 수 있다. 아래는 프로듀서의 최소 기본값을 설정하여 추가해주는 코드 예시이다...
[카프카 핵심 가이드] 1. 카프카 시작하기 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리 그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역 제이펍 · 2023년 04월 14일 1. 카프카 시작하기 어떠한 데이터를 얻을 것인지 합의하고 데이터를 얻을 수 있다면 문제는 해결된다. -닐 디그래스 타이슨 1.1 발행/구독 메시지 전달 초기 발행/구독 시스템에 비해 카프카의 장점은 발행/구독 주체들끼리 직접 연결되지 않고 `중앙 집중화된 메시지 큐 시스템`을 여러 시스템들이 공유 받을 수 있다는 점 1.2 카프카 입문1.2.1 메시지와 배치 메시지 - 카프카 데이터의 기본 단위는 `메시지` == `레코드` - `키` 는 메시지를 저장할 파티션을 결정하기 위해 사용한다. 배치(batch) - 같은 토픽..
Keycloak ID(username) 찾기 기능 구현하기 1. ID 찾기 기능필요한 경우가 있을 수 있어 추가적인 SPI(Service Provider Interface)로 개발할 수 있다.다만, ID 찾기 기능은 적용하기에 좀 애매한 부분이 있다. 보안적인 측면에서 문제가 없다고 판단되고 안전하다고 생각될 경우에만 적용해야한다.ID까지 찾을 수 있다면, 악의적인 사용자가 ID, PW 모두 찾아서 계정을 탈취할 수 있다.글로벌 서비스(Google, Figma 등)에서는 제공하지 않는다.따라서 간이로만 작성하였으며, form template과 연동하는 원리를 이해하는 목적으로 작성했다. 추가적인 구현은 필요하다면 추가로 하면 될 것 같다.소스코드는 아래 링크의 forgot-username-extension 부분에서 확인할 수 있다.https://github.co..
keycloak 2차 인증(문자, 이메일) 구현하기 w/ AWS SNS 문자 및 이메일로 본인 인증을 하는 flow를 추가하는 Provider를 생성하고, 사용하는 방법에 대해 다룹니다. 1. 소스 코드keycloak Expert인 dasniko라는 분의 SMS 2차 인증 authenticator 예시 코드https://github.com/dasniko/keycloak-2fa-sms-authenticator함께 올려져있는 영상을 보면 대부분 이해할 수 있음  2. 코드 설명 및 변경2.1 SmsAuthenticator.classaction 메서드에서 사용자가 입력한 Code 값과 내부에서 지정한 Code 값을 비교. 성공과 실패에 따라 context.success(), context.failuareChallenge 등을 호출하여 인증 단계를 진행하고, 사용자에게 보여줄 페이..
Keycloak-infinispan k8s 세팅 관련 공부 내용 23년 8월 글인데, 벌써 keycloak에서는 이런 점들을 업데이트하고 k8s 환경에서 실행할 수 있도록 가이드를 바꿔놨다. 아래 글들은 k8s를 keycloak을 통해서 공부하는데에만 참고하고, 실제 keycloak의 k8s에서의 실행은 아래 문서를 참고하도록 한다.https://www.keycloak.org/getting-started/getting-started-kube   1. 이론 keycloak의 cache 작동 원리에 대해 기술해놓는다. built-in으로 infinispan을 사용하므로 주로 infinispan에 대한 내용을 다룰 것이다. 1.1 Cache의 distributed cache 작동 1.1.1 cache 작동 방식cache는 일반적으로 2가지 모드로 작동한다.Distribut..
[공식 문서] Keycloak DB 설정 Keycloak에서 제공하는 가이드 문서를 요약하는 글입니다.https://www.keycloak.org/server/db Configuring the database - KeycloakBecause cluster nodes can boot concurrently, they take extra time for database actions. For example, a booting server instance may perform some database migration, importing, or first time initializations. A database lock prevents start actions from confliwww.keycloak.org    1. DB Vendor, Driv..
Keycloak Email 서버 테스트 with Mailtrap 1. 목표keycloak으로 email 서버를 활용한 기능을 테스트해본다. 유저의 email을 검증하는 메일을 보내고, 메일의 링크를 눌렀을 때 사용자가 검증된(verified) 상태로 처리되어야한다.  2. Mailtrap 로컬에서 테스트를 위해서 SMTP 서버를 따로 만들 필요가 없다. Mailtrap과 같은 서비스에서 테스트가 가능하다. 아래 글의 Do you really need SMTP server? 항목을 살펴보면 로컬에서 SMTP를 만드는건 굳이 할 필요가 없다고 한다. 이를 제공하는 서비스들이 많기 때문이다.https://mailtrap.io/blog/setup-smtp-server/ Set Up Your Own SMTP Server in 2024 [Windows, Linux, Mac OS..