.NET으로 업무용 콘솔 응용 프로그램을 처음부터 만들때의 주의점
ASP.NET으로 업무용 콘솔 응용 프로그램을 프로젝트 생성부터 시작할 경우의 주의점을 정리한 내용입니다.
1. 로그처리:log4net
도입 방법(C#)
1. 로그 출력 단위를 정한다
- 어디까지 로그를 출력할 것인가
- INFO, 에러, SQL에러
- SQL쿼리를 로그에 출력할 경우, 모든 SQL쿼리를 출력할 것인가 INSERT/UPDATE(데이터에 변경이 있을 경우)만 출력 할 것인가
2. 메일 송신
- 에러 로그의 경우, 메일 송신을 할것인가 말것인가
- 처리안에 메일 송신이 필요한가 아닌가
- 요샌 메일보다 Slack에 통지하는 방식이 많은거 같기도 함
2. 응용 콘솔 어플의 실행 결과
실행 결과 구분은 기본적으로 하기 3타입 + @
- OK:정상종료
- NG:이상종료(예외/에러 발생)
- SKIP:처리무시(대상 데이터가 없기 때문에 처리없이 종료한 경우 등)
실행이 종료한 다음은 상기중 하나의 결과값과 상세내용을 포함한 메세지를 출력하도록 함(로그/메일)
NG의 경우엔 예외의 상세(StackTrace나 예외의 메세지등). SKIP의 경우엔 SKIP처리된 이유를 반드시 출력하도록 한다.
3. DB트랜잭션(Transaction) 처리
- 모든 처리가 정상적으로 완료하지 못했을 경우엔 데이터를 롤백(rollback)한다
- 여러 쿼리가 복잡하게 엉켜있는 경우, 커밋(Commit)&롤백(rollback)처리의 범위 지정에 주의하여, 트랜잭션 처리에 의해 데이터에 모순이 발생되지 않도록 한다.
- 필요에 따라선 검증실행의 경우 반드시 롤백(rollback)하도록 설정할 수 있도록 한다※「4. 디버그 실행」
4. 디버그 실행
이 기사에서의 「디버그 실행」은 데이터나 파일의 변경&관계자에의 메일 송신등을 행하지 않는 상태에서 모든 처리를 실행하여, 동작의 검증을 행하는 것을 의미한다. 실제로 어플을 실행했을때 디버그 실행에 따른 영향이 발생하지 않는 것을 전제로 둔다.
1. 디버그 실행시의 동작예측
- DB에 관한 처리는 반드시 롤백(rollback)하여 데이터의 변경을 막는다(디버그 실행으로 데이터 변경은 일어나지 않는다는 전제)
- 파일의 출력기능이 있을 경우, 출력하지 않거나 출력 장소를 변경하도록 한다
- 메일 송신 기능이 있을 경우, 메일을 송신하지 않거나 메일 주소를 변경하여(디버깅용 테스트 메일이라거나) 송신하도록 한다
2. 디버그 실행의 판단기준(=어디의 어떤 설정 값으로 디버그 실행인가 판단할 것인가)
- bat파일 내의 매개변수(argument)로 판단하거나
- DB의 실행 마스터의 설정값으로 판단하거나
- app.config의 설정값으로 판단하거나… 취향과 플젝에 따라 가지각색
5. 실행환경의 확인
1. 작업 스케줄러 설정
- 실행간격은? 하루에 1번? 5분에 1번?
- 실행시에 필요한 매개변수는?
- 복수개의 처리를 순서대로 실행하고 싶을 경우, 조건은 필요한가? 등
2. 외부환경의 영향을 확인
- 콘솔 응용 어플이 DB나 외부 서버에 액세스 할 경우, 작업을 실행하는 유저 어카운트에 액세스 권한이 있는지 없는지 확인한다. 권한이 없을경우엔 액세스 에러가 발생하기 때문에 주의한다.
- SMTP서버나 API등, 외부 도메인에 액세스 할 경우도 작업 실행 서버측이 액세스가 가능한지 확인한다.
사내의 2~3년차 개발자에게 지도했던 내용을 간단히 메모한 내용입니다. 기존의 시스템에 기능을 추가 하는것은 능숙하지만 완전 처음부터 개발을 맡을 경우에는 기본적인 사항도 누락되어 있는 경우가 많았기 때문에 정리해 보았습니다.