본문 바로가기
엑셈 기업문화/엑셈 사람들

파란만장 ASK.엑셈 탄생기

by EXEM 2009. 4. 15.



2008.10.9일 조동욱 팀장님으로부터 한 통의 메일을 받았다.
약 한달 ~ 두 달 정도의 시간 동안 APEX(Oracle Application Express)에 대한 스터디를 할 예정임.
이를 위해 단기적으로 해야 할 일은 다음과 같음.



팀장님은 메일과 함께 20개의 chapter로 구성된, 약 900 페이지가 조금 넘는 영문 APEX 매뉴얼을 주셨다. 그리고 덧붙여서 우리나라에는 apex 관련 자료가 거의 없다는 말씀도 함께 해 주셨다. 매주 1~2개 주제에 대해 공부하고 이를 팀장님께 발표하는 것으로 2달 정도 APEX skill을 익혔다.
처음엔 매뉴얼이 영어라 기술을 이해하는데 애를 많이 먹었다.

그리고 팀장님 앞에서 1주간 배운 APEX 기술을 발표하면서 에피소드가 참 많았다. 한가지 들자면, Form 내에 PL/SQL 코드 삽입하는 방법을 잘 모르겠다고 팀장님한테 말씀 드리면, 팀장님은 “apex 화면을 1분 정도 유심히 보시다가 메뉴를 몇 번 클릭하면 코드가 삽입이 된다. 이러한 일이 여러 번 있었다. “ 하시면서 내가 일주일 내내 고민한 일을 1분만에 해결하시는 모습을 보면서 무섭다라는 생각을 한 적도 있다.
이렇게 처음 2달 동안 Web page를 만들고 button, textfield, textarea 등의 item을 배치하거나, session, cookie 생성, 로그인과 로그아웃 절차, 예외처리 방법, css, javascript 등 기본적인 APEX의 웹 기술을 익혔다.
그렇게 설치나 기본적인 게시판 제작, 화면 설계 등 처음에는 모든 일이 순조로운 듯 보였으나...
나중에 나의 퇴근에 발목을 잡을 줄이야! 그 당시는 전혀 상상조차 하지 못했다.

우리나라에도 asktom.oracle.com 과 같은 사이트가 있어야 한다는 사명을 가지고 개발하기로 결정하였다. 그래서 12월부터 asktom.oracle.com 사이트를 벤치마킹 하면서 부분별 로직을 구현해 보았다.
매일 asktom.oracle.com 이나 apex.oracle.com 에 접속해서 어떠한 로직과 정책으로 구현되어 있는지 확인하고, ask.엑셈도 어떻게 구현하면 좋을지 기획했다. 하나하나 로직과 정책을 확인하면서 몰려오는 두려움과 부담감.
과연 내가 이러한 사이트를 만들어 낼 수 있을까?
매 주마다 벤치마킹한 부분 로직들을 개발해 보고, 또 개발된 화면을 보면서 팀장님과 많은 회의를 가졌다. 구현하고 싶은데 기술적으로 잘 모르는 부분이 있으면, http://apex.oracle.com에 있는 forum을 이용했다. 질문을 올리면 1시간 이내로 답변이 꼭 온다. 외국은 온라인 활용이 대단하다는 생각을 했다. 나의 짧은 영어 질문의 요지를 파악해서 친절하게 답변을 달아주는 사람들이 있다는 게 너무 신기했다.



개발을 하기에 어느 정도 skill을 익혔다고 느낀 때가 12월 중순이었다. 1월 1일부터 실제적인 개발일정을 새우고, 프로젝트에 착수했다.
그 동안의 skill로 충분히 개발일정을 지킬 수 있다고 판단했다. 하지만 이는 엄청난 판단 착오임을 깨닫는 데에는 그리 오래 걸리지 않았다.
개발일정에 맞추어 요구사항 명세서, 유스케이스 다이어그램 및 시나리오도 작성하고 테이블을 설계했다. 여기까지는 좋았다.
 하지만, 문제는 지금부터였다.
 



