본문 바로가기

짧게 쓰기/연습장

내 일터에서 필요한 관심 기술들

새로 일한지 한달이 지났습니다. 마치 신입처럼 빠듯하게 일했습니다. 4달 쉬고 일한대다가, 몇년동안 같이 일한 팀원을 떠나 새로운 사람들과 익숙해지고 인정받기가 쉽지 않았기 때문에, 온통 회사일에 적응하는데 내 힘을 쏟아부었습니다. 사실 더 큰 이유는 여기서 해야할일이 내가 많이 경험하지 않은 일들이라 더 정신 바짝 차리고 일했던 것 같습니다.

마치 신입처럼 열심히 일하다보니 신입때 뭐든지 호기심 갖고 열심히 공부하고 일했던 그때로 돌아가는 효과도 생기는 것 같았습니다. 다시 신입처럼 공부하기 시작한 것은, 열심히 공부하고 일을 잘 할수록 바로 내 밥벌이에 도움이 된다는 것을 실감했기 때문입니다. 사실은 백번 대의를 강조하는 것보다 한번 그 이익을 체감해보는 것이 더 효과가 좋은 것 같습니다.

처음에 내가 잘하는 기술들은 잘 쓰이지 않고, 익숙하지 않은 기술(=DB) 위주로 일을 해야된다는 것을 알았을때는, 괜히 이곳이 왔나..프로젝트 찍기?를 잘못했나~ 라는 생각이 들었습니다. 예전에는 내가 잘하는 기술은 칭찬하고 내가 못하는 기술은 깎아내리기도 하고 그랬죠. 그러나 개발자로 꼭 잘 해야하는 DB 관련 기술을 여기서 잘 다져놓으면 어느 프로젝트가도 여유있게 일할수 있는 프로 용병 개발자가 될수 있다는 생각이 들었습니다. 그뒤로 업무에 적응하면서 요즘에 DB관련 기술을 공부하고 있습니다.


1. SQL 작성시 인덱스를 잘타는 기술
예전 DB 쿼리작업 할때는 내가 원하는 결과만 나오면 된다는 생각으로 SQL을 작성했습니다. 그런데 아시다시피 Row수가 많아질수록, 옵티마이저가 쿼리를 어떻게 실행했냐에 따라 결과가 0.1초에서 무한대 타임아웃까지 차이난다는 것을 이번에 몇번 실감했습니다. 인덱스를 잘만 태워도 쿼리 속도가 엄청나게 차이납니다. 옆에 오라클만 10년 했다는 과장님한테 한번 인덱스 튜닝하는 방법을 배웠는데 놀랍더군요. 그때 감동받아 DB SQL 작동개념을 잘 이해하여 인덱스 잘 태우는 방법을 알아야겠다고 생각했습니다.
 
1.을 잘하는 방법이 '대용량 데이터베이스 솔루션 1권'에 잘 나와 있더군요. 요즘 열심히 읽고 있습니다. 근데 이 책이 결코 다른 책에서는 알려줄수 없는 독보적인 내용을 다루기는 하지만, 원래 어려운 내용에다가 문장도 좀 어렵게 구성하여 잘 읽히지는 않더군요. 그래도 고급 개발자로 거듭나기 위해 이곳에 있는 동안 확실히 익혀야 겠습니다.

2. SQL 집합적 사고
예전 제가 만든 DB쪽 프로그램을 보면, 자바에서 쿼리 하나씩 여러번 날리고 자바에서 쿼리 흐름도 같이 관리하곤 했습니다. 예를 들면 해당 테이블의 카운트를 조사하여 없으면 Insert 태우고 있으면 Update 태우는 작업을 자바에서 주도적으로 관리하곤 했죠. 그런데 이곳은 대부분의 DB 작업은 DB 쿼리에 몽땅 집어넣었습니다.

DB가 잘할수 있는 일은 DB에게 맡겨야 된다는 말을 들었습니다. 절차지향으로 몇백,몇천 라인의 복잡한 로직을, 잘만 머리쓰면 몇십줄의 간단한 SQL로 짤수 있다고 하더군요. 이렇게 하려면 예전의 절차지향적 사고에서 벗어나 집합적 사고에 익숙해져야 한다고 합니다.

저같은 경우 절차지향적 사고와 객체지향적 사고에 대해 관심을 가진적은 있었는데, 집합적 사고는 나도 아직 생소한 부분이라 참 낯설으면서 그 집합적 사고를 깨달았을때의 기대가 큽니다. 집합적 사고에 익숙해지면 내가 담당한 시스템의 그 복잡다단한 쿼리 이해는 물론이고 앞으로도 복잡한 업무 요구사항을 간단하고 효과적인 SQL로 작성할수 있을 것 같습니다.

2.를 잘하는 방법은 '대용량 데이터베이스 솔루션 2권'에 잘 나와 있습니다. 10년도 넘은 책인데 아직도 그 독보적인 컨텐츠는 빛 나는 것 같습니다.

3. 정규식을 자유자재로
생각의 탄생이란 책에서는 여러가지 사고의 영역이 나옵니다. 그중에 '패턴 인식'이란 사고 능력이 나오는데요. IT기술에서 이 패턴 인식 능력을 기를때 도움이 되는 기술이 정규식인것 같습니다. 그 복잡한 문자 구성에서도 특유의 패턴을 발견하여 암호같은 정규식으로 변환하는 모습을 보면 정말 진정한 고수의 모습도 느껴집니다.

제가 일하는 곳에서는 소스 내부를 뒤져야할 일이 많이 생기는데, 이때 정규식을 써서 검색하면 일의 속도가 놀랄만큼 빨라집니다. 최근 정규식 책을 참고로 상당히 간단한 정규식을 써봤는데도 그 효과를 바로 실감하겠더군요. 정규식에 대해서는 조만간 따로 포스팅을 하고 싶을 정도로, 지적이면서도 재밌는 '문자 패턴 인식' 기술입니다.

4. 자동화 기술의 원조 쉘스크립트
저는 예전부터 Ant, Maven, SVN이니 하는 개발자를 편하게 하는 기술에 관심을 가졌습니다. 이 기술은 주로 자바진영에서 발달한 기술이죠. 근데 이 개발자를 편하게 하는 기술이 이것 뿐만 아니라 예전부터 많이 쓰여왔다는 것을 알았습니다. 바로 쉘스크립트 인데요. 리눅스/유닉스를 쓸때 수작업/하드 코딩하는 부분을 쉘스크립트로 짜 놓으면 일하기가 상당히 수월하다는 것을 요즘 느끼고 있습니다.


저는 예전부터, 자바 관련 객체지향 기술과 Ant, 이클립스 같은 도구 활용기술에 관심을 가졌습니다만, 제가 지금 일하는 이곳에서는 이런 기술이 크게는 쓰이지 않고, 그 어려운 인덱스 튜닝하는 기술과 집합적 사고가 필요한 DB 위주의 기술이 쓰이는 일을 하고 있습니다. 그래도 이런 기술은 고급 IT개발자로 거듭나는데 꼭 필요한 기술이라 생각하고 이참에 열심히 하려고 합니다. 마침 하기 싫다기 보다는 새로 아는 재미가 쏠쏠합니다.

이제 일한지 한달되어 첫 월급을 받았습니다. 앞으로도 밥벌이와 재미를 위해 열심히 공부해야 겠습니다. 그리고 사실은 공부한 내용을 블로그에다가도 자주 올려야 할텐대 말이죠. ^ ^;