저는 아직 로깅시스템에 대해서 들어본적도 구경해 본적도 없습니다.

하지만 아주 큰 시스템에서는 이미 사용하고 있겠거니...

제가 생각하는 개념과는 조금 다른 형태로 사용하고 있겠거니 생각은 합니다.^^;;



제가 말하는 로깅시스템은 프로그램으로 구현한 로깅시스템이 아닙니다.

제가 말씀드리고자 하는 것은 단순히 로그만 담아 놓는 시스템입니다.

로깅만을 위해서 로깅 전용 서버를 하나 추가해야 합니다.

비용적으로 문제가 될 수 도 있습니다.

하지만 제가 아래설명하는 것들은 그 비용에 대한 충분한 역할을 할 수 있을 것이라 생각이 됩니다.




왜!! 로깅시스템을 말하는가?

로그는 아주 중요합니다.

누구도 부인할 수 없을것입니다.

개발자의 판단에 의해서 필요한 로그만 남긴다고요?

하지만 여러분은 개발을 하면서 필요없는 로그를 남기고 있다는 생각이 드 실수도 있고.

디버깅중에 필요한 로그가 없어서 코드에 필요한 로그를 넣는 경우도 있습니다.



로깅을 많이 하면 좋긴 합니다..

하지만 시스템에서 그것을 처리하려면 하드를 엑세스 해야 합니다.

알고 계시듯 하드를 엑세스하는 것은 메모리를 엑세스하는 것보다.

몇배는 느리고..시스템에 부하가 있을 수 있습니다.

그리고 그 로그를 모니터링 하신다고요?

그 로그를 실시간 모니터링 하기 위해..

Unix같은 시스템에서 "tail -f" 같은 명령...그리고..

필요에 따라 "grep" 명령을 이용해서 모니터링을 하게 됩니다.



작은 규모의 시스템에서는 필요치 않을 수 있습니다.

하지만 모니터링을 하는 사람이 200명 가량되는..

프로그램을 개발한 개발자가 200명 가량 되는 프로젝트에서는.

(현재 제가 있는 KOCOM 차세대 시스템은 200명 가량이 개발/운용 모니터링 중입니다.)

모니터링에서 엄청난 부하를 주게 됩니다.

물론 개발중에도......시스템이 200명의 개발자를 버티지 못하고...

느리게 돌아가는 경우도 자주 있스빈다..



얼마전 모니터링을 하는데...전화가 오더군요..

시스템팀 : 지금 "tail -f log | grep" 몇개 나 띄워 두셨죠?
저          : "tail -f" 8개, "tail -f log | grep" 4개 띄웠습니다.
시스템팀 : 지금 운용시스템에 부하가 가서 그런데, 중요한것만 모니터링 하시고, 나머지
               모니터링은 오후에 해주실 수 없는지요?
저          : 운용에 지장이 된다면....그러도록 하겠습니다.

이런일은 충분히 일어날 가능성이 있습니다.

제가 직접 겪어 보았고요...

돈이 왔다갔다 하는 업무를 하고 있다 보니..

모니터링을 계속하게됩니다..

특히 운용초반에는 말이죠..

사소한 에러도 큰 사고가 될 수 있으니 말이죠...



자...이런일을 해소 하기 위해서..

로깅을 담당하는 서버를 하나 두는건 어떨 까요?

로깅 시스템이 로깅하는데만 도움이 될 것 같다고요?

저는 스템 전반적 성능의 향상도 가져올 수 있다고 생각합니다.

우선적으로!! 하드에 엑세스 하는 일이 줄어듭니다..

물론 큐 + 쓰레드로 구현을 해 놓았겠죠..

물론 성능 향상만 생각한다면 로깅용 "HDD"를 추가 하면 되겠지요..

하지만 실시간 모니터링이 가능해지는 것과..

중요한 로그들을 모두 담아 둘 수 있는 여유가 생기니..

그것이 이득이 될 것 같네요..



그리고 모니터링 시스템과 별개의 말씀인데..

