0. 개요
과정명 : 지능형 애플리케이션 개발자 양성과정
SDLC란 Software Development Life Cycle(소프트웨어 개발 수명 주기)로 효율적인 소프트웨어 설계 및 개발 단계를 비용, 시간적인 면에서 효율적으로 진행하는 프로세스이다. 사용자의 요구치를 충족하는 소프트웨어에 대한 유지 관리 가능한 환경을 제공하고 이를 효율적으로 가능하게 한다.
1. 단계
SDLC를 위한 조직내 프로세스 단계는 크게 다음과 같다
1. 기획 및 요구사항 분석(Planning)
2. 설계(Design)
3. 구현(Implement)
4. 테스트(Test)
5. 배포(Deploy)
6. 유지관리(Maintain)
조직마다 상세한 단계는 다를 수 있어도, 이 6가지 단계에서 크게 벗어나지 않는다.
2. 기획 및 요구사항 분석
해당 단계에서는 요구사항 분석을 통해 구현 방향을 설정하고, 개발자마다 업무를 분장하며, WBS에 의한 개발일정을 잡는다. 또한 사용할 라이브러리 및 제품을 검증하고 협업도구를 선택한다. 개발한 코드의 형상 관리를 위한 툴도 여기서 고르게 된다.
개발하기 앞서 어떤 것이 필요할지 구상하는 단계이다.
3. 설계
설계 단계에서는 요구사항 분석을 통해 소프트웨어 개발을 위한 최적을 솔루션을 찾는다. 기존에 만든 모듈을 사용하거나 기존 인프라에 새로운 소프트웨어를 도입하는 방안들을 찾는다.
실질적인 개발에 앞서 필요한 준비물을 준비하는 단계이다.
4. 구현
실제 코드를 개발하는 과정이다. 프런트엔드에선 html, css, js를 이용해 react, vite등을 개발하고, 백엔드에서는 스프링부트나 fastapi등을 이용해 서버단을 개발한다. DB팀은 다양한 데이터베이스 제품을 이용해 만든다. 요구사항에 맞게 wbs로 나눈 일정에 맞춰 개발해 나간다.
5. 테스트
개발한 소프트웨어나 모듈을 자동 / 수동 결합하여 버그나 문제가 있는지 확인한다. 또한 개발한 것이 요구사항에 맞는지 확인한다. 테스트는 여러 종류가 있다. 보통 테스트는 개발과 동시에 이루어진다고 봐도 무방하다
- 단위 테스트 : 함수나 메소드가 제대로 작동하는지 확인한다
- 통합 테스트 : 여러 모듈이나 시스템의 결합이 잘 이루어지는지 확인
- 시스템 테스트 : 소프트웨어 전체 시스템이 요구사항을 충족하는지 확인
- 회귀 테스트 : 새로운 수정사항이 기존 코드에서도 잘 동작하는지 확인
- UAT(User Acceptace Test) : 최종 사용자가 실제 환경에서 테스트
- 성능 테스트 : 시스템의 성능, 응답시간, 처리량 등을 확인
- 보안 테스트 : 보안 취약점이 존재하는지 확인하고 안전하게 돌아가는지 본다
- UI 테스트 : UI가 직관적이고 사용자 편의성이 있는지 확인
- 알파 테스트 : 개발자 내에서 테스트
- 베타 테스트 : 외부 사용자들에게 배포하여 문제점을 확인하고 테스트
- 배포 후 테스트
6. 배포
배포판을 만들고 빌드하여 사용자들에게 배포한다. 개발자가 기존에 배포된 것을 수동으로 재배포하는 Bare-metal 방식과, 자동화 처리를 통해 배포과정이 자동으로 이루어지는 CI/CD방식이 있다.
배포와 관련된 도구로는 다음과 같다
- Docker
- 리눅스의 프로세스 격리 시스템을 이용하여 컨테이너 단위로 실행/관리
- Kubernates
- 컨테이너화된 어플리케이션의 자동 배포, 스케일링 제공
- Terraform
- HCL선언형 구성 언어나 선택적으로 JSON을 사용해 데이터센터 인프라스트럭처를 정의, 제공
- Ansible
- 여러 개의 서버를 효율적으로 관리하기 위해 환경 구성 자동화 도구
- IaC(Infrastructure as Code) : 인프라의 상태를 코드로 선언하고 배포하여 특정 환경을 동일하게 유지
7. 유지관리
운영중에 발생한 문제점이나 버그를 수정하고, 지속적인 모니터링으로 개선방안을 찾는다. 사용자의 의견을 수렴하여 개선점을 모색하고 성능향상을 할 방법을 찾는다.
- ELK Stack
- Logstash, Elasticsearch, Kibana
- 여러 장치에서 데이터를 수집해 원하는 모양으로 가공하고(Logstash), 검색 및 분석을 하여(Elasticsearch) 차트나 도표로 보여준다(Kibana)
- Prometheus
- 주로 쿠버네티스의 모니터링 시스템으로 많이 사용한다
- Grafana를 통한 시각화도 지원한다
정리
효율적인 개발과정과 비용, 시간적인 측면에서도 이득을 볼 수 있는 SDLC 모델은 다양한 개발자들끼리 서로 겹치는 부분없이 각자 할일을 맡아 움직이기 위해 고안된 것 같다. 실제로 대학교 3학년때 프로젝트를 하였는데 서로 소통이 되지 않아서 같은 기능을 구현하고 있었다. 사전에 분담을 하고, 그에 맞춰 일정에 맞게 개발하고, 테스트하는 과정이 효율적인 움직임을 위해 나왔다고 생각한다. 또한 개발에서 멈추는 것이 아닌 개선사항을 다시 요구사항으로 만들어 사이클이 굴러가도록 하는 것이 인상적이었다.
'SK Shiedus Rookies' 카테고리의 다른 글
[Rookies 개발 2기] SQL 정리 (0) | 2024.12.23 |
---|---|
[Rookies 개발 2기] React MUI 정리 (1) | 2024.12.18 |
[Rookies 개발 2기] React Hook 정리 (1) | 2024.12.17 |
[Rookies 개발 2기] React 정리 (1) | 2024.12.13 |
[Rookies 개발 2기] React 정리 - CDN방식 (2) | 2024.12.09 |