개발 프로세스 발전
sw개발 프로세스 모델은 소프트웨어 개발 생명주기(SDLC)를 기반으로 만들어졌다.
- 요구분석 및 시스템 명세 작성 : 문제 분석 단계로 개발할 sw의 기능과 제약조건등을 사용자와 함께 정확히 정의
- 설계 : 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정
- 구현 : 논리적으로 결정한 문제해결방법으로 실제 프로그램 작성
- 테스트 : 개발한 시스템을 검사하고 평가하는 일련의 과정
- 배포 및 유지보수 : 시스템이 인수되고 설치된 후 일어나는 모든 활동
전통적인 개발 프로세스
워터폴(Waterfall) - 폭포수 개발 방식
유지보수가 끝나면 다시 처음의 단계로 돌아가 시작하는 것이 가장 기본적인 모델
워터폴 개발 방식은 출시기한을 정해놓고 순차적으로 진행해 완성하고 배포하기때문에 유저에게 전달되는 시간이 오래 걸리며
어떤 수정사항이 생기면 다시 청므으로돌아가 수정되기 때문에 일정과 비용 등 많은 부분에서 애로사항이 생긴다.
그래서 워터풀 개발 방식에서는 소프트웨어의 안정성 개선을 위해서 테스트 단계에 다양한 테스트들을 도입한다.
시스템 테스트 : 모든 모듈을 통합 후 최종적으로 완성된 시스템이 요구사항을 만족하는지 확인
알파 테스트 : 완전 개발된 시스템을 개발현장에서 비공개로 테스트하는 것
베타 테스트 : 고객의 실제 사용 환경에서 수행되는 테스트
모던 개발 프로세스
애자일(Agile): 스프린트라고 불리는 짧은 주기의 개발 사이클을 계속 반복
애자일 방식은 요구사항이 변하는 것을 당연한 전제로 두고 있어 전통적 개발 프로세스보다 효율적이다.
애자일 개발 프로세스 방식은 SaaS(Software as a Service)를 개발하는데 적합하다.
SaaS(Software as a Service, 서비스형 소프트웨어)
클라우드 서비스의 방식으로 브라우저에 접속하기만 해도 새 버전을 즉시 사용할 수 있는 서비스 방식이다.
사용자 업데이트에 대한 걱정없이 하루에 여러번 배포 가능하며 빠른 배포 속도를 보장한다.
전통적인 개발 프로세스 vs 모던 개발 프로세스
DevOps
소프트웨어 개발(Development)과 IT 운영(Operations)의 합성어
소프트웨어를 자주, 빨리 그리고 안전하게 배포하는 것이 목표이며 애자일 개발 프로세스 기반이다.
DevOps 문화
특정업무나 부서가 아닌 개발 문화로 서비스가 중단되면 누구든지 문제점을 진단하고 시스템을 복구해 운영할 수 있는 절차를 알고 있어야 한다.
실무에서는 업무의 분리를 위해 DevOps팀이나 부서를 두고 있을 수 있다.
DevOps 특징
코드 통합, 테스트, 배포 과정을 자동화 시키는 것
내용 참조, 출처 : 코드스테이츠
이미지 출처: 코드스테이츠