-
(나를 위해 정리하는) 프로그램(Daemon) 배포시 기억할 것 정리Programming/코딩공부 2022. 10. 28. 18:30
프로그램(데몬)을 배포 시에 기억해야 할 사항들을 나 자신을 위해 기록하려고 한다.
가장 중요한 것 : 배포 전에 충분한 테스트하기
☝원래 되던 것은 그대로 잘 되어야 함.
새롭게 업데이트되는 것도 제대로 적용되는지 확인해야 하지만 업데이트 부분에만 집중하다 보면 원래 되던 것이 안 되는 불상사가 발생할 수 있다.
매번 똑같은 데이터로 확인을 해야 하는데 이 과정을 Unit Test를 만들어서 정리해 놓으면 편하다.
나는 엑셀로 만들어서 정리해놓고 버전 업데이트마다 해당 내용들을 체크한다.
↪확인 항목 예시
1. Function (기본적인 기능)
2. Interface (UI나 API가 잘못-예외적으로-입력된 경우에 프로그램이 죽거나 하지 않도록, 제대로 에러 메세지를 출력해야 함)
3. Algorithm (성능-내가 원하는 대로 계산이 잘 되고 있는지)
4. Performance (계산시간은 얼마나 걸리는지, 내 PC뿐만 아니라 하위 스펙을 가진 PC에서도 충분한 테스트가 필요하다)
배포 이후에는 수정을 하기 어려우니 꼭 진짜 제발 충분히 테스트하고 배포하자.
나의 실수로 많은 사람들이 고생하게 된다.
기본적인 것 : 첫 배포 전에 기본적인 사항들 체크하기
첫 배포 이후에 문제점들이 발견되면서 버전 업데이트에 디버깅을 포함하게 된다.
그러나 꼼꼼하게 기본적으로 되어야 할 내용들을 체크해서 처음 버전에 해당 내용이 잘 들어간다면 이후 업데이트 시 성능 향상에 집중할 수 있다.
또한 버그로 인해 해당 버전에서 프로그램을 제대로 사용하지 못함으로써 오는 손실도 고려한다면 버그를 미리미리 배포 전에 파악하고 수정하는 것이 필요하다.
충분한 QA를 통해서 최대한 완성에 가까운 상태로 만들자.
예를 들어,
비디오 파일을 만들어야 한다면 해상도, 코덱, gop, fps 등 기본적인 영상 정보에 대해서 모두 검토를 해야 한다.
버전 업데이트할 때 : 꼼꼼히 기록하기
업데이트하는 버전에서 어떤 변경점이 있는지 모두 기록한다.
나는 notion에 변경점이 있을 때마다 바로바로 기록해놓고 회사 웹페이지에 업데이트 시에 그 내용을 옮겨 적는다.(그래야 까먹지 않는다)
현장에서 이슈가 발생했는데 버전이 다르면 디버깅하기 어렵고 원인을 찾기 쉽지 않다.
이때 버전 기록을 참고하면 원인 파악을 빠르게 할 수 있다.
💥추가이슈! 마우스 입력 방지 코드 추가
콘솔에 마우스 클릭이나 드래그 등 입력이 있게 되면 콘솔이 걸리게 되어 멈추는 현상이 발생한다. 데몬 프로그램이 돌아갈 때 이런 이슈가 발생하면 안되므로 마우스 드래그 방지를 꼭 추가해 준다.
#3_[Visual/C++/Console API] 콘솔창 마우스 드래그 방지 (마우스/키보드 입력 비활성화) :: Jeff's DevSpace (tistory.com)
✅기타 사항들
- 회사에서 버전 정책이 있다면 거기에 맞춰서 하기
- 데몬 개발 시 로컬 버전으로 테스트하면서 개발한다면 배포 전에 반드시 데몬 버전으로 빌드되었는지 확인하기
- 버전 업데이트 커밋할 때 태그 하면 이전 버전 디버깅 필요할 때 유용하다
- 로그 잘 남겨서 디버깅 빨리 할 수 있도록
- 로그의 가독성을 높이자
- 다른 PC에서도 되는지 테스트
- 데몬과 함께 돌아가야 하는 UI 프로그램과 연동 확인하기
- 메모리 체크(누수 없는지)
➕ 추가) 충격적인 버그 발생 👾
내가 편집한 daemon에서 output 메세지를 출력하여 다른 프로그램으로 전달하게 되는데,
이 때 실제 결과 파일명과 메세지에서 출력되는 파일명이 불일치하여 프로그램에 문제가 생겼다....
금방 디버깅해서 재배포하긴 하였는데... 상상도 못한 정체라서 충격받음
평소 테스트 할 때 내가 만들어주는 결과 파일을 중심으로 체크한다고 output 메세지를 눈여겨 보지 않은게 화근이었다.
중간에 mode를 추가하면서 output 파일명의 구분을 위해서 파일명 정책을 추가했는데 그걸 output message로 반환하는 것까지 신경쓰지 못했다.
다음부터는 이런 이슈를 발생시키지 않으리 ㅠ
혹시나 또 고려해야 할 부분이 있다면 댓글로 남겨주세요 🙂
'Programming > 코딩공부' 카테고리의 다른 글
[작심n일] 매일매일 꾸준히 코딩테스트 문제 풀기 (1) 2023.03.07 (내가 겪어본) 코딩 시 주의할 점 정리 (with C++) (0) 2022.11.14 코딩테스트 빡세네..^^ (0) 2022.07.20 사용자 함수에 포인터 사용하기 (+call by adress) (0) 2022.06.16 [git] git status 했는데 fatal: not a git repository: (path)에러 해결 (0) 2022.06.10