전체 글 211

[리눅스마스터 2급] LVM과 RAID

📝 질문: 다수의 디스크나 파티션을 하나로 묶어서 구성하는 기술과 관련 있는 조합은?정답: ㉠LVM ㉡RAIDLVM (Logical Volume Manager):정의: 여러 개의 하드디스크나 파티션을 하나의 논리적인 그룹(Volume Group)으로 묶은 뒤, 다시 필요한 크기만큼 논리 볼륨(Logical Volume)으로 나누어 사용하는 기술핵심 특징: 용량이 부족할 때 디스크를 추가하여 유연하게 용량을 확장하거나 줄일 수 있다는 점이 가장 큰 장점입니다.RAID (Redundant Array of Independent Disks):정의: 여러 개의 물리적 디스크를 하나의 논리적 디스크로 묶어서 사용하는 기술핵심 특징: 데이터의 안전성(결함 허용)을 높이거나, 데이터를 여러 디스크에 분산 저장하여 입..

Jenkins와 Kubernetes를 조합한 CI/CD 파이프라인

1. Jenkins의 작동 메커니즘과 생태계Jenkins는 다양한 외부 서비스들을 하나로 묶어주는 오케스트레이터(Orchestrator) 역할을 수행한다.젠킨스의 전체적인 CI/CD 흐름은 다음과 같다. SCM(Source Code Management) 연동: 젠킨스 파이프라인에서 SCM은 자동화의 트리거(Trigger) 역할을 한다. Webhook을 통해 코드 변경을 실시간으로 감지하고 작업 공간(Workspace)으로 소스를 가져온다.(Checkout)CI(지속적 통합): 빌드 도구와 테스트 프레임워크를 통해 코드 품질을 검증하고 실행 가능한 아티팩트*를 생성한다.CD(지속적 배포): 생성된 아티팩트를 레지스트리에 저장하고 최종 목적지인 서버나 클러스터에 배포한다.💡아티팩트(artifact)란?소스..

Journey to CS/웹 2026.01.24

[k8s] VMware 우분투 머신 세 대로 쿠버네티스 클러스터 구축하기 (+트러블 슈팅)