로그를 담을때..

개발자의 판단으로 로그를 담는 것 외에.

시스템이 일괄적으로 로깅을 해주었으면 좋겠다는 생각이 듭니다.

예를 든다면.. memcpy 같은 함수를 사용할때나..

DB 엑세스를 할때...

DB엑세스에서 In/Out/처리 메시지 등등..

소켓통신시에서도.. In/Out/처리메시지 등등을..

일괄적으로 남겨 두고..

처리메시지가 "에러"인경우는 에러의 레벨을 높게...

형태로 에러를 모아두는 것입니다..

개발자가 필요에 의해 디버깅을 하는데..

로그가 남아 있지 않으면 낭패 이잖아요..

운용중에는 더 큰 문제가 될 수도 있습니다..

사용자가 에러를 발생시켰는데..

로그가 부족해서 판단이 안되는 경우가 생기면..

사용자한테 전화해서...

똑같은 상황을 한번 더 재현해달라고 부탁해야 합니까?

그런 아니잖아요,.^^

'컴퓨터 이야기' 카테고리의 다른 글

코드 뭉개기에 당하다.ㄱ-;;  (16) 2007.03.08
코드뭉개기 놀이(?)  (15) 2007.03.06
[개발자이야기] 전산개론의 중요성  (7) 2007.02.21
윈도우 비스타 출시와 Active X  (8) 2007.02.14
UNIX 아주 간단한 awk #2  (0) 2007.02.14

원래 이 블로그의 가장 큰 컨텐츠는 컴퓨터 이야기 라고 생각하고 만들었는데..

항상 제 할말만 하고 포스팅을 별로 안했네요.^^

개발자를 꿈꾸시는 분들 많으시죠?

저도 지금 더 낳은 개발자를 꿈꾸는 개발자 랍니다.^^

가끔 일을 하다가....무언가 막히면..

전산개론 공부를 너무 조금 했구나 하는 생각이 가끔 들어요..

"전산개론"이 무어냐고요?

전산 개론은 일종의 목차입니다..

IT관련 많은 분야의 지식들을 잘 정리해 놓은 "목차"요..

전산개론에서는 C언어의 문법 알려 주지 않습니다..

C언어는 어디에 쓰이고 무엇을 할 수 있는지를 가르쳐 줍니다..

그리고 전산개론에서는 PHP의 문법을 알려주지 않습니다..

웹프로그래밍에는 서버사이드, 클라이언트사이드가 있고..

서버사이드 프로그램에는 PHP, JSP, ASP, 스트러츠 등등의 방향이 있다고 알려줍니다.

전산개론에서는 프레임웤이라는 말을 알려주지만..WAS라는 용어는 알려주지만..

프레임웤을 세팅하는 방법을 알려주지 않습니다.

전산개론에서는 DB에 Oracle, Sybase, Mysql, MSsql등등이 있다는걸 알려주지만..

Oracle의 SQL문을 알려주지 않습니다.



이런 잡다한 지식이 왜 필요하냐고요?

당신이 지금 자바프로그래머라고 해서 자바만 사용하지 않습니다.

당신이 지금 C프로그래머라고 해서 C언어만 사용하지 않습니다.

당신이 지금 웹프로그래머라고 해서 PHP같은 언어만 사용하지 않습니다.


당신은 새로운 무언가를 개발할때

당신이 기존에 알고 있던 것만가지고 개발을 하게 되는 것은 아닙니다.

개발자는 항상 새로운것을 접하고 새로운 개발방식을 따라야 하는 직종입니다.

회사에서 "새로운 프레임웤으로 스트러츠2가 결정되었습니다."

라는 통지를 받았을때..

당신은 "스트러츠2가 머지" 라고 생각해서는 안됩니다.

전산개론에 대해 어느정도 알고 있다면..

스트러츠는 자바기반의 프레임웤 이었으니...

스트러츠2도 비슷한거겠지라는 유추를 할 수 있어야 합니다.

하지만 전산개론을 공부하더라도 모르는 것이 나올 수 있습니다.

