일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- JPA
- 맛집
- 요리
- it
- ubuntu
- jsp
- Spring
- redis
- MySQL
- ReactJS
- linux
- elasticsearch
- php
- jenkins
- devops
- java
- springboot
- db
- Spring Boot
- tool
- Git
- Design Patterns
- javascript
- Web Server
- IntelliJ
- laravel
- Oracle
- Gradle
- AWS
- docker
- Today
- Total
목록Spring (73)
아무거나
Aspect 를 활용한 특정 metric 의 tag 의 여러 value 값 별로 시간단위로 실시간 카운트 저장 예시로 호출시 특정 타입번호기준으로 페이지를 이동하는 기능에 타입번호_시간단위로 카운트를 저장하는 기능을 생성 (참고: https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase) Custom Annotation 생성 [CustomCounter.java] package com.example.bkjeon.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annot..
이전글: https://bkjeon1614.tistory.com/785 [Spring Actuator] Example 5편 - Gauge 이전글: https://bkjeon1614.tistory.com/784 Gauge Counter 타입인 경우 increment 메서드만 제공되지 decrement 메서드가 존재하지 않는다. 그러므로 커졌다 작아졌다 하는 값으로는 Gauge 를 사용하면 된다. 또한 Co bkjeon1614.tistory.com Timer 시간을 측정하는 metric 샘플 Timer [TimerConfig.java] package com.example.bkjeon.base.config.actuator.timer; import io.micrometer.core.instrument.Meter..
이전글: https://bkjeon1614.tistory.com/784 Gauge Counter 타입인 경우 increment 메서드만 제공되지 decrement 메서드가 존재하지 않는다. 그러므로 커졌다 작아졌다 하는 값으로는 Gauge 를 사용하면 된다. 또한 Counter 는 counter 값을 조회시도 하는지 여부와 무관하게 값이 증가될 때마다 내부값 갱신을 해줘야한다. 그러나 Gauge 는 조회시도 할 때만 해당 값을 계산하면 된다. 샘플코드 기본등록 [QueueManager.java] package com.example.bkjeon.base.services.api.v1.actuator.service.gauge; import org.springframework.stereotype.Service;..
이전글: https://bkjeon1614.tistory.com/783 Metrics Tags /actuator/metrics/{메트릭명} 에 접속할 경우 availableTags 에 존재하는 tag 의 values 값에 대한 상세 정보를 보고 싶다면 만약 tag: test, value: bong 이라고 가정해볼경우 /actuator/metrics/{메트릭명}?tag=test:bong (즉, tag={key}:{value} Querystring 형태이다) metrics 에 tag 를 직접 넣어보자. 샘플코드 [TagController.java] package com.example.bkjeon.base.services.api.v1.actuator.controller; import com.example.bk..
이전글: https://bkjeon1614.tistory.com/782 Counter (https://micrometer.io/docs/concepts#_counters) 횟수를 세어 metric 으로 제공 단, 자연수만 가능하며 소수나 음수는 불가능하며 일반적으로는 cache hit 에 대한 누적 counter 및 http request 누적 횟수 등과 같이 지금까지 특정 이벤트가 몇 번 발생했는지 누적값을 제공할 때 Counter 를 사용한다. () 사용법 Counter.builder() [ApplicationRequestManager.java] package com.example.bkjeon.base.actuator.counter; import io.micrometer.core.instrument...
이전글: https://bkjeon1614.tistory.com/782 [Spring Actuator] Example 2편 - 각 Info Endpoint 설명 및 Custom Info Endpoint 생성 설명 각 Info Endpoint 설명 및 Custom Info Endpoint 생성 설명 Health Endpoint show-details health 정보에서 components > diskSpace 의 details 필드에 상세 정보를 보여줌 [application.yml] ... management: endpoint: health: show-details: alway bkjeon1614.tistory.com 각 Info Endpoint 설명 및 Custom Info Endpoint 생성 설명..
소스코드는: https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 를 참고하시면 됩니다. 개념 Actuator 은 상태정보를 Hateoas(헤이티오스) 를 사용하여 표시한다. (ex: /actuator) Hateoas(헤이티오스) 란 서버가 클라이언트에게 하이퍼 미디어를 통해 정보를 동적으로 제공 (API 에서 리소스에 대해 어떠한 행동을 할 수 있는지 URL 을 전달하여 클라이언트가 참고하고 사용할 수 있도록 하며 해당 리소스의 상태에 따라 링크 정보가 바뀌며 동적으로 리소스를 구성) Actuator Lib (의존성 라이브러리) core lib 는 micrometer 를 사용하고 있다. (중요) micro..
[Redis 시리즈 2편] Lettuce 를 사용한 Read / Write 분리 코드는 https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 참고 부탁드립니다. 원활한 세팅을 위해 기존 1편에서 설치된 Redis 를 제거 후 진행하자. 환경 (Reader DNS 를 통한 Replica Node 들에 분산하는 방법으로 가정) Redis Master 1대 Slave 2대 Docker Compose 로 설치 (with. Docker) $ docker network create app-tier --driver bridge [docker-compose.yml] version: '2' networks: app-tier..
[Redis 시리즈 1편] Spring Boot 에 Redis 라이브러리인 Lettuce 적용 코드는 https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 참고 부탁드립니다. Lettuce Lettuce 란 Netty(비동기 이벤트 기반 고성능 네트워크 프레임워크) 기반이며 고성능, 확장가능, 스레드세이프등을 지원한다. Lettuce 를 선택한 이유 주로 java 쪽에서는 Lettuce 말고도 Jedis 도 많이 사용한다고 한다. 그러나 Jedis 에 비해 몇 배 이상의 성능, 빠른 피드백, 심플하게 디자인된 코드, 잘 기재된 공식문서 등의 이유로 Lettuce 를 많이 사용하고 있는 추세라고 한다. 환경 ..
시작에 앞서 먼저 Java8 부터 삭제되는 영역인 Permanent Generation 부터 알아보자면 Class 혹은 Method Code 가 저장되는 영역이다. 줄여서 PermGen 이라고 하며, Heap 영역에 속한다. PermGen 에는 로드된 클래스의 정보, 정적 변수, 상수 정보 등 변하지 않을 것이라고 어느 정도 보증되는 데이터가 저장된다고 한다. PermGen -> Metaspace 영역으로 변경된 이유 PermGen 은 메모리가 제한되기 때문에 OOM(=OutOfMemoryError) 이 발생하게 된다. 그래서 해당 문제를 해결하기 위해 Native 메모리를 사용하는 Metaspace 로 변경되었으며 Metaspace 영역은 Native 메모리를 이용함으로써 개발자는 영역 확보의 상한을 ..