1월 23일에 그 동안 기획했던 로직들을 개발해서 팀 내에서 시연하기로 했다. 여기서 기획적인 로직이라는 것은 질문을 “질문하기-답변하기-댓글달기-댓글에 답변달기”의 형식으로 작성할 수 있도록 한 로직이다. 처음에 쉽게 구현될 줄 알았는데, 전혀 그러지 못했다. 정렬의 문제를 생각하지 못한 것이다.
데이터베이스 설계 시에, 검색의 편의성과 효율성을 위해 질문 관련된 테이블은 1개 테이블에서 모든 데이터를 저장하기로 했다. 질문, 답변, 댓글, 댓글의 답변을 각각 테이블로 나누면 나중에 검색할 때 여러 번 조인을 해야 되기 때문에 번거로울 것 같아, 질문 관련 테이블을 1개로 통합해서 만들어서 검색의 효율을 높이기로 했다. 하지만 이것 때문에 질문, 답변, 댓글, 댓글의 답변을 입력 받고 나서 정렬을 하려고 하니, 쉽게 구현이 되지 않았다. 질문이랑 답변은 하나씩 밖에 없으니 그냥 정렬하면 되는데, 댓글 이랑 댓글의 답변이 문제였다. 어떤 댓글은 댓글의 답변이 달려있는데, 어떤 댓글은 댓글의 답변이 없으니 그냥 순서대로 정렬하면 안되고… (<= 이건 APEX 구현 방식 때문에 발생한 문제이다. 물론 제가 실력이 없어서 못했을 수도 있지만ㅎ) ‘아, 어떻게 해야 하지?’ 고민하다가 어쩔 수 없이 포기하고, 이 부분은 정책을 변경하기로 하였다. 즉, 댓글의 답변은 하지 않는 것으로 결론 내었다. 이 로직의 구현 때문에 1월 21일, 22일 이틀을 근처 찜질방에서 잤다. 그 때의 비참함이란… 하지만 지금 생각해보면 웃음만 나는 추억이다.



팀내 시연을 통해 그 동안 개발한 프로그램에 대해 ok 사인을 받았다. 그리고 이 날 회의에서 Ask.엑셈을 WIKI 서버와 같은 서버에서 서비스하기로 결정하였다. Wiki 서버에는 oracle standard edition 10g가 설치되어 있는데, 난~ 11g에만 설치해 봤을 뿐이고, install manual은 없고…
1월 26일부터 아무것도 안하고 oracle 10g에 apex를 설치하는 것에만 몰입했다. 정말 아무것도 안하고 설치만 했는데, 하루가 지나고 이틀이 지나고 3일이 지나도 설치에 실패했다. 아, 내가 이렇게 실력이 없는 놈 이었구나…
인터넷을 뒤져 설치 매뉴얼을 찾았다. 10g에 설치하는 3가지 방법이 나와 있었다. 1번대로 해보고 2번대로 해 보고 3번대로 해 보고 해 보고 또 해 봐도 안되었다. 목요일이 되자 정말 짜증이 극에 달했다. ‘오늘은 절대! 절대 설치하고 간다!’ 그날 새벽이 되었다. ‘아, 오늘도 찜질방인가?’ 이제 나의 오기와 인내와 본래 저질인 체력도 바닥을 드러냈다. 아무 생각이 들지 않았다. ‘그래, 한 번만 더 해보자.’ 그리고… 성공했다! 그냥 웃음만 나왔다. 지금 생각해 보면 내가 왜 그렇게 했는지는 모르겠는데, 근본적인 원인은 설치 매뉴얼 순서대로 하나하나 하지 않은 것이 문제였다. ‘내가 왜 그랬을까? 실력이 없으면 시키는 대로라도 했어야 되는데…’라는 자책도 들었다



사내 시연 일정이 2월 16일로 잡혔다. 이제 프로그램만 잘 짜면 되는데, 마음 한편이 어딘가 허전했다. 내가 만든 프로그램은 어딘지 모르게 부실하다는 느낌을 많이 받았다. ‘asktom.oracle.com.의 개발 source를 알면 좀 더 잘 만들 수 있을 텐데…’ 이런 생각을 많이 했고, 어느 날인가 인터넷으로 검색해 보았다. ‘세상에 이럴 수가?’ asktom.oracle.com 개발 source가 오라클 공식 홈페이지에 올라와 있었다. APEX로 구현한 예제를 오라클에서 30여 개 정도 제공해 주고 있었는데, 그 중에 asktom.oracle.com도 들어가 있었다.
바로 다운로드 받아서 소스를 확인해 보았다. 내가 만든 프로그램과 전혀 다른 고급 쿼리와 세부 로직들이 모두 다 구현되어 있었다. ‘아, 이럴 수가, 이런 게 있었다니…’
이 소스의 화면 인터페이스를 일부 수정하고 나서 팀장님께 보여드렸다.



