일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- slow query
- blue-green
- docket
- 동등성
- minreplica
- eks
- propogation
- 스프링부트
- spring boot
- Kafka
- Helm
- Strimzi
- Kubernetes
- Salting
- keda
- Leaderboard
- Software maestro
- MSSQL
- zset
- Database
- SW 마에스트로
- SW Maestro
- Grafana
- traceId
- hammerDB
- yml
- Benchmarks
- logback
- 0 replica
- Debezium
- Today
- Total
목록Spring Boot (9)
김태오

https://ystc1247.tistory.com/entry/ORM%EC%97%90%EC%84%9C-VARCHAR-%ED%83%80%EC%9E%85%EC%9D%98-%EC%BB%AC%EB%9F%BC%EC%9D%B4-%ED%8F%AC%ED%95%A8%EB%90%9C-%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC-%ED%83%80%EC%A7%80-%EB%AA%BB%ED%95%98%EB%8A%94-%EB%AC%B8%EC%A0%9C-SQL-Server 의 해결책으로, 파라미터들을 기존의 nvarchar값으로 두되 index를 타는 파라미터들을 varchar/char로 쿼리할 수 있는 방안을 마련해야 한다. 그냥 모두 varchar로 쏘는 방법도 존재하는데, 이는 jdbc url에 setSe..
느린 데이터베이스 쿼리를 콘솔에 로깅하려는 시도를 했다. HTTP intercepter과 비슷한 방식으로 데이터베이스에 쿼리가 처리되는 순간 hibernate 혹은 hikariCP 관련하여 설정파일 구현이 필요하지 않을까 싶었는데 생각보다 간단히 해결할 수 있다. 그냥 application.properties 에 spring.jpa.properties.hibernate.generate_statistics=truelogging.level.org.hibernate=INFOhibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=원하는 단위 시간 MS (0초과) 를 추가하면 된다. yaml 로 설정하는 경우도 마찬가지로 늘 그랬듯 . -> : 로 해주면 된다. 당연히..
스프링 부트 로그에 너무 많은 로그가 쌓여 로그를 뒤져 오류를 찾는 등 작업을 하고 싶을 때 불편한 경우가 있다. 혹은 최대 throughput 이 정해져 있는 AWS CloudWatch 에 로그가 쌓이는 경우 로그 누락 등의 치명적인 문제가 생길 수 있다. 특히 스프링 부트에서 쌓는 로그 뿐만 아니라 쿠버네티스나 ELB 에 배포 후 쌓이는 추가적인 부수 로그들이 있을 때 굳이 로그를 남기지 않는 판단을 할 수 있다. 다음은 간단하게 원하는 로그를 제외시키는 방법이다. import ch.qos.logback.classic.spi.ILoggingEvent import ch.qos.logback.core.filter.Filter import ch.qos.logback.core.spi.FilterReply c..
FeignClient 는 Spring Cloud 의 HTTP client 이다. microservice 등의 멀티모듈 환경 구성시 HTTP request 와 response 를 쉽게 주고받을 수 있도록 한다. RestTemplate 과 WebClient 등의 선택지도 있지만 이들보다 코드가 훨씬 보기 편하고 간결하다는 장점이 있다. implementation("org.springframework.cloud:spring-cloud-starter-feign:1.4.7.RELEASE") 일단 이런걸 버젼 맞춰서 넣어준다. @FeignClient(name = "feignclient") sealed interface FeignController { @PatchMapping("/test") fun test( @Re..
Spring Boot 배포 환경 시, 서버 로직에서 오류가 발생했을 때, 쉽게 오류를 찾을 수 있는 방법으로 traceId 를 사용하여 로그가 저장되어 있는 곳을 탐색하는 것이다. 예로 AWS CloudWatch 의 로그 그룹에서 "${traceId}" 등으로 검색하는 방법이 있겠다. 그렇기에 traceId 가 원활히 로깅되는 것이 중요한데, single thread 동기 작업에서는 크게 어렵지 않다. 그러나 비동기적 작업을 원할 시, 로직이 돌며 다른 thread 에서 작업이 이어지는 경우가 있는데, 이런 경우에서 원 쓰레드(부모 쓰레드) 의 traceId 가 작업 쓰레드(자식 쓰레드)로 전파되는 데에 문제가 발생한다. 이를 전파할 수 있어야 작업 쓰레드에서 문제가 발생했을 경우 traceId 를 타고..
동일성 (identity) 와 동등성 (equality) 는 자주 헷갈리는 개념이다. 전자는 Java 에서 ('==') operator 의 개념이고, 후자는 (equals()) method 개념이다. Identity 우선 자바에서는 모든 객체가 참조로 접근된다. '==' 연산자를 쓸 때는 좌우의 실제값이 아닌 reference 자체로 접근된다. 단, primitive type (int, char, float ...) 에서는 실제값으로 접근된다. reference 로 접근한다는 것은, 실제 값이 같을지언정 주소값이 다르다면 '==' 연산에서는 false 가 나온다는 뜻이다. Integer x = 100; Integer y = 100; System.out.println(x == y); 이런 코드에서는 fal..