개발 프로세스 흐름 정리

Hyeok·2025년 4월 27일

1. 요구사항 분석 및 기획

수행해야 할 작업:

  • 고객과의 커뮤니케이션: 고객과 미팅을 통해 비즈니스 목표, 사용자 요구사항, 기능적/비기능적 요구사항 수집.
  • 요구사항 문서화: 요구사항 명세서(SRS, Software Requirement Specification) 작성.
  • 프로젝트 범위 정의: 구현할 기능, 제외할 기능, 우선순위 설정.
  • 기술적 타당성 검토: 고객 요구사항을 기존 기술 스택으로 구현 가능한지 평가.
  • 와이어프레임/프로토타입 제작: UI/UX 디자이너와 협업해 초기 화면 설계 및 프로토타입 제공.

알아야 할 것:

  • 도메인 지식: 고객의 산업(예: 전자상거래, 금융, 의료 등)에 대한 기본 이해.
  • 커뮤니케이션 스킬: 비기술적 고객에게 기술적 내용을 쉽게 설명하는 능력.
  • 요구사항 분석 도구: Jira, Confluence, Trello, 또는 Notion 같은 프로젝트 관리 도구.
  • 기본 UI/UX 원칙: 사용자 중심 설계를 위한 기본적인 디자인 감각.
  • 비즈니스 분석: 고객의 KPI(Key Performance Indicator)와 목표를 이해하는 능력.

2. 기술 스택 및 아키텍처 설계

수행해야 할 작업:

  • 기술 스택 선정: 프론트엔드, 백엔드, 데이터베이스, 배포 환경 등을 프로젝트 요구사항에 맞게 선택.
  • 시스템 아키텍처 설계: 마이크로서비스, 모놀리식 아키텍처, 서버리스 등 적합한 구조 설계.
  • 데이터베이스 설계: ERD(Entity-Relationship Diagram) 작성 및 데이터 모델링.
  • API 설계: RESTful API 또는 GraphQL 설계, Swagger/Postman으로 문서화.
  • 보안 설계: 데이터 암호화, 인증/인가(OAuth, JWT) 계획.

알아야 할 것:

  • 프론트엔드 기술:
    • HTML, CSS, JavaScript (ES6+).
    • 프레임워크: React
    • 상태 관리: Redux
    • 빌드 도구: Webpack, Vite.
  • 백엔드 기술:
    • 언어: Java(Spring)
    • 프레임워크 및 서버: Spring Boot
    • API 설계: REST
  • 데이터베이스:
    • 관계형: MySQL, PostgreSQL, Oracle
    • 비관계형: MongoDB, Redis
  • 클라우드 및 인프라:
    • AWS, Azure, Google Cloud
    • 컨테이너: Docker, Kubernetes
    • CI/CD: Jenkins, GitHub Actions
  • 보안:
    • HTTPS, SSL/TLS
    • OWASP Top 10(예: SQL Injection, XSS 방지).
    • 인증/인가: OAuth 2.0, JWT, SSO
  • 아키텍처 패턴:
    • MVC, 마이크로서비스, 서버리스

3. 개발

수행해야 할 작업:

  • 프론트엔드 개발: UI 컴포넌트 구현, 반응형/적응형 디자인 적용, API 연동.
  • 백엔드 개발: 서버 로직 구현, 데이터베이스 연동, API 엔드포인트 개발.
  • 테스트 코드 작성: 단위 테스트, 통합 테스트 작성.
  • 버전 관리: Git을 사용한 코드 관리, 브랜치 전략(Gitflow, Trunk-based).
  • 코드 리뷰: 팀원과 코드 품질 점검 및 피드백 반영.

알아야 할 것:

  • 프론트엔드 최적화:
    • Lazy Loading, Code Splitting(?)
    • 성능 최적화: Lighthouse 점수 개선(?), 렌더링 최적화.
  • 백엔드 최적화:
    • 캐싱(Redis).
    • 비동기 처리: Promise, async/await, 메시지 큐(Kafka).
  • 테스트 프레임워크:
    • 프론트엔드: Jest, Cypress, Testing Library.
    • 백엔드: Mocha, JUnit, PyTest.
  • 버전 관리 심화:
    • Git 명령어(git rebase, cherry-pick).
    • 브랜치 전략 및 충돌 해결.
  • 코드 품질 도구:
    • ESLint, Prettier, SonarQube.

4. 테스트 및 QA

수행해야 할 작업:

  • 단위 테스트: 개별 모듈/컴포넌트 테스트.
  • 통합 테스트: API, 데이터베이스, 외부 서비스 간 연동 테스트.
  • E2E 테스트: 사용자 시나리오 기반 전체 워크플로우 테스트.
  • 성능 테스트: 부하 테스트(Load Testing), 스트레스 테스트.
  • 버그 수정: 테스트에서 발견된 이슈 수정 및 재테스트.
  • 크로스 브라우징 테스트: 다양한 브라우저와 디바이스에서 호환성 확인.

알아야 할 것:

  • 버그 트래킹 도구: Jira.

5. 배포

수행해야 할 작업:

  • 배포 환경 설정: 개발, 스테이징, 프로덕션 환경 구성.
  • CI/CD 파이프라인 구축: 자동 빌드, 테스트, 배포 설정.
  • 서버 배포: 클라우드(AWS EC2, Lambda) 또는 온프레미스 서버에 배포.
  • 도메인 및 SSL 설정: DNS 설정, HTTPS 활성화.
  • 모니터링 설정: 서버 상태, 에러 로그, 사용자 행동 모니터링.

알아야 할 것:

  • 배포 도구:
    • AWS ECS, Elastic Beanstalk, Heroku, Netlify, Vercel.
    • Nginx, Apache 설정.
  • CI/CD 도구:
    • GitHub Actions, Jenkins, GitLab CI.
  • 모니터링 및 로깅:
    • Prometheus, Grafana, New Relic.
    • 로그 관리: ELK Stack, CloudWatch.
  • DNS 및 네트워킹:
    • Route 53, Cloudflare.
    • CDN(Content Delivery Network) 설정.
  • 스케일링:
    • 수평/수직 스케일링.
    • 로드 밸런싱(AWS ELB, Nginx).

6. 유지보수 및 고객 지원

수행해야 할 작업:

  • 버그 수정 및 패치: 배포 후 발생한 이슈 해결.
  • 성능 최적화: 사용자 피드백 기반 성능 개선.
  • 기능 업데이트: 새로운 요구사항 반영 및 추가 개발.
  • 백업 및 복구: 데이터 백업 전략 수립 및 복구 프로세스 점검.
  • 고객 지원: 고객 문의 응대, 기술 지원 제공.

알아야 할 것:

  • 유지보수 전략:
    • 롤백 전략.
    • 핫픽스 배포.
  • 모니터링 심화:
    • 사용자 행동 분석(Google Analytics, Mixpanel).
    • 서버 상태 알림 설정(Slack, PagerDuty).
  • 고객 지원 도구:
    • Zendesk, Intercom.
    • 기술 문서 작성(Markdown, Confluence).
profile
공부하면서 정리한 블로그입니다. 혹시 잘못된 내용이 있다면 댓글로 알려주시면 큰 도움이 됩니다. 감사합니다!

0개의 댓글