컴퓨터공학 공부

컴퓨터공학 공부 다시 시작하기 28주차-Agile 이해, DevOps 이해(소프트웨어 공학)

개발학생 2025. 4. 14. 17:11
반응형

1. Agile 이해

Agile 예시

  1. Product Owner: 영업팀과 이야기해보고 분석한 결과, 검색 기능이 필요할 것 같으니 이번 달에 기능 추가해줘
  2. 개발팀+ UX 디자이너: 일단 검색 기능을 한 달 동안 최소 기능만 만들어 볼게
  3. Product Owner: 고객 반응을 보니 검색 기능에 상품 판매자 검색 기능도 넣어줘야겠어
  4. 개발팀+ UX 디자이너: 알았어 상품 판매자 검색 기능도 추가할게!

Agile 선언문 요약

  • 공정과 도구보다 개인과 상호작용
  • 포괄적인 문서보다 작동하는 소프트웨어
  • 계약 협상보다 고객과의 협력
  • 계획을 따르기보다 변화에 대응

Agile 개념 = 빠르고 쉽게!

  • 변화에 대한 효과적인(=신속하고 적극적인) 대응
  • 모든 이해관계자 간의 효과적 의사소통
  • 팀에 고객을 포함: 요구사항 제공, 우선 순위 부여 및 평가에 중요한 역할
  • 수행하는 작업을 제어할 수 있도록 팀 구성

Agile 상세 과정(2~4 과정을 반복) 

  1. Scrum Team 구성(10명) 
    • Product Owner(Manager)
    • Scrum Master
    • Senior Development Manager
    • Developer
    • UX Designer
  2. Sprint 만들어 계획 세우기(1달 또는 2주 단위)
  3. Daily Scrum으로 매일 진척/변경사항 확인 및 공유
  4. Sprint 끝나면 그동한 진행한 것 리뷰하고 반성

Sprint(계획+개발+회고)

Scrum 정의

  • Scrum 정의: an interactive and incremental agile software development framework for managing product development
    -> 제품 개발 관리를 위한 상호 작용적이고 점진적인 Agile 소프트웨어 개발 프레임워크

 Scrum 팀 구성

  • product owner: represents the stakeholders and is the voice of the customer, who is accountable for ensuring that the team delivers value to business 
    -> 이해관계자를 대표하고 고객의 목소리를 대변하며 팀이 비즈니스에 가치를 제공하는 역할
  • development team: responsible for delivering potentially shippable increments(PSIs) of product at the end of each sprint(the sprint goal)
    -> 각 스프린트(스프린트 목표)가 끝날 때마다 배포 가능한 서비스의 단위(PSI)를 전달하는 역할
  • scrum master: accountable for removing impediments to the abilty of the team to deliver the product goals and deliverables
    -> 팀이 서비스의 목표와 성과물을 전달하는 능력에 방해되는 요소를 제거하는 역할

Software Development Process in Agile

  • UP(Unified Process)
    • 도입(분석위주), 상세(설계위주), 구축(구현위주), 이행(최종 릴리즈)의 반복
  • XP(eXtreme Process)
    • 스크럼 마스터가 주도적으로 프로세스를 주도하며, 고객과 개발자 사이의 소통을 중시
    • Product Owner와 Development Team, Customer로 역할을 구분하고, 각자의 역할에 충실
  • JIRA 시스템 기반으로 진행: https://ko.atlassian.com/software/jira 

TDD(Test Driven Development)

  • 객체지향적
  • 재설계/디버깅 시간 단축
  • 애자일과의 시너지(사용자 중심적)
  • 테스트 문서 대체
  • 추가 구현 용이 

Continous Integration - 고객이 수시로 확인 가능하도록 지속적으로 빌드 유지 

2. DevOps 이해

DevOps 필요성 

  • 모바일 시대에는 고객이 빠르게 움직이므로, 빠르게 고객에게 서비스를 제공하지 않으면 다른 서비스로 바로 넘어감
    -> micro features를 빠르게 개발하고 릴리즈하면 수많은 micro features와 수많은 사용자가 생기는데,
        그로 인해 발생하는 엄청난 트래픽을 견뎌내고 시스템을 안정화할 수 있는 운영팀 필요
  • 본래 새로운 기능을 릴리즈하면 개발팀이 운영팀에 어떻게 이용할지 알려줘야 하는데,
    micro features의 많은 기능을 제대로 알려주기 어려워서 제대로 못 알려주는 경우가 많음 
    -> 하지만 운영팀이 제대로 이해하고 대응하지 않으면 서비스 다운 또는 비정상 동작으로 고객 경험이 극도로 저하됨
  • 운영팀에 개발자가 들어가서 일하게 함: 운영+운영시스템 효율화/자동화 프로젝트를 목표로 부여
    -> 개발자가 목표를 가지고 개발을 할 수 있으며, micro features에 대해서도 빠르게 이해하고 다양한 기술을 습득할 수 있음

DevOps 정의

  •  Release System 자동화
  • 코드 리뷰 및 테스트 자동화
  • 서비스 모니터링 시스템
  • 이슈 발생 시 커뮤니케이션 시스템

 

반응형