파란하늘의 지식창고
article thumbnail
kubernetes에 Prometheus, Grafana 설치하고 metric 정보 수집해 보기
Study/Docker & Kubernetes 2023. 3. 15. 02:45

공부 목적으로 설치해 보는 과정을 정리한 것이기 때문에 실제 운영과 다릅니다. Observability, Monitoring에 대하여 Observability(관측 가능성)는 시스템의 출력 변수를 사용하여 상태 변수에 대한 정보를 알아낼 수 있는지를 나타내는 용어이다. 이런 정보를 확인하기 위해서는 데이터를 수집하고 저장하여 지속적으로 관찰, 감시할 수 있는 모니터링이 필요하다. 저장할 데이터의 종류는 크게 log, metric, trace (추가로 event?)으로 나누어 볼 수 있다. log는 일반적으로 개발하면서 logger를 통해 남기는 데이터라고 생각하면 된다. metric은 현재 application의 상태에 대한 지표를 주기적으로 수집하여 시간별 상태를 확인할 수 있도록 시계열 데이터(tim..

kubernetes ConfigMap, Secret 사용해 보기
Study/Docker & Kubernetes 2023. 3. 11. 20:11

ConfigMap https://kubernetes.io/ko/docs/concepts/configuration/configmap/ key-value 쌍으로 이루어진 데이터를 저장하는데 사용하는 API Object이다. pod는 volume에서 environment variables, command-line argument 로 configmap을 사용할 수 있다. configmap은 암호화를 제공하지 않으므로 계정/비밀번호 같은 데이터는 secret을 사용하면 된다. 기본적인 구성은 다음과 같다. 일반적인 key/value 쌍으로 이루어진 데이터 key를 파일이름으로, value를 파일의 내용으로 구성할 수도 있다. apiVersion: v1 kind: ConfigMap metadata: name: ga..

kubernetes PersistentVolume, PersistentVolumeClaim 사용해 보기
Study/Docker & Kubernetes 2023. 3. 11. 18:59

docker container는 재시작시 모든 데이터가 초기화된다. 데이터를 유지하기 위해 기존에는 Volumes의 hostPath 설정을 통해 host의 디렉토리를 참조하여 사용하였었다. mariadb를 사용하는 경우 기존 설정은 다음과 같았다 apiVersion: apps/v1 kind: Deployment metadata: name: mariadb-deployment labels: app: mariadb spec: replicas: 1 selector: matchLabels: app: mariadb template: metadata: labels: app: mariadb spec: containers: - name: mariadb image: mariadb ports: - containerPort:..

Spring Data의 Pageable parameter로 사용하기
Study/Java 2023. 3. 1. 01:16

Spring Data의 Pageable을 사용한 경우 이 pageable 객체를 parameter로 받아 처리하고 싶은 경우가 있다. 예를 들어 게시글 목록을 조회하는 경우 다음과 같은 controller를 사용한다고 하면 @GetMapping("/findByBoardAlias") public Page findByBoardAlias(@RequestParam String boardAlias, Pageable pageable) { return boardArticleService.findByAlias(boardAlias, pageable); } 위와 같이 getmapping에서 Pageable을 처리하게 된다. 위의 호출을 예를 들어 단순히 boardAlias로만 조회를 하는 경우 다음과 같이 호출한다. /f..

Spring Boot 프로젝트 logback accesslog 설정하기 (Tomcat Servlet 기준)
Study/Java 2023. 2. 17. 05:18

Spring Boot Logback 사용 기본 설정 Spring Boot를 사용한 application에서 로그를 사용하려면 다음 dependency를 추가한다. (현재는 logback이 기본 참조되어 있는데 과거엔 log4j -> slf4j가 기본 설정이었다.) org.springframework.boot spring-boot-starter-logging Spring Boot가 제공하는 logback 기본 설정 위치는 spring boot의 base.xml 파일이며 다음과 같다. https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot/src/main/resources/org/springframewor..

maven multi module project에서 jib build 사용하기
Study/Java 2023. 2. 15. 04:34

spring boot project를 docker image로 만들 때 jib build를 사용한다. mvn -B -U clean deploy jib:build multi module project인 경우 전체 모듈 중 일부만 jib build 할 대상이 될 것이다. 이런 경우 -pl 옵션으로 대상 모듈을 따로 지정하여 jib build 하게 된다. 이 경우 다음과 같이 명령이 나뉜다. mvn -B -U clean deploy mvn -B -pl 모듈1,모듈2 jib:build 이 설정으로도 문제없이 동작하지만 모듈이 추가되거나 삭제될 경우 위의 ci 설정도 매번 변경해주어야 한다. 좀 더 나은 방법으로 package 시 jib build도 같이 수행해 주도록 설정을 할 수 있다. https://gith..

article thumbnail
Spring Session 사용해 보기
Study/Java 2023. 2. 3. 20:31

소개 https://docs.spring.io/spring-session/reference/index.html Spring Security를 사용하여 로그인을 하면 기본 설정이 세션 정보를 해당 application의 ConcurrentMap에 들고 있게 된다. 단일 서버가 아닌 여러 대의 서버로 운영하고 있다면 세션 정보를 여러 서버가 같이 공유할 수 있어야 한다. Spring Session은 사용자의 session 정보를 공유하기 위한 API 및 구현체를 제공한다. Spring Session은 Redis, JDBC, Hazelcast, MongoDB에 대한 모듈을 제공한다. (Apache Geode는 문서에 따로 나와 있는데 왜 에 대한 지원은 3.0.0에 보이지 않았다.) 이 글을 작성하는 당시(2..

article thumbnail
Spring Boot Thymeleaf 사용해 보기
Study/Java 2023. 2. 1. 20:22

thymeleaf도 하도 오래간만에 보니 새로 배우는 느낌이어서 정리하면서 써보려고 한다. FE, BE가 완전히 분리되지 않는다는 게 단점이지만 반대로 보면 Thymeleaf가 BE와 연동이 매우 쉽다는 것이 장점이기도 하다. Spring Boot에서 Thymeleaf 사용하기 기본 사용 Spring Boot에서 Thymeleaf를 사용하려면 다음 dependency를 추가하면 된다. org.springframework.boot spring-boot-starter-thymeleaf 이 dependency를 추가하면 Spring Boot AutoConfigure는 Thymeleaf를 사용할 수 있는 기본적인 설정을 제공해 준다. 현재 spring-boot-starter-thymeleaf는 thymeleaf..