1. 요구사항 분석
✅ 핵심 질문: "무엇을 만들 것인가?"
모든 프로젝트의 출발점은 명확한 요구사항 정의입니다. 기능만 나열하는 것이 아니라 왜 필요한가, 누가 사용할 것인가까지 고민해야 합니다.
- 이해관계자 인터뷰 진행
- 핵심 기능 리스트 도출 (MVP 기준)
- 비기능 요건 확인 (보안, 성능, 유지보수성 등)
- 문서화: 요구사항 명세서 작성
Tip: 요구사항은 계속 바뀔 수 있으므로 변경 이력 관리가 중요합니다.
2. 시스템 설계
✅ 핵심 질문: "어떻게 만들 것인가?"
설계 단계에서는 개발의 방향성을 정합니다. 처음에 제대로 설계하지 않으면 나중에 기술 부채로 돌아옵니다.
- 아키텍처 설계 (Monolith vs Microservice 등)
- DB 모델링 (ERD, 정규화/비정규화 전략)
- API 설계 (RESTful, GraphQL 등)
- 화면 설계 (필요 시 와이어프레임)
Tip: 설계안은 리뷰를 통해 검증받는 것이 좋습니다. 사내 아키텍처 리뷰 문화가 있다면 적극 활용하세요.
3. 인프라 설계 및 구축
✅ 핵심 질문: "어디서 동작하게 할 것인가?"
개발 환경과 운영 환경 모두를 아우르는 인프라 계획이 필요합니다.
- 클라우드 or 온프레미스 결정 (AWS, GCP, NCP 등)
- 네트워크 구성, 보안 그룹 설계
- CI/CD 파이프라인 구성 (GitHub Actions, Jenkins 등)
- 모니터링 및 로깅 도구 설정 (Prometheus, Grafana, ELK 등)
Tip: IaC(Terraform, CDK 등)를 적극 활용하면 환경 재현이 쉬워집니다.
4. 개발
✅ 핵심 질문: "개발은 어떤 기준으로 나눌까?"
설계가 끝났다면 이제 본격적으로 개발을 시작합니다. 이 단계에서 중요한 건 일관성과 협업입니다.
- 브랜치 전략 수립 (Git Flow, trunk 기반 등)
- 기능 단위의 이슈 관리 (JIRA, GitHub Issues 등)
- 코드 컨벤션 및 리뷰 문화 수립
- 테스트 코드 작성 (Unit, Integration)
Tip: 클린하게 개발하고 작게 자주 배포할 수 있도록 마이크로 릴리즈 전략을 고려해보세요.
5. 테스트 및 품질 관리
✅ 핵심 질문: "정말 잘 작동하는가?"
아무리 코드가 잘 짜여져도, 실제 운영에서 문제를 일으키면 소용없습니다.
- QA 테스트, 시나리오 기반 테스트
- 성능 테스트 (부하 테스트, 병목 찾기)
- 보안 점검 (OWASP Top10 등)
- 사용자 수용 테스트 (UAT)
Tip: 테스트 자동화를 통해 배포 전에 항상 검증되도록 만들어두세요.
6. 배포 및 운영
✅ 핵심 질문: "운영 중 문제 발생 시 어떻게 대응할 것인가?"
배포는 끝이 아닌 시작입니다. 운영 과정에서의 모니터링과 대응 체계가 중요합니다.
- Blue-Green / Canary 배포 전략
- 장애 대응 프로세스 정립 (온콜, 롤백 시나리오)
- 피드백 수집 및 개선 작업
Tip: SLO/SLI를 설정해 서비스 품질을 수치화해보세요.