Programming-[Backend] (393) 썸네일형 리스트형 [TIL] keycloak Theme 변경으로 admin console 접근이 불가할 때 해결방법(with 테마 캐시) 배경master realm의 console에서 커스텀한 테마를 적용해볼려고 했다. master는 슈퍼 유저용의 특별한 realm 이므로 굳이 테마를 변경할 필요가 없고, 기본 테마를 사용하는 것이 좋다. 그런데 실수로라도 이렇게 변경한 경우, 테마에 에러가 있으면 master realm의 admin console에 접근이 불가능하여 테마를 원상 복귀할 수가 없다. 해결방법DB를 수정하는 것 외에 다른 방법을 찾지 못했다. admin-cli client로 접근하여 REST API 방식으로 수정할 수 있으나, admin-cli의 client secret을 알아야하는 등의 문제가 있다면 이 방법은 불가하기 때문이다. DB의 값을 직접 수정하는 것은 금기 사항이다. 그러나 realm의 테마 값을 변경하는 것은 .. kafka Consumer의 offset(Lag)이 1이 지속되는 현상(트랜잭션 적용 시) MSK 설정에 따른 컨슈머 lag 1 발생 현상중복 및 정확히 한번만 처리하기 위한 멱등적 프로듀서 설정 및 카프카 트랜잭션 적용kafka 에서 트랜잭션 커밋 메시지를 찍는데, 이 때 컨슈머가 해당 트랜잭션이 적용된 커밋 메시지의 오프셋은 읽지 않음이것은 kafka에서 발급하는 해당 파티션의 트랜잭션 커밋 메시지가 unreadable이기 때문이며 이에 따라 컨슈머는 트랜잭션이 적용된 커밋 메시지를 읽지 못하므로 항상 컨슈머 lag 1이 발생하게됨 EstimatedMaxTimeLag 추정치 지표 실험14시 10~15분 -> 5분간 kafka 브로커로 직접 100개 호출트랙잭션 미적용 프로듀서라 Offset Lag 014시 25~30분 → 5분간 트랜잭션 적용된 프로듀서를 통해서 100개 호출트랜잭션 적용 .. Keycloak Scope 설정 방법(Evaluate, mapper, dedicated, full scope allowed) 1. User Attribute 추가, 토큰에 포함 확인 1.1 User Attribute 추가User Profile에 속성값을 추가하고(nickname), Client Scopes에 추가하여 Realm 내에서의 Scope를 설정할 수 있다. User Profile에서 속성을 추가할 때, Enabled when 값을 default인 Always로 설정하면 아래 내용대로 적용된다. 1.2 토큰 확인scope를 생성할 때 Default로 생성하는 경우 access_token 및 id_token에 기본적으로 포함된다. 다만 따로 설정하지 않으면 token endpoint 응답 body의 "scope" 항목에는 보이지 않는다(아래 그림). 주의할 사항은 로그인하는 사용자의 nickname 값 자체가 설정되어.. k8s 환경에서 keycloak multi pod로 실행하기 keycloak은 인스턴스가 여러 개일때 서로 세션 정보 등을 공유하기 위해 infinispan이라는 캐시를 사용한다. 이런 세션 공유를 위해서는 서로 통신해야하는데, 이 때 쓰이는 통신 스택의 종류로 UDP, TCP, Kubernetes 등이 있다. JGroups자바로 작성된 라이브러리로 일대일 또는 일대다 통신을 지원한다. 프로세스 그룹을 생성하고 그룹 내 멤버들이 서로 메시지를 주고 받을 수 있게 해준다. 이는 클러스터링, 분산 캐시 및 채팅 애플리케이션에 활용될 수 있다. keycloak의 infinispan도 JGroups를 사용한다. k8s와 같이 pod이 소멸되고 생성될 수 있는 환경에서는 각 pod의 주소를 알아야하는데, 이를 구현하기 위해 keycloak pod들을 headless ser.. [비공개] Keycloak 클라이언트별 Admin 관리자 만들기 보호되어 있는 글입니다. Keycloak 세부 권한 관리(admin-fine-grained-authz) Master Realm(Master) : Realm Level Realm-Role설명 비고admin• 모든 Realms을 관리 할 수 있는 슈퍼 유저• 새로운 realm을 생성하면 새로운 realm에 대한 권한도 부여됨create-realm• 새로운 Realm을 생성 할 수 있는 권한 기본적으로 생성되는 Master 영역은, 여러 영역을 관리 할 수 있음 : master-realmMaster에 있는 User에게는 다른 영역을 관리할 수 있는 권한을 부여할 수 있음master 영역에서만 여러 영역을 동시에 관리할 수 있음즉, master 영역의 사용자만 master-realm의 역할을 가질 수 있음master-realm 안에서만 부여 가능 (Master > Realm roles 확인 가능)모든 영역이 아.. 성능 테스트: K6, influxDB, grafana, RPS, 지연율과 DB Connection pool 지난 jmeter와 chaos monkey를 이용한 성능 테스트에 이은 글이다. 이번에는 K6, influxDB, grafana를 통해 성능 테스트를 하는 글이다. 지난글:https://whitepro.tistory.com/1065 성능 테스트: jmeter, @Profile, chaos monkey배경로컬에서 잘 만든 애플리케이션을 클라우드 환경 등에 배포하기 위해서는 컴퓨팅 자원을 얼마나 쓸 것인지 결정하는 것이 필요하다. 실제 애플리케이션의 요구사항에 따른 적절한 자원 임whitepro.tistory.com 1. K6개요 및 설치ref.) https://velog.io/@prismy/%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8-k6grafanainflux.. JPA, ddl-auto, MYSQL, index 등 테이블 생성 기초 정리 Spring Boot + JPA + Hibernate + MYSQL 조합으로 DB를 구축할 때 주의해야할 점들에 대해 기록해둔다. 1. ddl-auto로 만들어진 순서 그대로 DB 컬럼의 순서들을 그대로 두지 말 것 hibernate.ddl-auto = create로 처리하면 아무런 세팅이 되지 않은 DB에서 Entity들을 이용해 빠르게 Table 들을 만들어낼 수 있다. 하지만 여기서 컬럼들의 순서들을 변경하지 않으면 안된다. 왜냐하면 DB 컬럼의 순서대로 차례대로 데이터를 읽어나가기 때문이다. DB는 블록 단위로 데이터를 저장하고, 조회 시에 레코드의 앞에서부터 읽어들이기 시작한다. 따라서 DB 컬럼의 순서는 PK, FK, 카디널리티가 높은 순서대로 배치하고 날짜 등 Range로 조회될 가능성이 .. 이전 1 2 3 4 ··· 50 다음