본문 바로가기
관리자

Programming-[Backend]

(405)
[비공개] 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로 조회될 가능성이 ..
[TIL] JVM HeapSize, HeapDumpPath 설정 buildPack의 bootBuildImage를 통해 JvmOption을 줄 때, 아래와 같이 설정함 static def getEnvs(heapDumpPath, envVal) {def jvmOptions = ["-Xms512m","-Xmx1024m","-XX: MaxDirectMemorySize=100M","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=${heapDumpPath}"]return [ "BPE_DELIM_JAVA_TOOL_OPTIONS": " ", "BPE_APPEND_JAVA_TOOL_OPTIONS": jvmOptions.join(" ")] Heap Memory Size를 512 ~ 1024 MB로 설정, nio 패키지..
Swagger UI(feat. keycloak Open API) 1. Swagger UISwagger UI라는 도커 이미지가 제공된다!https://github.com/swagger-api/swagger-ui/blob/HEAD/docs/usage/installation.md  docker run -p 80:8080 swaggerapi/swagger-ui  해당 도커 컨테이너를 실행하고, localhost로 접속하여 위 쪽 입력창에 .json 파일의 웹 주소를 입력하면 API를 사용할 수 있는 Swagger 문서가 생성된다.   나는 keycloak의 REST API를 확인해보기 위해서 keycloak의 OPEN API 문서의 주소를 붙여넣었다.https://www.keycloak.org/docs-api/latest/rest-api/openapi.json   2. Ke..
[TIL] @JsonInclude: 응답 객체 json의 끝부분이 깨질 때 문제외부 서버에서 응답을 받아왔는데, 맨 끝에 }로 json이 닫히는 부분이 제대로 오지 않아서 parsing이 일부 실패하여 오류가 나고 있었다. 원인Ro 객체로 응답을 지정하고 있었는데, body의 마지막 데이터들이 results가 아닌 code, name, description 속성값들이 모두 null로 오고 있었다. json에는 null이 없으므로 null이 맨 마지막에 오면 역직렬화 시에 위와 같이 불완전한 parsing이 일어날 수 있다. 해결책 1. 응답하는 쪽에서 null 데이터가 있는 경우 "null"로 String 처리해주는 것이 좋다.2. Ro 객체에 아래처럼 @JsonInclude(JsonInclude.Include.NON_NULL)을 추가해주면 null 데이터는 역직렬화시에 무시되..
성능 테스트: jmeter, @Profile, chaos monkey 배경로컬에서 잘 만든 애플리케이션을 클라우드 환경 등에 배포하기 위해서는 컴퓨팅 자원을 얼마나 쓸 것인지 결정하는 것이 필요하다. 실제 애플리케이션의 요구사항에 따른 적절한 자원 임계치를 설정하고 그에 맞게 설정해야 불필요한 자원 낭비를 막을 수 있다. jmeter애플리케이션을 테스트하기 위한 대상 API를 선정했다면, 해당 API 쪽으로 많은 요청을 한 번에 쏴볼 수 있는 도구가 필요한데, 이를 가능하게 해주는 것이 jmeter이다. 아래 jmeter 홈페이지에서 실행파일이 포함된 바이너리 파일을 다운로드 받고, 압축을 푼 뒤, 내부의 /bin/jmeter 파일을 실행하면된다.https://jmeter.apache.org/download_jmeter.cgi 아래 그림처럼 Thread Group -> H..