
클러스터에 접속해 kubectl apply -f deployment.yaml을 실행하는 순간, 무슨일이 벌어질까? 먼저 현재 경로에 있는 YAML 파일이 클러스터로 전달되고, 잠시 후 Pod가 올라온다.그 사이에 클러스터에서는 많은 일들이 벌어진다. 예를 들면, API

이번 시리즈에서는 쿠버네티스의 내부 구조를 자세하게 알아보겠다.쿠버네티스 시스템 아키텍쳐와 제어 평면1-1. 쿠버네티스의 시스템 아키텍처와 컴포넌트들의 상호작용1-2. kube-apiserver의 요청 처리 파이프라인1-3. etcd와 데이터 일관성 모델오케스트레이션과
윈도우로 쓰고있던 데스크탑과 노트북을 활용해서 서버를 구축해볼텐데, 들어가기 전에 스펙을 먼저 언급하고 들어가겠다. Control Plane & Worker 1 (Desktop) Spec: 4 Core CPU / 16GB RAM Storage: 400GB HDD (R

진행했던 프로젝트가 있었는데, 사용하던 서버 대여기간이 끝나서 종료되었었다. 이 프로젝트를 다시 살려보고자 한다.팀원이 NCP 연동을 해 뒀었기 때문에, 이를 다시 내 계정으로 연동하면서 과정을 기록하려 한다.사용할 서비스는 위 두개의 서비스이며, 가장 먼저 NCP에서

서론: 왜 kube-proxy(iptables)는 한계에 부딪히는가?Kubernetes 서비스 가용성 이면의 그림자: 서비스 개수가 늘어날수록 무거워지는 네트워크 오버헤드 언급.iptables의 동작 방식: Netfilter 기반의 순차적 규칙 평가 방식 설명.문제 제

저번 포스팅에서 VM 설치와 세팅, 그리고 Kubernetes 관련 패키지를 설치하였다. 이번 포스팅에서는 노드 설정과 함께 CNI를 설치해보자. 먼저 VM의 IP 포워딩 기능을 켜 줘야한다. 다음 명령어로 리눅스 설정 파일을 추가하자. 그러면 이제 마스터 노드가
기존 학교 서버 대여 기간이 끝나서, K8s 홈 서버 구축기를 다룰 예정이다. 학습용 간단한 MSA 서비스를 배포할 예정이고, 집 PC의 스펙이 여유롭지 않아서 Master 노드 1개와 Worker 노드 2개로 구성할 예정이다. 노드들의 스펙은 다음과 같이 정하였다

먼저 들어가기 전에, 이 글은 망나니 개발자님의 블로그를 보고 정리한 글임을 알립니다. 그럼 가장 먼저, 동시성 제어(Concurrency-Controll)에 대해 알아보겠다. 동시성 제어란? DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜젝션의 상호간섭
Java 21의 ZGC와 G1GC 성능을 비교하기 위해 로컬 환경(macOS)에서 부하 테스트를 진행하던 중, 기이한 현상을 발견했다. 서버는 문제가 없는데 JMeter에서는 수십만 건의 에러가 발생한 것이다. 테스트 시나리오는 다음과 같이 설정하였고, 로그인을 진행
B-Tree > 트리의 일종으로, 이진트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. B-Tree의 특징은 다음과 같다. 각 노드에는 2개 이상의 데이터가 들어갈 수 있으며, 항상 정렬된 상태로 저장된다. 노드의 자료 수

책 이름이 밑바닥까지 파헤치기라는걸 1회독을 끝내고 알아버렸다.. 이번 포스팅에서는 가비지 컬렉터에 대해 요점을 정리해 보려 한다. 가비지 컬렉션은 어떤 메모리를 회수해야 하나? 우선, 객체가 죽었는지 판단 해야한다. 자바에서는 이를 위해 도달 가능성 분석 알고리즘

런타임 데이터 영역 책을 다 읽었지만, 2장~3장의 내용이 특히 중요한 것 같아 한번 글을 써 보고자 한다. 자바 개발자는 가상 머신이 제공하는 자동 메모리 관리 메커니즘 덕에 메모리 할당과 해제를 짝지어 코딩하지 않아도 메모리 누수나 오버플로 문제를 거의 겪지 않는

JDK 6에서는 동시성 효율이 크게 증가하였다. 적응형 스핀, 락 제거, 락 범위 확장, 경량 락, 편향 락 등 다양한 락 최적화 기술을 구현하는 데 많은 자원을 투자했다. 스핀 락과 적응형 스핀 이전 포스팅에서 상호 배제 동기화가 성능에 악영향을 주는 주된 원인은
스레드 안정성이라는 용어를 많이 접해봤을 것이다. 이 용어를 브라이어 게츠는 여러 스레드가 한 객체에 동시에 접근할 때, 어떤 런타임 환경에서든 다음 두 조건을 모두 충족하면서 객체를 호출하는 행위가 올바른 결과를 얻을 수 있다면, 그 객체는 스레드 안전하다. 라고 말

먼저, 채팅 메시지는 시간이 지날수록 계속 쌓이는 구조이다. 현재 채팅 메시지 테이블의 구조는 다음과 같고, 조회 시에도 JPA를 이용하여 Sequence Scan을 하고있다. ChatMessageEntity 하지만 만약 메시지의 개수가 매우 많아진다면 이런 방식의

클래스 파일의 구조 가장 먼저, 클래스 파일의 구조부터 살펴보자. 자바 가상 머신 명세에 따르면, 클래스 파일에 데이터를 저장하는데는 C언어의 구조체와 비슷한 의사 구조를 이용한다. 이 의사 구조에는 부호 없는 숫자와 테이블이라는 두 가지 데이터 타입만 존재한다.

이번에 JVM 밑바닥까지 파헤치기를 보면서, 지금 AWS EC2에서 운영중인 서비스를 모니터링 하고싶다는 생각이 들었다.하지만 지금 서비스는 CLI 환경에서 운영되고 있으며 Base Image가 JRE로 jps나 jstat같은 기본적인 모니터링 툴이 들어있지 않다. J
이번 시리즈에서는 Java Redis Client중 Jedis와 Lettuce를 비교해 볼 생각이다. 저번 포스팅에서 이론적인 부분은 어느정도 비교를 했으니, 이번에는 코드를 살펴보며 이론적인 부분이 어떻게 구현되어 있는지 살펴보겠다. 가장 먼저 싱글 스레드 기
이번에 Lettuce관련 스터디를 시작하기로 하였다. 부끄럽지만, Redis를 연동해서 사용해 보았는데도 불구하고 Lettuce가 뭔지도 몰라서 검색하고 나서야 어떤 기술인지 대충 알게 되었다. 그래서, 이번 포스팅을 진행하며 어떤 녀석인지 자세히 알아가보는 과정을

Redis Client에 대해 공부하던중, Lettuce / Redisson이 Netty 기반으로 동작한다고 해서 이에 관해 간단하게라도 알아보고 넘어가려고 한다. 우선 Netty를 이해하기 위해서는 사전 지식이 필요하며 이들은 Non-blocking 기반의 Mult