본문 바로가기

SpringBoot3

모든 API 엔드포인트에 공통 파라미터가 필요하다. 기존에 있던 API 모듈에 특정 파라미터를 거의 모두 추가해줘야 하는 요건이 생겼다. 추가할 파라미터를 String addParameter; 라고 하자. 아래와 같이 두 가지 정도로 방안을 생각해 볼 수 있다. Request DTO Object에 추가 @GetMapping public void get(@RequestBody DtoObject dto) {} public class DtoObject { private String addParameter; private ... } RequestParam을 모두 명시적으로 파라미터를 추가 @GetMapping public void get(@RequestBody DtoObject dto, @RequestParam(required=false) String addPa.. 2020. 4. 30.
Spring Cloud with Aws Secrets Manager 애플리케이션 프로퍼티에 DB 계정 정보를 하드코딩된 상태로 사용하지 않기 위해 AWS Secrets manager 를 사용하게 되었다. KMS 에 저장된 암호화 키로 secrets manager 에 자격 증명을 해서 필요한 보안 정보를 복호화해서 반환해주는 서비스이다. aws java sdk를 사용하려다 Spring Cloud에서 스프링 프로퍼티 소스를 이용해서 AWS Secrets manager 매커니즘을 사용할 수 있기에 org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config 를 간단하게 라이브러리를 추가해서 활성화시켰다. 스프링 부트에서 제공하는 환경별로 프로퍼티를 구성하는 것처럼 동일하게 프로필을 명시해주면 모든 서비스 .. 2020. 2. 3.
ThreadPoolTaskExecutor RejectedException 발생 Executor 로 스레드 관리가 용이해졌는데, https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html 이를 활용해서 비동기로 카프카에 이벤트 발생하여 전달하고 있다. TaskExecutor 가 설정해놓은 사이즈(PoolSize , QueueCapacity) 를 초과하면 OOM 이 발생하여 RejectedException 이 발생하여 중요한 이벤트들이 reject 되어버린다. RejectedExceptionHandler 기본값은 AbortPolicy(task reject 후에 throw exception)인데, ThreadPoolExecutor.CallerRunsPolicy를 설정하여 모니터링 시스.. 2017. 5. 31.