전체 글
-
Kubernetes Default Pod Scheduler의 스케줄링 로직Kubernetes 2025. 3. 21. 01:35
Kubernetes의 기본 Pod 스케줄러(Default Scheduler)는 새로 생성된 Pod을 적절한 Node에 배치하는 역할을 합니다. 스케줄링 로직은 크게 Filter(필터링) → Score(점수 평가) → Bind(할당) 세 단계로 진행됩니다. 1. 스케줄링 프로세스① 후보 노드 필터링 (Predicates)스케줄러는 먼저 클러스터 내의 모든 노드 중에서 Pod을 실행할 수 없는 노드를 제외합니다. 이 과정에서 다음과 같은 조건이 적용됩니다.필터링 조건1. NodeSelector & NodeAffinitynodeSelector, nodeAffinity 등의 조건이 맞지 않으면 제외nodeSelector: disktype: ssd 2. Taints & Tolerationstaint가 적용된 노..
-
GitHub의 Hubot이란DevOps 2025. 3. 21. 00:01
Hubot이란?Hubot은 GitHub에서 개발한 오픈소스 챗봇 프레임워크로, 다양한 채팅 플랫폼과 연동하여 자동화된 작업을 수행할 수 있도록 설계되었습니다. Node.js 기반으로 동작하며, 다양한 스크립트를 추가하여 기능을 확장할 수 있습니다.Hubot의 주요 용도DevOps 자동화CI/CD 파이프라인 트리거 (예: !deploy production으로 배포 시작)서버 상태 확인 (!status로 시스템 상태 점검)로그 조회 및 모니터링 도구와 연동 (Grafana, Prometheus, AWS CloudWatch 등)업무 자동화팀원들에게 정기적인 리마인더 전송 (예: 스크럼 회의 알림)Jira, Trello, Asana 같은 프로젝트 관리 툴과 연동하여 업무 상태 업데이트Slack, Microsof..
-
Go 언어 기원 및 설계 철학Dev 2025. 3. 20. 21:37
Go 언어는 2007년에 Google에서 시작된 프로그래밍 언어로, 로버트 그리즈머(Robert Griesemer), 롭 파이크(Rob Pike), 켄 톰프슨(Ken Thompson)이 주도하여 개발했다. 공식적으로는 2009년에 오픈 소스로 공개되었다. Go 언어의 기원 (배경) Go 언어는 Google 내부에서 대규모 시스템을 개발할 때 겪던 컴파일 속도의 저하, 복잡한 코드베이스, 병렬 처리의 어려움 등을 해결하기 위해 만들어졌다. 기존의 C++과 Java 같은 언어들은 강력하지만, 빌드 시간이 길고 코드가 복잡해지는 문제가 있었다. 이러한 문제를 해결하면서도 단순하고 효율적인 시스템 프로그래밍 언어를 만들기 위해 Go가 탄생했다. 특히 다음과 같은 요구 사항을 충족하기 위해 개발되었다. • 빠른 ..
-
AWS Node Termination HandlerAWS 2025. 3. 20. 09:20
개요AWS Node Termination Handler(NTH)는 EC2 인스턴스가 종료될 수 있는 이벤트(예: EC2 유지보수, 스팟 인스턴스 종료, ASG Scale-In, AZ 리밸런스, API/콘솔을 통한 인스턴스 종료 등)에 대응하여 Kubernetes가 적절히 반응하도록 돕는 도구입니다. 이를 통해 애플리케이션이 정상적으로 종료되지 않거나 가용성을 복구하는 데 시간이 오래 걸리는 문제를 방지할 수 있습니다.NTH는 두 가지 모드로 동작합니다.IMDS(Instance Metadata Service) Processor - 각 노드에서 실행되며, IMDS를 모니터링하여 이벤트 발생 시 해당 노드를 cordon(스케줄링 방지) 및 drain(현재 실행 중인 워크로드 종료) 처리합니다.Queue Pro..
-
Error Budget의 개념과 소진 시 대응 방안Interview 2025. 3. 18. 14:18
Error Budget은 허용 가능한 장애 시간을 나타내며, SLO를 기준으로 계산됩니다. Error Budget이 소진되면 신규 기능 배포를 중단하고, Root Cause Analysis, Auto Healing 개선, 모니터링 강화 등의 조치를 통해 안정성을 우선적으로 확보해야 합니다. 📌 1️⃣ Error Budget이란?**Error Budget(에러 예산)**은 SLO(Service Level Objective)에서 허용 가능한 실패율을 수치화한 개념입니다.즉, 완벽한 100% 가용성을 목표로 하지 않고, 일정 수준의 장애를 허용하여 새로운 기능 배포와 시스템 안정성 간 균형을 유지하는 것입니다.✅ Error Budget 공식:Error Budget=1−SLOError\ Budget = 1 -..
-
Spring Boot 애플리케이션이 Kubernetes에서 Pod 시작 시 CPU를 많이 사용하는 이유DevOps 2025. 3. 18. 14:14
Spring Boot 애플리케이션이 Kubernetes에서 Pod 시작 시 CPU 사용량이 급증하는 주된 이유는 JVM(Java Virtual Machine)의 초기화 과정과 Spring Boot 자체의 초기 부팅 과정 때문입니다.이를 자세히 분석하면 다음과 같은 주요 원인이 있습니다.1️⃣ JVM 초기화 및 JIT(Just-In-Time) 컴파일 최적화✔ JVM은 애플리케이션 실행 전 여러 초기화 작업을 수행✔ JIT(Just-In-Time) 컴파일러가 코드를 최적화하면서 CPU 사용량 증가✅ 설명:JVM은 애플리케이션 실행 시 클래스 로딩, 메서드 컴파일, JIT 최적화를 수행특히 JIT 컴파일러는 처음 실행되는 코드의 성능을 최적화하기 위해 상당한 CPU를 사용JIT 컴파일이 완료된 후에는 CPU ..
-
MTTR(Mean Time to Recovery) 단축 방법Interview 2025. 3. 18. 14:11
MTTR을 단축하려면 실시간 모니터링(Alerting), 장애 진단 속도 향상(Observability), 자동 복구(Auto Healing), 장애 대응 프로세스 최적화(Runbook), 무중단 배포(Zero-Downtime Deployment), Chaos Engineering 등을 적용해야 합니다. 📌 1️⃣ MTTR(Mean Time to Recovery)이란?**MTTR(평균 복구 시간)**은 장애 발생 후 정상 운영 상태로 복구하는 데 걸리는 평균 시간을 의미합니다.MTTR이 짧을수록 장애 대응 능력이 뛰어난 시스템이라고 평가할 수 있습니다.공식:MTTR=∑(복구 시간)장애 발생 횟수MTTR = \frac{\sum (\text{복구 시간})}{\text{장애 발생 횟수}}MTTR=장애 발생 ..
-
Postmortem(사후 분석) 문서를 작성할 때 가장 중요한 요소Interview 2025. 3. 18. 14:10
Postmortem 문서는 장애의 원인과 대응 과정을 기록하고, 재발 방지 대책을 수립하기 위한 문서입니다. 이를 위해 장애 개요, 감지 및 대응 타임라인, 근본 원인 분석(RCA), 해결 조치, 재발 방지 대책, 프로세스 개선 사항을 포함해야 합니다. Postmortem 문서는 장애(Incident) 발생 후 원인을 분석하고, 재발 방지 대책을 마련하기 위해 작성하는 문서입니다.SRE 관점에서 Postmortem 문서는 책임을 추궁하는 것이 아니라, 서비스 안정성을 개선하는 데 초점을 맞추어야 합니다.📌 1️⃣ Postmortem 문서의 핵심 목적장애의 원인을 정확히 기록하고, 서비스 안정성을 향상시키기 위한 개선책을 도출**Blameless Culture(비난 없는 문화)**를 유지하여 투명한 장..