DevOps
-
DATABASE에서 쿼리가 수행되는 전체 과정DevOps 2025. 3. 25. 08:17
DATABASE에서 쿼리가 수행되는 전체 과정은 일반적으로 아래와 같은 단계로 구성됩니다. 이 흐름은 대부분의 관계형 데이터베이스(RDBMS, 예: PostgreSQL, MySQL, Oracle 등)에서 유사하게 적용됩니다. 쿼리 수행 과정 전체 흐름[사용자 쿼리 입력] ↓1. Parsing (구문 분석) ↓2. Binding / Semantic Analysis (이름 해석 & 의미 분석) ↓3. Query Rewriting (쿼리 재작성, 옵티마이저 준비) ↓4. Planning / Optimization (실행 계획 수립) ↓5. Execution (실제 실행) ↓[결과 반환] 1. Parsing (구문 분석)무엇을 하나요?SQL 문장을..
-
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,..
-
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 필요)..
-
Redis는 스토리지 공간 사용 용도DevOps 2025. 3. 23. 13:36
Redis는 기본적으로 인메모리(in-memory) 데이터베이스지만, 스토리지(디스크 공간)도 중요한 역할을 합니다. 아래에 Redis가 스토리지를 사용하는 주요 용도를 정리해볼게요. Redis가 스토리지를 사용하는 주요 용도1. 지속성(Persistence) – 데이터 저장Redis는 메모리에서 동작하지만, 장애 발생 시 데이터를 복구할 수 있도록 디스크에 데이터를 저장할 수 있는 Persistence(지속성) 기능을 제공합니다.🔸 RDB (Redis Database Snapshot)일정 주기마다 메모리 상태 전체를 디스크에 저장 (스냅샷)저장 위치: dump.rdb적은 디스크 I/O, 빠른 복구 속도단점: 마지막 스냅샷 이후의 데이터는 유실 가능🔸 AOF (Append Only File)모든 쓰기..
-
Redis 클러스터를 구성하는 방법과 운영 시 주의점DevOps 2025. 3. 22. 17:25
✅ Redis 클러스터란?Redis 클러스터(Redis Cluster)는 데이터를 여러 노드에 자동으로 분산 저장하여 수평 확장성과 고가용성을 제공하는 Redis의 기능입니다.데이터를 slot(0~16383)으로 나누어 여러 노드에 분산마스터-레플리카 구조로 장애 조치 가능Redis 3.0 이상에서 지원 📦 Redis 클러스터 구성 방법1. 노드 준비최소 3개의 마스터 노드 필요 (고가용성을 위해 보통 마스터 3 + 각 마스터당 레플리카 1씩 총 6개 구성)Redis는 각 인스턴스(노드)를 별도의 포트 또는 서버에서 실행2. Redis 설정 파일 (redis.conf)클러스터 모드 활성화:cluster-enabled yescluster-config-file nodes.confcluster-node-ti..
-
RAID (Redundant Array of Independent/Inexpensive Disks)DevOps 2025. 3. 22. 13:01
RAID(Redundant Array of Inexpensive Disks)는 여러 개의 하드디스크(또는 SSD)를 하나의 논리적인 장치처럼 묶어 성능 향상, 데이터 보호 또는 두 가지를 동시에 달성하려는 기술이에요. RAID는 여러 방식(레벨)으로 구성할 수 있고, 각 레벨마다 장단점이 있습니다. ✅ RAID의 주요 목적성능 향상 (Performance)데이터 보호 (Redundancy)확장성 (Scalability)📚 RAID 레벨별 특징RAID 유형최소 디스크 수특징장점단점RAID 02스트라이핑 (striping)빠른 읽기/쓰기 속도장애 복구 없음, 하나라도 망가지면 전체 데이터 손실RAID 12미러링 (mirroring)높은 데이터 안정성저장공간 비효율 (용량의 50% 사용)RAID 53스트라이..
-
GitHub의 Hubot이란DevOps 2025. 3. 21. 00:01
Hubot이란?Hubot은 GitHub에서 개발한 오픈소스 챗봇 프레임워크로, 다양한 채팅 플랫폼과 연동하여 자동화된 작업을 수행할 수 있도록 설계되었습니다. Node.js 기반으로 동작하며, 다양한 스크립트를 추가하여 기능을 확장할 수 있습니다.Hubot의 주요 용도DevOps 자동화CI/CD 파이프라인 트리거 (예: !deploy production으로 배포 시작)서버 상태 확인 (!status로 시스템 상태 점검)로그 조회 및 모니터링 도구와 연동 (Grafana, Prometheus, AWS CloudWatch 등)업무 자동화팀원들에게 정기적인 리마인더 전송 (예: 스크럼 회의 알림)Jira, Trello, Asana 같은 프로젝트 관리 툴과 연동하여 업무 상태 업데이트Slack, Microsof..
-
Spring Boot 애플리케이션이 Kubernetes에서 Pod 시작 시 CPU를 많이 사용하는 이유DevOps 2025. 3. 18. 14:14
Spring Boot 애플리케이션이 Kubernetes에서 Pod 시작 시 CPU 사용량이 급증하는 주된 이유는 JVM(Java Virtual Machine)의 초기화 과정과 Spring Boot 자체의 초기 부팅 과정 때문입니다.이를 자세히 분석하면 다음과 같은 주요 원인이 있습니다.1️⃣ JVM 초기화 및 JIT(Just-In-Time) 컴파일 최적화✔ JVM은 애플리케이션 실행 전 여러 초기화 작업을 수행✔ JIT(Just-In-Time) 컴파일러가 코드를 최적화하면서 CPU 사용량 증가✅ 설명:JVM은 애플리케이션 실행 시 클래스 로딩, 메서드 컴파일, JIT 최적화를 수행특히 JIT 컴파일러는 처음 실행되는 코드의 성능을 최적화하기 위해 상당한 CPU를 사용JIT 컴파일이 완료된 후에는 CPU ..