전체 글 111

Helm 사용 전후의 Kubernetes 배포 관리 비교

Helm 사용 전후의 Kubernetes 배포 관리 비교 가. Without Helm DevOps 팀은 여러 Kubernetes YAML 파일을 관리해야 하며, 이 파일들을 일일이 수동으로 작성하고 관리해야 합니다. 각 환경(Production, Staging, Dev)에 맞게 YAML 파일의 구성을 일일이 수동으로 업데이트하고 일치시키는 번거로운 작업이 필요합니다. 환경 간 구성의 일관성을 유지하기 어렵고, 실수로 인한 문제가 발생할 가능성이 높습니다. 복잡한 애플리케이션 배포 및 업데이트 프로세스로 인해 시간과 인적 자원을 낭비할 가능성이 큽니다. 시간이 지남에 따라 YAML 파일의 수가 늘어나면서 관리가 더욱 복잡해질 수 있습니다. 나. With Helm DevOps 팀은 공통 Helm 차트를 사용..

02. Container 2024.01.20

롤링 업데이트(Rolling Update)는 소프트웨어 배포 방식

롤링 업데이트(Rolling Update)란? 롤링 업데이트는 시스템 업데이트를 점진적으로 수행하는 방식으로, 서비스 중단을 최소화하고 리스크를 관리하는 데 유용합니다. 가. 롤링 업데이트의 특징 점진적 배포: 업데이트가 일괄적으로 이루어지는 것이 아니라, 시스템의 일부분에만 순차적으로 적용됩니다. 서비스 중단 최소화: 업데이트 중에도 시스템의 나머지 부분이 정상 작동하여 서비스 중단 시간을 최소화합니다. 위험 감소: 전체 시스템에 대한 업데이트가 아니므로, 문제 발생 시 영향을 제한하고 빠른 대응이 가능합니다. 나. 롤링 업데이트의 과정 준비 단계: 새 버전의 애플리케이션을 준비하고, 업데이트를 위한 계획을 세웁니다. 부분적 배포: 시스템의 일부 인스턴스에만 새 버전을 배포합니다. 모니터링 및 검증: ..

04. DevOps,CICD 2024.01.20

컨테이너 레포지토리 운영 관리 방안

컨테이너 이미지 운영 및 구성 가. 프로세스 단계 Docker Hub에서 Base Image 다운로드: 공개 컨테이너 레포지토리인 Docker Hub에서 기본 이미지를 다운로드합니다. 1차 저장소에 Base Image 저장: 다운로드한 이미지는 먼저 1차 저장소에 저장됩니다. 여기서 초기 보안 점검이 수행될 수 있습니다. 보안 점검 후 2차 저장소로 이동: 보안 점검을 통과한 이미지는 2차 저장소로 이동하여 보관됩니다. Workflow 통해 보안 승인 절차 진행: 이미지는 승인 절차를 거친 후 내부 개발망에서 사용될 수 있습니다. 개발된 애플리케이션과 Base Image가 결합된 이미지는 최종적으로 Harbor 레포지토리에 저장됩니다. Argo CD를 통한 배포: Harbor 레포지토리에 저장된 이미지는..

02. Container 2024.01.20

MSA에서 보상트랜잭션

SAGA 및 Event Driven 패턴 상세 정보 가. SAGA 패턴 1. 개요 SAGA 패턴은 분산 시스템에서 긴 트랜잭션을 관리하기 위한 패턴으로, 각 서비스의 트랜잭션을 로컬 트랜잭션으로 분할하고, 실패 시 보상 트랜잭션을 실행합니다. 2. 장단점 장점: 분산 시스템에서 트랜잭션 간 의존성을 줄이며, 시스템 전체의 다운타임 없이 부분적인 오류를 관리할 수 있습니다. 또한, 복잡한 비즈니스 프로세스에 대한 효율적인 관리가 가능합니다. 단점: 트랜잭션 간의 의존성과 보상 로직에 대한 복잡성이 증가합니다. 또한, 전체 프로세스의 성능 저하와 보상 로직 구현에 대한 추가적인 노력이 필요합니다. 3. 사례 예를 들어, 전자 상거래 시스템에서 고객의 주문 처리를 위해 재고 확인, 결제 처리, 배송 준비의 각..

Kafka에 스트리밍된 데이터를 실시간 분석할수 있는 KSQLDB

KSQLDB 상세 정보 가. KSQLDB 개요 KSQLDB는 Apache Kafka 위에 구축된 스트림 처리 데이터베이스로, 실시간 데이터 스트림 처리와 상호작용을 SQL 기반 쿼리 언어로 간단하게 만들어줍니다. 1. 기능 KSQLDB는 Apache Kafka 위에 구축된 스트림 처리 데이터베이스로, 실시간 데이터 스트림 처리와 상호작용을 SQL 기반 쿼리 언어로 간단하게 만들어줍니다. 이를 통해 다음과 같은 주요 기능을 제공합니다: 실시간 데이터 스트림의 조인, 집계, 필터링 등의 연산을 SQL과 유사한 언어로 수행할 수 있습니다. 데이터 스트림의 실시간 처리를 통해 실시간 데이터 애플리케이션을 쉽게 개발할 수 있습니다. SQL 기반 쿼리 언어를 사용하므로 데이터 처리 및 분석이 간편하고 직관적입니다...

