전체 글
-
tistory mermaidjs render test컴퓨터/HTML & JS & TS 2025. 11. 2. 23:49
🎨 All Mermaid Diagram Types 1. Sequence Diagram sequenceDiagram participant User participant Browser participant Server User->>Browser: Click button Browser->>Server: HTTP Request Server-->>Browser: Response Browser-->>User: Show result 2. Flowchart - Top Down graph TD A[Start] --> B{Is it working?} B -->|Yes| C[Great!] B -->|No| D[Debug] D -..
-
백엔드 마인드로 Kubernetes 컨트롤러 개발하면서 깨달은 것들컴퓨터/Kubernetes 2025. 10. 25. 21:45
"아, 이거 그냥 요청당 핸들러 돌리는 거 아니었구나..." 며칠 전부터 Kubernetes Operator/Controller를 개발하기 시작했다.백엔드 개발만 주로 하다가 K8s 생태계로 넘어오니까 솔직히 개념이 머리에 잘 안 들어왔다.특히 이런 질문들이 머릿속을 떠나지 않았다:컨트롤러가 뭐지? 고루틴 하나인가?유저가 UI 클릭하면 내 백엔드 API가 컨트롤러를 실행시키는 건가?요청마다 컨트롤러가 새로 뜨는 건가?Owner Reference가 뭔데 "sole controller"라는 말이 나오지? 백엔드 개발자라면 공감할 것이다:// 내가 아는 세상 (Echo/Gin 같은 백엔드)func CreateRedis(c echo.Context) error { // 요청 들어옴 → 핸들러 실행 → 응답 ..
-
Kubernetes Operator 개발할 때 Server-Side Apply 써봤더니컴퓨터/Kubernetes 2025. 10. 18. 21:32
Kubernetes Operator 개발할 때 Server-Side Apply 써봤더니 이렇더라들어가며Kubernetes Operator를 만들면서 Status 업데이트를 어떻게 해야 할지 고민이 많았다. 처음엔 그냥 Update()를 썼는데, 나중에 Server-Side Apply (SSA)라는 걸 알게 됐고, 실제로 적용해봤더니 생각보다 많은 게 바뀌더라.이 글은 전통적인 Client-Side Apply 방식과 Server-Side Apply를 비교하면서, 왜 SSA가 좋은지, 그리고 주의할 점은 뭔지 정리한 내용이다.문제의 시작: 전통적인 Update 패턴처음 Operator를 만들 때는 당연히 이렇게 짰다:func (r *VirtualMachineReconciler) updateVMStatus(c..
-
WSL 환경에서 Redis Cluster ( ~/ vs /mnt/..)컴퓨터 2025. 7. 21. 16:35
Ubuntu 22.04에서 테스트만 하다가 Windows 11 WSL2에서 간단히 실행해보고 싶었다.마스터 3, 복제본 한개씩 해서 6 노드가 실행 중이다.dev@DESKTOP-SW:/mnt/d/Dev/Java/first-come-first-serve/redis/redis-nodes$ redis-cli -c -h localhost -p 9001 -a 1234 SET test:key "hello"OKdev@DESKTOP-SW:/mnt/d/Dev/Java/first-come-first-serve/redis/redis-nodes$ redis-cli -c -h localhost -p 9004 -a 1234 GET test:key"hello" 9001 (마스터)에 쓰기를 하고 9004 (복제본)에서 키를 읽어도 ..
-
fly.io: Postgres Development 서버컴퓨터 2025. 7. 15. 11:19
메모리가 256MB 서버이긴 해도 Grafana를 통해서 보면 190 MIB 정도로 스테이블 하게 돌아간다.하지만, 가끔 CPU 활용이 90% 이상을 넘어가는 현상을 목격했다.mydb=# SHOW checkpoint_completion_target;SHOW max_wal_size;SHOW min_wal_size;SHOW checkpoint_timeout; checkpoint_completion_target------------------------------ 0.9(1 row) max_wal_size-------------- 98MB(1 row) min_wal_size-------------- 32MB(1 row) checkpoint_timeout-------------------- 5min(1 row)..
-
Redis: n분 동안 키워드 랭킹? timeseries컴퓨터/JAVA 2025. 3. 15. 22:37
1시간 동안 메시지 수 그래프 등 기능을 만들기 위해somekey::keywords: 와 같이 정렬된 집합 (ZSET)을 주로 쓰고 있었다. 문제는 문서에 따르면 small size의 ZSET은 압축된 형식 (ziplist/listpack)으로 저장하지만,항목 개수 또는 항목 크기 제한을 초과하면 자동으로 Hashtable로 변환된다고 한다. (메모리 2배 이상 증가 가능) 그래서 TimeSeries 데이터 구조를 사용하면 빠르고 효율적으로 시간 기반 쿼리가 가능하다고 한다.redis-stack이나 enterprise 깔면 쉬운데 일단 wsl2 환경에서 redis-server를 로컬로 돌리고 있으니모듈을 설치해야 한다. (아니면 아래 명령어를 통해 모듈이 있나 확인)redis-cli> MODULE LIS..
-
Spring: Playwright exposeFunction (유튜브 라이브 채팅 읽기)컴퓨터/JAVA 2025. 3. 2. 23:24
Youtube.com 라이브에서 API 없이 실시간으로 채팅을 읽고 싶었다. Spring Boot 3.4 + Java 23 환경에서 Virtual Thread를 켠 상태이다.(새로운 동영상마다 scraper가 생성되는 방식)일단 유튜브 웹사이트가 동적으로 iframe을 불러온다. 처음에는 HTML에서 element를 계속 읽으면 될 것이라고 생각했다.하지만, 유튜브가 DOM을 재활용한다. (보이는 부분만 렌더링?)그래서 이 방식은 어느 순간부터 새로운 메시지를 잘 읽지 못하고, ID도 재사용되는 듯해 uuid를 써서메시지를 처리했는지 일일이 확인해야 했다. 그러면 어떻게 하면 제일 빠르게 읽을 수 있을까? 고민을 하다가 @MutationObserver를 알게 되었다.DOM 트리 변경사항을 감지할 수 있..
-
Grafana + Prometheus docker 기본 셋업컴퓨터/소프트웨어 2025. 2. 2. 12:24
https://github.com/grafana/docker-otel-lgtm/tree/main GitHub - grafana/docker-otel-lgtm: OpenTelemetry backend in a Docker imageOpenTelemetry backend in a Docker image. Contribute to grafana/docker-otel-lgtm development by creating an account on GitHub.github.com 그라파나 공식 레포에 있는 도커 이미지를 사용하면 편하다.(LGTM = Looks Good To Me = Loki + Grafana + Tempo + prometheus Metrics) 1.Server서버에서는 metrics 엔드포인트를 만..