전체 글428 하네스엔지니어링에 대한 고찰 최근에 개발 방법이 AI를 이용한 개발 방법으로 많이 변화해 왔다.이전에는 VI 에디터와 메모장을 이용하여 개발을 하였고, 이후 노트패드, 에디터 플러스와 같은 아주 간단한 에디터 도구들의 등장! 자동완성을 도와주고 개발을 편리하게 해주는 이클립스와 인텔리제이의 등장까지.. 이때마다 들었던 이야기는 우수갯소리 였지만.IDE 즉 eclipes 와 Intellij 를 사용할때 이런 말들을 하곤 했다. ”진정한 개발자라면 메모장을 열어서 개발해야 한다. 자동완성 해주는 eclipes 와 intellij 를 사용하면 개발이 퇴화한다”하지만 이런말들은 그저 우수갯 소리였고, 이클립스나, 젯브레인에서 제공하는 유료툴인 인텔리 제이를 사용하였다. 지금은 또 한번 개발의 전환점을 맞이 하고 있는 것이라 생각된다.AI .. 2026. 4. 15. git repository 이관 방법 —bare, —mirror 가끔 작업을 하다보면 깃 레파지토리를 이관해야 하는경우가 생깁니다. 간단하게 remote 정보를 변경해 주는 방법도 있지만 기존 히스토리 및 TAG, Branch 를 모두 옮겨야 하는경우가 있습니다.예를 들면 이사할 새집에 새로 시작하기 위해 아무것도 가져가지 않는것과 모든것을 다 이동하는 (이사짐센터를이용) 경우입니다.이때 --bare, --mirror를 사용하면 됩니다. git 저장소를 이동할때 history 까지 이동하고자 하는경우 사용bare , mirror--bare--mirror이 두가지 차이점은 refs/*를 가져 오는지 안가져 오는지에 대한 차이가 있다.하지만 좀더 안전하게 이전하기 위해 —mirror 를 추천한다.핵심 차이점 baremirror작업디렉토리없음 (데이터만 존재함) src… .. 2026. 4. 14. kubernetes Ingress 란? kubernetes 에서 ingress 란?http/https, ssl 및 라우팅을 해주는 기능을 담당한다. 이는 외부에서 클러스터 내부 어플리케이셔네 접근하는 진입경로 역활을 한다.kubernates ingress 를 사용하기 위해서는 ingress controller service , ingress controller 와 resource에 대해 알아야 한다. 그림으로 보면 다음과 같다. (1) 외부 클라이언트가 Pod(Application)에 접근 하기 위해 Host(HTTP/HTTPS) 를 입력하여 접근요청을 Ingress Controller 의 외부 IP로 보낸다.(2) Ingress Controller Service에서 요청이 들어온걸 확인하고 HA로 구서된 Nginx Ingress Contro.. 2025. 10. 30. Kafka LISTENER 속성 카프카 속성중 KAFKA_LISTENERS,KAFKA_ADVERTISE_LISTENERS에 대해 알아 보자.카프카에서는 “LINSTNERS”를 제공하고 있다.보통 Spring boot와 같은 client(kafka client)를 이용하게 되며, 클라이언트안의 “bootstrapservers” 항목에 적혀있는 서버 정보를 보고 kafka 서버에 최초 접근한다.이후 클라이언트는 *kafka 측으로 메타정보 요청을 하고 응답을 수신 받았을때 *“KAFKA_ADVERTISER_LISTENER” 에 적혀 있는 주소를 보고 어떤 브로커에 접속해야 할지 알게되며 이것을 기반으로 클라이언트는 접근 요청을 보낸다.다이어그램으로 보면 다음과 같다. 클라이언트는 bootstraps 정보를 보고 브로커에 접속하여 메타데이터.. 2025. 10. 27. Spring boot KEDA 예제 keda란?kubenetes base event driven autoscaler로 외부로 부터 다양한 이벤트를 받아 애플리케이션 파드들을 오토스케일링하기 위한 목적으로 개발된 경량의 쿠버네티스 컴포넌트 입니다.https://keda.sh/ 왜 그리고 언제 사용하나요?이번 예제에서는 KEDA를 사용하여 이벤트가 많이 발생되었을때 Kafka의 leg 부분을 모니터링 하고 우리가 지정한 leg 범위까지 늘어 졌을때 keda가 어떻게 잘 동작되는지 알아 보려 합니다.그럼왜? HPA를 안쓰고 KEDA를 사용하나요!?HPA로 늘어난 CPU 및 메모리 리소스의 사용량 대해서 스케일업이 가능하게 구성 할 수도 있으나, 이는 위에 언급한 요청량에 의한 모니터링은 불가능합니다.만약 갑자기 많은 요청에 의해 Kafka To.. 2025. 10. 12. helm으로 argo cd install (nginx ingress 사용) 설치 준비Helm 설치helm이 설치되어 있는지 확인하자helm은 rancher desktop을 설치할때 같이 설치 된다.brew install helmHelm version 확인➜ ~ helm versionversion.BuildInfo{Version:"v3.18.6", GitCommit:"b76a950f6835474e0906b96c9ec68a2eff3a6430", GitTreeState:"clean", GoVersion:"go1.24.6"}k8s namespace 추가namespace : kafka-eda➜ ~ kubectl create namespace kafka-edanamespace/kafka-eda created생성된 네임스페이스 확인➜ ~ kubectl get nsNAME .. 2025. 10. 11. docker desktop 에서 rancher desktop로 kubenetes certificate signed by unknown authority docker desktop 에서 rancher로 변경후 kubectl 명령어를 실행시 오류바 발생했다. ~ kubectl versionClient Version: v1.34.0Kustomize Version: v5.7.1Unable to connect to the server: tls: failed to verify certificate: x509: certificate signed by unknown authority➜ ~ kubectl get nodesUnable to connect to the server: tls: failed to verify certificate: x509: certificate signed by unknown authority인증서가 잘못되었다. 즉 신뢰 할수 없다는 경고문.. 2025. 10. 10. loki logback appender 란? loki logback appender란?opentelemetry logback appender는 https://opentelemetry.io/docs/zero-code/java/spring-boot-starter/out-of-the-box-instrumentation/ Open Source 재단에서 만들고 제공하는 라이브러리로 중앙 집중형태의 collector 만들때 사용한다고 언급하였다. 오늘 알아볼 loki logback appender 는 여기서 확인 할 수 있다.https://loki4j.github.io/loki-logback-appender/ Loki4j Logback · Pure Java Logback appender for Grafana LokiPure Java Logback append.. 2025. 9. 10. opentelemetry logback appender opentelemetry logback appender우리는 로그를 확인하기위해 System.out.print 명령어를 이용하여 로그를 확인하였다. 하지만 시간이 흐름에 따라 콘솔기록 뿐만 아니라 파일로 기록을 남기기 위해 common-log 부터 log4j 까지 그리고 지금은 logback, slf4j 을 사용한다.모놀리틱 환경에서 분산서비스(MSA) 환경에 접어 들면서 로그를 한곳에서 모아보거나 흩어져있는 로그들을 취합하고 추적하기 위한 기술들이 사용되게 되는데 그중에 한가지를 소개한다.opentelemetry-logback-appender 라는 모듈이다. 아직 정식버전은 아니고 -alpha 버전만 존재한다.“다운로드 링크” →https://mvnrepository.com/artifact/io.ope.. 2025. 9. 3. matric / trace micrometer, OTLP 라이브러리 설명 서버에서 트레이싱과 메트릭 수집을 하기 위해서는 micromiter를 사용하여 cpu, 메모리 http 요청(count) 에대한 매트리글 수집하고, otpl 라이브러리를 사용하여 grabal MDC tracd id , span id 등을 생성하고 관리 할 수. 있다.matric 수집micrometer-registry-otlp메트릭 전송도구로 OTLP 프로토콜을 사용한다.cpu, 메모리, http요청수 응답시간 등의 수치데이터를Prometheus 대신 otlp로 메트릭을 보내고 싶을때 사용한다.micrometer-registry-prometheus메트릭 전송도구로 Prometheus 포멧이다.위와 동일한 메트릭 수치데이터를 Prometheus 엔드포인트 (/actuator/prometheus)로 노출한다... 2025. 9. 3. zipkin , jaeger, grafana tempo 특징 모두 분산추적(트레킹)시스템이다. 각각이 모두 장단점을 가지고 있으며, 이에 대해 알아 보자. 1. Jaeger예거는 분산 추적 시스템으로 유명하며, 중대형시스템에서 자주 사용된다. 학습곡선이 높지만 설정할수 있는 기능들이 많고 데이터 보관 및 확장성에 용의 하다.OpenTracing 의 네이티브 구현으로 표준을 지원하는 프레임웍들과 쉽게 통합 할 수있다. (ex grafana 연동 등)저장소 고급기능Cassandra적응형 샘플링Elasticsearch추적집계 종속성 그래프 시각화중대형 시스템에 적합한 트레이싱 도구로 저장 및 처리시 많은 컴퓨팅 자원이 소모될 수 있으며, 복잡한 설정으로 학습곡선이 높다.2. Zipkin경량화된 트레킹시스템으로 보통 중소형 시스템에서 자주 채택하는 아키텍처로 사용된다... 2025. 7. 30. Observability & Open Telemetry 전파전략 전파 전략Open Tracing 의 전파 전략에 대해 알아보겠습니다. 오픈트레이싱에서 선택할수 있는 방법은 두가지가 있습니다. 이전 Brave모드와, W3C Trace Context 스팩입니다. W3C Trace Contexttraceparent: {version}-{trace-id}-{parent-id}-{trace-flags}traceparent (필수)트레이스 구조 표현versiontrace IDspan IDtrace flagesversion 2자리 현재 버전정보trace-id32자리전체 트레이스를 식별하는 IDparent-id16자리현재 요청의 상위 span Idtrace-flasgs2자리샘플링 정보 (01: 샘플링 OK, 00: 샘플링 NO )traceparent: 00-4bf92f3577b.. 2025. 7. 30. Observability & Opentelemetry 옵저버빌리티(관찰가능성)란 ?옵저버빌리티를 사용하면 다음과 같은 질문을 통해 외부에서 시스템을 이해 할 수있다.내부 동작 방식을 모른채 그시스템에 대한 질문 또한 새로운 문제 즉 “알수없는” 문제를 쉽게 해결하고 처리 할 수 있다. 또한 알수 없는 문제들에 있어 “왜 이런 일이 발생하는가?” 에대한 질문에 답을 하는데 도움이 된다. MoniteroringObservability접근 방식미리 정의된 지표 주심의 상태 이상 감시내부 상태 추론, 원인 파악 및 분석활용 데이터Metrics, 알림Metrics, Logs, Traces목표무엇이 문제인가? 에 대한 문제 감지 /알림왜 문제가 발생 하였는가? 에 대한 근본적인 원인 분석활용 범위/관점일부 시스템, 사후 대흥시스템 사전.사후 통합 분석 옵저버빌리티.. 2025. 7. 30. Next.js 환경별 빌드 dotenv Next.js 혹은 Node.js 에서 환경별로 빌드하는 방법은 두가지가 존재한다.Node 에서 build 시에 env 값의 우선순위는 env.production > env.development > env.local 형태로 바라보기 때문에 다음과 같이 build 시 해당 파일을 .env.local 로 변경하여 npm start 로 실행시 development, production 에 속한 ENV 값을 local로 하여 해당 파일을 읽어 실행 하도록 한다. "scripts": { "start": "react-scripts start", "build": "react-scripts build", "build:dev": "cp .env.development .env.local && react-.. 2025. 1. 22. Multi datasource, router datasource 멀티-테넌시란?멀티-테넌시는 소프트웨어 어플리케이션의 단일 이느턴스가 여러 고객에게 서비스를 제공하는 아키텍처 이다.아래 그림에서 보듯이 싱클 테넌시와 멀티테넌시는 확실하게 구분된다. 싱글테넌시의 경우 사용자 별로 어플리케이션과 Database 가 존재한다.멀티테넌시의 경우엔 하나의 어플리케이션에서 여러 테넌트(tenant,사용자)가 사용할 수 있도록 해준다.멀티테넌시를 구축하는 이유는 고객마다 새로운 시스템을 만들 필요가 없기 때문에 소프으웨어 개발과 유지보수 비용을 절약 할 수 있기때문에 경제 적이다.멀티테넌시를 구축하는 방법은 여러 방법이 있다. 인프라 적인 부분, 소스코드에서 분기 혹은 database 에서 분리등 여러 방법을 이용하여 테넌트 분리가 가능 하며 대표적으로 다음과 같이 구분 해볼 수.. 2025. 1. 9. 이전 1 2 3 4 ··· 29 다음