전체 글 270

서버가 달라도 빠르게 통신하는 방법 ( 쿠버네틱스 )

"K3s 클러스터에 노드를 추가하면 통신이 더 빨라지는가?","같은 클러스터 내 노드끼리는 같은 네트워크처럼 취급되는가?" 1. K3s 클러스터에 추가된 노드끼리는 내부 네트워크로 통신 K3s는 클러스터 내부 네트워크(CNI) 를 구성해서,Pod 간 통신 / Node 간 통신을 내부 가상 네트워크에서 처리합니다.내부에서 DNS로 pod, service 이름으로 접근 가능기본적으로 Flannel CNI가 내장되어 있고, 다른 CNI 플러그인도 설정 가능결론:K3s 클러스터에 조인된 노드들은 “동일한 네트워크 대역처럼 취급”됩니다.그래서 Service, Pod, Endpoint로 통신할 때 NAT 없이 바로 전달되기 때문에 빠르고 효율적입니다. 2. 단순 외부 서버끼리 통신 vs 클러스터 내부 통신 비교..

TIL 22:54:09

Node 도커 이미지 메모리 용량 줄이는 방법

Node가 한 서버당 약 380메가 정도 먹고있었는데 줄이는 법을 찾았다!! 24일 기준 5G -> 2.5G로 줄었다! 어떻게했냐? 도커 이미지 말떄 빌드 + 실행을 이미지/컨테이너에서 했는데 이제는 빌드된 결과물만 가지고 실행해서그럼!! 기존 코드 ( 예시) FROM node:18 WORKDIR /appCOPY . .RUN npm install && npm run build CMD ["npm", "start"] -> 지금 방식: 빌드된 결과물만 가지고 실행 # --- 빌드 단계 ---FROM node:18 AS builderWORKDIR /appCOPY . .RUN npm install && npm run build# --- 런타임 단계 ---FROM node:18-alpineWORKDIR /..

TIL 2025.07.24

Loki란

회사에서 모니터링을 하게되면서 알게되고 애를 많이 먹은 녀석이다. 우선 개념은 로그 수집기 로그를 보내는 쪽은 promtail 이라는 걸 주로 쓴다. 보통 ELK를 쓰곤하지만, 배민에서도 Grafana + Loki로 하기도하고, 좀더 학습곡선이 쉬운 Loki를 채택했다. grafana에서 LogQl이라는 쿼리를 사용해 조회한다. 내가 느꼈을때 중요한점은 다음과 같다. 로그는 대부분 안읽는 정보들임. 많~~~~이 저장하고 쪼오오끔 읽는게 대부분임. 그래서 1. 정말 필요한정보인가? -> 하지만 개발하는 입장에서 이를 100% 알기란 쉽지않다. 결국 정말 필요없는 정보를 로그에 남기지 않는게 중요하다. 2. 얼마나 저장하느냐 -> Loki에서는 얼마나 저장할지 loki con..

TIL 2025.07.23

HPA 오토스케일링 서버 첫 cpu 스파이크 무시하기

HPA로 오토스케일링하려는데, node JS에서 처음 부팅할떄 cpu를 엄청 잡아먹어서 바로 허겁지겁 또 스케일아웃 하는 현상이 발생했다.. 첫 부팅때는 CPU 감지 못하도록 hpa 설정하기! -> 는 deployment에 설정하면 됨. readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 40 : 컨테이너 시작 후 40초 후에 시작 periodSeconds: 5 : 매 5초마다 timeoutSeconds: 3 : HTTP 응답이 3초 안에 안 오면 실패로 간주 failureThreshold: 10 : 10번 연속 실패하면 Not Ready로 간주. 를 deployment에 반영하면 ready 이후에만 ..

TIL 2025.07.20

Node JS는 100%싱글스레드가 아니다.

우선 한줄요약) Node.js는 "100% 싱글스레드"는 아니고, "이벤트 루프는 싱글스레드지만, 백그라운드 작업은 멀티스레드로 처리된다" Node.js의 스레드 구조 간단 요약이벤트 루프 (싱글 스레드)자바스크립트 코드 실행, 콜백 처리 등 주 로직 담당libuv 스레드 풀 (기본 4개)파일 I/O, DNS, 암호화, DB 드라이버 같은 느린 작업 처리OS-level 비동기 (ex. epoll, IOCP)소켓 등 일부 작업은 OS 비동기 인터페이스 사용 🎯 예시로 보면const fs = require('fs'); fs.readFile('/big/file.txt', (err, data) => { console.log('파일 읽음'); });readFile()은 libuv 스레드 풀에서 실행됨 → 이벤트..

