Blog
- DevelopmentJWT 서명 키는 어떻게 고를까?JWT 서명에 쓰는 HS256과 RS256을 공통 비밀번호와 도장에 비유해 비교하고, 서비스 구조에 맞는 키를 고르는 기준을 설명합니다.
- Kubernetes쿠버네티스 Java Client에서 Lister와 Indexer 나눠 쓰기Informer 캐시에서 Lister와 Indexer가 각각 어떤 조회를 맡는지 살펴보고, namespace와 name으로 Pod를 찾거나 사용자 정의 인덱스를 만드는 방법을 설명합니다.
- Kubernetes쿠버네티스 리소스 안전하게 삭제하기Deployment를 삭제할 때 하위 ReplicaSet과 Pod가 어떤 순서로 사라지는지 살펴보고, Background, Foreground, Orphan 방식을 비교합니다.
- Kubernetes쿠버네티스에서 중요한 Pod 먼저 실행하기클러스터 자원이 부족할 때 PriorityClass가 Pod의 실행 순서를 어떻게 바꾸는지, preemption이 기존 Pod에 어떤 영향을 주는지 설명합니다.
- Kubernetes쿠버네티스에서 CPU와 메모리 관리하기쿠버네티스의 request와 limit이 각각 Pod 배치와 실행 중 자원 사용에 어떻게 적용되는지 API와 배치 Job 예제로 설명합니다.
- Kubernetes쿠버네티스에서 Pod를 고르게 배치하기여러 Node와 가용 영역에 Pod 복제본을 고르게 나누는 topologySpreadConstraints의 동작을 maxSkew와 실제 배치 예제로 설명합니다.
- Kubernetes쿠버네티스에서 Pod 배치하기쿠버네티스가 Pod를 실행할 Node를 고르는 과정을 살펴보고, nodeSelector, affinity, taint, toleration을 언제 함께 쓰는지 설명합니다.
- Kubernetes쿠버네티스 Java Client의 캐시 흐름 이해하기쿠버네티스 API의 변경 사항이 Java Client의 Informer, Indexer, Lister를 거쳐 로컬 캐시에 저장되고 조회되는 과정을 Pod 예제로 설명합니다.
- Side Project사이드 프로젝트에 모바일 앱 더하기기존 데스크톱 웹을 유지하면서 Expo와 React Native로 모바일 앱을 따로 만들고, API 규칙과 공통 로직만 공유하기로 한 이유를 설명합니다.
- Side Project사이드 프로젝트에 관측성 더하기서비스 상태를 확인하기 위해 Prometheus, OpenTelemetry, Grafana Alloy, Grafana Cloud의 역할을 나누고 메트릭부터 단계적으로 적용한 과정을 설명합니다.