Docker 이미지 1.1GB → 130MB: 네 가지 방식으로 빌드해 단계별로 비교하기

같은 Node.js 앱을 단일 스테이지·dockerignore·멀티스테이지+Alpine·distroless 네 방식으로 빌드해 크기를 비교했습니다. 대부분의 감소가 어느 단계에서 일어나는지, Alpine의 musl 호환성 함정과 -slim 대안, –chown을 COPY에 붙여야 하는 이유, distroless 컨테이너 디버깅 방법까지 정리했습니다.

GitHub Actions vs Azure Pipelines: 기능이 아니라 상황으로 고르고, OIDC로 시크릿 없애기

둘 다 할 수 있는 게 거의 같아서 기능 비교로는 결론이 안 납니다. 코드 위치와 통제 요구로 가르는 기준표, 그리고 어느 쪽을 택하든 클라이언트 시크릿을 OIDC로 대체하는 전체 설정을 다룹니다. subject로 브랜치·환경까지 제한하는 법과 rollout status로 거짓 성공을 막는 법까지 포함했습니다.

무시당하지 않는 Azure Monitor 알림 설계: 나쁜 알림 3개를 KQL로 고치기

알림이 하루 수십 건 오면 진짜 장애도 묻힙니다. CPU 임계치·에러 로그 발생처럼 무시하게 되는 알림을 실패율·급증 감지 KQL로 바꾸는 방법, 최소 표본 조건으로 야간 오탐을 막는 법, 그리고 꼭 필요한 알림 4개와 심각도 설계를 정리했습니다.