Programming-[Backend] (417) 썸네일형 리스트형 Virtual Thread 기초 kakao tech meet 영상을 보고 요약했다.https://www.youtube.com/watch?v=vQP6Rs-ywlQ 실무에서 써야하는데 단순히 설정값만 넣어주면 되긴하는데 어떤 배경이 있는지 알고는 써야할 것 같아서 정리해본다. Virtual ThreadJDK21에 추가된 경량 스레드OS 스레드를 그대로 사용하지 않고 JVM 내부 스케줄링을 통해서 수 십 ~ 수 백만개의 스레드를 동시에 사용할 수 있게 해줌 기존 Thread 문제 Thread per request기본 Web Request 처리 방식은 Thread per request인데, OS 스레드 개수 제한으로 인해 개수를 늘릴 수가 없었다. Blocking I/OThread에서 I/O 작업 시 Blocking이 일어나면서 처리시.. [TIL] TSID, ULID 를 사용해야하는가? 왜 Id값은 Long(bigint)로 하는가? ULID 사용 시 유의사항 TSID를 사용해야하는가?TSID는 보통 서버용 프로그래밍에서 사용하는 int, Long 타입의 auto increment에 비해 실행 중인 노드 정보 및 시간 정보를 포함하여 64비트 단위로 id를 생성하고 활용하는 방법이다. 대부분의 애플리케이션에서는 필요없다. DB가 분산시스템으로 2대 이상 존재하며 서로 싱크를 맞춰야하는(샤딩) 상황에서 필요하다. TSID에 대한 개념은 이 글에서 적지 않는다. 좋은 참고자료들이 많다.https://jsonobject.tistory.com/634https://tech-monster.tistory.com/228 TSID를 사용해야할 때, 사용하는 장점 여러 시스템이 동시에 DB에 insert를 할 때도 id가 중복나는 경우가 거의 발생하지 않기 때문에 안전하다. .. Keycloak Password Hashing Algorithm: Bcrypt 방식 적용하기 기본으로 지원되는 비밀번호 해싱 알고리즘argon2:: Argon2 (default for non-FIPS deployments)pbkdf2-sha512:: PBKDF2 with SHA512 (default for FIPS deployments)pbkdf2-sha256:: PBKDF2 with SHA256pbkdf2:: PBKDF2 with SHA1 (deprecated) 설정하지 않으면, 기본적으로 Argon2 해시 알고리즘이 사용됨default 알고리즘을 변경하여 사용하고 싶은 경우 하단의 명령어를 서버 시작시 입력 필요-spi-password-hashing-provider-default=에 들어갈 수 있는 알고리즘 리스트argon2pbkdf2-sha512pbkdf2-sha256pbkdf2 -> de.. [TIL] spring WebFlux, WebClient - 비동기 polling 배경서버에 요청이 들어오면 다른 서버에 비동기적으로 polling 요청을 보내야하는 상황. 처음에는 생각나는대로 while문과 try-catch 문을 사용해 구현했으나, 리팩토링 하다보니 Spring WebFlux를 사용하면 간결한 문법과 함께 polling 시에 벌어지는 여러 상황들을 대처할 수 있는 메서드들이 주어져서 편하게 코딩할 수 있다는 것을 알게되었다. 코드 @Asyncprotected CompletableFuture> pollingAuthResult(String authReqId, String realmId, String clientId, String expiresIn, String interval) { HttpHeaders headers = new HttpHeaders(); hea.. [카프카 핵심가이드] 9. 모니터링 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일13. 카프카 모니터링하기 13.1 지표 기초13.1.1 지표는 어디에 있는가?카프카의 모든 지표는 JMX(Java Management Extensions) 인터페이스를 통해서 사용할 수 있다.check_jmx, jmxtrans와 같은 JMX 인터페이스에 접속하는 프로그램이 있음Jolokia, MX4J 등은 카프카 프로세스에서 직접 실행되는 JMX 에이전트이다JMX 포트 찾기*주키퍼에 저장되는 브로커에 대한 정보는 /brokers/ids/{브로커 id}에 JSON 형식으로 저장된다. 여기에 hostname, jmx_port가.. [카프카 핵심가이드] 8. 클러스터간 데이터 미러링하기 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 10. 클러스터간 데이터 미러링하기카프카에서는 같은 클러스터 내의 노드간 데이터 교환을 `복제(replication)`라 부르기로 하고, 다른 클러스터간 데이터 복제는 `미러링(mirroring)`이라고 부르기로 한다. 10.1 클러스터간 미러링 활용 사례지역 및 중앙 클러스터: 각 도시의 데이터센터에 클러스터를 갖고, 각 데이터들을 중앙 클러스터에 미러링하여 비즈니스적인 분석을 해야하는 경우 활용고가용성(high availability)와 재해 복구(disaster discovery): 여분 준비규제: 국가별, 법적 문제.. [카프카 핵심가이드] 7. 멱등적 프로듀서와 트랜잭션 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 1. 멱등적 프로듀서 m1, m2, m1, m2, m3 -> 중복 발생enable.idempotence=trueproducer ID 요청 후, 해당 pid와 레코드 별 seq 넘버를 추가해서 중복 메시지를 없애고 순서 보장 트랜잭션 필요 상황 가정 '이체' 애플리케이션Alice -> Bob 에게 이체하는 상황전송 토픽 이벤트를 가져와서 출력 토픽 2개에 레코드를 쌓는다. (Alice -10$ 인출, Bob +10$ 입금)위의 트랜잭션이 완료되어야 오프셋 커밋이 찍힌다. 트랜잭션 없이 시스템 장애 발생 Alice -> .. 비동기 작업: @Async 어노테이션, 스레드 관리 배경서버에서 polling을 해야하는 상황이 생겼다. 아키텍처상 여러 서버들이 통신을 주고 받는데, 일렬로 구성된 3가지 서버에서 중간 서버의 코드를 작성해야하는 상황이였다. 구체적으로는 keycloak과 중간서버가 사용자의 인증을 기다려야하는 상태였다(아래 그림에서 External Auth Server). External Auth Server는 Keycloak으로부터 인증 요청이 오면, 일단 201로 응답을 한 뒤 AD에 요청을 보내고 polling을 통해 AD의 승인 여부를 기다린다. polling하는 코드는 대략 아래와 같다.@Async protected CompletableFuture> pollingAuthResult(String authReqId, String realmId, String c.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 53 다음