개발 방법론

손정민·2024년 1월 19일

소프트웨어 공학의 정의와 개발과정


소프트웨어 공학은 인류의 이익을 위해서 소프트웨어와 관련된 원리, 지식, 도구등을 활용하여 새로운 제품, 도구등을 만드는 것

폭포수 모델(WaterFall Model)


  • 계획, 요구사항 분석, 설계, 구현(프로그래밍), 시험, 유지보수의 순서로 시스템의 개발되는 전통적인 방법론
  • 개념 정립에서 구현까지 하향식 접근방법을 사용하여 높은 추상화 단계에서 낮은 추상화 단계로 이동하는 모델

장점

  • 프로젝트 진행과정을 세분화하기 때문에 큰 프로젝트의 진척과 인력 관리가 용이
  • 개발 방법론의 초기 모델로서 많은 수행과 검증을 거쳐왔고, 대규모 시스템 구축에 있어 경험 축적
  • man/month 기반의 비용산정과 일정산정의 용이

단점

  • 고객이 원하는 요구사항을 초기에 구체화 하기 어려움
  • 오류발견과 수정이 순환적으로 발생하므로, 순차적 개발이 현실적으로 어려움
  • 시스템 구축이 후반부에 가서야 완료 되는 경우엔, 시스템 문제점 파악 어려움
  • man/month 기반의 비용산정의 불합리성과 일정산정의 부정확함

대표적 폭포수 모델인 WBS(Work Breakdwon Structure) 예시

애자일(Agile)



개발자들이 좋은 것을 빠르고 낭비없이 만들기 위해 경량화된 가벼운 개발방법론

애자일 방법론 중 하나로 스크럼(SCRUM) 방식이 널리 사용

  • 스크럼 개발 방법론이란 특정 이슈를 bottom up방식을 통해 발행하여 문제를 공유하고 문제를 짧은 스탭을 통해 해결해 나가는 과정
  • PO, PM(PL), 기획자, 개발자, 디자이너 등이 스크럼의 참여자
  • 일반적으로 개발팀에서 scrum회의라 하면 우선순위별로 발행된 이슈에 대해 논의하고, 스프린트 별로 진척 상황을 회고 하는 것.
  • 스크럼을 위한 툴로서 아틀라시안사의 JIRA라는 툴을 많이 사용

애자일 방법론의 작은단위의 기능개발

모놀리식 아키텍처

  • 단일 대규모 애플리케이션
    • 애플리케이션의 모든 기능이 하나의 큰 시스템으로 구축되는 방식
  • 통합된 개발 접근
    • 애플리케이션의 모든 구성 요소가 하나의 코드베이스에 통합되어 있으며, 이로 인해 소스코드가 서로 영향을 받고 배포 및 테스트가 복잡하고 어려워짐
  • 관리 및 유지보수의 복잡성
    • 상호 영향도
      • 하나의 모듈을 수정할 때, 이를 참조하거나 영향을 받는 모든 모듈들도 영향을 받을 수 밖에 없는 구조
    • SW아키텍처의 복잡도와 배포의 어려움
      • 소스코드의 영향도로 인해, 배포도 팀마다 불가능하고 전체 배포 시간을 정하여 모든 소스코드를 한꺼번에 반영.
      • 일반적으로 새벽시간이나 DB작업 등 복잡한 작업의 경우엔 새벽에 진행. 심지어 변경의 규모가 큰 작업일 경우 명절 등 공휴일을 정해 배포
    • 시스템 구성의 복잡성
      • 시스템이 복잡해 개발의 영향도 파악이 어려움

MSA(MicroService Architecture)

  • 모놀리식에서 문제의 원인이었던 서비스들간의 의존성이 약화되거나 제거돼 느슨한 결합(loosely coupled) 상태로 구성
  • 서비스는 저마다 데이터베이스를 가지며, 각 서비스마다 더 적합한 기술이 사용
  • 서비스의 수정이 발생하여도 다른 서비스로의 영향이 없거나 적기 때문에, 독립적인 개발 및 배포가 가능
  • 특정 이벤트로 대량의 트래픽이 몰릴 경우, 해당 서비스에만 컴퓨팅 리소스를 더 투입하는 스케일 아웃 전략을 적용
MSA의 통신방식

  • API기반 통신
    • API는 주로 동기적 처리를 위한 용도
    • 주문서비스에서 회원정보가 필요할 때, 회원 ID를 가지고 회원 서비스를 호출하여 정보를 조회
  • 이벤트 기반 통신 (queue) → publisher / subscriber
    • 비동기 또는 독립적 처리를 위한 용도
    • 주문이 발생하면(신규 주문 이벤트가 발생하면) 주문 정보를 가진 메시지를 발행하고, 재고 서비스나 앱 푸시 서비스에서 해당 메시지를 구독하여 후속 처리
profile
코린이의 성장교실

0개의 댓글