백엔드개발자 16

Kubernetes 환경에 Prometheus와 Grafana를 설치하고 통합하기

Introduction 안녕하세요. 오늘은 Kubernetes 환경에 Prometheus 및 Grafana를 설치하고 통합하는 단계를 자세히 안내하겠습니다. 이를 통해 클러스터의 모니터링 및 시각화를 손쉽게 구성할 수 있습니다. Prometheus 설치 Prometheus를 설치하기 위해 Helm 차트를 사용합니다. #Helm Repo 추가 helm repo add prometheus-community #Helm을 사용하여 프로메테우스 설치 helm install prometheus prometheus-community/prometheus Pod 확인 설치가 완료되면 다음 명령어를 사용하여 프로메테우스 관련 Pod가 정상적으로 배포되었는지 확인합니다. kubectl get pods Prometheus 서..

DevOps/k8s 2024.01.24

[AWS] VPC(Virtual Private Cloud)를 활용한 네트워크 구성 및 보안 설정 W. TERRAFORM 예제

AWS VPC는 클라우드 환경에서 가상 네트워크를 구축하고 관리할 수 있는 서비스이다. 이를 통해 사용자는 가상의 프라이빗 클라우드를 생성하고, 리소스를 격리하며 네트워크 구성을 세밀하게 제어할 수 있다. 이번 글에서는 AWS VPC의 구성 요소와 주요 개념과 실제 예시를 통해 자세히 살펴보도록하자. Internet Gateway in AWS 인터넷 게이트웨이는 AWS(Virtual Private Cloud) VPC 환경에서 인터넷과의 통신을 가능하게 하는 서비스이다. VPC 내부의 리소스가 인터넷과 통신하기 위해서는 인터넷 게이트웨이가 필요하다. 이를 통해 VPC 내부의 인스턴스들은 인터넷으로 향하는 트래픽을 주고받을 수 있다. VPC 연결: VPC와 인터넷 게이트웨이 간의 연결은 하나의 VPC에 하나..

DevOps/aws 2023.07.13

[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

[컴퓨터구조] 진법 변환의 실무 활용 예시

오늘 컴퓨터 구조를 공부하다가 문득 궁금한게 생겼다. 진법변환(이진법, 16진수)를 활용하여 실무에 활용하는 일이 있을까?! 이런의문.. 웹개발자, 백엔드 개발자로 근무하면서 진법변환과 같은 지식들이 필요했던적이 없던걸로 기억한다. 초반에 개념적인 부분들이 많다보니까 중요도를 부여하는게 잘안되는것 같다..! 하지만 알아보니, 진법 변환같은 경우는 실무에선 거의 쓰이지 않지만 아주 low-level에서는 쓰이기도 한다고 한다. network를 subnet을 나눌때도 사용하기도 한다. 컴퓨터는 결국 0과 1로 동작한다고 설명을 하지만 쉽게 얘기하면 결국 회로에 전기가 흐르냐/아니냐에 따라 1과 0으로 표시된다고 이해하면 될 것 같다. 컴퓨터 공학에서 진법 변환이란, 하나의 진법에서 다른 진법으로 수를 변환하..

네트워크와 CS 2023.05.10

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

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

DevOps 2023.05.08

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

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

DevOps/kafka 2023.05.08

[Kafka] Kafka를 활용한 대규모 데이터 실시간 전송 예제 코드

Kafka는 왜 탄생했나? 단방향 통신 App and Services → Relational Data Ware House Source Application, Target Application이 많아지면서 데이터를 전송해지는 라인이 매우 복잡해졌다. Source Application, Target Application이 많아질수록 key value Store 즉, 데이터를 전송해지는 라인도 그만큼 많아졌다. 데이터를 전송해지는 라인이 많아지면 배포와 장애에 대응하기가 어려워진다. 데이터를 전송할 때 프로토콜포멧 파편화가 심해지고 추후 데이터 포멧 내부에 변경사항이 생기면 유지보수하기어려워진다. apache kafka는 위와 같은 어려움을 해결해준다. Source Application과 Target Appl..

DevOps/kafka 2023.05.02

[queryDsl] fetchFirst() NullPointerException 에러

fetchFirst() NullPointerException 에러가 발생했을 때 이유는 fetchFirst() null을 반환할 경우 발생한다. 이 경우 fetchOne()을 사용하면 해당 에러를 해결할 수 있지만 하지만 fetchOne()은 더 많은 리소스를 사용하여 성능에 영향을 미칠 수 있어 다른 방법을 고려해야한다. 먼저, etchFirst()가 null을 반환하는 이유를 확인해 보자 예를 들어, 조건에 맞는 데이터가 없는 경우 null을 반환하는 것이 의도된 동작이라면, fetchFirst()를 그대로 사용하는 것이 올바른 방법이다. 하지만, fetchFirst()가 null을 반환하는 것이 예상치 못한 결과일 떄 필요한 데이터만 선택적으로 가져오는 등의 방법으로 쿼리를 최적화할 수 있다. 예를..

[PostgreSQL] 운영서버DB를 개발서버로 pg_dump 하는법

프론트에서 운영서버 DB를 개발서버에 맞춰달라는 요청이 들어왔다. 운영서버와 최대한 비슷한 환경으로 작업하면 개발서버로 코드 작업을 할 때도 QA할 때도 에러사항을 더 찾기 편해지기 때문이다. 적어도 잘못된 데이터로 햇갈리는 일들은 없을 거 같다. 참고로 필자의 회사는 postgres를 사용하고 있다. 1. dump를 원하는 데이터베이스에서 sql확장자로 백업파일을 경로를 지정하여 백업파일을 생성한다. pg_dump [dump하고싶은 db명] -U [postgres 유저이름] -h 접속 host주소 -F p -b -v -f /백업파일/경로/ EX) pg_dump prod_database -U usernameSophie -.rds.amazonaws.com -F p -b -v -f /home/ubuntu/d..

[Kotlin]코틀린1.8.0에서 새롭게 업데이트 된 기능

CBRT Function cube root의 단축어로 세제곱근이라는 뜻이다 import kotlin.math.cbrt val num = 24 val negNum = -num println("The cube root of ${num.toDouble()} is: ${cbrt(num.toDouble())}") println("The cube root of ${negNum.toDouble()} is: ${cbrt(negNum.toDouble())}") 매개변수로 double 과 float를 받아들이고 함수를 가져오고 double 또는 float값을 제공하면 된다. Eg) ${cbrt(num.toDouble())}") , ${cbrt(negNum.toDouble())}") @SinceKotlin("1.8") @W..