131. 시스템 개발 생명주기 (SDLC) 프로세스 관리

⚠️ 이 문서는 "오늘부터 우리 회사 앱 만들어!"라고 개발자 10명 모아놓고 맨땅에 키보드부터 치기 시작했다가, 1년 뒤 요구사항이 다 틀려 100억을 허공에 날리고 법정 소송으로 가는 재앙을 막기 위해, **건축 공사처럼 기획부터 설계, 코딩, 테스트, 유지보수에 이르기까지 절대 빼먹지 말고 밟고 지나가야 하는 가장 고전적이고 절대적인 5단계 진도율 검문소이자 IT 사업 관리의 헌법, 'SDLC (Software Development Life Cycle)'**를 다룹니다.

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

  1. 본질: 집을 지을 때 터 파기 $\rightarrow$ 철골 $\rightarrow$ 시멘트 $\rightarrow$ 인테리어 순서를 밟듯, 소프트웨어도 앞 단계를 100% 끝내고 도장을 받아야만 다음 코딩 단계로 넘어갈 수 있게 통제하는 '단계적 폭포수(Waterfall) 프레임워크'다.
  2. 가치: 개발사(SI) 입장에서는 "우리가 여기까지 완벽하게 만들어서 줬으니 기성금(돈) 줘!"라고 요구하는 마일스톤(증거 서류) 역할을 하며, 고객(발주처) 입장에서는 개발자가 이상한 코드를 못 짜게 매 단계 설계도를 엑스레이로 뜯어보고 브레이크를 걸 수 있는 통제 수단이다.
  3. 기술 체계: 도대체 뭘 만들지 묻는 분석(Analysis), 뼈대와 DB를 그리는 설계(Design), 진짜 자바 코드를 치는 구현/개발(Implementation), 멱살 잡고 버그를 터뜨리는 테스트(Testing), 그리고 오픈 후 평생 끌고 가는 유지보수(Maintenance) 5단계로 무자비하게 굴러간다.

Ⅰ. SDLC의 절대 5단계: 키보드 치기 전이 80%다

코딩(구현)은 전체 프로젝트 기간의 고작 20%다. 설계가 1픽셀 틀어지면 서버가 터진다.

  1. 분석 (Analysis / Requirements) - "도대체 뭐가 가려운데?":
    • 개발자 대신 컨설턴트(기획자)가 출동해 사장님과 현업 직원들을 닥달한다. "새 쇼핑몰에 무슨 기능이 필요해?"
    • 결괏물로 [요구사항 정의서]가 엑셀로 1,000줄 넘게 뽑혀 나온다. "결제 시 1초 내에 창이 떠야 함", "카카오페이 연동 필수". 이 단계에서 요구사항을 하나 빼먹으면 나중에 코드를 다 엎어야 하므로 피 터지는 협상이 일어난다.
  2. 설계 (Design) - "그 요구사항을 어떤 기계와 구조로 담을까?":
    • 최고급 아키텍트와 DBA(DB 관리자)가 등장한다. 코드는 1줄도 안 친다.
    • 1만 명을 버티기 위해 AWS 클라우드 아키텍처 도면(물리 배포 뷰)을 쫙 그리고, 오라클 데이터베이스의 ERD(테이블 구조)를 완벽하게 설계하여 [화면 설계서(스토리보드)][DB 스키마 도면]을 확정 짓고 도장을 꽝 꽝 찍는다. 이 도면대로만 코딩을 쳐야 한다.
  3. 구현 (Implementation / Coding) - "벽돌을 쌓고 시멘트를 부어라":
    • 여기서 드디어 하급/중급 프로그래머 100명이 떼거지로 투입된다.
    • 설계자가 던져준 화면 설계서API 명세서를 보고 생각 없이 기계처럼 자바(Java), 파이썬(Python) 코드를 미친 듯이 타이핑하여 진짜 작동하는 .war 덩어리(소프트웨어)로 찍어내는 단순 코딩 노가다의 시간이다.

📢 섹션 요약 비유: SDLC는 100층짜리 빌딩 건축과 똑같습니다. 분석은 집주인에게 "방 3개, 화장실 2개 원하시죠?"라고 희망 사항을 듣는 단계입니다. 설계는 건축사가 방의 크기, 배관과 전기선이 지나갈 위치를 청사진(설계도)으로 완벽하게 확정 짓는 단계입니다. 아직 땅 한 삽도 파지 않았지만 프로젝트의 80%가 여기서 결정납니다. 구현은 외국인 노동자(프로그래머) 100명을 불러 도면 그대로 벽돌을 쌓게 시키는 단순 반복 노동입니다. 도면(설계)이 잘못되면 벽돌(코드)을 아무리 예쁘게 쌓아도 100층 건물이 무너지는 참사가 발생합니다.


Ⅱ. 품질의 족쇄: 테스트(Testing)와 유지보수(Maintenance)