"턱시도"라는 WAS를 모르고 있는데..

"턱시도"라는 WAS를 사용한다고 통지를 받으면..

무엇이 기반인지요? 라는 질문을 통해..

아 C로 구성된 WAS이구나 하는 유추정도는 할 수 있어야 겠지요..


무언가 검색을 해야 한다면 어느정도 지식이 있어야 검색이 수월해지니까요..

무언가 찾아야 한다면 힌트정도는 가지고 있는게 더 빠를테니까요..


다른 예를 들어보겠습니다.

당신은 DB를 사용해본적이 없습니다.

갑작스럽게 회사에서 당신에게 DB를 선택하라는 명령이 내로오게 됩니다.

"DB하면 오라클이니 오라클 써야 겠지"라고 생각할 수 도 있습니다.

하지만 어느어느 DB가 있는지...이것을 사용하기 위해서 얼마의 댓가를 지불해야 하는지.

이 것을 사용하면 어느것이 더 좋은지..

이 DB는 이러이러한 기능을 지원해주는지..

PLSQL같은거 쓸생각없는데...단순한 ISAM 수준의 DB는 없는지..

이런 판단을 통해서...선택한다면....더 좋은 제품을 더욱 저렴하게 사용할 수 있습니다.

프레임웤의 선택도 같다고 생각합니다.


자 중요성을 말씀드렸으니..

어찌 공부하는 것이 좋은지 설명해드려야 하는데..

사실 이건 자신이 없습니다.

공부방법은 누구나 틀릴테니까요.^^;;

아직까지 제가 본 책중에 전산개론을 잘 담고 있는 책을 별로 보지 못했습니다.

제가 본 전산개론 책들은 1세대, 2세대, 3세대... 막 이런말만하고.

몇년도 인지 외워서..시험봐야 하고..ㄱ-;;

정말 눈물날 정도 입니다.


전 전산개론을 공부하기 위해 "잡지"를 선택했습니다.

개발자이므로...한때 프로그래밍언어 라는 잡지를 보았는데..

사라졌더군요..

요즘은 "마소" 라는 잡지를 보고 있습니다..

물론 어려운 설명들이 모두 이해가 가는 것은 아닙니다.

하지만 이런 기술이 있구나..

이런것은 이렇게 쓰일수 있구나 정도는...

머리에 인덱스 해둡니다..

나중에 쓰게 될 수 도 있는거니까요.^^

요즘은 인터넷이 발전해서 새로운 기술을 소개해주는 사이트도 많이 있는것으로 알고 있습니다.

그런 사이트를 정기적으로 다니는 것도 좋다고 생각합니다.^^




============================================================================

그냥 제 생각을..적은 것입니다.

누군가의 생각과 틀릴수도 있다고 생각합니다.^^

전 제가 지금까지 생각했던것을 적은 것이고..

저의 공부방법을 소개 해드린것입니다.^^


댓글이나 트랙백을 통한 지적은 얼마든지 받을 준비가 되어 있습니다.^^


===========================================================================

몇몇 분들이 WAS와 프레임웤에 대해서 지적 해 주셨습니다.ㅠ_ㅜ;;

정말로 죄송합니다...

제 지식이 미천하다보니....WAS와 프레임웤을 헷갈려서 썼었군요..

"턱시도"가 프레임워크 인줄 알고 있었는데...WAS 였구요.ㅠ_ㅜ;;

저의 무식에 고개를 들기가 어렵습니다..

우선은 고쳤습니다..만...

또 잘못된 점이 있다면 말씀해주십시오..

바로바로 정정할 수 있도록 하겠습니다.

'컴퓨터 이야기' 카테고리의 다른 글

코드뭉개기 놀이(?)  (15) 2007.03.06
[컴퓨터이야기] 로깅 시스템의 필요성.  (4) 2007.03.06
윈도우 비스타 출시와 Active X  (8) 2007.02.14
UNIX 아주 간단한 awk #2  (0) 2007.02.14
UNIX 아주 간단한 awk #1  (0) 2007.02.12

