새싹(OpenSprout)이 꿈꾸는 Agile 개발
이전에도 어디부터 개발을 해야 하는건지 고민한적이 있었는데, 좀 전에 박재성님께서 그와 비슷한 글을 올려주셔서 새삼 기억이 났습니다.
그래서 요즘 꿈꾸고 있는 초고속 개발에 대해 그려볼까 합니다. 개발 과정은 단순합니다.
1. 도메인 클래스 작성.
2. 코드 생성(한 방에 DAO, Service, Controller + 기타 Context 클래스들(validator, param, ref, 덩덩,)까지..+ 뷰)
3. 세부 조정.
끝 입니다. RoR의 스캐폴드 정도로 생각하시면 될 것 같습니다. 물론 확장성도 고려해서 코드 생성을 해주는 겁니다. 스프링, 하이버네이트를 사용해서 이런 초고속 개발을 뒷받침할 프레임워크를 공개할 생각입니다. 하지만.. 저정도 초고속 개발을 하려면, 프레임워크 혼자서는 안 될 겁니다.
고도의 확장성을 고려하여 설계한 코드 생성 로직이 프레임워크에 담겨있어야 하고, 화면 코드도 커스텀 태그를 적극 활용해서 화면 구성요소를 모두 JSF 정도로 컴포넌트화 해야 합니다. 코드 생성을 지원할 이클립스 플러그인 같은 툴도 필요하며, 메이븐 아키타입으로 프로젝트 기초 틀을 제공하면... ㅎㅎ. 이 정도가 새싹이 꿈꾸는 목표라고 할 수 있겠습니다.
물론 Generic을 기반으로 생성한 코드에는 분명 한계가 있겠습니다. Generic 하지 않은 것들은 손수 개발을 해야 할 겁니다. 그럴 때는 기존 방식대로, 도메인 -> JSP -> 컨트롤러 -> 서비스 -> DAO 순으로 내려가든.. 도메인 -> DAO -> Service -> Controller -> JSP 순으로 올라가든 중간 중간 듬성 듬성 하든 개인이 편한대로 개발을 하면 될 것입니다.
지금 이 순간 "하지만 이것도 어느정도 규모가 작아서 정말 피자 두 판 이내의 조직일 때야 가능하지, 규모가 커서 규율로 정해야 하면..." 이라고 생각하고 계신가요. 아마도 이런 생각은 주로 아키텍트인 분들이 하시겠죠.
맞을 겁니다. 규모가 커지면 일을 어떻게 나눴는가에 따라 많이 달라질 것 같습니다. 일을 나누는 것 자체도 복잡할 것 같습니다. 작업 덩어리를 크게 쪼개면 개인 부담이 크고, 그렇다고 일 덩어리를 너무 잘게 쪼개도, SVN 같이 중앙 집중식 SCM을 쓰면 코드가 전부 충돌나서 짜증이 이만 저만이 아닐거라는 상상이 됩니다.(물론 실제로는 제 상상 이상이겠지만..) 작업 나누기 말고도 수 많은 리스크와 이슈들이 존재하겠죠.
하지만, 하지만.. 그렇게 복잡하고 규모가 큰 시스템에도 분명 위와 같은 새싹은 도움이 될 겁니다. 일단 기본 CRUD와 기본 화면을 불과 몇 초만에 생성해내면, 그 만큼 작업 부담이 줄어들고, 복잡한 비즈니스 로직이나 워크 프로우를 개발하는데 더 많은 시간을 투자할 수 있습니다. 그만큼 특정 영역에 집중해서 프로젝트 성공률을 높일 수 있을 겁니다.
실제로 이전 개발 프로젝트에서 OSAF(OpenSprout Application Framework)와 UI 컴포넌트를 사용해서 기본 CRUD 코드를 코드젠 없이 수동으로 도메인 클래스당 DAO, Service, Controller, add.jsp, update.jsp, grid.jsp, search.jsp를 5분만에 생성할 수 있었습니다. 그 뒤에 세세한 조정을 거쳐서 새로운 메뉴 하나(검색, 뷰, 가끔 Ajax 폼 검색, 비즈니스 로직 추가. 테스트.. 덩덩)를 완성하는데 2시간 정도면 충분했습니다. 물론 손수 작업한 부분 중에 코드젠을 적용해서 자동화 시킬 만한 부분들이 충분히 더 있었습니다. 가령, 검색 조건 같은거 말이죠. 이런걸 코드젠 할 때 선택할 수 있는 팝업이 뜨거나 설정파일로 주면 검색 조건 추가하는 3번. 세부 조정 작업중 일부도 자동화 할 수 있습니다.
가까운 미래에는 뭔가 더 달라질꺼라 생각합니다. 작년말부터 올해 초까지 잠깐 소문으로 무성했던 ROO도 그렇고.. 맨땅에서 DAO, Service, Controller를 생성하는 날은 이제 슬슬 끝나가고 있다고 생각합니다. 맨날 똑같은 클래스 상속 받아서 만들고, 비슷한 메소드 추가하고(add()나 insert()를 쓰지 않는 도메인이 얼마나 될까요.).. 이런 작업도 전부 중복으로.. 개발자가 개발에 질리게 만드는 것 중에 하나일 겁니다.
새싹이. OpenSprout가, 여러분을 고통없는 새로운 미래로 안내하겠습니다. 크하하하 낚시 글이 되버렸네요. 좋은 밤 되세요. ㅋㅋ