콘텐츠로 바로가기

Seongwon

  • 기술 블로그
  • 영어
  • 기록
  • About
  • Editorial
  • 문의
Seongwon

소프트웨어 엔지니어의 기록

Categories

  • 개인 기록(Personal)4
    • 계획(Plan)0
    • 분석(Analysis)0
    • 일기(Diary)3
    • 작업 일지(Work Log)0
  • 기술 블로그115
    • AI13
      • 결과 판단(Evaluation)3
    • Architecture5
    • Backend37
      • 설계 판단13
    • DevOps6
    • Games0
    • Infra17
  • 기타0
  • 성과4
    • 아키텍처 의사결정 (ADR)4
  • 영어(English)48
    • 개발 영어 (Developer English)13
    • 어원(Etymology)16
  • 자기계발 (Growth)8
    • 독서 (Reading)2
    • 방향과 가치 (Direction & Values)3
  • DevOps, Infra

    [인프라 비용] Bitnami Helm으로 무료 인프라? — 라이선스 피와 개발자 시간, 무엇이 진짜 싼가

    Bitnami Helm 차트는 프로덕션급 Postgres·RabbitMQ·Redis를 한 줄로 띄워주던 무료 지름길이었다. 그런데 2025년 라이선스 변경으로 무료 사용이 크게 제약됐다. 무료 인프라를 목표로 할 때 이게 무슨…

    2026.07.14
    정성원
  • Backend, Infra

    [채팅 백엔드 보안] WebSocket은 무엇으로 지키고, 셀프호스팅한 메시지 큐는 누가 들여다보나

    WebSocket 채팅을 무엇으로 인증·격리하는지(JWT HS256 + TLS + 테넌트 네임스페이싱), 메시지 큐로 RabbitMQ를 고른 이유와 PV 구성, 그 큐를 headless ClusterIP로 바깥에 안 여는 접근…

    2026.07.14
    정성원
  • DevOps, Infra

    [인프라 자동화] Provider 계층만 교체한다 — 인프라에 적용한 Hexagonal과 ‘무료가 기본값’인 스킬 설계

    GKE에서 OKE로 갈아탔는데 ArgoCD·Traefik·배포 스크립트는 한 줄도 안 바꿨다. 인프라 자동화 스킬을 Hexagonal 포트/어댑터로 설계해 클라우드 provider 계층만 교체하는 법, 실수로 과금되지 않도록 ‘무료를 기본값’으로…

    2026.07.13
    정성원
  • Backend, 기술 블로그

    [Flutter × 채팅] 낙관적 UI와 clientMsgId — 서버 멱등키가 클라이언트에서 중복 제거로 완성되는 지점

    이중 쓰기(WS 릴레이 + REST 영속화)를 하면 내가 보낸 메시지가 WS로 되돌아와 중복된다. Flutter 앱 Bibleana가 clientMsgId 하나로 낙관적 UI와 에코 dedupe를 잇는 방법, single-flight…

    2026.07.13
    정성원
  • Backend, 기술 블로그

    [채팅 백엔드 설계] 방이 두 pod에 흩어졌을 때 — RabbitMQ fan-out과 app_key 멀티테넌시

    게이트웨이를 여러 pod로 늘리면 같은 방의 두 사용자가 서로 다른 인스턴스에 붙는다. RabbitMQ topic exchange에 인스턴스별 ephemeral 큐를 바인딩하고 origin 태그로 중복을 막는 fan-out, 그리고…

    2026.07.12
    정성원
  • Backend, 기술 블로그

    [채팅 백엔드 설계] 느린 클라이언트 하나가 방 전체를 막지 않게 — 샤딩·워커풀·drop-on-full

    WebSocket 게이트웨이는 얇지만 단순하지 않다. 방 맵을 32개 샤드(FNV-1a)로 나눠 lock 경합을 줄이고, 방마다 워커풀 10 + 버퍼 큐 10000을 두고, 큐가 꽉 차면 blocking…

    2026.07.12
    정성원
  • Backend, 기술 블로그

    [채팅 백엔드 설계] 게이트웨이를 일부러 멍청하게 — 실시간 릴레이와 영속화를 분리한 이유

    채팅 백엔드에서 실시간 전달과 메시지 영속화를 한 서비스에 묶으면 DB 장애가 실시간을 죽이고 스케일링이 어려워진다. room-gateway를 DB도 비즈니스 로직도 없는 ‘dumb pipe’로 두고, 클라이언트가 WS…

    2026.07.11
    정성원
  • DevOps, Infra

    [OKE 인프라 학습 시리즈] arm64 노드에 실제 서비스 얹기 — 무료 OKE 배포에서 부딪힌 함정들

    무료 A1(arm64) 단일 노드에 Go 채팅 백엔드 8개 pod를 얹으며 실제로 부딪힌 것들. cri-o의 short-name 거부, RabbitMQ의 deprecated env로 인한 부팅 실패, WebSocket을 위한 sessionAffinity·graceful…

    2026.07.11
    정성원
  • Infra, 기술 블로그

    [OKE 인프라 학습 시리즈] 무료 클러스터에 https:// 붙이기 — Traefik LoadBalancer + 도메인 + cert-manager

    OKE 클러스터는 떴지만 바깥에서 접근할 수 없다. Traefik를 Service type=LoadBalancer로 붙여 OCI 무료 10Mbps LB 공인 IP를 받고, 도메인을 A 레코드로 연결한 뒤, cert-manager와 Let’s…

    2026.07.10
    정성원
  • Infra, 기술 블로그

    [OKE 인프라 학습 시리즈] 관리비 $0로 쿠버네티스 띄우기 — OCI Always Free로 OKE 클러스터 구축

    OCI Always Free 한도 안에서 관리형 쿠버네티스(OKE)를 월 $0로 띄운다. Basic 클러스터 + A1.Flex(arm64) + 4 OCPU/24GB 무료 조건, 세션 토큰 대신 API 키 인증,…

    2026.07.10
    정성원
