---

Created: 2026, 04 01 >Updated: 2026, 06 09

운영

장애 대응

  • 인식
  • 보고
  • 롤백
  • 복구
  • 피드백

Postmortem

대응 후 회고

종료시점을 내가 통제하면 관리가 편해진다

  • uvicorn에 종료카운트랑
  • karpenter에 expireAfter가 있고, jwtToken 같은 보안쪽에도 만료시간이 정해져있다

DevOps vs SRE

DevOps gonna make fast to deploy SRE gonna maintaining production to reliability

SRE

To upgrade site reliability

  1. Monitoring
    • Monitoring various content
    • Make automation
  2. Performance check

Quick recovery scenario

  • Check error 5xx, when error occurred rollback to prev version. And reporting error situation. Which are link, behavior, data, code line, build package, (commit source)

성과 측정과 개선

  • DevOps 성과 지표
    • DORA Metrics
      • Deployment Frequency
      • Lead Time
      • MTTR
      • Change Failure Rate

edge case

  • 로그 폭발
  • 권한 남용
  • 시스템 다운
  • 네트워크 혼잡

운영까지의 고려

되돌릴 수 있는가 복구할 수 있는가 관리할 사람을 구할 수 있는가 버전관리

프로덕션에 필요한 속성

보안, 개별 설정을 유연하게 하는 것, 관측성

  • 되돌릴 수 있는가
  • 복구할 수 있는가
  • 수습이 가능한가
  • 인수인계할 때 무리가 없는가 (사람을 구할 수 있는가)
  • 안정성

Program

  • code with log, test, api
  • CI with lint, test, performance, dependency
  • CD with deploy
  • Monitoring with check node, api, log, performance

Need Extra Component

reboot report

load average 확인 후 cpu bound인지 memory bound인지 disk i/o문제인지 확인하는 것처럼 문제 감지되면 확인된 기록들을 캡처해서 리포트로 보내주고 재부팅하도록 설정 소프트웨어 로그, 시스템로그도 같이 캡처

구성보다 관습, CoC

설정을 일일이 하기보다 관습적으로 따르게 하고, 설정이 필요할 때만 설정을 하는 방식

같은 약자로 Code of Conduct(행동 규범)이 있어 헷갈릴 수 있다.

오토스케일링

  • cpu나 메모리가 70% 이상이면 1대씩 늘리고 30% 미만이면 1대씩 줄이는 방식
  • 근데 cpu와 메모리가 한번에 100%가 되는 경우가 왕왕 있음

대규모 서버에서 겪는 문제

  • 데이터 : 데이터의 동기화
  • CPU : cpu 병목
  • 네트워크 : 네트워크 병목

load average를 확인하고 sar을 통해 cpu 문제인지 io문제인지 확인한다

대용량 트래픽

WAS에서 문제가 생길 때 다중화로 해결이 힘든 이유

  • 다른 WAS를 찾아야 한다.
  • 로그인 정보를 전달해줘야 한다. (세션 클러스터링 필요)
    • 그에 따른 관리 지점 증가

데이터베이스 다중화 힘든 이유

  • 동기화

  • 이커머스 운영 하면서 발생하는 인프라적 이슈
    • 폰트 처리
    • 이미지 프록시
    • 세션 유지
    • IP 전달 (네트워크 연결성)
    • 인프라 개선의 안정성 -> 휴먼에러 줄이는 법, 테스트 후 운영 반영을 자동화 할 방법

운영팁

실무에서 얻은 한 줄짜리 경험칙 모음. (출처: diary/purple 노트 + Asana 운영태스크 2021~2026)

