완벽함이란 더 이상 무엇인가를 더할 것이 없을때 이루어 지는 것이 아니라, 더 이상 무엇인가를 뺄 것이 없을 때 이루어진다. - 앙뜨완느 마리 로제 드 생떽쥐페리
by 미친병아리 이글루스 피플 2006 이글루스 TOP 100 2007 이글루스 TOP 100
포토로그
메뉴릿
주저리 주저리
라이프로그
Database 상식, 테이블에 인덱스 걸기..
웹어플리케이션을 개발하는데 있어 기본 소양으로 갖춰야할 사항은 클라이언트사이드 스크립트, 마크업 랭귀지, 서버사이드스크립트, Database 관련지식, 사용하는 서버/클라이언트 어플리케이션에 대한 이해다.. 이것은 선택이 아닌 필수 지식이라 볼 수 있다.. 해서 구체적으로 정리를 해보면 다음과 같이 나열해볼 수 있다..
  • 클라이언트사이드 스크립트 : 자바스크립트

  • 마크업랭귀지 : HTML, CSS, XHTML, XML, DOM

  • 서버사이드스크립트 : PHP, ASP, JSP, ASP.NET, Ruby 기타 등등

  • Database 관련 : RDBMS 지식, 쿼리문 작성능력, DB 모델링 능력, 튜닝 및 성능향상 능력

  • 관련 어플리케이션 이해 : 웹브라우저, 웹서버, WAS, DB서버, OS 등의 동작원리이해 및 세팅, 관리능력
위의 3가지는 프로그래머들이 자신이 꼭 알아야 하는 내용이라 생각하고 열심히 공부한다.. (물론, 간혹 DOM 구조나 CSS, XML 등은 자신이 몰라도 된다고 생각하는 안타까운 경우가 있기는 하다.. 필요한 것이라 설명해주면 알아 듣는 사람이 있는 반면, 끝까지 왜? 라고 우기는 태도를 보이는 사람들을 만나면 슬프기까지 하다.. 언제까지 프로그래머를 할 수 있을까 라는 생각이 들어서.. 물론, 이런 내용을 몰라도 프로그래머이긴 하다..)

하지만, 뒤의 두개는 재미난 양상을 보인다.. 내가 만드는 어플리케이션의 완성도를 위해 모든 부분을 관심을 가지고 모르던 부분이 나오면 눈빛을 초롱초롱 빛내는 부류가 있는 반명, 그거 몰라도 지금까지 프로그래밍하는데 지장 없었다는 태도를 보이는 부류로 양분된다.. 특히 회사나 팀에 DBA나 시스템 엔지니어가 있는 경우에는 후자의 태도를 보이는 사람들이 더 많아지게 된다.. 나는 개인적으로는 후자의 경우를 잘 이해를 할 수는 없지만, 그렇다고 사람을 미워할 수는 없는 노릇이므로 내 생각을 여러차례 이야기를 해주곤 한다.. 하지만, "세상 사람들이 모두 당신같지 않다"는 반응을 접할때는 좀 당황스럽기도 하다.. 내가 표현을 잘 못 했는가 보다.. "니들 같은 프로그래머, 이해가 안간다"는 느낌을 준건가?

그냥 내 생각은 간단하다.. "내가 만들고자 하는 것이 있을때, 동료의 도움을 받으면 더 쉽게 해결되겠지만 부득이한 경우 혼자서라도 문제를 해결할 수 있는 능력을 키우자"는 것이다.. 물론, 요즘같은 복잡한 세상에 뭔가를 혼자 하려는 생각은 위험하고 좋지 않은 생각이지만, 그렇다고 다른 사람이 도와주지 못해서 성취를 못했다는 느낌은 더 싫다..

웹 어플리케이션은 속성상 DB와 매우 밀접한 관계를 맺고 있다.. 개발을 진행하면서 많은 쿼리문을 만들게 되는데, DBA의 전폭적인 서포트를 아주 많이 받는 경우가 아니라면 쿼리문은 프로그래머가 직접 작성하게 되는 경우가 많다.. 경우에 따라서는 모델링도 하게 된다..

놀라운 사실은 많은 프로그래머들이 쿼리문 작성시 인덱스는 생각하지 않는다는 것.. 신경을 못 쓰는 정도가 아니라 프로그래밍 과정에서 내가 생각해봐야할 대상이라는 생각이 아예 없는 경우도 있어 깜짝 놀라곤 한다..

