백엔드 23

[docker] Docker Swarm을 활용한 NFS Volume 생성과 서비스 배포

Introduction Docker Swarm을 활용하여 NFS(Network File System) Volume을 생성하고 서비스를 배포하는 방법에 대해 알아보겠습니다. 이를 통해 여러 Docker 노드 간에 데이터를 공유하고 분산된 서비스를 운영할 수 있습니다. NFS란? NFS(Network File System)은 리눅스와 유닉스 계열 운영체제에서 사용되는 분산 파일 시스템입니다. 파일 및 디렉토리를 네트워크를 통해 다른 컴퓨터에 공유할 수 있게 해주는 프로토콜입니다. Docker Swarm 이란? Docker Swarm은 Docker 컨테이너 오케스트레이션 도구 중 하나로, 여러 Docker 호스트를 하나의 가상화된 호스트로 관리하는 기능을 제공합니다. Swarm을 통해 여러 노드에 걸쳐 컨테이..

DevOps/docker 2024.02.01

[K8s] JSONPATH 활용하여 원하는 데이터 확인하기

JSONPath란? JSONPath는 JSON 데이터 구조 내에서 원하는 데이터를 식별하기 위한 경로 표현 방법입니다. 주로 Kubernetes나 다양한 API 응답에서 원하는 데이터를 추출하거나 쿼리하는 데 사용됩니다. JSONPath 패턴 $.store.book[0].title JSON 데이터 구조에서 store 객체 안의 book 배열의 첫 번째 요소의 title 값에 대한 경로 $..author 모든 author 키에 해당하는 값 반환 $.store.* store 객체 안의 모든 키와 값 반환 $.store..price store 객체 내부의 모든 price 키에 해당하는 값 반환 $.store.book[?(@.price < 10)] : **price**가 10 미만인 책에 해당하는 값들을 반환합..

DevOps/k8s 2023.11.16

[CKA] ETCD 백업 및 복구 테스트

안녕하세요. CKA 시험 유형 중 하나인 ETCD 백업 및 복구 테스트 문제를 풀어보도록 하겠습니다. 저의 쿠버네티스 환경은 minikube로 etcd백업 및 복구 테스트를 진행할 수 없어 KodeKloud Mock Exam2 풀이를 통해 ETCD 백업 및 복구 테스트하는 방법에 대해 알아보겠습니다. 문제 1. Take a backup of the etcd cluster and save it to /opt/etcd-backup.db. etcd 데이터베이스 백업 환경 변수를 설정하여 etcdctl을 사용할 수 있도록 환경을 구성합니다. #etcdctl이 사용하는 버전 export ETCDCTL_API=3 #etcd 설정 파일이 위치한 디렉토리로 이동 cd /etc/kubernetes/manifests 해당..

DevOps/k8s 2023.11.08

[K8s]LivenessProbe 실습할 때 생길 수 있는 트러블 슈팅

간단한 Flask 어플리케이션을 Docker 이미지로 만들고, 이를 Kubernetes에서 실행하면서 LivenessProbe를 설정하는 예제입니다. Flask 어플리케이션 코드 (app.py): pythonCopy code from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, Kubernetes!" if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) Docker 이미지 빌드 (Dockerfile): DockerfileCopy code FROM python:3.9-slim WORKDIR /app COPY requirements.txt /ap..

DevOps/k8s 2023.07.27

[K8s] Kubernetes LivenessProbe와 ReadinessProbe와 어플리케이션 안정성 강화하기

LivenessProbe왜 필요한지? 어플리케이션을 운영하는 과정에서 어플리케이션의 상태를 지속적으로 모니터링하고, 어플리케이션의 비정상 동작을 빠르게 감지하여 안정적인 서비스를 제공하는 것은 매우 중요합니다. 어플리케이션이 장애 상태에 빠지면 서비스 중단 및 고객 불만을 초래할 수 있기 때문에, 이러한 문제를 사전에 예방하고 빠르게 대응하기 위해 Kubernetes의 LivenessProbe와 Spring Boot Actuator를 사용합니다. 특징 어플리케이션의 생존 여부를 체크하는데 사용됩니다. 주기적으로 어플리케이션의 상태를 확인하고, 응답이 오지 않거나 오류가 발생한 경우 해당 POD를 재시작합니다. 어플리케이션이 예상되는 문제 또는 무한 루프, 데드락 등으로 인해 정상적으로 동작하지 않을 때 ..

DevOps/k8s 2023.07.27

[Terraform] Terraform 시작하기 feat. EC2 기본 Code