윈도우 비스타 출시되면서...Active X관련 하여 이야기가 참 많네요..

"뉴스를 보면 MS에서 잘못한거다..."라고 매도하는 경우도 있고요..

정통부 입장, 각 IT 업계 입장등등...우리나라에 힘있고 돈 있는 기업들의

입장에서 이야기를 많이 하는 것 같아서요..

힘있고 돈있는 회사에서는 Active X를 개발 하는 외주 업체에..미루겠죠?

"유지보수"라는 이름으로....어차피 자신들은 손해 볼 거 없는 게임이고..

시간이 지난다면 어떻게든 해결될 일이기는 하지만요..

힘있고 돈있는 당신들이 이쪽으로 끌고온거 아니었나요?


하여튼 각설하고..

이제는 바뀌어야 한다고 생각해요..

Active X가 개발이 조금더 편할지도 모르고..

조금더 쉬운 접근인지는 모르겠지만..

이제는 Active X를 사용이 적은 인터넷이 되었으면 좋겠네요..

가끔 제 컴퓨터가 아닌 주위 사람들 (IT를 하지 않는 사람)

PC를 만지다보면...말도 안되는 악성 코드가 Active X라는 이름으로 깔려 있더군요..

이런것은 근절되어야 하지 않을까요?

MS도 이걸 방지하고자 한것 같은데....

Active X를 대체 할 무언가가 없다고 말씀 하실 분들도 계시겠지요?

하지만 Active X를 대체할 무언가는 굉장히 많습니다..

예전에 자바 애플릿이 있었지요?

자바 애플릿도 한가지 제안이 될 수 있습니다..

AJAX는 보안 모듈로 쓰기는 문제성이 있겠지만 어느정도의 대체는 가능 할것 같고요.^^;;

Curl 이라는 녀석도 최근에 보이더군요...

Active X는 잘못 사용하게 되면 너무 위험하거든요..

내 컴퓨터를 날려버릴 수 있는 그런 녀석인데..

사람들은 잘 모르고 있네요.

제 마음은 우리나라에서 이것을 바꾸려고 노력 했음 좋겠는데..

돈있고 힘있는 사람들은 언론 플레이나 하고 ...

MS에 이전 수준의 보안을 요구하고..

제발!!....돈있으신분들...

좀 좋은 방향으로 가자고요..

Active X가 우리나라가 인터넷 강국이 되는데 한 몫한것은 인정합니다..

하지만 Active X는 자재 하고 새로운 방향을 찾았으면 좋겠네요..



세상에 어떻게 인터넷 뱅킹을 하려면 윈도우에서만 가능해야 하나요?

집에서 공부한다고 LINUX나 MAC를 깔아 놓은 사람은 인터넷뱅킹 할 자격도 없는 것입니까?


제 생각엔 어떻게 되든 Active X를 가지고 갈 가능성이 클 것 같습니다.

하지만 개발자 입장 보다 사용자 입장에서는 Active X는 최소한으로 사용되었으면 하네요

전에는 awk로 표준출력을 가지고 놀았었죠...

이번엔 바로 파일로 가자구요.^^

흠..awk를 테스트 하는 프로그램을 만들어 보아요..

우선 아래 코드를 보시고 시작을 할까요?

File 1. 22 (DATA FILE)

길이|1|290
태호|0|100
성철|0|50


File 2. awktest

awk -F '|' '
    BEGIN{
                print "==============================";
                print "이름  |  바보여부 |  IQ";
            }
            {
                if ($2 == "1")
                {
                    BaboYn="Y";
                }
                else
                {
                    BaboYn="N";
                }

                print $1 "  |     " BaboYn "     |  " $3;

            }
    END  {
                print "==============================";
            }' 22


# Output
==============================
이름  |  바보여부 |  IQ
길이  |     Y     |  290
태호  |     N     |  100
성철  |     N     |  50
==============================


