일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 맛집
- db
- devops
- jenkins
- Web Server
- linux
- Design Patterns
- JPA
- Oracle
- springboot
- laravel
- IntelliJ
- MySQL
- Git
- ubuntu
- Spring Boot
- redis
- javascript
- AWS
- tool
- Gradle
- Spring
- ReactJS
- docker
- elasticsearch
- java
- 요리
- it
- jsp
- php
- Today
- Total
목록Spring Boot (29)
아무거나
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/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 시리즈 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 메모리를 이용함으로써 개발자는 영역 확보의 상한을 ..
Spring Boot + Jacoco 를 활용한 코드 커버리지 관리 해당 포스팅에 대한 코드는 https://github.com/bkjeon1614/java-example-code 를 참고 Jacoco 란? Java 코드 커버리지를 측정하는 도구이다. (코드 커버리지란 소프트웨어 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표중 하나이다. 또한 코드 커버리지는 소스코드 기반으로 수행하는 화이트 박스 테스트를 통하여 측정한다.) Jacoco 를 사용할 경우 장점은 아래와 같다. 소프트웨어의 안정성을 높여준다. 사이드 이펙트가 발생할 확률이 높아진다. 간결하고 재사용성이 좋은 코드를 작성할 수 있게 해준다. 코드 커버리지 측정기준 코드 커버리지의 측정기준은 구문(Statement), 조건(Cond..
Spring Boot + Junit5 를 활용한 테스트 코드 분리 해당 포스팅에 대한 코드는 https://github.com/bkjeon1614/java-example-code 를 참고 테스트 분리를 왜 하는가? 각각의 테스트 규칙에 따라 테스트 코드를 작성하게 될 경우 통합 테스트가 단위 테스트보다는 아무래도 전체적으로 하다보니 수행속도가 느릴 수 밖에 없다. 즉, 개발과정에서 통합 테스트를 지속적으로 수행하게 된다면 개발생산성이 매우 저하 될 것이다. 그러므로 테스트 분리에 따라 테스트 수행을 하는것이 더 효과적일 수 있다. Given - When - Then Pattern Given - When - Then Pattern 은 테스트 코드를 접해본 개발자들은 한 번쯤은 보았을거라고 생각한다. 해당 ..