Kafka Connect vs Debezium 구분

Kafka Connect와 Debezium의 차이점 가. Kafka Connect 1. 목적 다양한 데이터 소스와 싱크를 Kafka와 연결하는 커넥터 프레임워크 제공. 이는 Kafka를 데이터 허브로 사용하여 여러 시스템 간의 데이터 통합을 용이하게 만들어줍니다. 2. 기능 다양한 소스와 싱크 지원: 다양한 데이터 소스 및 대상 시스템과의 통합을 지원하여, Kafka를 중심으로 한 확장 가능한 데이터 파이프라인 구축을 가능하게 합니다. 스케일링과 관리: 대규모 데이터 처리를 위한 자동 스케일링 및 효율적인 관리 기능을 제공합니다. 플러그인 구조: 사용자가 필요에 따라 커스텀 커넥터를 개발하고 통합할 수 있는 유연한 플러그인 구조를 가지고 있습니다. 나. Debezium 1. 목적 데이터베이스 변경 데이터..

MSA환경에서 Kafka(카프카)가 사용되는 주요 이유

MSA환경에서 Kafka 역활 가. 분산 시스템의 통합 1. 통합 메시징 시스템: Kafka Kafka는 고성능의 분산 메시징 시스템으로, 서비스 간 메시지를 효율적으로 처리합니다. 데이터 스트림을 통합하여, 다양한 소스와 대상 간의 메시지를 신속하게 전달하고 관리합니다. Kafka를 사용하면 서비스 간의 데이터 흐름을 조율하고, 전체 시스템의 데이터 통합을 달성할 수 있습니다. 이는 마이크로서비스 아키텍처에서 서비스 간의 독립성을 유지하면서도 일관된 데이터 처리를 가능하게 합니다. 2. 비동기 통신 지원 Kafka를 통한 비동기 통신은 서비스 간의 결합도를 낮춥니다. 이는 서비스가 서로에 대한 의존성 없이 독립적으로 작동하고 확장될 수 있음을 의미합니다. 각 서비스는 Kafka로부터 메시지를 수신하고 ..

데이터베이스의 CDC(Change Data Capture)를 위한 오픈 소스

Debezium을 활용한 데이터베이스 변경 데이터 캡처 가. Debezium 사용 시나리오 실시간 데이터 동기화: 다양한 데이터베이스 시스템 간의 데이터를 실시간으로 동기화하여, 정보의 일관성과 신뢰성을 유지합니다. 마이크로서비스 아키텍처: 마이크로서비스 간의 데이터 일관성을 보장하고, 서비스 간의 독립성을 강화합니다. 데이터 레이크: 데이터베이스의 변경 사항을 데이터 레이크로 스트리밍하여 실시간 분석 및 보고서 작성에 활용합니다. CQRS: 명령과 쿼리 책임을 분리하고, 쿼리 모델을 최신 상태로 유지하여 데이터 접근성과 효율성을 높입니다. 감사 및 로깅: 데이터베이스의 모든 변경 사항을 추적하여 감사와 로깅 목적으로 활용합니다. CEP: 복잡한 이벤트 처리를 위해 실시간 데이터 스트림을 분석하고, 즉각..

Gitops Overview

The GitOps Pipeline 이 문서는 GitOps 파이프라인의 두 번째 부분으로, GitOps의 개념, 중요성 및 실제 적용 방법에 대해 설명합니다. 1. GitOps란 무엇인가 GitOps는 Git을 원천으로 사용하여 지속적인 배포를 하는 방법입니다. 인프라와 어플리케이션을 선언적으로 관리하고, Git에 변경이 있을 때 자동으로 인프라에 롤아웃합니다. 실제 생산 환경의 상태와 Git 소스 코드 간 불일치를 파악하여 문제를 해결할 수 있는 피드백 루프를 포함합니다. 출처: Flux 2. GitOps의 중요성 GitOps는 개발자가 Kubernetes와 같은 운영 관리 및 모니터링 작업을 간소화하고 가속화하는 데 도움이 됩니다. 클라우드 네이티브 CI/CD 파이프라인 모델을 제공하며, 빠른 배포 ..

04. DevOps,CICD 2024.01.18

DevOps vs GitOps

DevOps와 GitOps 개요 가. DevOps (데브옵스) 1. 정의 "Development(개발)"과 "Operations(운영)"의 합성어로, 소프트웨어 개발과 IT 운영의 협력을 강화하여, 더 빠른 개발 사이클과 높은 소프트웨어 품질을 달성하는 방법론입니다. 2. 장점 빠른 배포: 기능의 신속한 출시로 시장 반응 속도를 높일 수 있습니다. 향상된 협력: 개발자와 운영 팀 간의 지속적인 소통으로 조직 문화가 개선됩니다. 자동화된 프로세스: 반복적인 작업의 자동화로 인해 오류가 감소하고, 생산성이 증가합니다. 지속적인 피드백: 고객의 피드백을 빠르게 받아들여 개선할 수 있습니다. 3. 단점 문화적 변화 필요: 기존 프로세스와 다른 접근 방식을 채택해야 하며, 이는 조직 전체의 변화를 요구합니다. 초..

04. DevOps,CICD 2024.01.18