본문 바로가기
개발/ASP.NET

업무용 콘솔 응용 프로그램을 처음부터 만들 때의 주의점

by ispie 2019. 1. 24.

ASP.NET으로 업무용 콘솔 응용 프로그램을 프로젝트 생성부터 시작할 경우의 주의점을 정리한 내용입니다.


1. 로그처리:log4net


도입 방법(C#)

Log4Net basics with a Console Application (c#)


1-1. 로그 출력 단위를 정한다

  • 어디까지 로그를 출력할 것인가
  • INFO, 에러, SQL에러
  • SQL쿼리를 로그에 출력할 경우, 모든 SQL쿼리를 출력할 것인가 INSERT/UPDATE(데이터에 변경이 있을 경우)만 출력 할 것인가


1-2. 메일 송신

  • 에러 로그의 경우, 메일 송신을 할것인가 말것인가
  • 처리내용에 메일 송신이 필요한가 아닌가
  • 근래에는 메일보다 Slack에 통지하는 방식이 많은거 같기도 함


2. 응용 콘솔 어플의 실행 결과
실행 결과 구분은 기본적으로 하기 3타입 + @

  • OK:정상종료
  • NG:이상종료(예외/에러 발생)
  • SKIP:처리무시(대상 데이터가 없기 때문에 처리없이 종료한 경우 등)


실행이 종료한 다음은 상기중 하나의 결과값과 상세내용을 포함한 메세지를 출력하도록 함(로그/메일)


NG의 경우엔 예외의 상세(StackTrace나 예외의 메세지등). SKIP의 경우엔 SKIP처리된 이유를 반드시 출력하도록 한다.



3. DB트랜잭션(Transaction) 처리

  • 모든 처리가 정상적으로 완료하지 못했을 경우엔 데이터를 롤백(rollback)한다.
  • 여러 쿼리가 복잡하게 엉켜있는 경우, 커밋(Commit)&롤백(rollback)처리의 범위 지정에 주의하여, 트랜잭션 처리에 의해 데이터에 모순이 발생되지 않도록 한다.
  • 필요에 따라선 검증실행의 경우 반드시 롤백(rollback)하도록 설정할 수 있도록 한다※「4. 디버그 실행」



4. 디버그 실행

이 기사에서의 「디버그 실행」은 데이터나 파일의 변경&관계자에의 메일 송신등을 행하지 않는 상태에서 모든 처리를 실행하여, 동작의 검증을 행하는 것을 의미한다. 실제로 어플을 실행했을때 디버그 실행에 따른 영향이 발생하지 않는 것을 전제로 둔다.


4-1. 디버그 실행시의 동작예측

  • DB에 관한 처리는 반드시 롤백(rollback)하여 데이터의 변경을 막는다(디버그 실행으로 데이터 변경은 일어나지 않는다는 전제)
  • 파일의 출력기능이 있을 경우, 출력하지 않거나 출력 장소를 변경하도록 한다.
  • 메일 송신 기능이 있을 경우, 메일을 송신하지 않거나 메일 주소를 변경하여(디버깅용 테스트 메일이라거나) 송신하도록 한다.


4-2. 디버그 실행의 판단기준(=어디의 어떤 설정 값으로 디버그 실행인가 판단할 것인가)

  • bat파일 내의 매개변수(argument)로 판단하거나
  • DB의 실행 마스터의 설정값으로 판단하거나
  • app.config의 설정값으로 판단하거나… 취향과 플젝에 따라 가지각색



5. 실행환경의 확인


5-1. 작업 스케줄러 설정

  • 실행간격은? 하루에 1번? 5분에 1번?
  • 실행시에 필요한 매개변수는?
  • 복수개의 처리를 순서대로 실행하고 싶을 경우, 조건은 필요한가? 등


5-2. 외부환경의 영향을 확인

  • 콘솔 응용 어플이 DB나 외부 서버에 액세스 할 경우, 작업을 실행하는 유저 어카운트에 액세스 권한이 있는지 없는지 확인한다. 권한이 없을경우엔 액세스 에러가 발생하기 때문에 주의한다.
  • SMTP서버나 API등, 외부 도메인에 액세스 할 경우도 작업 실행 서버측이 액세스가 가능한지 확인한다.




이상의 내용이 사내의 2~3년차 개발자에게 지도했던 내용을 간단히 메모한 내용입니다. 기존의 시스템에 기능을 추가 하는것은 능숙하지만 완전 처음부터 개발을 맡을 경우에는 기본적인 사항도 누락되어 있는 경우가 많았기 때문에 정리해 보았습니다.

댓글