시스템아키텍처 이해와 활용
실제 사례는 공개 기록을 바탕으로, 가상 사례는 개념을 설명하기 위한 설정으로 작성했습니다.
점심 주문과 월말 통계에 같은 복구 시간을 줄 수 있을까
업무 요구 — 중단을 막아야 할 업무와 허용 지연을 정한다
점장은 종이 주문으로 버틸 범위를 확인해 주문·결제를 먼저 복구하고 월간 통계는 뒤로 미뤘습니다.
이야기 읽기 →작은 예약 서비스에 너무 많은 구성 요소
레이어와 티어 — 역할 분리와 물리 배치를 구분한다
세 명이 관리할 수 있는 범위를 넘어서자 팀은 함께 운영해도 되는 기능을 합치고, 별도로 서버를 늘릴 이유가 있는 기능만 나눴습니다.
이야기 읽기 →회원 데이터 변경이 모든 팀을 멈췄다
경계와 의존성 — 시스템 변경이 다른 시스템에 미치는 영향을 줄인다
회원팀은 다른 서비스가 회원 테이블을 제각각 수정하지 않도록 조회·수정 경로를 정하고, 기존 이용처를 확인하며 전환했습니다.
이야기 읽기 →추천 기능 장애가 결제를 막았다
결함 허용과 격리 — 장애의 확산을 막는다
팀은 추천 응답을 기다리는 시간을 제한하고 추천이 실패해도 결제는 진행하도록 바꿨습니다.
이야기 읽기 →취소됐다는 화면과 출고됐다는 상자가 엇갈렸다
분산 데이터의 일관성 — 여러 시스템의 값이 다를 때 다시 맞춘다
취소 승인과 출고 확정을 주문별로 조정하고, 확인 경로가 끊기면 출고를 보류하도록 정했습니다.
이야기 읽기 →평균 응답 시간에 가려진 긴 기다림
성능과 용량 — 사용자의 기다림에서 출발한다
운영팀은 빠른 조회에 가려진 결제 지연을 찾기 위해 기능별 응답 시간과 오래 기다린 요청의 비율을 따로 측정했습니다.
이야기 읽기 →세 서버 중 어디서 느려졌을까
관측 가능성 — 기록과 수치로 실패한 처리 단계를 찾는다
팀은 한 요청에 같은 식별자를 남겨 웹·주문·결제 단계의 처리 시간과 실패를 연결했습니다.
이야기 읽기 →빨리 복구했지만 주문 한 시간치가 없었다
RTO와 RPO — 복구 시간과 손실 목표를 검증한다
40분 만에 복구했어도 한 시간 전 주문까지만 남아 RPO를 어겼으므로 복구 시간과 마지막 거래 시점을 별도로 검사했습니다.
이야기 읽기 →새 버전을 모두에게 동시에 공개했다
안전한 변경 — 운영 상태에서 검증한다
전체 공개 후 검색이 중단된 팀은 다음 배포부터 일부 이용 범위에서 먼저 확인하고 이전 경로로 돌아갈 기준을 정했습니다.
이야기 읽기 →월 20만 원 서버가 월 60만 원 서비스보다 쌀까
총비용과 선택의 근거 — 도입 이후까지 계산한다
팀은 월 사용료에 직접 운영할 시간과 남는 책임까지 더해 두 안을 같은 3년 조건으로 비교했습니다.
이야기 읽기 →행사 직전에 서버만 늘렸다
용량 계획 — 평소와 급증 상황을 나눠 본다
팀은 웹 서버 증설 뒤에도 대기가 계속되자 데이터베이스 연결 한계를 측정하고 실제 요청 흐름으로 다시 시험했습니다.
이야기 읽기 →할인이 끝나도 예전 가격이 보였다
캐시 — 저장한 값이 원본보다 오래됐을 때를 대비한다
할인 종료 후 옛 가격이 보이자 팀은 캐시 갱신·보관 기한을 정하고 결제 시 확정 가격을 다시 확인하게 했습니다.
이야기 읽기 →영수증 메일을 기다리느라 결제 결과가 늦었다
큐와 비동기 처리 — 접수와 완료를 구분한다
결제 결과를 먼저 보여 주고 영수증 메일은 큐에서 보내되 발송 상태와 실패·중복을 별도로 관리했습니다.
이야기 읽기 →녹화 파일을 올리는 동안 상담 통화가 끊겼다
QoS와 과부하 제어 — 처리량을 넘는 요청을 제한한다
음성 통화를 먼저 처리하고 녹화 업로드 속도를 제한해 통화 품질과 파일 지연을 함께 확인했습니다.
이야기 읽기 →서버 두 대가 함께 꺼진 이유
고가용성과 페일오버 — 이중화한 서버가 함께 멈출 원인을 찾는다
두 서버가 함께 멈춘 뒤 팀은 공통 전원·연결 경로를 확인하고 필요한 부분을 분리한 다음 전환을 시험했습니다.
이야기 읽기 →외부 연결이 되는 줄 알았던 시험 환경
네트워크 경로 — 연결의 모든 단계를 확인한다
시험 서버의 요청이 막히자 담당자는 주소 조회와 경로·접근 규칙을 확인해 빠진 연결 허용 설정을 찾았습니다.
이야기 읽기 →서버를 늘린 뒤 예약 시간이 아홉 시간씩 달라졌다
환경 재현 — 새 서버에서도 같은 서비스를 실행하게 한다
아홉 시간 차이를 시간대 설정에서 찾아 설치 절차와 새 서버의 예약 시각 검증에 반영했습니다.
이야기 읽기 →데이터 이전 후 사라진 최근 주문
데이터 이전 — 옮긴 뒤 업무가 이어지는지 확인한다
최근 주문이 빠진 뒤 팀은 변경분 반영과 전환 시점을 정하고 건수·금액을 대조하도록 이전 절차를 보완했습니다.
이야기 읽기 →지도 서비스 제한에 막힌 방문 예약
외부 서비스 의존 — 공급자의 실패도 준비한다
지도 사용량 제한으로 예약이 막히자 팀은 주소 임시 접수와 사후 확인 절차를 마련하고 사용량 경보를 준비했습니다.
이야기 읽기 →운영자가 처음 보는 경보
운영 준비 — 담당자가 판단할 수 있게 인계한다
첫 경보에 서로 기다렸던 팀은 담당자·연락 순서·중단 권한을 정하고 운영자가 직접 장애 대응을 연습하게 했습니다.
이야기 읽기 →