각진 세상에 둥근 춤을 추자
프로젝트 기획과 프로젝트 과정 본문
✨ 기획 순서
- 사업 분석
- 기능 정의서 (주요 기능 정의)
- 기능 명세서 (요구사항 정의/ 기술 요구사항/ 정책 정의서)
- 개발 일정 수립
- 스토리보드/화면 설계서 작성
📌 사업 분석
- 목적: 프로젝트의 목표와 비전을 설정하고 시장 조사 및 경쟁 분석을 수행
- 산출물
- 프로젝트 목표
- 타겟 유저 정의
- 경쟁사 분석 자료
- 성공 기준 (KPI)
📌 기능 정의서 (주요 기능 정의) 작성
- 목적: 시스템이 수행할 주요 기능을 정의하고 각 기능 간의 관계와 흐름을 이해
- 작업 내용
- 주요 기능 리스트 작성
- 각 기능 간의 상호작용 정의
- 심플한 플로우 차트 작성 (이래도 되나 싶을 만큼 심플하게, 상세 스펙은 상세 기획서에)
- 산출물
- 기능 정의서
- 플로우 차트 (간단한 흐름도)
📌 기능명세서 (요구사항 정의서) 작성
- 목적: 각 기능에 대한 구체적인 요구사항과 동작 방식을 정의
- 작업 내용
- 각 기능의 입력, 출력, 예외 처리 정의
- 동작 조건과 관련 데이터 구조 명시
- 플로우 차트를 참고하여 IA를 기반으로 기능 위주의 상세한 요구사항 작성
- 산출물
- 기능 명세서
- 플로우 차트와 연계된 상세 요구사항
📌 개발 일정 수립
- 목적: 개발 작업의 우선 순위와 일정을 수립하여 팀 간 조율
- 작업 내용
- 주요 기능과 개발 단위를 기준으로 작업량과 소요 시간 산정
- 마일스톤 설정
- 산출물
- 개발 일정표
- 주요 마일스톤 리스트
📌 스토리보드 작성
- 목적: 사용자 경험(UX) 중심으로 화면 간의 흐름을 정의하고 화면 요소를 간단히 표현
- 작업 내용
- 각 화면의 동작 흐름 정의
- 사용자 행동에 따른 화면 전환 표현
- 산출물
- 스토리보드
📌 화면 설계서
- 목적: 스토리보드를 기반으로 UI/UX 디자인을 구체화
- 작업 내용
- 각 화면의 레이아웃, 버튼 위치, 색상이나 폰트 등 디자인 요소 정의
- 산출물
- 화면 설계 문서
- 와이어프레임 또는 초기 디자인 시안
✨ 프로젝트 과정
1. 전통 기업
개발 | 코드 작성 - 개발자는 로컬 환경에서 기능을 구현 - 사내 표준에 따라 코드 스타일과 기능을 준수하며 작성 로컬 검증 - 작성한 코드가 로컬 환경에서 정상적으로 작동하는지 테스트 - 간단한 단위 테스트나 스크립트를 실행해 코드 품질 확인 |
배포 CI/CD | QA가 브랜치 또는 UAT 환경에서 검증 - QA 팀이 테스트 환경(UAT)에서 코드를 검증 - 기능 동작 확인 및 예상치 못한 문제점(버그) 식별 QA가 발견한 문제 수정 - QA에서 발견한 문제를 개발자가 수정하고 다시 테스트 릴리즈 후보 브랜치에 병합 - 모든 문제가 해결되면 릴리즈 브랜치에 병합 - 최종 테스트 및 승인을 거쳐 배포 준비 |
출시 | 프로덕션 푸시 - 예정된 일정에 따라 프로덕션 환경에 코드를 배포 - 안정성을 확보한 상태에서 릴리즈 진행 |
출시 이후 | 고객 피드백 수집 - 고객의 피드백을 수집하여, 다음 업데이트 또는 패치에 반영 - 버그나 기능 요청을 제품 개선의 데이터로 활용 |
2. 스타트업
개발 | 코드 작성 - 개발자는 기능을 빠르게 구현하며 종종 간단한 프로토타입을 작성 로컬 검증 - 로컬 환경에서 간단히 동작 여부를 확인 - 대규모 테스트보다는 기능 구현의 속도와 결과물 중심 |
배포 CI/CD | 코드 리뷰 & CI 검사 - 동료 개발자가 코드 리뷰를 통해 품질 확인 - CI (Continuous Integration) 시스템에서 기본적인 테스트와 빌드 검증 수행 트렁크 병합 - 모든 검증이 통과되면 트렁크(메인 브랜치)에 바로 병합 - 브랜치 전략을 간소화하여 빠른 릴리즈 주기를 유지 |
출시 | 프로덕션 푸시 - 코드가 곧바로 프로덕션 환경에 배포 - 출시 주기가 짧고 반복적으로 릴리즈를 진행 |
출시 이후 | 고객이 버그 리퍼트 - 고객이 발견한 버그를 직접 리포트 - 고객 피드백은 즉각적으로 다음 업데이트에 반영 |
3. 빅테크 (글로벌 IT 기업: Google, MicroSoft, Amazon, Apple)
개발 | 코드 작성 - 개발자는 엄격한 표준과 도구를 사용해 코드를 작성 로컬 검증 - 자동화된 단위 테스트를 포함한 정교한 로컬 검증 프로세스 |
배포 CI/CD | 코드 리뷰 & CI 검사 - 다단계 코드 리뷰를 통해 코드 품질 보장 - CI (Continuous Integration) 시스템에서 기본적인 테스트 수행 자동화된 추가 테스트 - CI를 넘어 더 복잡하고 비용이 많이 드는 통합 테스트 실행 병합 충돌 테스트 - 병합 과정에서의 충돌 가능성을 테스트 트렁크 병합 - 검증된 코드만 트렁크(메인 브랜치)에 병합 |
출시 | 기능 플래그를 이용한 단계적 출시 - 새로운 기능은 기능 플래그로 특정 사용자 그룹에게만 활성화 - 문제가 없으면 점진적으로 전체 사용자에게 적용 |
출시 이후 | 모니터링, 알림, 온콜 - 배포된 기능의 성능과 오류를 실시간으로 추적 - 문제가 발생하면 알림을 통해 담당자가 즉각 조치 - 온콜 체계 (대기 근무)를 통해 24/7 대응 가능 |
4. 메타의 핵심 서비스 (소셜 미디어, 커뮤니케이션 서비스: Facebook, Instagram, WhatsApp)
개발 | 코드 작성 - 메타의 개발자는 원격 서버에서 바로 코드를 작성하거나 실행 - 로컬 환경보다 더 실제와 가까운 검증이 가능 원격 서버 검증 - 로컬 대신 원격 서버에서 코드를 빌드하고 테스트 - 테스트 환경이 더 현실적이며, 문제를 조기에 발견 |
배포 CI/CD | 코드 리뷰 & CI 검사 - 다단계 코드 리뷰 및 CI 테스트 진행 병합 충돌 해결 - 병합 과정에서 충돌이 발생하면 자동으로 해결하거나 수동으로 처리 브랜치 병합 - 병합된 코드는 기능 단위의 브랜치에 추가 |
출시 | 4단계의 자동화된 카나리아 출시 - 소규모 사용자 그룹에 배포 - 점진적으로 범위를 확대하며 안정성을 검증 - 문제 발생 시 자동 롤백 |
출시 이후 | 모니터링, 알림, 온콜 - 고급 분석 도구를 통해 사용자 행동, 오류, 성능을 추적 - 시스템 알림으로 잠재적 문제를 실시간 파약 - 문제가 발생하면 대기 중인 개발자가 즉각적으로 해결 - 글로벌 서비스를 운영하는 만큼 24/7 체계를 유지 |