Develop/DevCourseTIL

04.26 데이터 엔지니어링 13일차 - django (3) & gihub (1)

향식이 2023. 4. 26. 16:42

소프트웨어 개발의 어려움

  • 요구조건은 계속해서 변화한다.
  • 디자인 시 모든 문제를 미리 알 수 없다.
  • Water-Fall 모델은 소프트웨어 개발에 부적합
    • 요구조건 -> 디자인 -> 개발 -> 테스트 -> 릴리스 -> 유지보수
    • 대규모 프로젝트 일수록 디자인에 걸리는 시간이 길어지며 그 기간 사이에 요구조건이 바뀔 수 있으며 실제 개발에 들어가면 생각치 못 했던 문제들로 디자인을 변경해야 할 수 있음

 

애자일 개발

아는 만큼 보이는 만큼 만들어 가자!

  • 매 사이틀마다 바로 쓸 수 있는 기능을 구현

짧은 사이클이 특징 (보통 2주)

  • 이를 보통 스프린트(sprint)라고 부름

매 사이클 마다 다음 작업을 반복

  • 작업별로 우선순위 결정 (Backlog Prioritization)
    • 보통 PM들이 수행
    • 이를 Gromming이라고도 부름
    • 각 작업별로 중요도와 복잡도 결정 (Point)
  • 이번 사이클에 일할 작업 결정 (Planning)
  • 매일 standup (5분 ~ 10분)
  • 마지막 날 Retrospective & Demo 미팅

 

스프린트 카드 예제

  • 타이틀 (작업 타이틀)
  • 세부설명
  • 포인트 (숫자)
  • 성공의 정의 (Definition of Done)
  • 체크리스트 (이 작업이 성공적으로 끝나는데 필요한 세부 작업들을 작성)

 

플래닝 포커 (Planning Poker)

  • 작업별 일정 산정 기법
    • 작업별로 포인트를 산정
    • 포인트의 정의는 회사마다 다름, 예를 들어 1포인트는 1 full day for a developer 같은 식으로 정의 가능
  • 개발자들이 모여 다 같이 작업별로 들어가는 일정을 산정(추측)하는 방법
    • 일종의 투표
    • 너무 다른 의견들이 존재할 경우 약간의 토론을 거쳐 어느 정도 수렴할 때 까지 진행
    • 오래 걸릴 경우 작업 자체의 정의가 잘 되어 있거나 여러개의 작업으로 나눠질 필요가 있다는 것을 의미

일일 스탠드업

  • 매일 모든 팀원들이 10~15분씩 모여서 각자 상황 공유 (각자 2~3분 정도 사용)
  • 공유 내용
    • 마지막 스탠드업 이후로 한 작업(들)
    • 오늘 하려고 하는 일이나 진행 중인 일
    • 일을 함에 있어 문제가 있거나 도움이 필요하면 언급

흔히 사용되는 툴: JIRA, Trello, ... 

 

Test Driven Development

개발 시 테스트를 어떻게 할 것인지부터 생각

- 테스트 코드부터 작성

코드 구성 자체가 테스트에 편리하는게 되는 효과가 발생

- 코드 자체가 잘 구성되어 있지 않으면 테스트가 불가능

 

빌드란? 

  • 자신(혹은 팀)이 개발한 소프트웨어를 최종적으로 출시하기 위한 형태로 만드는 것
    • 테스트가 빌드의 중요한 일부로 포함
  • 참여 개발자들이 많을수록 이는 더 중요
  • 개발이 끝나기 전부터 빌드를 하면 소프트웨어의 안정성 증대
    •  Continuous Integration (커밋을 하면서 바로 테스트)

serializer란?

django 내부의 로직에 따른 복잡한 데이터를 다른 framework에서도 이해할 수 있도록 변환해주는 것

frontend로 데이터를 보내기 위해 장고 내부의 복잡한 데이터들을 json/xml등의 형태로 데이터를 변환해주는 것

 

사용 시기

model.py를 통해 데이터베이스(DB)를 구축하고 serializer는 DB를 json으로 바꿀 때 사용되며, 반대로 json을 DB로 바꿀 때는 deserializer가 사용된다. serializer을 할 때는 각각의 DB의 캌ㄹ럼들로 정의해줘야 한다. 

반응형