티스토리 뷰
*주의 : 아래 글은 개인적인 견해가 강한 글입니다.
---------------
동일한 재료로 김치를 담그는 방법은 가가호호(家家戶戶) 다를 수 있고, 그 맛도 그러할 것이다. 여러 김치 중에서 좋은 맛을 찾았을때, 이를 재현할 수 있는 방법을 찾아, 그 방법을 표준화하면 하나의 레시피가 완성될 것이고 이를 통해 대량 생산할 수 있는 표준 방법을 찾을 수 있을 것이다.
프레임워크(framework)는 요리의 레시피(recipe)같은 것이라고 볼 수 있다. 즉, '어떤 작업을 할 때 누군가(선구자)에 의해 만들어진 방법/절차로 그 작업을 수행하게끔 강제시 하는 것이다.' 라고 할 수 있다. 예를 들어, 프레임워크를 준수해야만 할때는 이런 말을 해볼 수 있다. "프레임워크를 따를래? 아니면, 조직의 쓴 맛을 볼래?" 또 다른 예로, "모로 가도 서울만 가면 된다."라는 얘기는 프레임워크를 따르지 않아도 좋으며 최선책을 찾아라라는 의미로 해석할 수 있을 것이다.
가내수공업에서 산업혁명으로 가는 길에는 프레임워크가 있었다. 소프트웨어도 마찬가지라고 볼 수 있는데, 재사용성, 대량 생산등의 요구를 충족하기 위해, 객체지향관련 기술들이 나타났고, 많은 소프트웨어 기술들이 콤포넌트(마치, 전자(電子)에서 게이트->칩 )로 만들어 졌고, 그 들을 잘~ 운용하여 최종 목표를 만드는 표준 방법이 프레임워크(마치, 전자(電子)에서 Board 레벨? )이다. (이후, C++로 시작해서, Java기반, C#으로 대표되는 DotNet기반 등으로 발전하였다. ) 단순히 프로그래밍 언어만으로 생각하면 안되고, 운영체제, 미들웨어, 서비스등 궁극적으로 '플랫폼'을 그리기 시작했던 것이다.
소자 수준(맨땅?)에서 개발하는 것이 아니라면, 특정 프레임워크를 따라서 개발을 수행해야 하며, 프레임워크의 장점은 프레임워크에 익숙하다면 아주 쉽게/빠르게/정확하게 작업할 수 있다는 것과, 반면 프레임워크를 익히기 어렵다면 목표 달성은 커녕 프레임워크의 '정체 파악'을 위해 공부만 하다가 말 것이다. (과거, MS가 만들어 놓은 C++ 콤포넌트 MFC(Microsoft Foundation Class library)는 잘 만들어지지 않은 프레임 워크가 아니었나? 라고 개인적으로 생각한다.)
좀 오래된 얘기지만, DotNet 프레임워크와 Java 프레임워크는 90년대 후반부터, 2000년 초까지 서로 우월한 프레임워크라는 주장을 펴면서 앞을 다투었던 것들이기도 하다. 어떤 프레임워크가 뛰어난지, 적절한지는 상황에 따라 다르기 때문에 뭐라 표현하기 어렵다.
하여간, 프레임워크들은 기술의 진화를 그대로 반영하면서 발전해 왔다. 신기술이 등장했을때, 처음에는 그 기술을 저수준에서 연동하여 사용하지만, 결국 표준화 과정을 거쳐 프레임워크에 도입하기 마련인 것이다.
프레임워크는 참으로 많고, 분야별로 다양하다. 최근 우리나라에서 정부 및 공공분야의 소프트웨어 실행/개발/관리환경은 Java기반 프레임워크로 결정되었다는 것은 이미 다 알고 있으리라. 결국 이것이 전자정부 프레임워크이니까.
웹개발 프레임워크는 다양하다. PHP, Ruby, Python, ASP등 다양하지만, 국내 정부/공공은 Java기반 프레임워크를 채택하였다.(여기부터, 편의상 '프레임워크'는 '자바 프레임워크'로 제약된다)
"전자정부 프레임워크?" 이를 이해하기 위해서는 자바 생태계(Java Ecosystem)를 이해해야 한다.
Java는 전세계 산학연 모임(JCP)에 의해 표준(JSR xxx시리즈)이 제정되고, 해당 표준을 구현하여 배포하는 것이다. 표준을 제대로 준수할 수 있다면, 아무나 구현하여 배포가 가능하다. 실제 예를 들어, 전형적으로 운영체제를 JNI로 wrapping해야 하는 JVM 자체 같은 것은 Sun(Oracle), IBM, HP등에서 하고, EJB같은 스펙(JSR 153)은 JEE 플랫폼을 개발하는 IBM, Oracle, JBoss 등에서 하며, JSR 181처럼 Java 1.5스펙인 annotation을 사용하여 Pojo기반 웹서비스를 만들 수 있게 한 표준은 IBM, JBoss등은 물론이고, 개발자들에게 널리 사랑받는 아파치 재단의 'Apache AXiS 2'의 개발자들에 의해 구현되었고 오픈소스로 사용되고 있는 현실이다.
대부분의 JSR시리즈는 업체 뿐만 아니라, 오픈소스 커뮤니티에 의해서도 개발, 유지보수되는데, 그 중 오픈소스로 만들어진 콤포넌트들을 잘~ 조합하면 JEE플랫폼과 같은 것도 구성하지 못할 것이 없는 것이다. 즉, 개발 및 관리하는 곳이 서로 다른 다음 구성요소들, 예를 들어, tomcat+spring+ibatis+axis2, 또는, 이 구성에 struts MVC를 더하는 등 필요에 따른 조합으로 나름의 프레임워크(스택)를 구성하고 이에 맞추어 설계/개발한 개발자들이 다수 존재할 것이다. 이를 구성할때 구성요소들 간의 의존성, 버전등을 책임지는 것을 나름의 자부심으로 여기며 나름의 프레임워크를 만들어온 사람들도 있다. 반면, 이러한 구성요소들을 어떤 한 단체(업체, 비영리단체)에서 오픈소스나 비공개 소스로 개발 또는 빌드하여 관리하고 배포할 수 있을 것인데, 이러한 것들의 예가 WebSpere, JBoss등이다.
국내에서도 이런 방식으로 프레임워크를 구성할 수 있는데, SI업체들과 그 업체에 근무하는 어떤 개발자들이 바로 그들이다. 예견했겠지만, 우후죽순과 같은 군소 프레임워크의 난립이 있었다. 그래서 행정안전부가 중심이 되어, 대기업 및 중소기업의 의견을 수렴하여, 이를 교통정리하면서 만든 것이 전자정부 프레임워크이다. 최근 버전은 전자정부 프레임워크에서 확인/다운로드 할 수 있다.
-------------
참고: 현재(2013.03.07) 프레임워크에 대한 갑론을박 - 인터넷검색해서 대충~ 추려 봄
1. KLDP 인터넷 논객의 논의 - http://kldp.org/node/121731
2. 스택오버플로우 논객의 논의
2. 잡지:마이크로소프트웨어의 관련 글 - MVC, Ruby on Rails, Django 및 최근 유행하는 node.js도 언급
3. 전자정부 표준프레임워크 - PHP, Ruby, Python등 사용자에게는 미안(응?)하지만, 국내 정부/공공은 Java기술이 표준이다.
4. 전자정부 표준프레임워크 아키텍쳐 - 오픈소스 구성 요소의 모임(스택)이며, 전자정부 프레임워크는 WebSphere, JBoss등의 구성요소 대비 대동소이라 하겠다. 대동소이라 함은, JEE를 구성하는 기술 표준들에 대한 상세 구현이 상이할 수 있으나 궁극적으로 같은 곳을 지향하기 때문이라고 본다.
'HTML 5' 카테고리의 다른 글
zk - java web framework for Web or Mobile (0) | 2013.03.14 |
---|---|
Wakanda 소개 (1) | 2013.03.07 |
Maqetta 리뷰 (0) | 2013.03.06 |