본문 바로가기
전체 1608
1404
Infra3분 읽기
로드 밸런싱 기초 — 트래픽을 여러 서버로 나누기
서버 한 대로 버티다 늘리려면 앞에 로드 밸런서가 필요하다. 라운드로빈·least connection 같은 분산 방식과 세션·헬스체크 함정까지.
#LoadBalancing#Infra#Scaling
2026.07.19
1403
Etc3분 읽기
Big-O 표기법 — 실무 개발자를 위한 최소한
알고리즘 이론이 아니라, 코드가 데이터 10배 커지면 얼마나 느려지는지 가늠하는 도구. O(1)·O(n)·O(n²)만 알아도 대부분의 성능 사고를 예방한다.
#Algorithm#BigO#Performance
2026.07.18
1402
Etc3분 읽기
문자 인코딩과 UTF-8 — 한글이 깨지는(모지바케) 이유
"한국어"처럼 글자가 깨져 보이는 건 저장한 인코딩과 읽는 인코딩이 다르기 때문이다. 바이트와 문자, UTF-8·EUC-KR·BOM까지 한 번에 정리한다.
#Encoding#UTF-8#Unicode
2026.07.18
1401
Database3분 읽기
SQL GROUP BY와 집계 함수 — 데이터를 묶어서 요약하기
"카테고리별 매출 합계"처럼 묶어서 계산하는 GROUP BY. COUNT·SUM·AVG와 WHERE·HAVING의 차이까지, 집계 쿼리의 기본을 정리.
#SQL#GROUP BY#Aggregate
2026.07.17
1400
Database3분 읽기
트랜잭션 ACID란 — 데이터가 깨지지 않게 지키는 4가지
계좌 이체 중간에 서버가 죽으면 돈이 사라질까? 트랜잭션의 ACID(원자성·일관성·격리성·지속성)가 이런 사고를 막는 원리를 쉽게 정리.
#Database#Transaction#ACID
2026.07.16
1399
Backend3분 읽기
로그 레벨과 구조화 로깅 — 디버깅이 쉬워지는 로그 쓰기
console.log만 흩뿌리면 정작 장애 때 원하는 로그를 못 찾는다. ERROR·WARN·INFO·DEBUG 구분과 JSON 구조화 로깅으로 검색 가능한 로그 만들기.
#Logging#Observability#Backend
2026.07.16
1398
Backend3분 읽기
피처 플래그 기초 — 코드는 배포하되 기능은 나중에 켜기
배포와 기능 출시를 분리하는 스위치. 미완성 기능을 숨긴 채 배포하고, 문제 생기면 코드 롤백 없이 끄기만 하면 되는 피처 플래그의 기본.
#FeatureFlag#Deploy#Release
2026.07.15
1397
Backend4분 읽기
우아한 종료(graceful shutdown) — 배포할 때 요청 끊기지 않게
배포로 서버를 재시작할 때 처리 중이던 요청이 뚝 끊기면 사용자는 에러를 본다. SIGTERM을 받아 새 요청은 막고 진행 중인 건 마무리하는 법.
#Backend#Deploy#SIGTERM
2026.07.15
1396
Database3분 읽기
UUID vs 자동증가 — 기본키로 무엇을 쓸까
순차 정수 ID는 간단하고 빠르지만 예측 가능하고 분산에 약하다. UUID는 겹칠 걱정이 없지만 크고 인덱스에 부담. 상황별 선택 기준.
#Database#UUID#PrimaryKey
2026.07.14
1395
Database3분 읽기
인덱스의 단점 — 언제 인덱스를 만들지 말아야 하나
인덱스는 조회를 빠르게 하지만 공짜가 아니다. 쓰기 성능 저하, 저장공간, 안 타는 인덱스까지. 무작정 다는 게 답이 아닌 이유.
#Database#Index#Performance
2026.07.13
1394
Backend3분 읽기
REST API 버저닝 전략 — URL·헤더 어느 쪽이 정답인가
API를 바꾸면 기존 클라이언트가 깨진다. /v1/ URL 방식과 헤더 방식의 장단점, 그리고 애초에 버전을 덜 올리는 하위호환 설계까지.
#API#REST#Versioning
2026.07.13
1393
Database3분 읽기
SQL JOIN 완벽 이해 — INNER·LEFT·RIGHT 언제 무엇을
두 테이블을 합칠 때 INNER는 교집합, LEFT는 왼쪽 전부. 이 차이 하나로 결과 행 수가 달라지고 버그가 생긴다. 그림처럼 이해하는 JOIN 정리.
#SQL#JOIN#Database
2026.07.12