인덱스를 나중에 다는 것도 나쁜 방법은 아니다.. 하지만, 최소한 쿼리문 작성시 이 테이블은 이런 목적으로 만들어졌으니 이러 이러한 방식으로 많이 활용될 것이고, 대략 이런 인덱스를 달아두면 조회시 성능향상이 되겠군 하는 생각을 하며 쿼리문을 만드는 것과 아닌 것과의 차이는 유지보수 과정에서 많은 차이를 낸다..

첫번째로, 이런 과정을 거듭하면서 프로그래밍시 고려해야 할 사항을 폭넓게 넓혀가는 훈련을 매일매일 해온 프로그래머와 그렇지 않은 프로그래머의 프로토타입 혹은 알파버젼의 품질 차이는 엄청나다.. 단순히 인덱스를 고려 했느냐 마느냐의 차이가 아니라 평소 자신을 훈련시키는 자세의 문제이기 때문이다.. 대부분의 사람들은 매일 매일 조금 더 나은 발전을 위한 도전 보다는 일도 많아 바쁘고, 다른 할 것도 많은데 그럴 여유가 없다며 현실과 타협한다..

두번째로는 이미 고민을 해서 쿼리문을 만들어두었기 때문에 나중에 성능 튜닝을 위한 쿼리문 검토가 보다 신속하게 이루어지며, 튜닝 대상이 되는 쿼리문의 수가 줄어들게 된다.. 당연히 유지보수 단계에서 개발팀은 좀 더 부가가치를 높이고, 만족도를 높일 수 있는 의미 있는 일에 시간을 할애할 수 있게 되며 성취욕도 높아진다.. 역시, 우리팀은 달라 하는 생각까지 미치게 되면 금상첨화다..

가장 최악의 시나리오는 이 테이블이 뭔지도 모르겠고, 이 필드가 왜 만들어졌는지도 모르겠으며 내가 맡은 화면에 필요한 데이터와 가장 비슷한 데이터를 보여주기만 하는데 급급하게 만드는 경우다.. 일정에 쫒기게 되면 회사나 팀에서 의도적으로 이렇게 만드는 경우도 있겠지만, 개인이 독자적인 판단에 의해 이렇게 만든다면 통합테스트나 유지보수 단계에서 아주 화가나게 된다.. 당해보면 정말 우울해진다.. 프리랜서들과 일할때 이런 경우가 많았는데, 오죽하면 이런 실망스런 프리랜서들을 검색해볼 수 있게 하는 사이트를 만들어야 한다는 생각도 가져봤다.. (물론, 누가 만들어줬으면 하는 생각이 더 간절하다..)

프로그래머들이 DB 관련 어플리케이션을 개발할때 성능향상을 위한 인덱스를 고려하는 것이 DBA의 몫이 아닌 프로그래머의 몫이라는 생각을 가져봤으면 한다.. 이건 누가 일을 더하고 적게하고, 네 일인데 내가 하고의 문제가 아닌 내 경쟁력을 높이는 훈련이라 생각하면 된다..

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 미친병아리 | 2007/10/21 21:13 | ▣ 일이야기 ▣ | 트랙백 | 덧글(2)
트랙백 주소 : http://madchick.egloos.com/tb/1657793
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 찬별 at 2007/10/27 23:23
대기업에서는 특히 개발 담당과 운영 담당 사이에 벽이 하나 있는 것 같더군요. 특히 시스템 운영부분은 지식도 지식이지만 <정책>에 해당하는 부분이 많아서 그런거 아닌가 싶어요.
Commented by 미친병아리 at 2007/11/04 21:50
찬별님 : 사람들이 하는 일이라 어쩔 수 없는가 봅니다.. 사람들이라 쉽게 벽을 허물수도 있을 것 같기도 한데 말입니다..

:         :

:

비공개 덧글

Creative Commons License

< 이전페이지 다음페이지 >


