작업 환경 & 스프링 개발의 약간의 애로사항

IMG_6694

Apple Macbook Pro Retina 15’ 15A215h

Transcend Jetdrive Lite 360

Topre Realforce 87u black 55g Keyboard

Logitech MX Master Wireless Gaming Mouse

Razer Destructor 2 Prof Gaming Mouse Pad

Zalman zm-ns2000 Notebook Cooler

Beats Studio Over-Ear Headphone

Thalmic Myo Arm Band Remote Controller

iPhone 6+ 128G, iPad Mini 2 128G, Apple Watch 42mm

제작년, 맥프레 구입을 시작으로 조금씩 내게 맞는 작업환경을 설정하고 있다. 내게 맞는 환경이라, 사실 내게 개발환경은 양면성이 있었다. 장인은 장비를 탓하지 않는다고 하지만, 나는 자꾸만 장비를 탓했다. 약간의 하드웨어적인 욕심은 아주 어린시절부터 계속되어 왔다. 약 여섯 종류의 노트북을 거치고, 열 종류 이상의 스스로 만든 PC를 거치는 등, 다양한 환경 속에 나 스스로 가장 집중이 잘 될때를 지속해서 찾아왔다.

지난 글에서도 밝혔지만, 더 이상 내게는 디지털 노마드가 맞지 않다 생각한다. 최소한의 작업환경, 그것이 갖춰지지 않는 한 집중해서 개발이 가능하다는 것은 역부족이더라. 사실 이건 어찌보면 내 집중력의 문제이겠지만, 그래도 난 당장 내 집중력을 탓하기 보다는 우선은 만족스러운 개발환경을 갖추고 거기서의 만족감과 함께 집중력을 높히고 싶었다. 그래서일까, 위처럼 리얼포스를 기반으로 한 여러 작업 환경이 내겐 만족감을 충분히 가져오더라. 물론 여기서 연결할 외부 모니터가 필요한 당장의 실정이긴 하지만,,

그나저나 최근에는 본격적으로 회사 업무를 진행하고 있는데, 정말 너무나도 밀려버린 스케줄이 사실 회사에 죄송하기도 하고 어찌보면 내가 정말 집중을 못했구나 싶기도 하다. 사실 모든 것은 처음이 어렵고, 처음의 환경설정이나 익숙함이 중요하지, 개발이 사실 그리 오래간다는 것은 내 게으름이 아니겠는가..

어쨌든, 작업은 Spring 4.1 을 기반으로 작업중이다. Spring Web MVC에 Velocity Template Engine, MyBatis를 기본으로 Bootstrap에 jQuery 및 각종 라이브러리를 커스토마이징 하여 사용하고 있다. 개발이 늦춰진 핑계를 대자면, 일단 이 모든 것들에 대한 작업을 혼자 진행한다. 때문에 일정한 Workflow가 정해지지 못했다. 물론, 필요한 모델은 모두 설계되어 있지만 이게 다가 아니더라. 개발을 하며 필요한 라이브러리며, 아무리 DAO->서비스->컨트롤러 를 만드는 방식으로 작업을 한다 한들, 생각 외로 한 페이지에 필요한 기능들 및 데이터들이 많다. 단순히 Controller에서 필요한 데이터를 받아온다 한들, 이걸 한번에 전부 받아 페이지에 렌더링 한다면 데이터가 많아졌을 때 속도를 보장할 수도 없다.

결국 생각할 수 있는 것은 비동기방식이다. 익숙한 JSON방식을 도입하지 않을 수 없다. 다행인 것은 Spring에서는 단순 Model랜더링을 한다면 Jackson JSON을 통해 자동적으로 JSON파싱이 된다. 상황에 따라 개개의 커스토마이징이 필요하지만, 결국 필요한 작업이다. 

한편으로는 동적 HTML을 처리하는 것도 약간의 작업을 수반했다. 동적 Select라던가, 동적 Table은 사실 이번 작업에서는 필수로 있어야 할 상황이다. jQuery를 통해 부모나 child를 추적하고, 동적 바인딩과 동시에 각 DOM에 ID를 동적으로 세팅하고, event trigger를 등록하는 과정이 또한 생각보다 시간이 오래걸린다. 단순 tr, td를 추가하는 것이야 모르겠지만 하나의 기능을 하는 여러 input, tr, td, textarea까지 한번에 보여줘야 하고, 이를 또한 삭제/수정 이 가능해야 하기 때문에 더욱 더 시간이 걸리는 듯 하다.

뭐 사실 이 작업의 경우는 2005년에 개발된 JS라이브러리와 JSP를 포팅하는 과정이다. 기본적인 쿼리 처리야 익숙한대로 처리하면 되지만, JS라이브러리와 페이지 뷰는 전부 새로 만들어야 한다. 페이지 뷰야 작년에 만들어 뒀지만, 이게 또 Bootstrap이 버전업 되고 나서 CSS의 네이밍이 죄다 변경되어 버렸다. 그것을 수정하는 과정부터 하여, 단순 자바스크립트를 jQuery로 변경하는 작업 또한 들어가고 있다.

이러다 보니 작업 속도가 매우 더디다. 인트라넷 답게 사실 전반적인 과정이야 크게 어렵지는 않다. 일반 영업회사처럼, 견적서를 등록하고 이에 따른 프로젝트를 만들고, 계약서를 등록하고, 발주서를 등록하고, 이에 따라 통관을 관리하는 등의 연계 메뉴가 들어가면 된다. 이렇게 연계가 되어 있다보니 메뉴를 하나 끝내지 않는 이상 다른 작업이 가능하지 않다. 지금 작업중인 견적서만 해도 Full-time 8시간 정도를 WriteForm에만 공들이고 있는데, 여기다 Writing Logic도 짜야 한다. 완성되면 또한 Modify도, Delete도 기본적으로 들어가니 아마 풀타임 15시간은 한 메뉴를 끝내는 데에 들어가지 않을까 싶다.

그럼 게시판 형식 메뉴를 제외한 메뉴가 9개인데, 토탈 135시간 소요. 하루에 꼬박 10시간을 일한다 치면 그래도 13일 정도가 소요된다. 그럼 8/2에나 완성이 된다는 이야기인데, 여기다 새로운 기능들, 전자결제나 웹 메신저, 그리고 메인 Dashboard기능이 그러하다.

어쨌든 중요한 것은 하루빨리 무엇이라도 완성해야 한다는 것이다. 빠르게 기존 기능을 개발하는 것을 최우선 과제로 삼아야 겠다. 복잡한 기능은 최대한 간소화 하고, 빠르게 오픈한 이후 추가 기능을 제작하도록 노력해야 한다. 더 이상, 개발환경을 핑계대지 말고 추진력 있게 나아가는 것이 중요하겠다.