내가 짠 코드는 100% 버그 덩어리다. 가혹하게 때려 부숴라.

  1. 테스트 (Testing) - V 모델의 진검승부:
    • 코딩이 끝났다고 바로 오픈하면 9시 뉴스에 나온다. 감리관(QA)이 몽둥이를 들고 출동한다.
    • 단위 테스트(Unit Test): 함수 하나하나가 버그가 없는지 개발자 본인이 엑스레이 검사.
    • 통합 테스트(Integration Test): 결제팀 코드와 장바구니팀 코드를 합쳤을 때, 데이터가 서로 엇나가지 않고 부드럽게 넘어가는지 부서 간 조인(Join) 테스트.
    • 시스템 테스트 / 부하 테스트: 10만 명의 가짜 로봇 유저(JMeter)를 한 번에 쏴서 서버 CPU가 타버리는지 한계점까지 밀어붙이는 고문 테스트.
    • 인수 테스트 (UAT): 마지막으로 고객(사장님)이 직접 마우스로 클릭해 보고 "합격!" 도장을 찍어주는 최종 관문. 이 도장을 받아야 개발사가 잔금(돈)을 받는다.
  2. 유지보수 (Maintenance / Operation) - 진짜 돈 먹는 하마:
    • 시스템을 오픈(Open)하고 샴페인을 터뜨린 다음 날부터, 10년간의 끔찍한 생존 투쟁이 시작된다. 전체 소프트웨어 총비용(TCO)의 무려 70% 이상이 이 유지보수 단계에서 다 빠져나간다.
    • 숨어있던 버그를 잡고(수정 유지보수), 새로운 법(세법 등)이 생기면 기능을 추가하고(적응 유지보수), 코드를 더 빠르고 예쁘게 뜯어고친다(완전 유지보수).
    • 이 유지보수 지옥을 버티지 못하고 스파게티 똥 코드가 되면 시스템은 10년 뒤 파산(폐기) 수순을 밟는다.

📢 섹션 요약 비유: 빌딩을 다 지었습니다. 입주 전에 테스트(Testing) 부대가 들어와 수압 100배로 물을 틀어 배관이 터지는지(부하 테스트), 문고리가 잘 돌아가는지(단위 테스트) 가혹하게 두들겨 패봅니다. 무사히 통과해 집주인이 도장(UAT)을 찍으면 입주가 시작됩니다. 하지만 건물이 10년 지나면 녹물이 나오고 외벽 페인트가 벗겨지죠. 평생 사람을 불러 방수 공사를 하고 보일러를 가는 짓(유지보수)에 들어가는 돈이, 처음에 건물을 짓는 데 든 돈(구현)보다 3배 이상 폭발적으로 깨지는 유지비의 블랙홀입니다.


Ⅲ. SDLC 모델의 한계와 진화: 폭포수에서 애자일(Agile)로

"사장님, 설계 도면 다 찍었는데 이제 와서 방 3개짜리를 4개로 바꿔달라고요?"

  1. 전통적 폭포수(Waterfall) 모델의 치명적 경직성:
    • 폭포의 물이 위에서 아래로만 떨어지듯, [분석 $\rightarrow$ 설계 $\rightarrow$ 코딩] 순서로 한 번 내려오면 절대 위로 다시 빽(Back)해서 거슬러 올라갈 수 없다는 피도 눈물도 없는 엄격한 모델이다.
    • 단점: 1월에 기획을 픽스하고, 10월에 코딩이 다 끝나 테스트를 하는데, 사장님이 갑자기 트렌드가 바뀌었다며 "카카오페이 빼고 애플페이 넣어줘!"라고 기획(분석)을 엎어버리려 한다.
    • SI 개발사는 절규한다. "사장님! 이거 바꾸려면 설계도면 100장 다시 그리고 DB 다 엎어야 해서 돈 10억 더 들고 1년 더 지연됩니다!" (프로젝트 실패의 원흉 1순위)
  2. 애자일 (Agile) 패러다임의 혁명:
    • 폭포수의 멍청함(결과물을 1년 뒤에나 볼 수 있음)을 박살 내기 위해 튀어나왔다.
    • "완벽한 설계도 100장을 한 번에 그리지 마라! 그냥 1주일 만에 '로그인' 기능 딱 1개만 대충 분석 $\rightarrow$ 설계 $\rightarrow$ 코딩 $\rightarrow$ 테스트(미니 SDLC)를 빛의 속도로 뺑뺑이(Sprint) 돌려서, 사장님 폰에 1주일마다 계속 완성된 기능 한두 개씩 던져줘라!"
    • 사장님이 중간에 맘이 바뀌어도, 그냥 다음 주 1주일 뺑뺑이(스프린트) 목표만 살짝 꺾어주면 그만이다. 변화를 저항하지 않고 껴안아버리는, 소프트웨어 시장을 완벽히 지배한 현대의 생존 템포다.

📢 섹션 요약 비유: **폭포수(Waterfall)**는 커다란 타이타닉 호를 건조하는 것과 같습니다. 1년간 쇠를 용접해서 웅장하게 물에 띄웠는데, 선장이 "아차! 빙산 탐지기를 안 달았네(요구사항 변경)"라고 깨달아도 이미 배가 물에 떠서 다시 분해해 뜯어고치기 불가능한 경직된 덩어리입니다. **애자일(Agile)**은 레고 블록입니다. 1주일 만에 일단 모터보트 1대를 뚝딱 만들어 띄워(가치 제공) 사장님을 태우고, 다음 주에 미사일 블록을 꽂고, 다다음 주에 레이더 블록을 꽂아 점진적으로 거대한 항공모함으로 무한 진화시키는 기동력 넘치는 현대식 함대 건조술입니다.