96. 리스크 (Risk) / 비리스크 (Non-risk) - 아키텍처 결함 도출

⚠️ 이 문서는 어제 배운 ATAM(아키텍처 평가 회의)의 마지막 날, 2박 3일 동안 사장님과 아키텍트, 테스터가 피 터지게 싸우며 도면을 엑스레이로 스캔한 결과물로 책상 위에 올라오는 "당장 도면을 찢고 고치지 않으면 100억 프로젝트가 런칭 첫날 폭파되어 뉴스에 나오게 만드는 지뢰(Risk)"와 "지금 당장은 평온하지만 내년에 폭탄으로 돌변할 수 있는 휴화산 뇌관(Non-risk)"이라는, 시스템 생사를 가르는 두 개의 시뻘건 경고 딱지를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 아키텍트가 도면에 써놓은 특정 기술(전술)이, 사장님이 요구한 품질 시나리오("1만 명 1초 접속")를 방어하지 못하고 뻥 뚫려버려 비즈니스 목표가 처참히 박살 나는 치명적인 설계 결함(Hole)이다.
  2. 가치: 코딩을 시작하기 전(Shift-Left)에 이 리스크를 찾아내면 설계도 네모 상자 하나 지우고 새로 그리는 돈 10만 원으로 끝난다. 이걸 못 찾고 오픈하면 소스코드를 수만 줄 뜯어고쳐야 하므로 회사가 파산한다. ATAM 회의를 하는 오직 유일한 진짜 존재 목적이다.
  3. 기술 체계: 도면을 찔러봤을 때 시나리오 방어에 실패하면 명백한 **리스크(Risk)**로 적발되며, 아슬아슬하게 통과하거나 미래의 짐으로 남겨두는 찝찝한 결정은 **비리스크(Non-risk)**로 장부에 기록해 훗날의 면피용(알리바이)으로 쓴다.

Ⅰ. 리스크 (Risk)의 도출: 도면 위에 묻은 핏자국

"네가 설계한 뼈대, 10초 만에 부러지는데?"

  1. 리스크(Risk)의 수학적 정의:
    • 아키텍처 결정(Architecture Decision)이 우리가 도출한 '품질 속성 시나리오'의 목표치(응답 척도)를 만족시키는 데 완벽하게 실패했거나 훼방을 놓는 요인이다.
    • "사장님의 비즈니스 목표(돈 벌기)를 직접적으로 타격하는 설계자의 치명적 오판"이다.
  2. 실전 리스크 도출 상황극 (단일 장애점, SPOF):
    • 시나리오: "1번 메인 DB 서버 전원선이 뽑혔을 때(가용성 자극), 시스템은 3초 이내에 100% 정상으로 복구되어야 한다."
    • 아키텍처 스캔: 감리관이 아키텍트가 가져온 '물리 배포 뷰' 도면을 본다. 도면에 떡하니 **'Oracle DB 1대 (Stand-alone)'**라고 그려져 있다. 돈 아끼려고 이중화(Active-Standby)를 안 한 것이다.
    • 리스크 판결 쾅!: "DB가 1대뿐이라 죽으면 복구에 최소 1시간(OS 재부팅 및 복원)이 걸립니다. '3초 이내 복구'라는 시나리오 척도 달성 절대 불가(Risk)! 이 도면대로 지으면 블프 때 회사 망합니다!"
  3. 조치(Action Item):
    • 도면에 빨간 딱지(Risk)가 붙는 순간, 아키텍트는 당장 펜을 들고 도면을 뜯어고쳐야 한다. "사장님, 예산 1억 더 주십시오. 이중화 클러스터링 도면으로 갈아엎겠습니다."

📢 섹션 요약 비유: 군용 벙커(소프트웨어) 설계도 검열입니다. 장군님(사장님)의 시나리오는 "핵폭탄 1발을 정통으로 맞아도 끄떡없어야 한다"입니다. 감리관이 설계도를 보니 천장이 10cm 두께의 싸구려 '함석판'으로 덮여 있습니다(아키텍처 결정). 감리관은 그 자리에 빨간 펜으로 X표(Risk)를 긋고 소리칩니다. "이 천장 두께로는 대포알 하나에도 전멸합니다(목표 달성 실패)! 당장 콘크리트 3미터 두께(이중화 아키텍처)로 도면 다시 뜯어고쳐 와!" 건물을 짓기 전에 설계자의 치명적 헛발질을 잡아내어 수백 명의 목숨(회사 자본)을 살리는 엑스레이 검사입니다.


Ⅱ. 비리스크 (Non-risk): 오늘은 천국, 내일은 지뢰밭