Terraform 시작하기테라폼은 다양한 클라우드를 제공하고 있는 AWS, Azure, Google Cloud 리소스를 코드를 통해 온프레미스 시스템을 지원하며, 여러 리소스(가상 머신, 네트워크, 데이터베이스)를 프로비저닝할 수 있다. 테라폼 설치테라폼은 공식 웹사이트(https://www.terraform.io/downloads.html) 다운로드할 수 있다.압축 파일을 압축 해제한 후, 실행 파일을 실행 가능한 경로에 배치한다.설치가 성공적으로 완료되었는지 확인하기 위해 terraform version 명령을 실행하여 테라폼 버전을 확인한다. 테라폼 기본 개념테라폼 코드: 테라폼을 사용하여 인프라를 관리하기 위해 작성하는 코드로 HCL(HashiCorp Configuration Language)이라..

DevOps/terraform 2023.07.13

[Kafka] Python에 kafka 활용한 간단예제 ft.Event-driven microservices

파이썬에서는 kafka-python이라는 라이브러리를 통해 카프카를 활용할 수 있다. kafka-python 라이브러리를 설치 명령어 pip install kafka-python 다음은 kafka producer 예제이다. producer.send() 함수를 사용하여 토픽에 메시지를 전송할 수 있다. pythonCopy code from kafka import KafkaProducer # 카프카 서버 정보 설정 bootstrap_servers = ['localhost:9092'] # 프로듀서 생성 producer = KafkaProducer(bootstrap_servers=bootstrap_servers) # 메시지 전송 producer.send('my_topic', b'message from pytho..

DevOps/kafka 2023.05.08

[Kafka] 빅데이터 플랫폼: hadoop, spark, kafka의 역할과 데이터 아키텍쳐

데이터 플랫폼은 대용량 데이터를 수집, 저장, 처리, 분석할 수 있는 통합 플랫폼을 의미한다. 이를 위해 다양한 기술과 솔루션이 활용될 수 있으며, 하둡, 스파크, 카프카는 데이터 플랫폼 구성에서 가장 많이 사용되는 기술 중 하나이다. 하둡은 대규모 데이터를 분산 처리할 수 있는 분산 파일 시스템(HDFS)과 분산 컴퓨팅 프레임워크(MapReduce)를 제공한다. 스파크는 하둡 기반의 분산 처리 엔진으로, 메모리 기반의 빠른 처리 속도와 다양한 데이터 소스 지원 등을 특징으로 한다. 카프카는 대용량 실시간 데이터 스트리밍 플랫폼으로, 다양한 소스로부터 데이터를 수집하고, 다양한 대상에 데이터를 전송할 수 있다. 이러한 기술들이 데이터 플랫폼 구성에서 주요한 역할을 하고 있다. 여기서 관계형데이터베이스와 ..

DevOps 2023.05.08

[Kafka] Kafka Manager API를 사용하여 Kafka 클러스터 모니터링하는 법: 카프카 클러스터의 고가용성확보

카프카 클러스터에서 고가용성을 확보하기 위해서는 여러 대의 브로커 노드를 이용한 복제와 리더-팔로워 구조를 활용해야 한다. 이를 통해 카프카 클러스터 전체에서 데이터의 손실 없이 안정적으로 메시지를 처리할 수 있다. 먼저, 카프카 클러스터에서 데이터를 안정적으로 처리하기 위해서는 여러 대의 브로커 노드를 이용한 복제가 필요하다. 이를 위해 데이터를 복제할 브로커 노드를 미리 설정해야 하고 이때, 브로커 노드의 수는 홀수로 설정하는 것이 좋다. 이유는 브로커 노드 수가 짝수일 경우, 브로커 노드의 다수결로 리더 노드를 선출하는데, 만약 다수결을 가릴 수 없는 경우 브로커 노드 간에 충돌이 발생하여 데이터 손실이 발생할 수 있기 때문이다. 또한, 카프카 클러스터에서 데이터의 안정적인 처리를 위해서는 리더-팔..

DevOps/kafka 2023.05.08

[AWS] 컨테이너 오케스트레이션 서비스로 비용절감하는 법

AWS에서 제공하는 컨테이너 서비스인 Amazon ECS와 Amazon EKS를 사용하는 개발자들은 컨테이너 환경에서 슬기롭게 생활한다. 이번 세션에서는 AWS에서 컨테이너 서비스를 보다 잘 활용할 수 있는 방법들을 전수받고왔다. 먼저 컨테이너 오케스트레이션 서비스에 대해 알아보도록하자. 컨테이너 오케스트레이션 서비스는 마치 내집 마련을 하는 것과 같다. AWS에서는 Amazon ECS와 Amazon EKS를 제공한다. Amazon ECS는 완전히 관리되는 컨테이너 오케스트레이션 서비스로, 간단하게 애플리케이션을 배포하고 관리할 수 있다. Amazon EKS는 Kubernetes를 사용하는 컨테이너 오케스트레이션 서비스로, 보다 유연하고 안정적인 컨테이너 환경을 제공한다. 이미지 사이즈를 줄이는 방법 이..

DevOps/aws 2023.03.31