AI 에러 로깅 알림 시스템 구축 1편 (feat. Claude Headless, Loki Ruler, Alert Manager)
·
Infra
🧐 들어가기전"정말 필요한" 에러로그의 알림만 바로 슬랙으로 받으면 얼마나 좋을까?Datadog을 사용하던 시절에는 자동 그룹화, 패턴 인식, 알림 설정까지 잘 갖춰져 있었기 때문에 에러 로그 모니터링이 비교적 수월했다고 한다 (팀에서 Datadog을 사용하던 당시에 나는 없었기에 그 이점을 잘 모른다). 그러나 Datadog의 비용 부담이 커지면서 지속해서 사용하기 어려웠고, 대체재로 오픈소스 기반의 Prometheus + Loki + Grafana + Tempo 스택으로 전환하게 되었다. 회사를 처음에 들어오던 당시에는 해당 스택에 대한 불편함을 전혀 느끼지 못하였다. 하지만 이제 서비스를 개발하기 시작하면서 정말 필요한 에러 로그 알림만 바로 받아보고 싶다는 생각이 강하게 들기 시작하였다. 그래서..
분산 시스템 장애의 본질: Fault → Error → Failure 흐름과 Observability 기반 원인 추론
·
Infra
🧐 들어가기전"서비스 응답이 느려졌다." "간헐적으로 504 Gateway Timeout이 발생한다." "Pod가 재시작을 반복한다."분산 환경에서 이런 증상을 마주했을 때, 원인을 얼마나 빠르게 특정할 수 있는가? 증상은 하나지만 원인은 네트워크 지연, 메모리 부족, 외부 API 장애, 잘못된 설정 등 수십 가지가 될 수 있다. Prometheus 대시보드에서 CPU 사용률이 정상이고, Pod 상태도 Running이라면 어디서부터 추적을 시작해야 하는가? 이 질문에 체계적으로 답하려면 두 가지가 필요하다.첫째, 장애가 어떻게 발생하고 전파되는지에 대한 개념적 이해.둘째, 그 흐름을 실시간으로 관측할 수 있는 데이터 수집 체계.전자는 분산 시스템 이론에서 다루는 Fault/Error/Failure 모델..
Kubernetes Operator Pattern (feat. 언제까지 Helm만 쓸래?)
·
Infra/Kubernetes
🧐 들어가기전 Strimzi - Apache Kafka on KubernetesKafka on Kubernetes in a few minutes Strimzi provides a way to run an Apache Kafka cluster on Kubernetes in various deployment configurations. Use the Quick Starts to get started now! Secure by Default Built-in security TLS, SCRAM-SHA, and OAuth authenticastrimzi.io GitHub - strimzi/strimzi-kafka-operator: Apache Kafka® running on KubernetesApache Kaf..
[AWS] MSK에서 EKS Pod Identity 적용 시 발생하는 인증 문제와 해결 방안
·
Infra
🧐 들어가기전 [AWS] EKS IRSA vs Pod Identity 동작 원리🔸 1. Pod에게 AWS 권한을 부여하는 방법EKS 클러스터에서 실행되는 애플리케이션이 S3, SQS, MSK와 같은 AWS 서비스에 접근해야 하는 경우가 많다. 이때 Pod에게 AWS 권한을 부여하는 방법은 여러 가지jhzlo.tistory.com해당 포스트에서 다루었던 EKS Pod Identity를 적용하여 AWS Infra를 관리하고자 하였고, 현재 우리 팀에서는 MSK를 비롯한 다양한 관리형 서비스들을 사용하고 있었다. 기존에 MSK는 IRSA방식으로 인증/인가를 진행하고 있었는데, 이번에 Pod Identity로 마이그레이션을 진행하고 하였다. 각 백엔드 어플리케이션은 Pod Identity를 적용한 Role을..
[AWS] EKS IRSA vs Pod Identity 동작 원리
·
Infra
🔸 1. Pod에게 AWS 권한을 부여하는 방법EKS 클러스터에서 실행되는 애플리케이션이 S3, SQS, MSK와 같은 AWS 서비스에 접근해야 하는 경우가 많다. 이때 Pod에게 AWS 권한을 부여하는 방법은 여러 가지가 있다.1.1 기존 방식의 한계EC2 Instance Profile 방식:노드에 IAM Role을 부여하는 방식. 이 방식은 해당 노드에서 실행되는 모든 Pod가 동일한 권한을 갖게 되어 최소 권한 원칙에 위배된다.Access Key 방식:IAM User의 Access Key를 Pod에 직접 주입하는 방식. 키 탈취 위험과 키 관리의 복잡성 때문에 프로덕션 환경에서는 지양해야 한다.이러한 한계를 해결하기 위해 AWS는 2019년에 IRSA(IAM Roles for Service Acc..
[Spring Data JPA] GenerationType.AUTO는 DB 커넥션을 두 개 가진다?
·
Java & Kotlin/JPA
🧐 들어가기전@Entitypublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본 키 생성 전략 지정 private Long id; private String name;}스프링 데이터 JPA를 활용하여 엔티티를 설계할 때 가장 먼저 마주하는 고민 중 하나는 기본 키 생성 전략을 어떻게 설정하느냐이다. 단순히 @Id와 @GeneratedValue를 붙이는 것으로 끝나는 것 같지만, 실제로는 GenerationType에 따라 동작 방식이 달라지고, 성능이나 트랜잭션 처리 흐름에도 영향을 준다. 특히 save() 메서드 호출 시점에 어떤 쿼리가 실행되는지, 그리고 DBCP(Connection P..
J_hzlo
J_hzlo