본문 바로가기
IT 와 Social 이야기

ERROR!! 죽갔네..."Application Error Check Item"

by manga0713 2010. 10. 20.


개발 또는 관련된 일을 하다보면 가장 화나고 안타까울 때가 "Error"가 발생할 때이지요. 더군다나 오픈일이 촉박하면 그야말로 죽을 맛 입니다.

꽤 오래 전에 듣고 메모한 내용들인데요, 기본에 충실하자는 의미로 적어 봅니다. 사후보다는 사전에 아래의 Check List를 활용하는 것이 더욱 좋다는 개인적인 경험도 말씀드립니다.

1. Unreleased Memory
메모리는 썻으면 돌려줘야지요. ^^ 속도에 문제가 생기고 터지면? 정지하죠..^^

2. Unclosed File
OS에 따라 상황이 좀 다를 수 있기는 한데요, 파일 접근이 안되거나, 파일이 훼손되거나, 무한루프를 도는 경우도 있지요. ^^

3. Unclosed Cursor
이것도 속도에 문제가 생기고요 때에 따라서는 걍 멈춰 있는 경우도 발생합니다.

4. Unclosed Connection
DB는 붙였다가 떼어야죠, 잘못되면 롤백됩니다. ^^

5. Uncommitted Transation
커미트하지 않으면 트랜잭션 이후의 변경된 사항이 모두 롤백될 수 있습니다.

6. Unreachable Code
대규모의 시스템을 운영하다보면 옛날에는 있었는데 현재는 사라진 코드들이 많습니다. 가이드대로 작성을 했는데 시스템을 찾을 길이 없는거죠, 어떤 결과를 초래할지는 알 수 없고요. 구 코드들 정리를 잘해야하고 항상 확인을 해야 합니다.

7. Cursor / Prepare Declaration on a loop
리소스를 반복적으로 할당/해제 하는 경우인데요, 리소스를 잡아먹고 있으니 느려지다 죽겠지요. ^^

8. Unused cursor and prepare
사용하지도 않고 사용할 것도 아닌데 괜히 열었다 닫았다 하면 안되지요. DB가 화냅니다.

9. DB Query not in a transaction
이것도 마찬가지로 사용하지 않을 것은 포함 시키지 않는 것이 정석입니다. 보통 가져다 쓰는 코드인 경우에 많이 발생하는데요 쫌 신중히 가져다 쓰면 좋겠습니다. ^^

10. DB connection with no queries
DB 작업도 안 하는 곳에서 DB 커넥션을 생성하면? 물론 안되지요. 이건 DBA가 승질 부립니다. ^^

11. Functions with an incorrect number of parameters
소개팅하자고 함수를 불러 놓고선 다른 인자를 데리고 나가면 안되지요. ^^


별 것 아닌 것 같아도 꽤나 신경쓰이게 하는 부분들 입니다. 보통 미연에 방지할 수 있는 것들인데요 개발을 하시거나 시스템을 운영하시다 보면 다른 곳에 신경 쓸 일들이 많아 관성적으로 작업에 임하는 경우가 있습니다. 초기단계부터 프로페셔널한 모습을 유지하는 것이 좋겠습니다.

결국, 시스템 관리자가 관심을 가져야하는 부분은 시스템을 구성하고 있는 H/W나 운영체제, Application 자체뿐만 아니라 어떻게 관리/개발/운영하면 "이 시스템으로 기업/고객이 요구하는 가용성과 성능, 업무 처리량을 유지할 수 있느냐"하는 것에 초점을 맞추어야 하는 것입니다.

마지막으로 시스템 변경시의 제 경험을 말씀드리겠습니다. 저에게만 특별한 사항들이 아니고 많은 분들이 이야기하고 동의하는 내용들일 것입니다.

1. 시스템 변경작업은 한 번에 한 가지씩만 적용하라.
2. 모든 변경작업은 반드시 문서화되어야 한다.
3. 시스템의 변경을 자동으로 관리해 주는 툴을 사용하라. (이건 만들어서라도..^^)
4. 시스템에 적용될 모든 것을 테스트하라. (완벽하게 테스트를 했어도 붙이면 안되는 경우 많지요? ^^)
5. 하나의 솔루션은 그 문제에만 적용하라.