http://danielku.com/posts/2015-08-20-bagle-architecture/
최근 위 글을 보면서 다시금 개발환경에 대해 생각하고, 적용해 보고 있다. 일주일이 지난 지금, 사실 머릿속이 사뭇 제대로 정리가 되지 않아 블로그를 통해 한번 정리해 보고자 한다.
내가 매번 개발하던 자바 웹 서비스는 대부분 Spring MVC위에서 MyBatis 맵핑에, Velocity를 이용한 뷰, 그리고 jQuery와 Bootstrap등을 통한 앞단 개발이 전부였다. 아니, 나는 이조차도 사실 뭔가 화려한 기술체의 총 집합이라 생각했다.
그런데 정말 기술이란건 빠르게 발전하나 보다. 이건 뭐랄까, 디자인의 세계보다 더 하다.(참고로 필자는 디자이너를 꿈꾸다가 2000년 플래시가 대세일 때 흐름을 잡지 못하고 프로그래머로 전향한 케이스이다.) 정말 빠르고, 빠르고 빠르게 발전하는 것이 개발의 세계라 생각한다.
특히 요즘 느끼기로는, 서버 기술은 물론 프론트 기술까지 뭐 가히 폭발적으로 발전해서 이젠 단순히 백엔드 단에서 velocity나 JSTL로 끼워맞추기, 혹은 Tag Library로 xml식으로 갖춰진 문서는 구형의 모델이 되어버린 것 같다. 모델 1,2 처럼 말이다.. MVC가 아닌, AngularJS에서 강조하는 MVW같은 것. 이젠 정말, 서버는 RESTful로써의 역할이나, 리소스 관리에서의 역할만 하게 되는 것일까..
사실 뭐 내 서버개발의 역사(?)를 살펴보면 그도 그럴 것이, 본격적인 서버 개발은 2009년 말에서야 시작되었으니, 사실 난 고작 5년 남짓한 경력을 가지고 있는 셈이다. 그것도 스프링을 세팅할 줄 안다는, DI등을 이해한다는 "자만심" 이 하늘을 찌를 듯 하다보니 처음에 언급한 그 개발 틀에서 벗어나지 못했다. 사실 더 따지고 보면 스프링 관련 개발경력이 실제로는 2009~2012년까지 총 3년 정도가 실무이고, 이하는 나 혼자 스스로 공부한 정도이니, 게다가 실무에 있었을 때는 설계보다는 단순히 업무에 투입되 모듈을 만드는 정도를 처리했으니, 초보도 이런 초보가 없다. 대학에 들어오기 전에는 거의 php나 웹디를 한 것이 전부이고, 대학에 들어와서도 DX만 고집했고, 2008년부터 가까스로 자바와 웹2.0을 공부하고 병특에 와서 웹SI를 하고, 대학에 복학해서 HTML5와 자바 소켓통신을 다루다가 작년에 다시금 스프링과 Play Framework를 다루다가 지금에 이르게 되었다.
프론트 단은 더욱 더 부끄럽다. 사실 프론트 개발을 시작한 것은 거의 95년부터인데, 근 20년에 가까운 시간동안 나는 HTML5라는 새로운 스펙에만 익숙해져 있고, 실제로 일반 소프트웨어 공학에서 쓰이는 설계->테스트->구현 및 의존성 관리, minify, CDN등에 대해서는 생각 자체가 전무했다. 그렇게까지 체계화된 개발 프로세스 및 최적화된 소스가 필요한지에 대해서 의문이었고, 사실 생각조차 하지 않았다. 그런데 지금은 어떤가? 최근 CodeSchool의 AngularJS강의를 듣는데, 어쩜 HTML코드 자체에 저리 DI를 심어두고 코드는 코드대로 놔두고 스크립트 단에서 컴파일도 없이 비동기방식 만으로 프론트에서 저렇게 처리할 수 있을까. 참으로 대단하다는 생각밖에 들지 않았다.
그렇게 생각하다 문득, 내 개발에 있어서의 정체성은 무엇인가에 대한 생각까지 들더라.
풀스택 개발자, 내 책에도 쓰여있지만 그것이 나의 정체성이고 싶다. 그런데 역시나, 풀스텍이란 것이 나쁘게 말하면 '잡부'인 만큼 쓸때없이 기술에 대한 욕심이 많아서 최초 스펙보다는 그저 장점도 보지 않고 최신버전을 강구하게 된다. 그래서 계속해서, 꼬이고 또 꼬인다. 그러다 문득 어떤 라이브러리가 이 버전에서 작동 안하는 것을 보면 또 다시 원점으로 돌아간다. 이 과정이 계속되다 보니, 기술이 계속해서 나올 때 마다 나는 자꾸만 프로젝트를 뒤엎게 된다.
기술에 대한 욕심은, 글쎄, 조금 더 팀의 규모가 있고 애자일 개발 환경에서 빠르게 돌아가는 환경에 더 맞지 않나 싶다. 신기술을 적용해 보고, 그것이 가져다 주는 어떠한 퍼포먼스를 체크할 수 있다면. 하지만 나 같은 풀스택 개발자에게는, 최소한 하나의 정적인 업무 프로세스에 의한 하나의 틀이 필요하다. 나는 그것이 현재 개발중인 ERP라 판단하였고, 적용하려고 노력하고 있다. 하지만 지금처럼 하면 안된다. 최소한, 지금 내게 필요한 어떤 오픈소스들에 의한 앞/뒷 단의 구성을 충분히 파악한 다음, 설계문서에 반영하고는 왠만하면 수정을 가하지 않고 작업을 하는 것이 중요하겠다. 그리고 나서, 운영하며 문제가 발생하였을 때 그때엔 비로서 조금씩 고쳐나가려고 노력을 하면 되지 않을까,
모 개발자의 블로그에서 내가 본 것은 "IT기술은 끝없이 발전한다. 그래서, 잘 선택을 해야한다" 는 것이다. 다시금 공부 계획을 세우고, 우선 빠르게 내 기술적인 측면을 최신의 그것과 맞추는 것이 중요할 것 같다. 늦은 만큼, 최선을 다해야 할 것 같다.