일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hashing
- Salting
- Leaderboard
- Grafana
- setter
- zset
- spring boot
- propogation
- Redis
- micrometer
- 동일성
- blue-green
- Workload
- 스프링부트
- hammerDB
- 동등성
- swagger
- Lombok
- salt
- Benchmarks
- Kafka
- OLTP
- Software maestro
- traceId
- 로깅
- logback
- 소프트웨어 마에스트로
- SW Maestro
- docket
- SW 마에스트로
- Today
- Total
목록Spring Boot (7)
김태오
스프링 부트 로그에 너무 많은 로그가 쌓여 로그를 뒤져 오류를 찾는 등 작업을 하고 싶을 때 불편한 경우가 있다. 혹은 최대 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..
Spring Boot 의 Lombok annotation 중 흔하게 @Getter 와 @Setter 를 사용한다. public class Person { private String name; } Person 이라는 class를 정의한다. public String getName() { return this.name; } public void setName(String name) { this.name = name; } 그러면 class 내에 이런 식으로 getter 와 setter 함수를 만든다. @Getter 와 @Setter 는 이런 귀찮은 함수 정의를 빠르게 해 준다. 개발 속도가 빨라지고, boilerplate code의 감소, 쉬운 리팩토링 등 여러 장점이 있다. @Getter(AccessLevel..
When handling requests from the client in the controller, there are various choices of lombok annotations to select from. The frequently used ones are @RequestBody, @ModelAttribute, @RequestParam, @PathVariable. In this post, I will discuss the pros and cons of each and the suitable situations to use them. @RequestBody vs @RequestParam @RequestParam often handles GET requests, where the data tha..