전체 글
-
Kubernetes Network 구성Kubernetes 2025. 3. 25. 01:18
Kubernetes는 다음과 같은 네트워크 요구 사항을 기본 가정으로 합니다:모든 Pod는 클러스터 내 다른 Pod와 통신 가능해야 한다.노드에서 실행 중인 모든 Pod는 동일한 IP 주소 체계를 공유해야 한다.NAT 없이 Pod 간 직접 통신이 가능해야 한다.이러한 요구사항을 충족시키기 위해 Kubernetes는 CNI 플러그인, Service IP, kube-proxy, Network Policy 등을 이용합니다. 주요 구성 요소1. CNI 플러그인Pod 간 통신을 위한 네트워크 인터페이스를 설정Pod에 IP를 할당하고 라우팅 설정을 적용예시: Calico, Flannel, Cilium, Weave 2. kube-proxyService 리소스의 가상 IP로 요청이 들어오면 실제 Pod IP로 라우팅되..
-
go 언어에서 deep copy 사용Dev 2025. 3. 24. 08:02
Go 언어는 대부분 값 타입(value semantics)이 기본이지만, 슬라이스, 맵, 포인터, 구조체 포인터 등을 다루다 보면 얕은 복사(shallow copy)로 인한 예기치 않은 공유 문제가 발생할 수 있어요.이럴 때 deep copy(깊은 복사)가 필요해집니다. ✅ 언제 Deep Copy가 필요한가?🔹 1. 공유된 메모리로 인한 부작용을 피하고 싶을 때슬라이스나 맵은 참조 타입이기 때문에 복사해도 같은 메모리 영역을 가리킵니다.이를 수정하면 원본 데이터도 함께 변경되죠.original := []int{1, 2, 3}copy := originalcopy[0] = 100fmt.Println(original) // [100 2 3] ← 원본이 변경됨!이런 부작용을 막기 위해서는 deep copy로 ..
-
go 언어 관련 인터뷰 질문들Interview 2025. 3. 24. 07:57
✅ 기초 문법 및 언어 특성Go 언어의 주요 특징은 무엇인가요?Go는 단순하고 읽기 쉬운 문법을 갖고 있어서 협업과 유지보수에 유리한 언어입니다.내장된 병행성 지원(Goroutine, Channel)이 굉장히 강력해서, 고성능 네트워크 서버나 마이크로서비스 구축에 적합하고요.정적 컴파일 언어라 실행 속도가 빠르고, 단일 바이너리로 배포가 가능해 DevOps 측면에서도 효율적입니다.또, 표준 라이브러리가 잘 구성돼 있어서 외부 의존성 없이도 많은 기능을 바로 구현할 수 있습니다. Go에서 defer 키워드의 동작 방식은?defer는 현재 함수가 종료되기 직전에 실행할 코드를 등록할 때 사용합니다. 주로 파일 닫기, 뮤텍스 해제, 커넥션 종료 같은 리소스 정리 작업에 쓰입니다.defer된 함수들은 LIFO ..
-
Go 언어에서 Concurrency (동시성) 과 Parallelism (병렬성)Dev 2025. 3. 24. 00:06
🧪 예제 1: Concurrency (동시성) – goroutine 사용package mainimport ( "fmt" "time")func printSlow(text string) { for i := 0; i 🔍 실행 결과 (예상)main 0goroutine 0main 1goroutine 1...main() 함수는 printSlow("main")을 실행하면서동시에 printSlow("goroutine")은 goroutine으로 동시 실행됨한 CPU 코어에서 context switching 하면서 동시성처럼 보임→ 실제로는 빠르게 번갈아 가며 실행하는 concurrent behavior 🧪 예제 2: Parallelism (병렬성) – runtime.GOMAXPROCSpackage mainimpo..
-
concurrency(동시성)와 parallelism(병렬성)의 차이Interview 2025. 3. 24. 00:03
구분Concurrency (동시성)Parallelism (병렬성)정의여러 작업을 번갈아 가며 처리여러 작업을 동시에 처리목적효율적인 자원 사용빠른 실행 속도실행 방식한 번에 하나만 실행되지만 빠르게 전환진짜 동시에 여러 개 실행전제 조건하나의 CPU 코어로도 가능둘 이상의 CPU 코어 필요예시바텐더가 여러 고객을 순차 처리바텐더 3명이 각자 고객을 동시에 처리🔍 더 구체적으로 비교✅ 1. Concurrency (동시성)시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 함실제로는 작업을 잘게 쪼개서 빠르게 스위칭OS의 스레드 스케줄링, Go의 goroutine, Node.js의 event loop가 대표 예💡 예시한 명의 요리사가 여러 요리를 동시에 준비하려고,A요리를 끓이는 동안 B요리를 자르러 가..
-
ElasticSearch vs. OpenSearchDevOps 2025. 3. 23. 22:43
Lucene은 검색 알고리즘의 엔진Elasticsearch는 운영 가능한 분산 검색 서비스Lucene = 자동차 엔진Elasticsearch = 엔진 + 차체 + 운전석 + 자동 조향 + 내비게이션 1. Lucene, Elasticsearch, OpenSearch 관계 요약계층설명🔧 Lucene검색 알고리즘을 제공하는 Java 라이브러리 (core engine)🚀 ElasticsearchLucene 위에 구축된 분산 검색 & 분석 엔진 (REST API 제공)🌿 OpenSearchElasticsearch의 오픈소스 포크(Fork). AWS가 주도관계:Lucene은 "엔진" (문서 색인 및 검색 알고리즘 제공)Elasticsearch / OpenSearch는 Lucene을 감싸서 분산 처리, API,..
-
StatefulSet + headless service 조합의 사용Kubernetes 2025. 3. 23. 21:04
StatefulSet + headless service 조합은 Kubernetes에서 PostgreSQL처럼 상태(stateful)를 가진 애플리케이션을 배포하고, 노드 간 안정적인 네트워크 ID를 제공하는 핵심 메커니즘입니다.특히, PostgreSQL의 클러스터링 구성이나 장애조치(failover) 시 이 구조가 중요한 역할을 해요. ✅ 1. Headless Service란?apiVersion: v1kind: Servicemetadata: name: postgresspec: clusterIP: None # 👈 headless로 만듦 selector: app: postgres ports: - port: 5432 📌 핵심 특징:항목설명clusterIP: NoneCluster IP가 ..
-
HA Proxy와 Nginx 비교DevOps 2025. 3. 23. 14:32
HAProxy와 Nginx는 둘 다 로드 밸런서 및 프록시 서버로 널리 사용되지만, 설계 철학, 기능, 활용 방식에서 차이가 있습니다.또한 L4 (TCP) 와 L7 (HTTP/HTTPS) 모두에서 사용 가능하지만, 각각의 특징에 따라 어떤 레이어에 더 적합한지도 차이가 납니다. HAProxy vs Nginx – 핵심 비교 항목HAProxyNginx원래 목적고성능 L4/L7 로드밸런서정적 웹 서버 + L7 프록시L4 지원 (TCP)✅ 강력함 (기본)⚠️ 가능 (stream 모듈 필요)L7 지원 (HTTP)✅ 매우 정교함✅ 뛰어남 (기본 제공)성능 (대용량 처리)✅ 매우 우수 (특화됨)✅ 우수 (Web에 특화됨)설정 방식선언적, 세부 제어 강력선언적, 간결하고 직관적동적 구성 변경제한적 (RELOAD 필요)..