기존에 개발중인 프로그램을 보완하기 보다는 찾아낸 asktom.oracle.com 구현 source를 수정해서 다시 구현하고 싶었다. 내가 구현한 기술이랑 너무나 수준차이가 나고, 또 구현하려고 했던 기능들이 이미 다 들어가 있었으니깐. 하지만 팀에서 이런 이야기가 나왔다. ‘소스도 정확히 모르면서 갖다 쓰면 나중에 문제 생겼을 때 어떻게 대처할 것 이냐고.’ ‘이정도 로직이면 분석하는 데에만 3달은 걸리겠다고, 당장 코앞이 오픈인데…’
정확히 모르는 소스. 맞는 말이다. 정확히 모르는 소스는 쓰면 절대 안 된다. 하지만 APEX는 자신있었다. 모든 것이 PL/SQL과 SQL 문로 구현되어 있고, 인터페이스만 자유자재로 바꾸고 apex package만 어느 정도 알고 있으면 문제될 것이 없다고 판단했다.
하지만, 우선은 2월 16일에 사내 시연이 계획되어 있었기에 기존 프로그램을 asktom.oracle.com 구현 소스를 보면서 보완했다.



그렇게 내가 만든 프로그램을 가지고 사내 시연을 하였다. 화면 인터페이스도 신경 쓰고 해서 나쁘지 않았던 시연이었다. 무엇보다 시연 때 많은 분들이 관심 가져 주셔서 너무 고마웠다. 
 



asktom.oracle.com 개발 source에 미련을 버리지 못하고 1주일 정도 asktom.oracle.com 개발 source의 구현 로직을 확인하고, 인터페이스를 수정하고, 한글화 작업하고 테스트를 했다. 그리고 팀장님께 보고를 드렸다. 팀장님께서 직접 테스트해 보시고 asktom.oracle.com 구현 소스로 구현하는데 문제가 없을 것 같다고 한 번 해 보라고 결정해 주셨다.
Asktom.oracle.com 소스를 정확히 확인하고, 인터페이스를 내가 만든 프로그램과 거의 동일하게 바꿔서 입히고, 한글화 작업을 한 이후에 여러 번 테스트를 해 보았다. 역시 전문가가 만든 프로그램은 확연히 다름이 느껴졌다.
소스를 수정한 이후에 3월 2일부터는 실제 서비스와 동일한 환경에서 테스트를 했다. 이 때부터는 발생했던 문제에 대해서는 조동욱 팀장님의 도움을 많이 받았다. 나에게는 팀장님은 ‘마이더스의 손’이었다. 이번 개발을 통해 내가 교육컨텐츠 팀원이라는 것에 대한 무한한 자긍심을 느낄 수 있었다.
(Ask.엑셈 메인화면 하단을 보면, 구글 메인 화면에서나 볼 수 있는 아이콘이 7가지로 변하는 모습을 볼 수 있는데, 이것 또한 우리 팀장님의 작품이다.)



3월 16일 서비스를 시작한 이후, 일주일에 3~4개 정도의 질문이 올라오고 있다. 올라오는 답변을 볼 때마다 뿌듯하고, 내가 엑셈의 일원으로서 이러한 사이트를 만드는데 주역이 되었다는 것에 놀라울 뿐이다.
Ask.엑셈 사이트를 오픈할 수 있게 도와주신 사장님, 본부장님, 팀장님, 디자인을 담당해 주신 김혜림 대리님을 포함한 모든 엑셈 여러분들께 진심으로 감사할 따름이다. 나 혼자의 힘으로는 결코 해 낼 수 없었을 것이다.
 Ask.엑셈이 우리 엑셈의 대표적인 온라인 컨텐츠가 되는 그날까지 안정적으로 운영되도록 최선을 다 할 것이다. 또한 많은 DBA에게 높은 질의 서비스를 제공하는 싸이트가 되길 바란다.

이 곳에 올라오는 질문들에 최적의 답변을 제공할 수 있는 컨설턴트를 꿈꾸며 난 오늘도 오라클을 쉬지 않는다.

댓글