개발 방법론
목차
- Waterfall
- Agile
- DevOps
Waterfall: 폭포수
전통적인 개발 방법론으로써, '요구사항 수집 > 분석 > 설계 > 개발 > 테스트 > 배포 > 유지보수' 단계를 한 번에 수행하여 시스템을 완성한다. 처음부터 계획한 일정대로 개발이 진행되기 때문에, 개발 기간에 어느 정도 잘 맞출 수 있지만, 모든 시스템의 설계와 개발을 한 번에 하기 때문에, 새로운 요구사항이나 변경 사항에 취약하다.
사내에서 자체 개발한 ERP, WMS, CMS는 폭포수 방법론과 모놀리식 아키텍쳐로 개발된 시스템의 대표적인 예이다.
Agile: 애자일(민첩, 신속)
새로운 요구사항이나 변경 사항을 신속하게 반영하기 위한 개발 방법론으로써, 요구사항을 잘게 나누어 폭포수와 유사한 단계를 거치고, 빠르게 피드백을 받아서 시스템에 반영하여 시스템을 완성하는 것을 목표로 한다.
예를 들어, 개발할 것들이 100개라면, 1개를 폭포수와 유사한 단계인 스프린트를 거치며 개발한 후 피드백을 받아서 괜찮은지 물어본 후 다음 요구사항을 개발한다. 이 스프린트를 여러 번 반복하여 최종적으로 시스템을 완성하면 피드백이 잘 반영된 시스템을 만들 수 있다.
대신, 수많은 스프린트를 피드백과 함께 공들여 진행하기 때문에 개발 기간이 길어질 수 있다.
DevOps: 개발 + 운영
물리적으로 개발팀과 운영팀을 한 팀으로 합치는 것이 아닌, 두 팀이 논리적으로 마치 한 팀처럼 움직일 수 있도록 고안된 방법론이다.
예를 들어, 개발팀에서 긴급한 버그 픽스를 배포해야 할 때, 운영팀에선 상황에 따라 바로 배포를 해주지 못할 수 있다.
이런 상황을 대비하여 서로가 믿고 배포될 수 있게끔, CI/CD와 같은 빌드/테스트/배포 자동화 체계를 구축하고, 배포 중 문제가 발생하면 자동으로 알림을 보내며, 배포에 대한 로그를 추적할 수 있는 등의 환경을 구축하는 방법론이다.
참고
- https://www.youtube.com/watch?v=7KadB1ZUeMk&ab_channel=%EC%82%BC%ED%8F%89%EB%8F%99%EC%97%B0%EA%B5%AC%EC%86%8C