위처럼 저는 awk를 이용해서 22파일을 읽어서 제어하는 프로그램을 만들어 보았습니다.

awk에서 -F 가 구분자라는것은 전에 말씀 드렸죠?..^^

그리고 BEGIN은 파일을 열기전에 실행할 코드 입니다.

단순히 헤더를 만든다던가 할때 쓰면 좋겠죠..

아니면 연산을 할때 써도 좋구요..

좀 코드를 깔끔하게 하고자 하신다면..

사용하실 변수를 BEGIN에서 선언해도 좋습니다.^^


그리고 아무것도 없이 {}로 되어 있는 녀석들 있죠?

이녀석들이 파일을 한줄씩 읽어서 안의 코드를 실행 시켜주는 역할을 합니다.

파일이 1000000줄이라면 1000000번 실행 되겟죠??..^^

우선 $2 는 구분자 기준으로 두번째에 있는 녀석이고요..

이 녀석 값이 1 이면 BaboYn이라는 변수에 "Y"를 넣어줍니다..
아니면 BaboYn변수에는 "N"을 넣어 주고요..

그다음에는 print를 통해서 출력을 합니다..

이렇게 데이터 파일의 라인수 만큼 로직을 실행한뒤에 END 문을 탑니다..

END문은 프로그램이 종료하기전 한번만 타는 것이죠

저는 END에서 그냥 "==="를 출력 해 주었습니다.

모...Sum이 필요하다면 END부분에서 SUM한 값을 출력해줄 수도 있겠죠..

으흐흐...아주 쉽죠?

날로 먹는것 같다고요?;;

죄송합니다...삐질;;;

다음 이시간이 또 있을겁니다..

무언가 준비하겠죠.^^

으흐흐..부족한것 있으면 댓글이나 트랙백 주시면 감사하겠습니다.

댓글은 항상 열려 있으니..

부족하거나 요청 하실것이 있으면 말씀 주세요.^^..

awk를 한번은 써야지 생각 했는데..

생각해 보니 분량이 너무 많다..ㄱ-;;

그래서 간단히 쓰는것 부터...

하나씩 하나씩 포스팅 해 보고자 한다.^^

그냥 awk의 단순한 기능을 한번 보여주고자 한다..

이것만 알아도...단순한 awk처리는 가능할 것 같다.^^

awk로 구분자로 되어 있는 데이터를 읽어 오는 것을 한번 만들어 보았다..

우선 아래와 같은 DATA 파일이 있다고 가정 하자..!!

File 1. 11

1|2|3|4
5|6|7|8
9|10|11|12

파일 몬양이 왜 이따구냐고 따지지 말자!!

내 맘이다.ㅎㅎ

여기서 | 를 구분자로 2번째 있는 데이터 만 뽑고 싶다..

그렇다면..

쉘에서 단순히

[ellin@Coji] cat 11 | awk -F '|' '{print $2}'

라고 쳐보자..

오!! 두번째 인자만 뽑을 수 있다...신기하군..= 0 =

그럼 두번째 세번째를 뽑는데 그 사이에 "|"를 넣어 볼까?

[ellin@Coji] cat 11 | awk -F '|' '{print $2"|"$3}'

오호....신기하군...

파일로 받고 싶다고?

[ellin@Coji] cat 11 | awk -F '|' '{print $2"|"$3}' > 22

오호...쉽고 간단하군.ㅋㅋ

하지만 이것은 awk의 아주 단순한 처리이다..

더 복잡하고 어려운것도 많다..ㅋㅋ

#2 에서는 조금더 신기한 기능을 가지고 설명 하도록 하겠다...

'컴퓨터 이야기' 카테고리의 다른 글

윈도우 비스타 출시와 Active X  (8) 2007.02.14
UNIX 아주 간단한 awk #2  (0) 2007.02.14
UNIX 에서 "expect"라는 신기한 녀석!!  (0) 2007.02.10
Unix 라인에디터  (0) 2007.02.09
find를 이용한 스크립트.  (0) 2007.02.08

+ Recent posts