직무 · 프로젝트핵심 · 14분 읽기

프로젝트 기획: 문제·요구사항·아키텍처·인수 기준

반복 구축 자동화와 서비스 통합 프로젝트를 사례로, 목적을 기능과 운영 기준으로 분해하고 설계·시험 산출물까지 연결한다.

개념부터 찾아보기

정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.

이 노트에서 설명할 수 있게 되는 것

  1. 문제에서 기능·비기능 요구사항을 도출한다.
  2. 구성 요소와 신뢰 경계·의존성을 설계 문서로 표현한다.
  3. 구현 가능성과 효과를 검증 가능한 인수 기준으로 바꾼다.

01기술을 고르기 전에 해결할 문제를 쓰기

  • 인프라 자동화의 문제 정의 예: ·웹·파일 공유·계정·네트워크 장비를 반복 설정할 때 시간이 늘고 설정 누락이 발생한다.
    • 팝업스토어는 이런 반복 구축을 설명하기 위한 적용 사례다.
    • “으로 모두 자동화”는 수단이고, 실제 목표는 입력이 달라져도 정해진 서비스와 접근 경계가 일관되게 만들어지는 것이다.
  • 문제 문장에는 사용자와 작업 시점이 들어간다.
    • 새 환경을 여는 관리자, 운영 중 장애를 확인하는 담당자, 종료 후 데이터를 보관하는 담당자는 필요한 기능이 다르다.
    • 구축만 자동화하고 종료·회수·백업을 빼면 초기 설치 시연에는 성공해도 반복 운영이라는 기획 목적을 충족하지 못한다.

02요구사항에서 인수 기준까지의 단계

  1. 누가 어떤 상황에서 겪는 문제인지, 현재 방식과 개선 목표를 적는다.
  2. 필요 기능, 성능·가용성·보안 등의 품질 기준, 예산·기간·환경 제약을 구분한다.
  3. 서비스·데이터·관리 경로와 의존성, 실패 시 영향과 복구 경계를 정한다.
  4. 각 에 작업·담당자·설정·시험 ID와 기대 결과를 연결한다.
  5. 정상·실패 조건을 시험하고 충족한 기준과 남은 제약을 정리해 인계한다.

03기능 요구사항·품질 기준·제약을 구분하기

  • 은 사용자가 할 수 있는 행동이나 시스템이 제공할 동작이다.
    • 새 서비스의 레코드를 생성하거나 요청을 올바른 가상 호스트에 전달하는 것이 여기에 해당한다.
    • 은 그 동작의 보안성·성능·가용성·재현성 같은 품질 조건이다.
    • “접근 가능”과 “관리망에서 승인된 계정으로만 접근 가능”은 서로 다른 요구다.
  • 제약은 설계 선택의 경계다.
    • 한 물리 호스트의 자원, 프로젝트 기간, 지원하는 운영체제, 외부 연결 허용 여부가 여기에 들어간다.
    • 역할별 분리는 장애와 권한의 범위를 줄일 수 있지만 물리 호스트 하나의 장애까지 해결하지는 않는다.
    • 논리적 분리와 물리적 가용성을 각각 설명해야 한다.
종류작성 예검증 산출물
기능서비스 이름별로 올바른 웹 콘텐츠 제공이름·응답·backend의 대응 표
보안 품질DB는 지정 애플리케이션에서만 접근허용/거부 시험과 정책 표
운영 품질같은 입력의 재실행이 불필요한 변경을 만들지 않음변경 전후 비교와 두 번째 실행 결과
제약하나의 실습 호스트와 정해진 메모리 내 구성 명세·사용량·남은 자원

04설계를 비교하는 평가 기준

  • 기획안은 구현 가능성 30, 기술 반영성 25, 운용성 15, 경제성 15, 확장성 10, 차별성 5의 배점을 제시한다.
    • 평가 항목의 비중은 사업 목표·제약·이해관계자에 맞게 합의한다.
    • 숫자를 그대로 목표로 삼기보다 어떤 선택이 각 항목을 만족하는지 근거를 작성하는 데 활용한다.
  • 예를 들어 처음부터 모든 서버 종류를 자동화하면 기술 반영성은 커 보이지만 기간 내 검증 가능성이 낮아질 수 있다.
    • 와 웹부터 정상 생성·실패 복구·재실행을 완성하고 파일 공유를 다음 단계로 두면 범위를 조절할 수 있다.
    • 경제성은 “자동화라 빠르다”가 아니라 동일 작업의 수동·자동 소요 시간, 실패 재작업과 유지보수 비용까지 포함해 측정한다.