알림 / 모니터링 / 트래킹

  • 로그를 들어가서 확인해야 하는 케이스 발생 시 → 워크챗 연동 고려
  • 이메일에서는 css position 속성이 안 먹는다
  • 게시 시작일이 지나서 공개하면 알림을 새로 등록해야 하는 케이스가 있다
  • 로그는 같은 로직이면 같은 키워드로 남겨서 검색하기 좋게 작성한다
  • 2주 이상 업데이트되지 않은 Metric은 콘솔에서 안 보인다
  • 알림 에러는 사후 인지 말고 워크쳇으로 실시간 수신되게 한다
  • 도메인 변경 시 앱스플라이어/픽셀 템플릿 ID도 함께 수정한다
  • 믹스패널 view_product / add_to_cart / 주문완료 이벤트 누락은 전송 안정화로 잡는다
  • 매체 픽셀·SDK 스펙 변경은 카카오/네이버/TW360/앱스플라이어 전부 반영한다

배포 / 인프라 / k8s

  • argocd에서 namespace 바꿀 때 ingress가 안 지워지면 새 ingress가 안 뜬다 (자동으로 안 됨)
  • ingress 생성 시 LB 이름이 32글자 넘으면 안 된다
  • 인증서 교체는 시간이 지나면 적용된다 — 캐시가 남아있을 수 있다
  • readiness probe는 주기를 짧게, liveness probe는 넉넉하게 해도 괜찮다
  • graceful shutdown은 prestop만으로도 일정 수준 효과가 확인된다
  • 배포 중 배치잡이 돌고 있으면 인스턴스 교체 때 강제 종료될 수 있다 → 실행 중 배치 없는지 확인 후 배포
  • 배치 종료는 실행 중인 건 유지하고 다음 실행만 막는다
  • KOP-WEB은 docker로 빌드하면 메모리 에러가 뜬다
  • KOP-API의 rover 라이브러리는 ARM 버전을 지원 안 한다
  • node_modules 캐싱은 빨라지지만 캐시 다운/업로드가 오래 걸린다
  • 와탭(APM)은 모든 인스턴스 말고 리더 인스턴스에만 적용한다

코드 / 백엔드 설계

  • 회원가입 같은 핵심 흐름에 외부 사이드이펙트(아사나 태스크 생성 등)를 넣지 않는다 → 제거
  • 상품 데이터 null 필드 접근 크래시는 가드 처리한다
  • 미리보기 모드는 운영 캐시에 안 걸리게 캐시 우회 처리한다
  • 테스트 발송자 조회 같은 값은 하드코딩 말고 서비스 호출로 뺀다
  • JPA partial 업데이트 시 디폴트값이 있으면 값을 안 넣으면 그 값으로 변경된다 (주의)
  • 하이브리스 모델 필드 변경 시 중간에 마이그레이션을 추가하면 절대 안 된다
  • hibernate에서 컬럼 ddl을 바꾸려면 실제 DB의 컬럼 타입을 명시해줘야 한다
  • Elasticsearch는 term(exact match)과 match(partial match)를 구분해서 써야 한다
  • 엑셀 대량 다운로드는 백엔드 응답을 일찍 처리하고 파일은 쿼츠가 만든다

회원 / 인증

  • 소셜 로그인은 콜백 흰화면 / 약관 취소 / 계정 이름 덮어쓰기 예외 분기를 반드시 설계한다
  • 카카오 로그인 시 기존 이름이 닉네임으로 덮이지 않게 계정 매칭한다
  • 간편가입 중복 이메일이면 막지 말고 사용자 입력을 받아 분기한다
  • 삼성브라우저 간헐 로그인 풀림은 ID/PW는 정상임을 확인해 원인 격리 후 홀딩한다
  • "이용하기 버튼 연속 호출" 류는 중복 클릭/연속 요청 방어가 필요하다
  • 카카오톡 임베드는 기본형으로 되돌릴 수 없다 (카카오 정책) → 전환은 신중히

메시지 발송 (KUMS)

  • 발송 직전에 수신거부 여부를 게이트로 체크한다 (사전 필터링만으론 부족)
  • 야간 마케팅 발송은 Lambda로 시간대 차단한다 (법적 제한 대응)
  • 분당 처리량 병목은 Kinesis→Lambda + seq 처리로 개선한다
  • 메시지 적체로 발송이 안 되면 threshold 조정 + 실패 후속 처리 루프를 둔다
  • 부서 간 발송은 키를 분리해 충돌을 막는다

