기성이의 기술 블로그 71_stars

[매일매일] 백엔드 기술 일기: 분산 환경에서 Redis를 활용한 잠금은 어떻게 구현할까?

다수의 서버가 동시에 하나의 자원에 접근하지 않도록 제어할 수 있을까?Redis의 분산 잠금 기법과 RedLock 알고리즘을 통해 알아보자! ✅ 1. 왜 분산 잠금이 필요할까?​분산 시스템에서는 여러 서버에서 동일한 리소스(예: 재고, 계좌, 주문 등)에 동시에 접근할 수 있기 때문에, 경쟁 상태(Race Condition)를 방지하기 위한 잠금(L...

[매일매일]백엔드 기술일기: 데이터베이스 정규화 vs 역정규화 – 한눈에 이해하기

데이터베이스 설계에서 가장 기본이면서도 중요한 개념 중 하나가 정규화(Normalization)입니다.하지만 실무에서는 반대로 역정규화(Denormalization)가 필요한 경우도 많죠.이번 글에서는 정규화와 역정규화의 개념, 목적, 각 단계별 설명, 그리고 선택 기준까지 한 번에 정리해보겠습니다. ✅ 정규화란? “데이터 중복을 줄이고, 데이터 ...

[매일매일] 프론트엔드 기술 일기: Reset CSS vs Normalize CSS – 브라우저 기본 스타일 초기화 완전 정리

​웹 프론트엔드를 개발하다 보면, 브라우저마다 기본적으로 다르게 설정된 스타일 때문에 예상치 못한 디자인 문제를 겪는 경우가 많습니다. 이런 문제를 해결하기 위해 등장한 것이 바로 Reset CSS와 Normalize CSS입니다.이번 글에서는 두 방식의 차이점과 어떤 상황에 어떤 방법을 사용하는 것이 좋은지 정리해보겠습니다. 🔧 Reset CSS란...

️ [매일매일] 백엔드 기술 일기: 백엔드 서버 종료에도 ‘우아함’을! – Graceful Shutdown 완전 정리

서버가 종료될 때, 무조건 바로 꺼진다면 문제가 생길까요?정답은 “그렇다”입니다.바로 종료되는 서버는 진행 중인 작업이 강제 중단되며, 데이터 유실, 트랜잭션 꼬임, 사용자 경험 악화 등의 심각한 문제를 초래할 수 있어요.그래서 오늘은 서버 개발자라면 꼭 알아야 할 개념,Graceful Shutdown (우아한 종료)에 대해 정리해보겠습니다! ✅ G...

[매일매일]프론트엔드 기술 일기: 타입 단언(Type Assertion) 쉽게 정리하기

프론트엔드 개발을 하다 보면 타입스크립트에서 as 키워드를 종종 만나게 됩니다. 이게 바로 타입 단언(Type Assertion) 입니다.오늘은 이 개념이 언제, 왜 필요한지, 그리고 어떻게 안전하게 써야 하는지 차근차근 정리해보겠습니다. ✅ 타입 단언이란?타입 단언은 “이 값의 타입을 내가 더 잘 알고 있으니, 컴파일러야 믿고 따라와!” 라는 뜻입...

[매일매일] CI/CD 파이프라인이란? – 지속적인 개발 흐름의 핵심

개발한 코드를 자동으로 빌드하고 테스트하고, 문제 없이 잘 되면 배포까지 쭉!이게 바로 우리가 말하는 CI/CD 파이프라인입니다.이번 글에서는 CI(지속적 통합), CD(지속적 전달/배포) 의 개념부터 실제 도구까지 핵심만 정리해봅니다. ✅ CI (Continuous Integration) – 코드는 매일매일 합쳐야 맛이지! “작은 변경을 자주! ...

[매일매일] 프론트엔드 기술일기: preconnect, preload, prefetch – 리소스 로딩 성능 최적화 3종 세트

프론트엔드 성능 최적화를 고민할 때 꼭 알아야 할 <link> 태그 속성이 있습니다.바로 preconnect, preload, prefetch입니다.이 세 가지는 리소스 “언제, 어떻게 미리 불러올지” 결정하는 데 중요한 역할을 합니다.하나하나 예제와 함께 정리해봅니다. ✅ preconnect: 연결만 미리 열어두기 외부 리소스 도메인에...

✅ [매일매일]백엔드 기술 일기: 코드 커버리지(Code Coverage) 완전 정리

테스트 코드를 작성하는 목적은 “실제 코드가 잘 작동하는지 검증”하기 위함이죠.그렇다면, “얼마나 잘 테스트하고 있을까?”를 수치로 보여주는 지표가 있다면?그게 바로 오늘의 주제, 코드 커버리지(Code Coverage) 입니다! 🧪 코드 커버리지란? “테스트가 실제 코드를 얼마나 실행시켰는지 나타내는 비율” 단순히 테스트를 작성하는 것만으로 끝...