에서는 스프링 도입에 대해서 비관적 관망 추세 였습니다.
그러다가 괜찮다는 평이 국내외적으로 나오면서 하나 둘씩 스프링
프로젝트가 생겼고 , 최근에는 거의 필수가 된듯 합니다.
(주위에 개발자분들 부랴부랴 스프링 열공하시고...)
아무리 좋은 오픈소스라도 실무에서 적용하는건 다소 시간이 걸릴
수밖에 없습니다. 이유는 여러가지일수 있지만
그중에서 가장 큰 이유는 아무래도 프로젝트 리스크 때문 일것입니다.
그러니 가끔 열정적인 개발자 분들 중에서
"나온지가 언제인데 지금에서야.."
라는 말보다는 실무적인 환경에 대한 이해를 하셨으면 하는 바램입니다.
스프링뿐만 아니라 오픈 소스가 있어서 정말 쉽게 편하게 개발을
하지만 반면에 너무 많다 보니 언제 이것들을 공부해야 하는
부담감도 있습니다. 오픈소스를 잘쓰는 것도 중요하지만
더 중요한건 어떤 오픈 소스가 앞으로 리딩할지에 대한
선택이 더 중요하다고 생각 합니다. 우리나라 개발 환경상
듣보잡 오픈소스까지 공부하기에는 물리적 시간이
한계가 있습니다.
그래서 앞으로 실무에서 전개될 Java Trend 에 대해서
제 개인적인 생각을 말하고자 합니다.
- RPC (Remove Procedure Call)
tcp/ip socket,ejb,rmi,spring http invoker,web service
등이 있습니다.
최근에 많이 사용하는 RPC는 아무래도 웹 서비스
겠죠.
하지만 웹 서비스가 만만치 않은 넘입니다.
요샌 알아서 추상화되어 있어서 편리해졌지만
복잡한 스펙,이기종간에 알 수없는 에러들..
(웹 서비스를 해본신 분들은 아실 것입니다.)
그래서 보다 쉽고 편리한 URI 기반의 REST를
점차 사용하는 추세 입니다.
데이터 전송 type은xml대신 JSON을 사용합니다.
즉 "REST+JSON"가 대세가 되지 않을까 생각 합니다.
실제로 "REST+JSON" 형태의 RPC를 실무에서
사용하고 있습니다. (모든 검토후 내린
선택이니 REST를 쓰는 이유가 있겠죠^^)
REST를 구현한 구현체들은 많지만 개인적으로
"Apache CXF"를 추천 합니다.
- Framework + ORM
Seam이 나름 ejb2를 보완했긴 했지만 여전히 100%
pojo라고 말하긴 다소 제약 사항이 있습니다.
(pojo in Action을 참고하심)
그래서 Framework은 스프링으로 쭈욱 갈듯 합니다.
ORM은 현재는 "iBatis"가 대세지만
(ibatis를 ORM 범주에 넣는다게 좀.. )
"Hibernate"로 결국에는 갈 듯합니다.
이유는 기술적인 요소보다는 아키텍쳐 측면
입니다. service+dao 패턴에서 도메인 패턴으로
설계를 하려면 하이버네이트는 필수라고 생각합니다.
꼭 하이버네이트말고도 가능하지만 그래도
ORM은 하이버네이트가 대세가 될듯
- Architecture Method
Service,DAO,DTO 클래스를 적당히 메서드를 설계해서
개발 합니다. 솔직히 이건 객체지향 개발 방법이 아니죠
객체지향은 말그대로 속성,행위가 있어야 하는데
실제로는 속성 따로, 메서드 따로 관리를 하고 있습니다.
"pojo in action"에서는 이런 방법을
"procedural code"라고 합니다. 말그대로 절차적 방법
입니다. 이런 방법은 대표적 언어가 "C언어" 입니다.
즉 객체지향 언어로 C언어 방식의 코드를 작성 하는거죠.
왜 이렇게 된이유는 잘못된 ejb 문화 때문이죠
ejb가 객체지향으로 표현하기에는 한계가 있어서
이런 설계를 했는데 마치 이것이 J2EE 기본인양 되어
있다는 거죠.
위와 같은 문제를 하기 위해서 "POJO 기반의 도메인 모델링"
이 필요하며 이런한 것을 구현하기 위해서는 위의
설명처럼 Spring+Hibernate가 필요합니다.
- Ajax
가져야 할 듯 합니다. 이유는 많이 사용한다란 것입니다.
정리 하면 CXF,Spring,Hibernate,JQuery이고 추가로
Maven,Spring Batch 정도가 될 듯합니다.
OSGi나 뭐 대단한 트렌드를 기대 했다면 실망 하셨을 것
같지만 위에서 말한것 처럼 실무적 관점이기 때문에
이해를 하셨으면 합니다.
참 트렌드를 말씀드린다는게 개발자 입장에서 상당히
조심스러운 부분입니다.
"저런거 다 필요없어" 하는 개발자분들도 있을 겁니다.
그런분들이 최근에 스프링에 대해서
엄청 열공 하시더라구요 ^^
혼자 스터디 하는 것 보다
대리 ~ 과장들은 기술기반, 과장 ~ 차장은 아키텍쳐 설계
로 나누어서 하면 좋을듯 합니다.
댓글 없음:
댓글 쓰기