이벤트 / 쿠폰 운영

  • 쿠폰에 상품 1000개 이상 등록하면 리스트에서 쿠폰 라벨이 안 보인다 (hmc는 막혀있고 개발자 수동 등록만 가능)
  • 쿠폰 지급이 실패해도 레디스 카운트는 올라갈 수 있다
  • 이벤트 퍼블 코드는 git으로 관리하면 좋다 (퍼블 이슈인지 확인할 때 유리)
  • 라이브 중인 이벤트 수정 시 코드 저장 + 캡쳐 떠놓고, 게시는 현업에 요청한다
  • 퍼블 작업은 id만 추가하고 class는 안 건드리는 게 좋다 (클래스가 겹칠 수 있어서)
  • 쿠폰 참여 카운트는 레디스 값을 바꿔주면서 테스트/QA 할 수 있다
  • 정확한 비율로 쿠폰을 주려면 랜덤 말고 순차 지급이 필요하다
  • 스테이지 테스트는 운영과 최대한 똑같이 세팅한다 (쿠폰도 운영거 그대로)
  • 기획전 수정 시 예약공개여도 시작날짜 기준으로 5분 이내인지 확인해야 한다

버티컬 / 하이브리스 운영

  • 동영상 썸네일 미생성은 람다 메모리 부족이 원인 → 메모리 증량
  • 오래된 쇼핑알림 데이터는 삭제 배치로 수명주기를 관리한다
  • 무형상품(예약)은 취소가능기간 · D-1 알림톡 · 재고카운트까지 세트로 본다
  • VIP 등급은 수동 말고 자동 배치 테이블로 관리한다
  • 멀티 브랜드는 브랜드별 문구·배너·기능 분기를 상시 대응한다
  • 크리마 리뷰는 반품 후 취소 케이스를 별도 처리해야 한다

사내망 / 보안

  • 사내망에선 우회보다 정공법(DNS 신청)이 효율적이고, 외부망에선 우회가 빠르다
  • Tailscale(UDP 41641 + DERP)은 사내망에서 차단, ZeroTier(UDP 9993 / TCP 443 폴백)는 통과한다
  • 권한 에러가 나면 5분 내에 "승인 건인가?" 판단하고 우회보다 승인 요청을 먼저 한다
  • yarn/npm certification 에러는 회사 네트워크 변경 때문 → npm config set cafile ~/KOLON.crt
  • X-Forwarded-Host ≠ Host면 404를 반환한다 (호스트 헤더 위변조 방어)
  • CSP에 object-src 'self'를 추가하고, 루트에 CSP 헤더가 있는지 확인한다
  • 엑셀/다운로드는 암호 복잡성 강제 + 마스킹을 적용한다
  • 미사용 계정은 90일 기준으로 자동 비활성화한다

자동화 / 에이전트 운영

  • 기능을 빼는 것이 더 나은 자동화일 수 있다 (안 쓰는 기능 제거도 개선이다)
  • 도구 선택은 "되는 것 확인 → 확정 → 넘어가기"가 핵심이다
  • 멀티 유저 분리는 메모리 섹션을 구분해서 저장한다
  • frontmatter classification을 강제하면 미분류 파일을 🔴 폴백으로 자동 감지할 수 있다
  • 가장 많이 반복한 작업이 곧 자동화 1순위다 (반복 임계점 = 자동화 신호)

로컬 / 잡팁

  • git pull 충돌을 되돌리고 싶으면 git merge --abort
  • asdf에서 npm 글로벌 설치는 그때 설정된 노드 버전으로 실행된다 → 버전 맞추고 설치
  • 크롬에서 구글 연결 안 될 때 네트워크 게이트웨이 체크를 취소한다