문제의 발생 새로운 프로젝트를 시작하면서, 로그를 다시 붙여야할 일이 생겼다. 기존 프로젝트에 로그를 개발하면서 했던 파이프라인을 그대로 가져와서 붙여넣었는데, POST 요청에서 이상하게 동작하지 않았다. 원인을 분석하면서 생긴 일을 정리해보려고 한다. 우선 현재 시스템에서 로그를 어떻게 찍는지 간단히 정리해보고 가자. 1. Controller에서 API 요청을 받아서 서비스로직까지 처리한 후 return 2. 이 return 할 때 AOP AfterReturning을 통해 캐치 3. 이때 발생하는 return object와 요청 정보를 담고 있는 HttpServletRequest을 통해서 로그를 생성 이 과정 중 3번에서 문제가 발생했다. 사실 스프링부트에서 POST 요청의 RequestBody를 가져..
이전 글에서 AOP로 로그를 처리하도록 구현하고 만족도가 너무 높아서 추가적으로 AOP로 간단히 처리할게 뭐가 있을까에 대해 고민했었다. 코드를 쭉 보다보니, 요청 객체를 검증하기 위해 사용하는 @Valid 어노테이션과 BindingResult가 눈에 들어왔다. @GetMapping("...") public ResultVo validRequestTest(@Valid RequestObject requestObjectDto, BindingResult bindingResult) { if(bindingResult.hasErrors()) { throw new BadRequestException(); } return exampleService.get(requestObjectDto); } 요청 객체가 정상적이지 않을..
이전글 스프링부트에 로그 남기기의 개선 사항이다. 이렇게 로그를 남기려고 하니, 몇 가지 문제가 있었다. 1. 로그가 두 번 남는 문제 2. message에 똑같은 로그가 한번 더 출력되는 문제 3. 모든 API 마다 set을 해줘야함 4. 윗 글엔 작성하지 않았지만, 요청 객체를 남기는 방식의 문제 이번 글에서는 1, 2, 3번 내용만 다룰 거고, 4번은 다음 글에서 다루려고 한다. 로그가 두번 남는 이슈 이 문제는 slf4j와 logback 설정을 잘못 이해해서였다. 기존 logback-spring.xml을 열어보면 아래와 같이 설정되어 있었다. [ignore] [ignore] [ignore] [ignore] [ignore] [ignore] [ignore] 별도의 새로 구현한 로그매니저를 통해 관리하..
이전 게시글(Thread Safety)과 연관된 글로 과부하 로직을 구현하며 고민했던 것에 대한 내용 정리이다. 현재 운영/개발 중인 서버에 보안 로직으로 과부하 제어 로직을 추가하게 됐다. 아래는 과부하 로직의 명세이다. WAS로 들어오는 모든 request를 카운팅한다. 카운팅한 횟수는 response로 빠져나갈 때 차감된다. request가 reponse로 빠져나가지 않으면 count는 계속 누적되고, 특정 임계치 이상이 넘어가면 서버의 과부하 상태를 response로 내보낸다. 위 로직을 구현하기 위해 Apache Tomcat의 멀티쓰레드 구조에 대한 대응으로 Atomic Integer 클래스를 이용해 동시성 이슈를 제어하도록 했다. 이번 글에서는 과부하 제어 로직이 위치할 부분에 대한 쓰려고 한..
- Total
- Today
- Yesterday
- ChatGPT
- openAI API
- chat GPT
- serverless
- CloudFront
- java
- OpenFeign
- Log
- AWS EC2
- Spring
- AWS
- 스프링부트
- cache
- Kotlin
- docker
- 람다
- 인프런
- lambda
- Elastic cloud
- springboot
- S3
- OpenAI
- elasticsearch
- GIT
- MySQL
- EKS
- terraform
- awskrug
- AOP
- JWT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |