84. 마무리

JSLEE·2024년 9월 2일
0

소프트웨어 개발 프로세스

소프트웨어 개발프로세스 : 소프트웨어를 개발하기 위해 필요한 절차, 과정.
기획, 설계, 구현, 테스트, 유지보수로 구성됨

  1. 요구사항 수집 & 분석(기획) :
    • 요구사항 수집 : 시장조사, 관계자 인터뷰, 문서 분석.
    • 요구사항 분류 : 기능적/비기능적 요구사항
    • 요구사항 분석
    • 문서화
    • 요구사항 검증, 확인
  1. 시스템 설계 :
    * 상위 설계 : 시스템 아키텍쳐, 모듈화, 데이터, 인터페이스
    • 하위 설계 : 데이터베이스, 클래스, 알고리즘, 에러/로깅
    • 설계원칙 :
      • 모듈화
      • 캡슐화
      • 재사용성
      • 확장성
      • 응집도/결합도
      • 단순성
    • 소프트웨어 아키텍쳐 :
      • MVC(Model-View-Controller) 패턴 - 애플리케이션을 3가지 구성요소로 나누어 개발
      • 모놀리식 아키텍쳐 - 애플리케이션의 모든 요소가 큰 단위로 개발되고 배포
      • 마이크로 서비스 아키텍쳐 - 애플리케이션을 작고 독립적인 서비스의 집합으로 구성
  1. 구현 :
    설계문서를 토대로 실행가능한 코드로 변환.
    구현에는 다음과 같은 작업들이 포함됨
    • 코딩
    • 통합
    • 단위 테스트
    • 코드 리뷰
    • 리팩토링
    • 성능 최적화
    • 보안 구현
    • 문서화
    • 버전관리
  1. 테스트 :
    개발된 소프트웨어가 의도대로 동작하는지에 대해 테스트.
    테스트에는 다음과 같은 작업들이 포함됨.

    • 테스트 계획 수립
    • 테스트 케이스 및 시나리오 작성
    • 테스트 환경 설정
    • 테스트 실행
    • 결함 관리
    • 테스트 결과의 평가 및 보고

    또한, 테스트의 종류는 다음과 같이 다양하게 존재함.

    • 단위테스트 (Unit Test)
    • 통합 테스트 (Integration Test)
    • 시스템 테스트 (System Test)
    • 인수 테스트 (Acceptance Test)
    • 회귀 테스트 (Regression Test)
    • 성능 테스트 (Performance Test)
    • 보안 테스트 (Security Test)

    테스트의 자동화는 다음의 프레임워크를 사용함.

    • JUnit
    • Selenium
    • Cypress
    • JMeter
  2. 배포 :
    배포는 개발이 완료된 소프트웨어를 실제 사용자들이 사용할 수 있도록 운영 환경에 설치하고 운영하는 단계.
    배포에는 다음과 같은 작업들이 포함됨.

    • 릴리스 준비
    • 배포 계획 수립
    • 배포 환경 구성
    • 소프트웨어 배포
    • 테스트 및 검증
    • 문서화 및 교육
    • 운영 및 모니터링

    웹 애플리케이션의 배포 방식은 다음과 같음.

    • 파일 복사
    • 가상 서버 이미지 생성
    • 컨테이너 이미지 생성

    웹 애플리케이션의 배포 전략은 다음과 같음.

    • 롤링 업데이트
    • 블루-그린 배포
    • 카나리 배포

    배포는 CI/CD 와 밀접한 관련이 있음.
    CI (Continuous Integration):

    1. 소스코드 변경 발생
    2. 코드 통합
    3. 자동화된 빌드
    4. 테스트 실행
    5. 결과 보고

    CD (Continuous Deployment) :

    1. CI 프로세스를 통해 빌드/테스트
    2. 자동 배포
    3. 성능과 안정성 모니터링
    4. 문제 발생시 롤백
    5. 도구로는 Jenkins, Circle CI, Teamcity, Github Action 등을 사용

    모니터링 도구 :

    1. Saas : New Relic, Datadog
    2. 클라우드 : AWS Cloudwatch
    3. 오픈소스 : Prometheus, Grafana, Zabbix

    에러 모니터링 :

    • Sentry, Rollbar

    로깅 :
    클라우드 : AWS Cloudwatch Logs
    오픈소스 : Loki

  1. 유지보수 :
    소프트웨어를 지속적으로 개선, 변화하는 요구사항에 대응.
    유지보수는 다음과 같은 작업들이 포함됨.
    • 버그 수정
    • 성능 최적화
    • 기능 개선 및 추가
    • 기술 부채 관리
    • 운영 환경 관리
    • 보안 업데이트
profile
공부한 내용들을 정리하기 위해 사용하는 블로그입니다.

0개의 댓글