"일단 1년은 버틸 수 있으니까 도장 찍어줄게. 근데 내년엔 네 책임이다?"

  1. 비리스크(Non-risk)의 이중성:
    • 단어만 보면 '위험이 없다(좋은 것)' 같지만, 실무 아키텍트 세계에서는 **'아슬아슬한 통과, 혹은 나중을 위해 남겨둔 찝찝한 변명거리'**로 쓰인다.
    • 정확한 정의: "아키텍처 결정이 당장에 주어진 시나리오(요구사항)를 만족시키는 데 성공한 훌륭한 결정, 혹은 (암묵적으로) 나중에 터질 수 있지만 '현재의 스펙' 하에서는 위험이 아닌 것으로 합의된 결정."
  2. 실전 비리스크 도출 상황극 (확장성의 포기):
    • 시나리오: "동시 접속자 1만 명이 들어올 때 0.5초 내에 99% 응답해야 한다."
    • 아키텍처 스캔: 아키텍트가 클라우드 싼 맛 서버 10대(Scale-out)를 안 하고, 미친 괴물급 쇳덩어리 서버 1대(Scale-up, Monolithic)에 캐시 메모리를 100GB 때려 박은 도면을 가져왔다.
    • 검증: 시뮬레이션 돌려보니 1만 명 트래픽이 0.1초 만에 깔끔하게 처리된다.
    • 비리스크 판결 쾅!: "음, 서버 1대로 1만 명 버티는 거 증명됐네요. 시나리오 통과! 이거 문제없음(Non-risk)으로 문서에 박제합니다."
  3. 면피용 알리바이 (Why Non-risk?):
    • 감리관이 코멘트를 단다. "근데 사장님, 내년에 회원 수 10만 명 되면 이 서버 1대로는 절대 못 버티고 100% 폭발합니다. 근데 사장님이 오늘 주신 시나리오가 '1만 명 버티기'라서 오늘은 Non-risk로 도장 찍어준 겁니다. 내년에 서버 뻗으면 그건 설계자 잘못이 아니라 사장님이 시나리오를 작게 주신 탓입니다!"

📢 섹션 요약 비유: 다리(브릿지) 건설 도면 검사입니다. 시장님이 "10톤 트럭이 지나가도 안 무너지게 지어(시나리오)"라고 했습니다. 설계자가 나무 기둥 100개를 묶어 만든 도면(아키텍처)을 냈습니다. 계산해 보니 나무 기둥 100개면 10톤 트럭 1대는 간신히 버팁니다. 그래서 감리관이 "오케이, 10톤 트럭은 안 무너짐. 비리스크(Non-risk) 도장 쾅!"을 찍어줍니다. 하지만 감리관은 속으로 압니다. 내년에 50톤짜리 탱크가 지나가면 다리가 박살 난다는 것을. 하지만 오늘의 숙제(10톤)는 훌륭하게 풀었으니 책임소재를 피하기 위해 "오늘 기준으론 튼튼함(Non-risk)"이라는 꼬리표를 합의 문서에 영구 박제해 두는 영악한 통과 의식입니다.


Ⅲ. ATAM 4대 결과물의 최종 종합 (보고서의 뼈대)

결국 사장님 책상 위에는 이 4가지 단어가 적인 엑셀 표 딱 한 장이 올라간다.

  1. 상호 작용의 톱니바퀴 (Sensitivity $\rightarrow$ Trade-off $\rightarrow$ Risk):
    • 이 4개의 단어는 따로 놀지 않는다.
    • 암호화 비트 수(128bit vs 256bit)라는 레버를 만지는 것 자체는 시스템이 출렁거리는 **민감도점(Sensitivity Point)**이다.
    • 이 레버를 256비트로 돌렸더니 보안은 100점인데 속도가 느려졌다. 이것은 **타협점(Trade-off Point)**이 되었다.
    • 결국 속도가 3초로 느려져서 "1초 이내 응답"이라는 시나리오를 뚫지 못했다. 이 타협점은 사장님의 꿈을 박살 내는 치명적 **리스크(Risk)**로 진화하여 도면에 빨간 줄이 그어진다.
  2. 리스크 완화(Mitigation)와 재설계의 굴레:
    • 리스크가 10개 발견되었다고 프로젝트가 엎어지는 게 아니다.
    • 아키텍트는 2박 3일 밤을 새워 이 리스크 10개를 빗겨갈 새로운 전술(Caching 도입, MQ 도입 등)을 도면에 떡칠해서 수정한 다음 날 다시 회의실에 들고 들어온다.
    • 빨간 줄이 그어졌던 리스크가 시나리오를 통과하여 초록색 비리스크(Non-risk) 딱지로 전부 바뀔 때까지 이 고통스러운 시뮬레이션을 무한 뺑뺑이 돌린다.
    • 10개의 리스크가 모두 비리스크로 바뀌는 그 찰나의 순간, 수백억짜리 아키텍처 도면에 마침내 황금 도장(Sign-off)이 찍히며 100명의 프로그래머가 투입되는 코딩(구현) 공장의 컨베이어 벨트가 비로소 스위치를 켜게 된다.

📢 섹션 요약 비유: ATAM 보고서는 종합 건강 검진 결과지입니다. 간 수치 조절 능력(민감도점)을 보니 술을 마시면 스트레스는 풀리지만 간이 박살 나는 상태(타협점)입니다. 그런데 당신은 매일 술을 3병 마시니 1년 안에 간경화로 사망할 거라는 시뻘건 경고(리스크)가 찍혀 있습니다. 환자(아키텍트)는 1주일간 술을 끊고 운동(재설계)을 한 뒤 재검사를 받습니다. 수치가 정상으로 돌아와 "현재 사망 위험 없음(비리스크)" 도장을 받아야만 보험 가입(개발 착수)이 승인되는, 절대 타협 불가능한 뼈 때리는 생명 연장 보고서입니다.