| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- hammerDB
- Kafka
- blue-green
- Grafana
- Database
- Debezium
- 0 replica
- slow query
- istio
- yml
- traceId
- Benchmarks
- 동등성
- SW 마에스트로
- keda
- propogation
- zset
- MSSQL
- minreplica
- Kubernetes
- Leaderboard
- docket
- logback
- eks
- Salting
- spring boot
- 스프링부트
- Strimzi
- Helm
- virtualservice
- Today
- Total
목록전체 글 (66)
김태오
쿠버네티스를 쓰다 보면 PriorityClass랑 PodDisruptionBudget(PDB)을 동시에 설정하는 경우가 많다. PriorityClass는 “이 파드는 중요하다”라는 우선순위를 주는 장치고, PDB는 “최소 몇 개는 반드시 살아 있어야 한다”는 제약 조건을 주는 장치다.처음엔 이렇게 생각하기 쉽다.“PDB를 걸어놨으니까 최소 개수는 보장되겠지?”하지만 실제 운영에서는 PDB가 있어도 파드가 날아가는 경우가 있다. 특히 스케줄러 프리엠션(preemption) 상황이나 노드 drain 작업에서는 PDB가 절대적으로 보장되지 않는다. 이번 글에서는 왜 이런 일이 발생하는지, 스케줄러 아키텍처와 코드 레벨에서 어떻게 처리하는지, 그리고 실제 예시로 어떻게 확인할 수 있는지를 정리한다.Priorit..
EKS에 떠있는 쿠버네티스의 트래픽을 관리할 때, 본래 서비스로 향하는 트래픽을 라우팅하기 위해 모듈 각각에 ALB를 하나씩 두어 트래픽을 각각 관리한다.ingress: enabled: true className: "alb" annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/subnets: {서브넷명시} alb.ingress.kubernetes.io/certificate-arn: {arn명시} alb.ingress.kubernetes.io/ssl-redirect: '443' alb.in..
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..
ORM에서 string 값을 쿼리에 사용할 때 쿼리를 NVARCHAR 타입으로 사용한다는 것이 관찰되었다. 하여 인덱스에 선언되어 있는 컬럼들 중 VARCHAR값이 있는데, 해당 인덱스를 사용하려 한다면 타입이 맞지 않아 인덱스를 타지 않는 문제가 발생하였다. 가령 가장 단순한 형태의 인덱스인 두 가지의 컬럼으로 이루어진 PK__CUST_INFO__7AA72534 (CARE_ORG_ID char(8), CUST_NO varchar(20)) 인덱스를 사용해보자. 통계에 오류가 발생하여 인덱스를 원활히 타지 않는다는 의심도 하여, option(recompile)을 통해 통계를 무시한 쿼리를 실행해본다.select * from cust_info where CARE_ORG_ID = '15887361' and ..
쿠버네티스에는 기본적인 스케일러로 HPA(Horizontal Pod Autoscaler)가 있다. Scale out, scale in 을 위해 존재하며 pod relica 개수를 조절해준다. 이를 조절하는 기준으로 yaml 혹은 api 등으로 명시한 resource metric(CPU, memory 등) 이 target utilization 과의 상하여부를 따져 한다. 간단한 yaml 을 살펴보자.apiVersion: autoscaling/v2kind: HorizontalPodAutoscalermetadata: name: example-hpaspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: example-deploym..
Debezium은 대표적인 CDC(Change Data Capture) 툴이다. CDC를 쓰는 이유로는 데이터베이스의 변화를 빠르게 감지하여 이벤트를 발생시켜 작업을 함에 있다. 도입하게 된 유즈케이스를 간단히 설명하자면, 어플리케이션에서 POST api 인입 -> A 데이터베이스에 정보 저장 -> 외부 api 호출 -> 호출 성공시 B 데이터베이스에 정보 저장 -> 다른 service method들 실행의 과정에서, 외부 api 가 실패하더라도 A 데이터베이스가 업데이트되어 한 트랜잭션에 묶이지 않았기 때문이다. @Transcational 을 걸고 실패시 롤백 핸들링을 하면 되지 않나 싶겠지만, 외부 api 호출을 async로 던지고 있었기에 불가능했다.아무튼 외부 api 호출을 먼저하고, 호출이 성공..