들어가기 전이 글은 프로그래밍 러스트를 공부하며 작성한 글입니다. 간단 요약클로저클로저는 익명 함수다. 따라서 각 클로저마다 서로 다른 별개의 타입을 가진다.클로저는 값을 캡쳐할 수 있고, 다른 함수에게 인자로 전달될 수 있다.클로저의 종류 (메모리 관점)포착 클로저 : 변수가 캡쳐되기 때문에 스택 프레임에서 구조체 형식으로 관리됨.비포착 클로저 : 컴파일러가 함수 포인터처럼 변경해 줌. 클로저의 종류빌리는 클로저 : 캡쳐된 변수의 소유권을 Borrow해서 가진다. 클로저를 선언하면 된다. 캡쳐된 변수가 Copy, Clone Trait을 구현했다고 해서 값을 바로 가지지는 않을 수도 있다. 예를 들어 i32를 Borrow 할 땐, &i32를 캡쳐하고 있다가 필요한 시점에 Copy를 하도록 구현되어있다. ..
들어가기 전트래픽에 대한 ACL을 관리하는 모델로는 크게 Stateless ACL과 Stateful ACL이 존재한다. 이 게시글에서는 개발자 관점에서 해당 토픽에 대해 비교해서 알아보려고 한다.Stateful ACLStateful ACL은 특정 패킷이 들어왔을 때 패킷을 처리할 때의 '상태'를 기억하고, 다음에 들어오는 패킷을 처리할 때 이전에 기억해두었던 '상태'를 바탕으로 패킷을 처리하는 모델을 의미한다. Stateful ACL이 전반적으로 동작하는 형태는 다음과 같다.패킷이 들어오면 패킷으로부터 5-Tuple(SRC IP/Port + DEST IP/Port + Protocol)을 추출한다.5-Tuple에 대해 ACL Rule들을 적용해보고 허용되지 않는 트래픽의 경우 Deny한다.ACL Rule에..
상황플랫폼 A의 k8s에서 플랫폼 B의 k8s로 옮기는 작업 도중에 발생함.Pod A에서는 컨테이너 A1, A2가 존재함.컨테이너 A1 : 메인 컨테이너. CLI Management를 위한 컨테이너다. 그리고 파이썬 Daemon Process가 하나 가동중이다.컨테이너 A2 : 인증정보를 업데이트 하기 위한 Sidecar문제$ k get podNAME READY STATUS RESTARTS AGEmy-pod 1/2 OOMKilled 0 44s# 플랫폼 B의 k8s$ kubectl tops pod --containers | grep my-podmy-pod ..
들어가기 전이 글은 RAFT 알고리즘 논문을 공부하며 개인적으로 정리한 글입니다. 틀린 부분이 있을 수 있으니 이해에 참고만 하시고, 피드백 주실만한 부분은 언제든 댓글로 부탁드립니다. 알고리즘 논문 erlang으로 구현한 학습용 코드 1. RAFT IntroductionConsensus 알고리즘은 여러 노드로 구성된 클러스터에서 일부 노드가 장애를 겪고 있더라도, 클러스터가 일관된 상태로 잘 동작할 수 있도록 지원한다. 이런 이유 때문에 Consensus 알고리즘은 신뢰할 수 있는 대규모 소프트웨어 시스템을 구축하는데 핵심적인 역할을 한다. RAFT 알고리즘 이전에는 Paxos 알고리즘이 Consensus 알고리즘에서 중요한 역할을 해왔다. Paxos 알고리즘의 큰 문제점은 이해하기 어렵다는 것이다. ..
들어가기 전이 글은 다음 포스팅을 참고하여 공부하며 작성한 글입니다. erlang으로 구현된 학습용 코드는 이곳에서 확인할 수 있습니다.1. 시작이전 게시글에서 간단하고 직관적인 멤버쉽 프로토콜인 SWIM을 공부했다. 그러나 초기 SWIM 프로토콜은 Full Membership을 유지하기 때문에 규모가 큰 클러스터로의 확장은 상대적으로 제한된다. 이번 글에서는 HyParView(Hybrid Partial View) 프로토콜을 다룬다. HyParView 프로토콜은 규모가 큰 클러스터에서도 경량화 된 방식으로 잘 동작하는 멤버쉽 프로토콜이다. 2. 직관적으로 바라보기HyParView에 대한 직관을 가질 수 있도록 일상 생활을 예로 들어보자. 우리는 노드를 사람, 클러스터를 사람의 무리라고 치환할 수 있다. ..