이글루 파인더
카테고리
태그
최근 등록된 덧글
하하^^ 저도 요즘 뜸하..
by 김정수 at 11/27
잘 봤습니다. UML에 대..
by ohyecloudy at 11/21
잘 지내시죠? 여전히 일로..
by hehua at 11/20
월동준비없이 간만에 오..
by 쩌비 at 11/20
블로그가 업데이트 되어..
by Funny at 11/19
간만의 포스팅 반갑습니..
by 135th at 11/19
오랜만이세요.. 어케 ..
by zoops at 11/19
오래간만 입니다. :)
by 마음으로 찍는 사진 at 11/19
오랜만에 돌아오셨네요~..
by jely at 11/19
좋은평가 감사드립니다. ..
by ilsooni at 11/16
참 오래간만이시네요.^^..
by gonny at 11/03
ㅅㅂ 나도 몰른다고
by 야동매니아 at 10/20
하하, 이런경험 있는데..
by 씩씩한강냉이 at 10/03
꺅. 한글이 위대하기에 ..
by 씩씩한강냉이 at 10/03
소설식이라 편하고 재미..
by ohyecloudy at 10/01
환영합니다 미병님~^^
by Paromix at 09/16
온국민이 싫어하고 혐오..
by 닭날다 at 09/16
살아계셨군요... 계속..
by 미친감자 at 09/08
가끔씩 들리는데, 진짜..
by 랄라 at 09/05
웰컴~투~~~~~~..
by S2nNAMU at 08/25
최근 등록된 트랙백
데꾸벅의 생각
by techbug's me2DAY
UML, 실전에서는 이것..
by Ohyecloudy's Progr..
데드라인 - 소설로 재미..
by Ohyecloudy's S3
실전적 문장비법 글쓰기..
by 블로거1.0의 WEB2.0 도전기
우분투 리눅스 8.10 하루..
by joogunking
마이클잭슨 사망 소식들..
by Bluesky
후아유(2002) : 2000년대 ..
by 생활의 발견
知的人의 생각
by peter_c's me2DAY
톰캣!!
by 나두미키님의 이글루
정규 표현식 완전 해부와..
by 김재호의 디지털보단 아..
HTML 소스 제대로 보자,..
by [부동산]개발.정비구역
내 손안의 PC - 자바가 ..
by 上善若水
Stringbuilder OutOfMe..
by Pinch of Smack for D..
웹 오피스 정리
by Web N Bizr
네이버 블로그 검색 - ..
by InformationRedesign
에반게리온: 서 - 사운드..
by LG전자 XCANVAS홈..
블로그에서 수익은 기대..
by IT, 모바일, 엔터테..
"다음으로 지원한 이메일..
by 민노씨.네
알라딘 TTB2 둘러보다
by NKOKON's Web-Note
문답 # ActiveX 문답
by 아이리스가 만개한 언덕..
이글루링크
EBC (Egloos Broad..
erehwon.LAB
About willy
Living Loving and L..
修身齊家萬事成
【 이름쟁이™의 눈으로 】
개 풀 뜯어먹는 소리
觀鷄者의 망상 공간
Oz in Wonderland
김명신의 즐거운 하루
함께.. 늘 그렇게..
荷花(hehua)
소스코드위를 걷다.....
네러티브 오프로드
zoops 이야기
까모의 룰루랄라~
▒ 제닉스의 사고뭉치 ▒
河伊兒의 고물상
가로수들은 여전히 제자..
餘分D: physics and fun
극한추리 hansang's wo..
길고양이 이야기
어쨌건간에 흘러가는 者
선인장 일지
~★~ 우하하!!~ 프로..
without coffee
Lady Nariel's Golde..
검색엔진 루씬 Lucene..
fire, walk with me
디지털을 말한다 by oojoo
♠후리지아 향기처럼♠
일상 생활 속의 파편들
뽐뿌 inside
책읽는 엄마의 보석창고
Mono log
blogger jely
반복되는 일상속의 비정..
골룸의 골방
질풍 17주의 머브러브 라..
maniacs
AURA's Showcase
ozzyz review 허지웅..
디제의 애니와 영화 이야기
ANTIEGOIST : GyuHo..
미달이의 육아일기
All about IT Trends
Suicide Solution
얼음집
Trouble n Travel
모기불통신
Trip
찬별은 초식동물
숲 속 작은 섬
snowcat blog
전도서에 바치는 장미
한글이 꿈틀
이우진의 UCC 제작실 ..
INVENT
위로..위로..위로..
woody's film review
Show me the money
전자음악 알아보기
sunny's store
이규영 연예영화 블로그
◀ M.HOUSE - Masade..
Urban Living
쉽니다.
roadster
무디의 무책임한 세상
이제 다시... 바라보다.
random life
Beyond Web
ricordati di me
Jania's Blog
Gaious 功房 네오베..
애자일 이야기
- Last Paromix -
T9T9 Research Center
양군 블로그
소프트웨어 이야기
식사일보 food daily
Software Engineering..
티오
고재관의 블로그
mocca
yundream의 프로그래..
통TON
lalou
생각이 없는 블로그
이전블로그
rss

skin by 이글루스