'개발' 역시 참 맛있다.
번역을 핑계대로 놀고 있던건지 놀고 있어서 번역을 한건지 모르겠는 시간이 지나가고 이젠 슬슬 다시 개발에 집중할 시간이 오고 있습니다.
먼저 사부님이 내주신 통짜(프레임으로 나눠져 있지 않은) 게시판 만들기 과제를 진행하고 있습니다. 차근 차근 CRUD -> 페이징 -> 검색 -> 정렬 기능까지 구현하는 것인데 오늘 검색까지 했고 내일 정렬까지 하면 끝날 것 같습니다. 이렇게 하루에 기능 하나씩 하면 될 것을 왜 지난 스터디때는 두 달이나 걸렸는지 몰겠습니다. 지금 이것도 상당히 느린편이죠. 보통 몇 시간이면 전부 다 구현이 가능할텐데 말입니다. 연습이 더 필요한 것 같습니다.
기능을 하나 하나 구현해 갈때마다 느끼는 것들이 있는데 그 것들을 기록해 두지 않고 몇일이 지나면 잊어벼려서 아쉽습니다. 아마 그래서 지금 이 글을 작성하고 있는 걸지도 모르겠습니다. 특히 이번 게시판 구현을 통해 느끼는 것은 URL을 만드는 것이 복잡해져서 어딘가 한 곳에서 관리할 수 있으면 좋겠다는 것입니다. 그리고 검색 조건이나 페이징 관련 매개변수들을 어떻게 하면 더 편하게 관리할 수 없을지, URL을 좀 더 단순하게 만들면서도 저런 정보들을 잘 들고 다닐 수는 없을지 등등이 고민 됩니다.
두 번째로 기존 시스템에 추가기능 요구사항이 들어와서 고객을 만나고 왔습니다. 회사에 직원이 별로 없는 관계로 직접 고객과 대면하여 요구사항을 정리할 수 있다는 것은 정말 행운인것 같습니다. 고객이 일하고 있는 도메인 지식을 쌓을 수 있고 그것을 개발자 입장에서 정리하여 다시 고객이 이해할 수 있는 그림이나 말로 표현하는 훈련을 자연스럽게 할 수 있습니다.
추가 기능은 재고관리에서 선입선출에 관한 것이었는데 닷넷 프로그램과 스프링+하이버로 만든 서버쪽 프로그램을 모두 손봐야 하는 상황이었습니다. 일단 되도록이면 기존 코드를 많이 건드리지 않도록 추가기능은 별도의 매서드로 분리하고 웹 서비스로 공개해놓고, wsdl로 잘 나와있는지 확인한 다음, 닷넷으로 가서 웹 서비스 URL을 로컬로 변경한 다음 업데이트 해주고, 닷넷 프로그램을 수정하여 원하는 화면을 그리고 코드를 수정하여 추가 기능을 구현했습니다. 중간에 데이터 테스트가 조금 필요한 부분이 있었지만 별로 복잡한 로직이 아니라서 일단 테스트는 생략하고 구현했습니다. 그리고나서 서버를 돌리고 닷넷을 돌리고 원하는 추가기능 시나리오를 테스트 합니다. 잘 동작하는 것을 확인했지만 아직 배포하지는 않았습니다. 오늘 내일 한 번씩 더 검증하고 배포해도 고객이 원하던 시간보다 일주일이나 더 빨리 만들어 주는 것이기 때문이죠.
세 번째로 조금 전 위의 시스템 사용자로 부터 에러 보고를 받았습니다. 배치를 실행하여 다른 쪽 서버에 있는 데이터와 싱크를 맞추던 도중 에러가 발생했습니다. 에러 메시지 조차 없이 사용자 친화적으로 '관리자에게 문의하시로'라는 문구가 있었습니다. 귀찮기도 하고 감도 안잡혀서 일단 선임개발자에게 메일을 포워딩했습니다. 그러자 에러가 발생 가능한 지점을 설명해 주시고 그쪽을 살펴보라고 하십니다. 일단은 어떤 작업을 하다가 발생한 에러인지 확인했으니까 로컬에서 해당 작업을 재현해 봤습니다. 똑같은 에러를 볼 수 있었스빈다. 다행이라고 생각하고 콘솔에 찍힌 에러 로그를 자세히 들여다 봤습니다. 이 배치를 돌리기 전에 다른 배치를 돌려서 이번 배치를 돌 때 필요한 다른 데이터를 먼저 싱크 했어야 한다는 생각이 들어서 선임개발자인 사부님께 물어보고 확인을 받았습니다. 그래서 필요하다고 생각한 다른 배치를 로컬에서 먼저 실행하고 에러가 발생한 배치를 돌렸습니다. 잘 동작했습니다. 빙고! 전화로 간단하게 대처법을 통지해주고 오늘 하루 일과는 끝납니다.
원래는 조금 더 일하다 집에 가야 하는데 오늘은 본가에 들려서 김치도 가져가야되고, 머리도 좀 아프고, 색시가 어제부터 끙끙 앓고 있는 바람에 후딱 들어가봐야겠습니다.