소포트으웨어 개발 프로세스 모델은 소프트웨어 개발 생명주기(SDLC, Software Development Life Cycle)를 기반으로 만들어졌다.
요구분석 및 시스템 명세 작성
설계
구현
테스트
배포 및 유지보수
기존에 존재하고 있던 개발 프로세스는 워터폴(Watarfall) 방식이 있다.
폭포와 같이 한 방향 으로만 프로세스가 진행되는 개발과정을 뜻한다.
실제로 한국어로도 "폭포수 개발 방식" 이라고도 한다.
보통 이런 사이클을 가지고 있으며, 유지보수까지 끝나면 다시 처음의 단계로 돌아가 시작하는 것이 가장 기본적인 모델이라고 볼 수 있다.
이런 워터폴 개발 방식은 실제 출시 기간을 정해놓고 순차적으로 프로세스가 진행시켜 어플리케이션(소프트웨어)를 완성해 배포하기 때문에 실제로 배포되어 유저에게 전달되는 시간이 오래 걸린다.
또한 실제 디자인 또는 개발된 화면을 시각적으로 확인할 수 있는 단계는 이미 많은 단계가 지나온 시점이기 때문에 어떤 버그나 수정 사항이 생기면 다시 처음으로 돌아가 수정되기 때문에 일정과 비용 등 많은 부분에서 에로 사항이 생기게 된다.
그래서 전통적인 소프트웨어 개발 프로세스에서는 소프트웨어의 안정성 개선을 위해 테스트 단계에 다양한 테스트들을 도입하기도 한다.
전통적인 개발 프로세스에서 벗어나기 위해 만들어진 프로세스 중 하나가 애자일(Agile)방식 이다.
애자일 방식은 '스프린트(sprint)' 라고 불리는 짧은 주기의 개발 사이클을 계속해서 반복한다.
이 방식은 요구사항이 변하는 것을 당연한 전제로 두고 있다.
따라서 전통적인 개발 프로세스보다는 훨씬 효율적으로 개발에 착수할 수 있다.
애자일 개발 프로세스를 적절히 사용하면 빠르게 문제를 해결해 하루에도 여러 번의 배포가 가능해진다.
이러한 방식은 SaaS(Software as a Service, 서비스형 소프트웨어) 를 개발하는데 적합하다.
SaaS는 클라우드 서비스의 한 방식으로, 브라우저에 접속하기만 해도 새 버전을 즉시 사용할 수 있는 서비스 방식이다.
애플리케이션부터 서버, 가상화, 스토리지, 네트워킹까지 전부 공급자 쪽에서 관리하기 때문에 고객이 제어하거나 관리할 부분이 거의 없게 된다.
따라서 사용자 업데이트에 대한 걱정에서 벗어나며, 하루에도 여러 번의 배포도 가능하고, 빠른 배포 속도도 보장 받을 수 있다.
워터폴 | 애자일 | |
---|---|---|
장점 | - 프로세스가 길고 순서가 잡혀 있으므로 팀의 규모에 상관 없이 따르기 쉬움 - 개발 주기가 정해져 있으므로 새로운 프로젝트를 안정적으로 시작 가능 - 요구 사항이 확정되어 있으므로 프로젝트를 실행하기 수월하며, 개발 목표를 자주 변경하지 않아도 됨 - 프로젝트의 전 과정에 필요한 예산 및 자원이 초기에 확정되어 예상 결과와 리스크를 통제하기 훨씬 쉬움 | - 빠르면서 유연한 개발 과정 - 짧고 반복적인 스프린트로 구성되어 있어 품질에 초점을 맞출 수 있으므로 빠르게 결함을 인지하고 수정 가능 - 스프린트를 통한 짧은 반복 과정으로 개발 과정 중에 신속히 제품 변경 가능 |
단점 | - 개발이 순차적으로 진행되므로 앞 단계가 완성되지 않으면 다음 단계로 넘어갈 수 없어 개발 속도가 느리고 유연성이 떨어짐 - 테스팅 단계에 이르러서 이슈가 발견되는 경우가 왕왕 있음 - 개발 요구 사항이 초기에 확정되므로 범위 변경이 자유롭지 못함 | - 스프린트에 대한 경험이 있으며 빠른 반복 작업에 익숙한 스크럼 마스터가 필요함 - 고객이 수많은 변경 사항을 검토해야만 하는 번거로움 발생 - 팀원이 잘 조직되어 있지 않거나 자립성이 떨어지는 경우 애자일론을 채택할 시 문제가 발생 |
워터폴 | 애자일 | |
---|---|---|
이런 상황에 적합 | - 높은 예측 가능성과, 순차적인 프로젝트 타임라인, 사전 확정 예산이 필요한 경우 - 프로젝트 팀의 경험이 적은 경우 - 요구사항이 간단하거나, 타임라인이 긴 프로젝트를 수행하는 경우 | - 고성능 소프트웨어 개발 중에서도 특히 소프트웨어 개발을 할 경우 - 고품질의 결과물과 지속적인 개선에 초점을 맞출 경우 - 프로젝트가 완벽히 수행될 때까지 결과물을 기다리는 것보다 결과물에 대해 빠른 피드백이 필요한 경우 |
이런 기업 및 팀에 적합 | - 개발상의 변경이나 리스크에 덜 민감한 기업 및 팀 - 제한적인 시간과 자원 탓에 협업이 자유롭지 못한 고객을 둔 기업 및 팀 | - IBM, 시스코, AT&T, 마이크로소프트와 같이 크고 복잡한 회사들이 프로세스를 간소화해 변화에 더욱 신속하게 대응하고자 할 때 - 고객 및 외부 관계자와 정기적으로 긴밀한 협업을 수행하는 프로젝트 팀 |
: 소프트웨어 개발(Development)과 IT 운영(Operations)의 합성어
소프트웨어를 자주, 빨리 그리고 안전하게 배포하는 것을 목표로 하며, 그렇기 때문에 애자일 개발 프로세스를 기반으로 한 것으로 볼 수 있다.
DevOps는 특정한 업무라던지 부서가 아닌 일종의 개발 문화이다.
만약 서비스가 중단된다면, 누구든지 문제점을 진단하고 시스템을 복구하여 운영할 수 있는 절차를 알고 있어야 한다.
DepOps 특징
모든 이미지와 컨텐츠의 저작권은 코드스테이츠의 유어클래스에 있습니다.