본문 바로가기

전체 글25

k8s(쿠버네티스)의 컨트롤 플레인 노드는 이중화를 하지 않는다. 컨트롤 플레인 노드는 클러스터에서 관제탑 역할을 하는 핵심 Pod들이 있기 때문에해당 노드가 죽으면 서비스에 치명적이다.(※ 컨트롤 플레인 노드가 죽으면, 이미 떠 있는 Pod는 그대로 동작하지만 새로운 Pod 띄우기나 kubectl 명령어는 동작하지 못한다.) 그래서 보통 다중화를 한다.엥? 컨트롤 플레인 노드는 이중화를 하지 않는다며? 맞다.내 말은 컨트롤 플레인 노드는 보통 다중화를 하고, 그 중 이중화는 하지 않는다. 오케이.단일 장애점을 제거하고 고가용성 확보를 위해 다중화를 하는건 알겠는데, 왜 이중화는 안돼? k8s에서 클러스터의 모든 상태 정보를 저장하는 저장소, etcd 때문이다.etcd는 내부적으로 Raft 합의 알고리즘으로 동작한다.Raft 합의 알고리즘은 리더-팔로워-후보 3가지 역.. 2026. 10. 30.
테라폼(Terraform)에서 ArgoCD 적용하기 최근 프로젝트에서 테라폼으로 AWS 인프라를 구축하고앱들을 ArgoCD로 배포하려고 했다. 여기서 ArgoCD도 테라폼으로 구축이 가능하다!다만, ArgoCD도 앱이기 때문에 클러스터에 설치가 되어야 한다.그러기 위해서 어느 클러스터에 설치되어야 할지에 대한 정보가 필요하다.그래서 테라폼으로 인프라를 구축하면 생기는 Terraform state을 활용한다.(참고: 적용시키려는 테라폼의 코드 - Terraform state - 현재 인프라 상태, 3가지를 비교해 테라폼이 적용된다.) 그런데 여기서 ArgoCD를 구축하기 위한 Terraform state를 활용하기 위한 클러스터 구축이 필요하다.그래서 ArgoCD를 테라폼으로 구축하기 위해서는 먼저 클러스터가 구축이 되어야 한다.즉, 클러스터 구축 직후 초.. 2026. 10. 29.
Swift: @retroactive @retroactive해당 문법은 Swift6에 등장한 개념이다. 영어 그대로 해석해 보면,소급 한글도 한 번 더 해석해 보면,과거에도 영향을 미치게 하는 것 보통 법 관련해서 소급이라는 말을 자주 들어볼 수 있다.예를 들어,6월에 월 10만원씩 주는 법이 제정되었고, 해당 법이 1월부터 소급 적용된다고 하자.그러면 1월부터 5월까지에 해당하는 50만원도 받을 수 있다는 뜻이다. 그런데, Swift에서 갑자기 왜 이런 문법이 등장한 걸까?@retroactive 관련 Swift의 문서를 살펴보면extension으로 다른 모듈에서 선언된 타입을 확장하면서,해당 타입을 다른 모듈에서 선언된 프로토콜을 통해 확장하는 경우 = 즉, 확장하려는 타입과 적용하려는 프로토콜, 모두 외부 모듈에서 선언된 경우 위 경우에.. 2025. 5. 31.
SwiftUI: @ViewBuilder SwiftUI View 파일을 만들면 항상 기본적으로 작성되어 있는 var body: some View나만의 Custom body 연산 프로퍼티를 만드는 것도 가능할까?나도 만들래 나만의 var body: some view성공✅!받고 한 줄 더!실패❌...return을 명시적으로 적어달라고 얘기한다.그래서 둘 중 하나의 인스턴스 앞에 return을 적어주면 일단, 오류는 해결(?)이 되긴 하는데 둘 중 하나만 적용이 된다❓...그래서 하나의 묘책으로 두 인스턴스를 Stack이나 Group으로 묶어주니 이 부분도 해결이 되었다✅!받고 분기처리까지 1!성공✅!받고 분기처리까지 2!실패❌...제네릭 매개변수의 인자가 충돌한다라고 한다.제네릭? some View는 제네릭이 아니라 불투명 타입이잖아?라고 할 수 .. 2025. 4. 16.