안녕하세요. Comfort입니다.
이번 글은 소프트웨어 개발 생명 주기(Software Development Life Cycle, SDLC)에 대해서 작성하고자 합니다.
SDLC는 조직에서 애플리케이션 또는 프로그램 생성을 용이하게 하기 위해 사용하는 프레임워크입니다.
SDLC는 단계와 모델이 있는데요. 이번 글은 단계만 살펴 보겠습니다. 모델은 다음 글에서 살펴 보겠습니다.
1. 계획 단계(Planning)
계획 단계에서는 먼저 시장 조사와 경쟁 분석을 통해 전반적인 비즈니스 방향을 설정합니다. 타깃 시장의 수요를 파악하고, 경쟁 서비스가 제공하는 기능과 전략을 분석함으로써 우리 서비스만의 차별화 포인트를 도출해야 합니다.
이후, 이해관계자들과의 인터뷰나 워크숍을 통해 사용자들이 실제로 어떤 기능을 필요로 하는지, 어떤 문제를 겪고 있는지를 정리하고, 이를 바탕으로 요구사항을 정의합니다.
정리된 요구사항을 기반으로 서비스의 목표와 비전을 수립합니다. 이때 단기적인 목표뿐만 아니라, 장기적으로 어떤 가치를 제공할 것인지도 함께 고민해야겠죠.
마지막으로, 프로젝트를 성공적으로 수행하기 위해 필요한 기술 스택을 선정합니다. 어떤 프로그래밍 언어와 프레임워크를 사용할지, 데이터베이스는 무엇을 선택할지, 인프라는 클라우드를 활용할지 등 구체적인 기술적 기반을 결정합니다.
2. 설계 단계(Design)
설계 단계에서는 본격적으로 서비스의 구조와 사용자 경험(UX)을 구상합니다. 먼저, 시스템이 어떤 구조로 작동할지, API는 어떤 방식으로 구성할지를 정의하며 시스템 아키텍처를 설계합니다.
다음으로, 사용자가 서비스를 어떤 흐름으로 이용하게 될지 사용자 경험 관점에서 고민하고, 이를 바탕으로 사용자 인터페이스(UI)를 설계합니다. 와이어프레임과 프로토타입 등을 제작하며 시나리오를 구체화합니다.
이와 동시에, 서비스가 안전하게 운영될 수 있도록 보안 설계도 함께 진행합니다. 인증과 인가 체계를 어떻게 구성할지, 중요한 데이터는 어떻게 암호화할지, 그리고 예상되는 보안 위협에 어떻게 대응할지를 설계 단계에서부터 준비해둡니다.
뒤에 나올 보안 소프트웨어 개발 생명 주기에서도 설명하겠지만, 보안은 설계 단계에서부터 준비해야 수정 비용과 리스크가 작아집니다.
3. 구현 단계(Implementation)
구현 단계에서는 개발이 시작됩니다. 먼저 핵심 기능을 중심으로 최소 기능 제품(MVP, Minimum Viable Product)을 개발하여 서비스의 기본 뼈대를 완성합니다. 초기 버전이 완성되면 사용자 피드백이나 추가 요구사항을 반영하여 확장 기능들을 순차적으로 개발합니다.
4. 테스트 단계(Testing)
테스트 단계에서는 개발된 기능이 의도한 대로 잘 작동하는지 다양한 테스트가 이루어집니다. 가장 먼저, 각각의 기능이 단독으로 잘 작동하는지 확인하는 단위 테스트를 진행합니다.
그 다음에는 여러 기능이 통합된 상태에서도 문제가 없는지 확인하기 위해 통합 테스트를 수행하고, 확장성 및 성능 검증하는 성능 테스트를 진행합니다.
5. 배포 단계(Deployment)
배포 단계에서는 테스트를 마친 서비스를 실제 사용자에게 제공되기 위해 배포 준비를 진행합니다.
클라우드 환경(AWS, Azure 등) 설정과 CI/CD 파이프라인 구축을 통해 배포를 자동화하고 효율화하며, 도메인 연결, SSL 인증서 적용 등 실 서비스에 필요한 설정을 마무리합니다.
6. 유지보수 단계(Maintenance & Support)
유지보수 단계에서는 실시간 로그와 모니터링 도구를 통해 시스템 상태를 상시 점검하고, 이슈가 발생하면 신속히 대응하는 단계입니다.
사용자 피드백을 반영하여 기능을 개선하고, 기술 환경 변화에 맞춰 필요한 업데이트도 주기적으로 진행합니다.
또한, 새로운 보안 위협에 대응하기 위해 보안 패치를 적용하고, 시스템의 안전성을 꾸준히 점검합니다. 이처럼 유지보수는 단순한 관리가 아니라 서비스의 품질을 지속적으로 높이는 중요한 단계입니다.
보안을 고려한 소프트웨어 개발 생명 주기도 있습니다.
뜻 그대로, Secure SDLC라고 하는데요. 단순히 소프트웨어를 “만드는 것”이 아니라, 이를 “안전하게 만드는 것”에 초점을 맞춘 접근 방식인거죠.
보통 보안은 개발 마지막 단계(또는 서비스 후)에서야 체크되곤 하는데, 이렇게 하면 보안 이슈가 발견되더라도 수정 비용과 리스크가 커집니다. 그래서 아예 초기 단계부터 보안을 반영하자는 게 Secure SDLC의 핵심입니다.
Secure SDLC의 장점은 보안 문제를 조기에 발견한다는 것입니다. 소프트웨어 개발 초기 단계에서 문제를 식별하여 수정 비용을 절감합니다. 또, 보안 문제로 인한 서비스 중단을 방지하고, 데이터 보호를 보장하여 고객의 신뢰를 얻을 수 있죠.
Secure SDLC의 모범적인 사례를 다음과 같이 있습니다.
- Microsoft Security Development Lifecycle (MS SDL): 마이크로소프트가 자체적으로 개발해 활용하고 있는 보안 중심 개발 프로세스
- OWASP CLASP (Comprehensive, Lightweight Application Security Process): 개발팀, 보안팀, 관리자 모두를 대상으로 한 보안 중심의 개발 프레임워크
- NIST 800-64 (National Institute of Standards and Technology Special Publication 800-64): 미국 정부기관과 공공 부문에서 보안 요구사항을 반영한 SDLC를 운영하도록 만든 공식 가이드
위 세 가지 사례는 세 모두 Secure SDLC를 조직적으로 잘 구현하기 위한 보안 프레임워크 또는 가이드라인입니다.
이상 SDLC에 대해서 알아보았습니다.
답글 남기기