| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 의존성주입
- fork()
- k8s
- elasticsearch
- 개발자
- 데이터엔지니어
- 스프링빈
- tech
- devsecops
- Observability
- 대규모시스템
- 코테
- 인프라
- 엘라스틱서치
- SRE
- Pub/Sub
- 시스템호출
- Kafka
- 커널
- DevOps
- it
- 분산시스템
- 개발
- OS
- 운영체제
- Monitoring
- Kubernetes
- etcd
- 쿠버네티스
- Data Engineering
- Today
- Total
목록전체 글 (33)
모래성 말고 철옹성
최근 한국 뿐만 아니라 전세계적으로 보안 사건, 사고들이 많아지면서 서비스를 운영하는데 고민이 많아지는 것 같다. 산더미 처럼 쌓여가는 레거시 시스템들을 보안패치 하는 것은 기업들에게 큰 고민거리일 듯 하다. 이런 것들을 어떻게 자동화할 수 있을까? 하며 찾아보다 새로운 개념을 접하게 되어 정리해봤다.Policy-as-Code 란?Policy-as-code는 정책 관리 방식 중 하나로, 정책을 코드로 정의하고, 업데이트하며, 공유하고, 강제할 수 있게 하는 접근법이다. 수동 프로세스에 의존해 정책을 관리하는 대신 코드 기반 자동화를 활용함으로써, 팀은 더 빠르게 움직일 수 있고 사람의 실수로 인한 오류 가능성을 줄일 수 있다.또한 보안과 같은 영역에서 Policy-as-code 접근법을 사용하면 개발자와..
"우리 시스템이 얼마나 에러가 나도 되나? 의 지표 Error Budget"Error Budget 이란?Error Budget(오류 예산)은 Google에서 개발한 SRE 방법론의 핵심개념이다. 서비스의 안정성과 새로운 기능 개발 속도간의 균형을 정량적으로 관리하는 개념으로 보면 된다. IT업계에 있는 분들이라면 다 아시겠지만 100% 완벽한 소프트웨어는 불가능하다. 기술의 혁신을 가져가자니 시스템의 안정성이 떨어지고 안정성만 따지자니 기술 부채는 늘어간다. 이런 딜레마를 해결하는 방법 중에 하나가 Error Budget인 것 같다.Error Budget 계산Error Budget은 보통 아래 식과 같이 계산된다.Error budget = [100% - availability target] 조직에 서비..
분산 시스템에서 여로 노드가 마치 하나의 물리 노드처럼 일관된 상태를 유지하는 것은 어렵다. 네트워크 장애, 노드 실패, 패킷 손실 등등 다양한 문제들이 발생할 수 있고, 민감한 시스템의 경우 이는 큰 장애로 이어질 수도 있다. 이러한 문제를 해결하기 위해 등장한 개념이 합의 알고리즘(Consensus Algorithm) 이다. 그 중에서도 Raft 알고리즘이 가장 대표적이어 Raft를 한번 톺아보기로 했다.Raft의 탄생 배경Raft 이전의 대표적인 합의 알고리즘은 Paxos였다. 하지만 Paxos 알고리즘은 구현의 난이도가 높다는 단점이 있었다. 2013년 스탠포드에서 "Understandability"를 최 우선으로 하는 Raft 알고리즘을 개발했다.Raft의 핵심 개념서버 상태 (Server St..
DP유형의 알고리즘 문제를 풀다 모범 답안으로 @lru_cache 데코레이터를 쓴 파이썬 함수가 있어 궁금해서 찾아봤다. 라떼는 이런거 없었는데....LRU Cache란 무엇인가?LRU(Least Recently Used) Cache는 가장 최근에 사용되지 않은 항목을 제거하는 캐싱 전략이다. 메모리가 제한된 환경에서 효율적인 데이터 관리를 위해 사용되며, 프로그램의 성능을 크게 향상시킬 수 있다. LRU Cache의 핵심 개념캐시 히트(Cache Hit): 요청된 데이터가 캐시에 있는 경우캐시 미스(Cache Miss): 요청된 데이터가 캐시에 없어서 새로 계산해야 하는 경우용량 제한: 메모리 사용량 제어를 위한 최대 항목 수 설정교체 정책: 캐시가 가득 찼을 때 어떤 항목을 제거할지 결정Python ..
들어가며회사에서 아주 오래된 On-premise서버의 OS가 EoS가 되며, 신규 서버로 Clean-install을 진행하며 tomcat을 처음부터 다시 설치해야하는 요건이 생겼다.이중화 구조여서 Clustering을 해야했고, 직면한 문제가 있어 트러블슈팅한 기록과 알게된 개념을 남긴다.문제 발생기존 Tomcat 을 기동하니 아래와 같은 오류가 발생했다.Unable to join multicast group, make sure your system has multicasting enabled.Unable to start cluster.알아보니 내가 맡게된 서버의 tomcat은 Multicast 방식으로 clustering 하고 있었다. 보통 내 구축 경험으로는 Unicast로 1:1 통신을 통한 clu..
개요회사에서 Elasticsearch, Tomcat 등의 클러스터를 구축하고, 혼자 Kubernetes를 공부해보다가 "물리적으로 분산된 서버들이 어떻게 하나의 서버처럼 동작할 수 있을까?" 라는 궁금증이 생겼다. 누군가도 나와 같은 생각을 했을 것 같아서 분산 시스템을 공부해보고, 실제로 분산 시스템을 구축해보는 사이드 프로젝트를 해 공유해보기로 했다.목차1편. 분산 합의란 무엇인가? - Raft의 기본 개념 (TBD)2편. 클러스터의 심장, 리더 선출 구현기 (TBD)3편. 데이터 복제와 최종 일관성 보장하기 (TBD)
Taints & Tolerations 이란?Taint와 Tolerations 는 Kubernetes의 Pod 스케줄링 제약 조건을 정의하는 기능이다.Taint: 노드에 "특정 Pod는 오지 마라"라는 표시Tolerations: Pod가 특정 Taint를 무시하고 해당 노드에 스케줄링 될 수 있도록 허용노드에 들어올 수 있는 Pod를 필터링 하는 기능이라고 생각하면 된다. *Taint & Toleration을 직역하면 오염 & 관용 이라는 뜻이다. 즉, 노드를 오염시켜 Pod를 받지 않고, Pod에 오염을 참을 수 있는 관용을 부여한다 라고 보면 된다.Kube-Scheduler의 주요 기능노드 전용화 (Node Isolation)특정 워크로드만 실행하도록 노드를 전용으로 할당리소스 보호 (Resource ..
Kube-Scheduler란?Kube-Controller-Manager는 Kubernetes 클러스터의 상태를 원하는 목표 상태(Desired State)로 유지하도록 관리하는 핵심 컴포넌트이다. 쉽게 말해, “쿠버네티스의 자동화 관리자(Controller 집합체)”라고 할 수 있다. Kube-Scheduler의 주요 역할과 기능ReplicaSet Controller지정된 수의 Pod가 항상 실행되도록 보장Node Controller노드의 상태(정상/비정상) 모니터링 및 조치Endpoint ControllerService와 Pod를 연결 (네트워크 엔드포인트 관리)Service Account & Token ControllerPod가 API Server와 안전하게 통신 가능하도록 인증자격 발급이런 다양한 ..