소프트웨어 개발 프로세스
소프트웨어 개발프로세스 : 소프트웨어를 개발하기 위해 필요한 절차, 과정.
기획
, 설계
, 구현
, 테스트
, 유지보수
로 구성됨
- 요구사항 수집 & 분석(기획) :
- 요구사항 수집 : 시장조사, 관계자 인터뷰, 문서 분석.
- 요구사항 분류 : 기능적/비기능적 요구사항
- 요구사항 분석
- 문서화
- 요구사항 검증, 확인
- 시스템 설계 :
* 상위 설계 : 시스템 아키텍쳐, 모듈화, 데이터, 인터페이스
- 하위 설계 : 데이터베이스, 클래스, 알고리즘, 에러/로깅
- 설계원칙 :
- 모듈화
- 캡슐화
- 재사용성
- 확장성
- 응집도/결합도
- 단순성
- 소프트웨어 아키텍쳐 :
- MVC(Model-View-Controller) 패턴 - 애플리케이션을 3가지 구성요소로 나누어 개발
- 모놀리식 아키텍쳐 - 애플리케이션의 모든 요소가 큰 단위로 개발되고 배포
- 마이크로 서비스 아키텍쳐 - 애플리케이션을 작고 독립적인 서비스의 집합으로 구성
- 구현 :
설계문서를 토대로 실행가능한 코드로 변환.
구현에는 다음과 같은 작업들이 포함됨
- 코딩
- 통합
- 단위 테스트
- 코드 리뷰
- 리팩토링
- 성능 최적화
- 보안 구현
- 문서화
- 버전관리
-
테스트 :
개발된 소프트웨어가 의도대로 동작하는지에 대해 테스트.
테스트에는 다음과 같은 작업들이 포함됨.
- 테스트 계획 수립
- 테스트 케이스 및 시나리오 작성
- 테스트 환경 설정
- 테스트 실행
- 결함 관리
- 테스트 결과의 평가 및 보고
또한, 테스트의 종류는 다음과 같이 다양하게 존재함.
- 단위테스트 (Unit Test)
- 통합 테스트 (Integration Test)
- 시스템 테스트 (System Test)
- 인수 테스트 (Acceptance Test)
- 회귀 테스트 (Regression Test)
- 성능 테스트 (Performance Test)
- 보안 테스트 (Security Test)
테스트의 자동화는 다음의 프레임워크를 사용함.
- JUnit
- Selenium
- Cypress
- JMeter
-
배포 :
배포는 개발이 완료된 소프트웨어를 실제 사용자들이 사용할 수 있도록 운영 환경에 설치하고 운영하는 단계.
배포에는 다음과 같은 작업들이 포함됨.
- 릴리스 준비
- 배포 계획 수립
- 배포 환경 구성
- 소프트웨어 배포
- 테스트 및 검증
- 문서화 및 교육
- 운영 및 모니터링
웹 애플리케이션의 배포 방식은 다음과 같음.
- 파일 복사
- 가상 서버 이미지 생성
- 컨테이너 이미지 생성
웹 애플리케이션의 배포 전략은 다음과 같음.
배포는 CI/CD 와 밀접한 관련이 있음.
CI (Continuous Integration):
- 소스코드 변경 발생
- 코드 통합
- 자동화된 빌드
- 테스트 실행
- 결과 보고
CD (Continuous Deployment) :
- CI 프로세스를 통해 빌드/테스트
- 자동 배포
- 성능과 안정성 모니터링
- 문제 발생시 롤백
- 도구로는
Jenkins
, Circle CI
, Teamcity
, Github Action
등을 사용
모니터링 도구 :
- Saas : New Relic, Datadog
- 클라우드 : AWS Cloudwatch
- 오픈소스 : Prometheus, Grafana, Zabbix
에러 모니터링 :
로깅 :
클라우드 : AWS Cloudwatch Logs
오픈소스 : Loki
- 유지보수 :
소프트웨어를 지속적으로 개선, 변화하는 요구사항에 대응.
유지보수는 다음과 같은 작업들이 포함됨.
- 버그 수정
- 성능 최적화
- 기능 개선 및 추가
- 기술 부채 관리
- 운영 환경 관리
- 보안 업데이트