본문 바로가기
728x90

전체 글119

CloudWatchClient로 CPUUtilization 메트릭 Data 가져오기 (feat. CPU 상태 확인) for Kafka Throttling implementation("software.amazon.awssdk:cloudwatch:2.25.30") import software.amazon.awssdk.services.cloudwatch.CloudWatchClientimport software.amazon.awssdk.services.cloudwatch.model.*@Componentclass CloudWatchMetricsService { private val cloudWatchClient: CloudWatchClient = CloudWatchClient.create() fun getCpuUtilization(instanceId: String): Double { val request = GetMetricStatistic.. 2025. 4. 26.
Resilience4j 기본 활용 시스템이 장애가 발생하는 상황에서도 탈력적으로 시스템을 버티게 만들어주는 라이브러리 [주요기능]1. Circuit Breaker : controller에서 이슈 시 일정 시간동안 호출 막기, 일정시간 경과 후 재시도, 괜찮으면 정상처리 2. Retry : 실패한 요청을 자동으로 재시도 3. Rate Limit : 초당 호출 수 제한(과도한 트래픽으로 부터 시스템 방어) 4. Bulkhead : 어떤 서비스가 과도하게 자원 차지 시 다른 서비스의 영향을 없앰(쓰레드 풀 격리) 5. TimeLimiter : 특정 작업이 오래 걸리 시 강제종료 Rate Limit AOP예시import io.github.resilience4j.ratelimiter.RateLimiter;im.. 2025. 4. 25.
Data Converting 을 왜 DTO Static 으로 처리할까? Domain entity 를 통해 db 조회 값을 가지고와서 처리 한 뒤 반환하기 위해 DTO로 값을 할당할 것이다.이것을 service layer나 controller 또는 repo class 내 직접하는 경우가 있는데 (new 로 객체 생성하여), 이렇게 하는 것보다 DTO 내 static 을 사용하여 정적메서드로 정의하면 클래스를 기반으로 객체를 만들지 않고 호출이 가능하며, 해당 메서드에 대해 한번만 메모리 할당할 수 있다는 장점이 있다. 2025. 4. 21.
Redis Cluster 설명 앞써 블로그에서는 docker file 기반의 redis를 어떻게 띄우는지를 설명했었다.하지만 실무에서는 이렇게 단일 redis 서버하나 띄워놓고 운용하기에는 리스크가 너무 크다.가장 큰 리스크는 서버 하나가 유일한데 그게 뻗어버리면?관련된 서비스가 마비될 것이다. 따라서, 원활한 서비스를 위해서는 2가지 중 하나를 선택해야 하는데 그중 하나가 Sentinel 이고 다른 하나가 Cluster 구성이다. 1. Sentinel - HA 지원, Master & Slave 의 Replica 구성 가능 - 과반수의 투표체계를 사용하기 때문에 홀수개의 redis를 구성해야한다.(그중 하나가 Master 나머지 두개가 Slave) - Sentinel 구성을 위해서는 기존 redis 와 별도의 추가 구.. 2025. 4. 21.
다빈치 리졸브에서 영상 짜르고 내보내기 인프런등과 같은 vod 기반의 강의를 작성할 경우, "편집"이라는 매우 귀찮은 작업을 하지 않을 수 없다 물론 영상을 찍을때 편집없이 하면되지만, 만약 10분 영상중 9분 50초까지 잘 찍다가 실수를 한경우라면? 10분을 다시 찍을 것인가? 아니면 실수한 부분만 도려내고 10초만 더 찍어서 영상을 합칠것인가?에 고민을 하게된다. 하지만, 대부분의 결론은 영상편집으로 갈 것이다.왜? 시간비용 효율적이니깐! 그럼 다빈치 리졸브에서 영상 중 가운데 부분을 도려 내려면?(맥기준) Edit Tab 에서 영상클립을 클릭하고재생위치를 짜를려고하는 시작점에 두고 Command + B 그리고 똑같이 종료지점에 두고 Command + B 를 하면 짜를부분이 선택된다. 그리고 Delete 클릭! orRipple Delete.. 2025. 4. 13.
spring-boot-starter-validation Java Spring 멘토링 중에 input 값에 대한 검증을 별도 DTO 나 entity 내 method를 만들어서 수행하는 멘티들이 종종 보였는데, 값에 대한 검증 (최소 숫자 등은) spring-boot-starter-validation 을 통해 DTO 단에서 간결하게 처리하고, 로직에 대한 validation 검증을 비지니스 레이어에서 수행 하게 되면은 단일책임원칙을 준수하면서 관련된 비지니스 로직과 Test Code 도 줄일 수 있다. 왜 그렇게 하지 않는걸까? 2025. 3. 29.
728x90