이전 페이지
1 2 3 4 … 9
다음 페이지

Popular

  1. 1[개인 아키텍처 시스템 #1] 하나의 템플릿에서 굴리는 나만의 개발 자동화 — 왜, 어떻게 만들었나
  2. 2[백엔드 운영] 커넥션 풀이 막히는 순간을 숫자로 읽는 법 — Hikari와 pgxpool은 같은 고갈을 다르게 보여준다
  3. 3[백엔드 운영] 커넥션을 얼마나 기다리고 얼마나 오래 살릴까 — timeout과 lifetime을 Hikari·pgxpool로 비교
  4. 4[백엔드 운영] Hikari가 공짜로 해주던 것 — 커넥션 누수 추적을 직접 만들어 보다
  5. 5[백엔드 운영] 긴 작업이 짧은 요청을 잡아먹을 때 — 풀 격리와 읽기/쓰기 분리

Recent

  • [개인 아키텍처 시스템 #1] 하나의 템플릿에서 굴리는 나만의 개발 자동화 — 왜, 어떻게 만들었나2026.07.19
  • [아키텍처 #4] MSA(Microservices) — 서비스 경계, DB 소유, 그리고 Saga2026.07.19
  • [아키텍처 #3] Event-Driven Architecture(EDA) — 브로커로 서비스를 느슨하게 잇기2026.07.18
  • [아키텍처 #2] Hexagonal(Ports & Adapters)와 MessageQueue — Consumer·Publisher는 어느 레이어에?2026.07.18
  • [아키텍처 #1] Go로 이해하는 Clean Architecture — 의존성 규칙과 레이어2026.07.17

Tags

architecture backend chat connection-pool database developer-english DevOps etymology GKE golang hikaricp infra Ingress kubernetes latin oke performance pgxpool rabbitmq spring sre webrtc websocket 시리즈-쿠버네티스

Visitors

Today36
Total8,539

Calendar

2026 7월
월 화 수 목 금 토 일
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 6월    
LessMore

© 2026 Seongwon. All rights reserved.

About · 개인정보처리방침 · 이용약관 · 문의
Top ↑

Designed with WordPress · Theme by Seongwon