TIL 2025.07.20

VI 있어보이게 써보자..

vi에서 맨날 화살표랑 그냥 입력좀 잘 해보자 나도.맨날 알기만하고 손이 안가.. gg: 맨앞5G: 5번째 줄로 이동G:맨뒤우선 외울거. a말고,i로 하면은 거기서 입력임I : 줄 맨앞에서 입력시작A : 줄 맨 끝에서 입력 시작o: 아래 줄에 새 줄 추가하고 입력시작 yy >> 복사p : 아래에 복사하기 r: 현재 글자를 다른 글자로 바꾸는거!!! 우선 r !! I A우선 이거 알고가자. 맨날 다 외워도 그저 화살표랑 복붙만씀 ㅋㅋ

TIL 2025.07.04

모르는 서버 접근 후 프로세스 확인방법

이 서버에는 뭐가 돌아가고있지? 싶을때가있다. ssh로 들어가서. 1. 현재 실행 중인 프로세스 전체 확인ps -ef --forest또는 ps aux --sort=-%mem | head -n 20→ 어떤 프로세스가 많이 돌아가고 있는지 한눈에 볼 수 있음 2. 리눅스 서비스(systemd)로 실행 중인 목록 확인systemctl list-units --type=service --state=running→ xxx.service, nginx.service, api.service, redis.service 같은 게 나오면 시스템 서비스로 실행 중 3. 포트 기반으로 어떤 서비스가 열려 있는지 확인sudo lsof -i -P -n | grep LISTEN또는sudo netstat -tulnp→ 예:n..

TIL 2025.07.04

Console vs Winston

Node.js에서 로그를 출력할 때 가장 흔하게 접하는 방법은 단연 console.log()일 것이다. 하지만 실무에서는 console만으로는 부족한 경우가 많고, 이럴 때 등장하는 것이 바로 winston 같은 로그 라이브러리다. 이번 글에서는 console과 winston의 차이를 비교하고, 실무에서 왜 winston을 쓰는지 정리해보자. 1. 기본 사용법 비교console console.log("로그 출력"); console.error("에러 출력"); console.warn("경고 출력"); 간단하고 직관적이다. Node.js 내장 기능이기 때문에 따로 설치할 필요도 없다. 2. winston const winston = require('winston'); const logger = winsto..

TIL 2025.07.04

JS의 동작원리

자바 개발을 했던 나에게는 매우 생소했던 개념이었다. console.log('1')setTimeout(() => { console.log('2')}, 0)Promise.resolve().then(() => { console.log('3')})console.log('4') 을 수행하면 출력이 어떻게 될까~~~??? 출력결과 ) 1 4 3 2 임 ㄷㄷㄷㄷ 이유 ) 콜스택 큐 -> 마이크로테스트 큐 ( promise ) -> 콜백 큐 ( setTimeout) 같은걸로함. while (true) { // 아무 것도 안 하고 반복}결과:CPU 100% 점유 Node.js는 단일 스레드라서, 아래와 같은 모든 작업이 멈춥니다: 클라이언트 요청 처리 타이머 (setTimeout) Promise..

TIL 2025.06.29

DB 차이점 정리

이번 회사에서는 PostGRE를 쓴다. DB별 장단점 정리좀 해보자! + SQL Lite는 로컬 DB ( 프론트엔드에서 사용하는 DB ) 라는데 그게 뭐지? PostgreSQL / MySQL vs SQLite 비교 PostgreSQL / MySQL SQLite 서버 필요✅ 서버 구동 필수❌ 필요 없음 (파일 기반)멀티 유저✅ (동시 접속 가능)❌ (단일 사용자 또는 간단한 앱 용도)성능고성능, 대용량 처리 적합경량용, 단일 사용자에 적합용도웹서버, 기업 백엔드모바일/데스크탑 로컬 저장소저장 방식디스크 + 서버 관리.db 하나로 저장됨 Oracle vs MySQL v..

TIL 2025.06.29