원리 심화

05요구사항 추적과 품질 조건을 설계 판단으로 바꾸기

  • 한 요구에 서로 다른 기능·품질·운영 조건을 섞으면 무엇이 완료됐는지 판단하기 어렵다. 독립적으로 시험할 수 있는 단위와 식별자를 정한다.
  • → 설계 → 구현 → 시험 → 결과를 연결하고 반대 방향으로도 해당 근거를 찾게 한다. 요구에 없는 작업과 시험이 없는 요구를 별도로 확인한다.
  • 처리시간 목표에는 입력 규모·동시 사용자·장비·관측 구간·실패 비율을 함께 둔다. “빠름·안정적·안전함”만으로는 설계안을 비교할 수 없다.
  • 같은 요구를 만족하는 두 대안에 비용·지연·운영 복잡도·장애 범위·복구 조건을 비교한다. 선택한 이유와 선택하지 않은 대안의 장점도 남긴다.
  • 전체 응답시간을 수집·전송·처리·저장·조회 시간으로 나누면 느린 단계와 필요한 여유를 찾을 수 있다. 평균만으로 긴 꼬리 지연을 설명하지 않는다.
  • 입력 형식이나 인증 방식을 바꾸면 연결된 설정·파서·시험·운영 문서도 영향을 받는다. 변경 요청에 영향을 받는 요구와 을 함께 적는다.

06아키텍처에 서비스 흐름과 관리 흐름을 함께 그리기

  • 서비스 흐름은 클라이언트 요청이 조회, 진입 지점, 웹 애플리케이션, DB로 이동하는 경로다.
    • 관리 흐름은 운영자가 어디서 인증받고 장비 설정·로그·백업에 접근하는지 보여 준다.
    • 관제 수집 흐름은 서비스 요청과 별도이므로 센서와 수집기의 방향, 관리 인터페이스, 저장 위치도 표시한다.
  • 서버 명세에는 역할·운영체제·자원·인터페이스·데이터 보관 위치를 넣는다.
    • 통신 정책 표에는 출발 역할, 목적 역할, 프로토콜·포트, 용도와 승인 주체를 넣는다.
    • 주소표만으로는 해당 통신이 왜 허용되는지 설명할 수 없다.
    • , 방화벽, 서비스 계정의 경계를 넘을 때 요청의 어느 식별자가 유지되거나 바뀌는지도 기록한다.
LEARN THROUGH PRACTICE

보안 실습 배치도를 요구사항과 설치 선택으로 연결하기

장비를 나열한 그림에서 요청 경로·센서 역할·서버 구성·인수 시험까지 추적 가능한 설계 항목을 만든다.

실습 구성과 전제

  • 외부와 분리한 실습망에서 공격 실습 클라이언트·시험 웹 서버·관리 접속 경로를 구분한다.
  • 배치도와 설치 화면은 별도 구성 사례다. 배치도의 모든 이 같은 설치 선택을 사용했다고 가정하지 않는다.
  1. 장비 이름을 데이터 흐름과 요구사항으로 바꾸기

    • ' 설치'는 작업이고 '시험 요청이 센서에 도달해 해당 규칙의 경보를 남긴다'는 검증 가능한 이다. 배치도 위에 요청의 출발점·목적지·통과 장비와 복사 관측 지점을 적는다.
    • 차단 시험은 앞뒤의 관찰과 서버의 도달 기록을 함께 필요로 한다. 관리 접속을 실험 트래픽과 같은 차단 경로에 두면 장애 때 제어할 수 없으므로 복구 경로도 설계한다.
    보안 실습 환경원본 크기로 보기 ↗
    • Kali에서 라우터와 IPS-pfSense를 거쳐 서버 쪽으로 이어지는 흐름이 그려져 있다. 장비 순서가 차단·도달 시험의 위치를 정한다.
    • Snort3 센서와 DVWA·WebGoat 서버의 역할이 구분되어 있다. 탐지 장비와 취약 애플리케이션을 같은 노드로 취급하지 않는다.
    확인 기준

    각 에 입력 위치·관측 위치·기대 결과가 한 세트로 붙는지 확인한다. 연결선만으로 미러링 설정 완료를 주장하지 않는다.

  2. OS 설치 선택을 서비스 역할과 연결하기

    • 최소 설치는 필요한 패키지와 서비스부터 구성하는 출발점이다. 필요한 보안 업데이트·계정 정책·방화벽 설정까지 자동으로 충족한다는 뜻은 아니다.
    • 역할별로 웹 서버, 센서, 로그 수집기의 필요한 패키지와 포트를 별도 목록으로 만든다. 한 에 모든 기능을 넣으면 포트 충돌·자원 경합·시험 실패 원인 분리가 어려워질 수 있다.
    프로젝트 VM 구성 · SGW01 : Security GateWay 01원본 크기로 보기 ↗
    • Rocky Linux 9.8의 소프트웨어 선택 화면에서 최소 설치가 선택되어 있다. CPU·메모리 수치를 지정하는 VM 명세 화면은 아니다.
    • 추가 소프트웨어 선택란에는 표준 도구·헤드리스 관리·보안 도구 관련 선택이 보인다. 설치 구성의 선택이며 해당 서비스의 실행 결과는 아니다.
    확인 기준

    설치 후 실제 서비스 목록과 수신 포트를 목록에 대조한다. 체크한 패키지 그룹만 보고 센서나 웹 서비스가 정상이라고 판정하지 않는다.

  3. 설계 항목마다 인수 시험과 복구 조건을 붙이기

    • 가상 LAB-01을 '정상 요청은 웹 서버에 도달하고 관측 로그가 남는다', LAB-02를 '시험 패턴은 지정 규칙의 경보를 만든다'처럼 나누면 서비스 가용성과 탐지를 따로 검증할 수 있다.
    • 시험마다 이미지 버전·네트워크 연결·규칙 버전·기대 출력·실패 시 복구 방법을 기록한다. 결과가 없거나 시험 전이면 준비 단계로 표시하여 설계도와 구축 완료를 구분한다.
    확인 기준

    설계표의 모든 이 시험 ID에 연결되고, 시험 결과를 찾을 수 있어야 인수할 수 있다. 장비가 켜져 있다는 사실만으로 프로젝트 완료를 선언하지 않는다.