쿠버네티스를 처음 공부할 때 가장 큰 장벽은 설치 그 자체다. 특히 VMware와 같은 가상화 환경에서 여러 노드를 띄워 클러스터를 구성할 때는 가상 네트워크와 쿠버네티스 내부 통신 구조가 복잡하게 얽히면서 예상치 못한 에러가 계속 뜨곤 한다. 사실 도커 데스크톱 앱을 이용하면 설치 과정이 없이도 편하게 쿠버네티스를 실습할 수 있다. 클릭 몇번만 하면 쿠버네티스 환경이 뚝딱 만들어지는데 왜 굳이 직접 설치를 해야 할까?도커 데스크톱은 쿠버네티스 환경을 추상화하여 제공하므로 내부 동작 원리를 파악하기 어렵다.반면 우분투 머신을 활용해 클러스터를 직접 구축하면 컨트롤 플레인 구성 요소(etcd, API 서버 등)를 개별적으로 설정하며 시스템 아키텍처를 명확히 이해하게 된다.특히 CNI(Container N..

[Java] 래퍼 클래스(Wrapper Class)와 오토 박싱

자바는 객체 지향 언어지만 성능을 위해 비객체형인 기본형(Primitive)을 지원한다.하지만 제네릭이나 컬렉션 프레임워크처럼 객체만 다룰 수 있는 상황에서는 기본형을 객체로 감싸야 하는데, 이때 사용하는 것이 래퍼 클래스(Wrapper Class) 다.박싱(Boxing)과 언박싱(Unboxing)Boxing: 기본형 → 래퍼 클래스 (int → Integer)Unboxing: 래퍼 클래스 → 기본형 (Integer → int)JDK 1.5부터는 컴파일러가 이를 자동으로 처리해주는 Auto-boxing/Auto-unboxing을 지원한다.덕분에 개발자는 기본형과 래퍼 클래스를 혼용해서 사용할 수 있다.📌코드 예시 : null 처리와 유틸리티 활용래퍼 클래스는 null을 담을 수 있어 DB 연동 시 유용..

[Java] 기본형(Primitive)과 참조형(Reference)의 메모리 구조 차이

자바의 변수는 데이터를 저장하는 방식에 따라 크게 두 가지로 나뉜다.이 둘의 차이는 '데이터가 메모리의 어디에, 어떻게 저장되는가'에 있다.1. 기본형 (Primitive Type)C언어의 일반 변수와 같다.메모리의 스택(Stack) 영역에 실제 값(Literal)을 직접 저장한다. int, double, boolean 등 8가지 타입이 존재하며, null을 가질 수 없다.종류타입 이름크기저장 가능한 값의 예시비고논리형boolean1 bit*true, false조건문(if)에서 주로 사용문자형char2 byte'A', '가', '3'문자 하나만 저장 (작은따옴표 사용)정수형byte1 byte-128 ~ 127파일 데이터 등 매우 작은 단위 short2 byte-32,768 ~ 32,767C언어 호환 외엔..

[Docker Swarm] 도커 스택(Stack)을 배포해보자

이전 글에서 준비한 보안 데이터와 설정 객체를 사용하여 스택을 배포해보자.3개의 노드에 서비스를 분산하고, 장애 발생 시 시스템이 어떻게 스스로를 복구하는지도 살펴본다.1. Docker Compose와 Docker Stack의 차이점먼저 도커 컴포즈와 도커 스택의 차이를 알아야 한다.두 도구는 YAML 문법을 공유하지만, 설계 목적과 동작 환경에서 큰 차이가 있다. Docker Compose: 단일 호스트 환경을 위한 도구다. build 지시어를 통해 이미지를 직접 생성할 수 있으나, 여러 노드에 걸친 스케줄링이나 셀프 힐링 기능은 제공하지 않는다.Docker Stack: 도커 스웜 모드의 멀티 노드 환경을 위한 도구다. 사용자가 "목표 상태(Desired State)"를 선언하면, 매니저가 클러스터 전..

[Docker Swarm] 데이터 관리: 시크릿(secret)과 컨피그(config)

도커 스웜 모드에서 애플리케이션을 운영할 때, 가장 먼저 보안 데이터와 설정 파일을 어떻게 관리할 것인지 고려해야 한다.소스 코드에 포함해서는 안 되는 민감한 정보(비밀번호, API 키)와 환경에 따라 변하는 설정 파일(yml, txt)을 안전하고 효율적으로 관리하기 위해 도커는 Secret과 Config라는 객체를 제공한다.1. Docker Secret: 민감 정보의 암호화 저장데이터베이스 패스워드나 API 키와 같은 민감 정보는 docker secret을 통해 스웜 클러스터 내부에 안전하게 저장한다.# 1. 시크릿 생성echo "pswd1234" | docker secret create my_mysql_password - # 2. 시크릿 목록 확인docker secret ls# 3. 시크릿 상세 정보..

[Docker Swarm] Rolling Update - 서비스 업데이트와 복구

클라우드 인프라를 운영할 때 서비스 중단 없이 애플리케이션을 업데이트하는 기술이 필요하다.도커 스웜은 이를 위해 롤링 업데이트(Rolling Update) 기능을 제공한다.또한 문제가 발생했을 때 이전 상태로 되돌리는 롤백(RollBack) 기능도 지원한다. MariaDB 서비스를 예시로 롤링 업데이트와 롤백 기능의 동작 원리를 살펴보자. 1. 롤링 업데이트(Rolling Update)란?롤링 업데이트는 서비스의 전체 컨테이너를 한꺼번에 교체하는 것이 아니라, 일정 수(Parallelism)의 컨테이너를 순차적으로 업데이트하는 방식이다.이 방식을 통해 업데이트 도중에도 서비스는 항상 일정 수 이상의 가동 중인 컨테이너를 유지할 수 있어 무중단 배포(Zero-downtime Deployment)가 가능해진..

[Docker Swarm] 컨테이너 및 노드 장애 복구 메커니즘

Docker Swarm을 오케스트레이션 도구로 사용하는 가장 큰 이유는 서비스의 안정성을 보장하기 위함이다.Swarm 모드는 사용자가 선언한 'Desired State(목표 상태)'를 지속적으로 유지하려는 성질을 가진다.즉, 특정 컨테이너가 죽거나 노드 자체가 다운되더라도, Swarm 매니저는 이를 감지하고 스스로 복구(Self-healing)한다. Docker Swarm 클러스터를 구성하고, 컨테이너 강제 삭제와 노드 셧다운을 해 봄으로써 Swarm의 장애 복구 과정을 체험해보자.1. 테스트 환경 준비가상머신(VMware 등)을 이용해 master 노드 1대와 slave1, slave2 워커 노드 2대를 준비한다.테스트를 위해 nginx 이미지를 기반으로 한 testweb 서비스가 레플리카(Replic..

[Docker Swarm] 서비스와 레플리카, 스케일링 및 글로벌 모드 이해하기

도커 스웜(Docker Swarm) 환경에서 컨테이너를 효율적으로 관리하기 위한 서비스(Service)의 개념과 레플리카(Replica), 스케일링(Scaling), 그리고 글로벌 모드(Global Mode)의 동작 원리를 살펴보자.1. 도커 스웜 서비스(Service)와 태스크(Task)의 이해도커 스웜에서 컨테이너를 실행하는 기본 단위는 '서비스'다.단일 노드에서 docker run으로 컨테이너를 실행하는 것과 달리, 스웜 모드에서는 docker service create를 통해 클러스터 전체에 컨테이너 배포를 명령한다.서비스: 동일한 이미지로 생성된 컨테이너들의 집합을 제어하는 논리적인 단위다. 사용자가 "nginx 컨테이너 5개를 유지하라"고 정의하면, 이 정의 자체가 서비스가 된다.태스크: 스웜..