실습에서 확인한 동작 원리

  • 그림은 요청과 관측의 경로를 설명할 때 시험 가능한 설계가 된다.
  • 설치 옵션, 실행 상태, 학습 기능의 성공은 서로 다른 증거로 확인한다.
동작·명령 참고 문서

07설정 자료를 자동화 입력으로 설계하기

  • 장치별 설정값을 표나 DB에 저장하고 이를 읽어 구성을 생성할 수 있다.
    • 입력 자료에는 장비 식별자, 서비스 역할, 네트워크 구획, 이름, 필요한 자원을 분리해 둔다.
    • 입력을 명령 문자열에 그대로 이어 붙이는 구조보다 값의 형식과 허용 범위를 검사하고 설정 템플릿에 전달하는 구조가 오류를 찾기 쉽다.
  • 생성한 파일과 장비에 적용된 상태도 구분한다.
    • 계획 생성 → 유효성 검사 → 변경 전 백업 → 적용 → 정상 동작 확인 → 결과 저장 순으로 나누면 실패 지점을 설명할 수 있다.
    • 적용 중 연결이 끊기는 IP 변경 같은 작업은 관리 연결이 사라질 수 있으므로 별도 복구 경로와 작업 순서가 설계의 일부다.
    • 성공 메시지는 설정 파일을 썼다는 의미인지 실제 서비스 검증이 끝났다는 의미인지 명확히 한다.
예제로 추적

08100대 상태 수집 자동화의 시간과 실패 조건을 설계하기

  1. 100대에서 항목을 수집하고 자산별 성공·실패 근거를 남기는 교육용 프로젝트를 가정한다. 실제 장비에 접속하거나 이 수치를 측정한 결과는 아니다.
  2. 장비당 작업이 3초이고 순차 실행이면 100×3=300초다. 5개 작업을 항상 병렬로 유지할 수 있다면 이상적인 처리 시간은 60초다.
  3. 연결 준비·DB 저장·장비 응답 차이·재시도가 있으면 실제 시간이 늘어난다. 작업 5개가 각각 10초 timeout을 기다리면 새 대상이 시작되지 않는 구간도 생긴다.
  4. 장비별 timeout, 재시도 횟수, 전체 마감 시간, 실패한 대상의 기록 형식을 정한다. 일부 실패에도 다른 결과를 보존할지 요구에 포함한다.
  5. 정상 100대, 응답 지연, 권한 거부, 연결 단절, 중복 대상과 중간 취소를 각각 시험한다. 실제 장비 없이 재현 가능한 가상 응답으로 판정·집계부터 확인할 수 있다.
  6. 평균 실행시간만 아니라 예정 100개 대상에 성공·실패·취소 결과가 하나씩 존재하는지 확인한다. 보고서가 생성됐어도 누락 자산이 있으면 완결성 요구를 충족하지 못한다.
요구 ID판정 가능한 조건검증 자료
FR-01대상별 결과 식별과 누락 0대상 목록과 결과 키 대조
QR-01합의한 환경·입력에서 시간 목표 충족단계별 시작·종료 시각
QR-02일부 실패에도 다른 대상 결과 보존실패 주입 표본과 저장 결과
OP-01중간 취소 후 상태와 재개 범위 식별취소/재실행 기록

09요구사항과 시험을 같은 ID로 연결하기

  • 요구사항마다 설계 요소, 담당 작업, 확인 방법을 연결한다.
    • 기능이 구현되었는데 대응하는 시험이 없다면 완료 근거가 비어 있고, 시험은 있는데 어떤 요구를 만족하는지 모르면 불필요한 시연이 늘어난다.
    • 같은 ID를 기획·구현·시험·보고서에서 사용하면 변경된 요구가 어느 산출물에 영향을 주는지도 찾을 수 있다.
  • 아래 수치 없는 예시는 팀이 합의한 조건을 채워 넣는 출발점이다.
    • 서비스 가용 시간이나 응답 시간 같은 수치는 사용자 기대, 자원 제약, 측정 위치를 함께 합의해야 의미가 있다.
    • 기준을 측정 후 유리하게 바꾸면 인수 판정이 흔들린다.
text
REQ-WEB-01: 이름별 웹 서비스 분기
설계: 진입 프록시의 가상 호스트 + 서비스별 backend
선행 작업: DNS 이름, 인증서, backend 정상 응답
정상 시험: 각 이름에서 해당 콘텐츠가 반환됨
거부 시험: 정의되지 않은 관리 경로로 접근할 수 없음
산출물: 설정 버전, 요청/응답, 프록시·backend 로그
완료: 합의한 정상·거부·복구 시험 통과 및 검토

작성 연습용 예시이며 실제 수행 결과나 개인 경력으로 제시한 내용이 아니다.

10종료와 확장을 설계 범위에 넣기

  • 단기 서비스라면 개통뿐 아니라 기간 종료 후의 상태 전환도 필요하다.
    • 신규 요청 중지, 데이터 내보내기, 보관 여부 확인, 계정·인증서·접근권한 회수, 와 자원 정리를 순서대로 정의한다.
    • 백업의 존재와 복원 가능성은 다르므로 복원 대상과 확인 방법이 있어야 보관 설계가 완성된다.
  • 운영체제나 제품은 막연한 업계 점유율 주장으로 선택하지 않는다.
    • 지원하는 기능, 업데이트 기간, 팀이 설명할 수 있는 구성, 필요한 패키지와 자동화 방식, 자원 사용량을 비교한다.
    • 선택 이유와 제외한 대안을 남겨야 규모나 요구가 변했을 때 어떤 조건에서 재검토할지 알 수 있다.
검증·예외

11계획은 그럴듯한데 인수할 수 없는 설계의 징후

  • 인증 실패·의존 서비스 장애·부분 저장·재시작을 설명하지 못하면 운영 설계가 빠져 있다. 각 실패에서 남는 상태와 재개·복구 책임을 적는다.
  • 시험 데이터를 준비할 수 없거나 완료 여부가 주관적인 문장은 다시 분해한다. 측정 도구와 근거 위치까지 계획에 연결한다.
  • 독립 작업처럼 보여도 같은 담당자·장비·DB를 공유하면 동시에 수행할 수 없을 수 있다. 병렬화의 전제와 상한을 실제 자원 기준으로 확인한다.
  • 수집 대상을 늘리면 저장 용량뿐 아니라 네트워크·권한 관리·자산 갱신·실패 검토도 늘어난다. 데이터량에 비례하지 않는 병목을 구분한다.
  • 개발자의 PC에만 있는 파일·비밀·수동 설정이 필요하면 다른 사람이 재현하기 어렵다. 필요한 입력과 준비 절차를 문서화하고 새 환경에서 시험한다.
  • “설치 완료”를 “기능·정상/실패 시험·운영 인계 완료”와 분리한다. 남은 제약을 산출물에 남겨 이후 담당자가 같은 전제를 사용하게 한다.
학습 확인

이해했는지 확인하기

  • 본문의 예시와 실제로 보유한 수행 증거를 구분해 기록한다.
  • 산출물의 담당자·버전·완료 기준을 연결한다.
  • 설명 가능한 범위와 아직 추가 검증이 필요한 범위를 명시한다.

함께 확인할 공식 자료