존 아킹, 스콧 밀렛의 Professional Enterprise.NET 이  웹지니 장현희님의 번역으로 제이펍에서 출간되었습니다.  엔터프라이즈에 대한 개념이 척박한 닷넷 커뮤니티와 국내 환경에 또하나의 귀중한 책이 번역되 더욱 편하게 공부할 수 있게 되서 매우 반가운 소식입니다. 엔터프라이즈 시스템이 익숙한 분들도 있고, 아닌 분들도 계실 겁니다. 아마도 낮선 분들이 더 많을 것으로 생각됩니다. 이 책은 책의 목차만으로도 내용을 추측 할 수 있을 정도로 매우 직관적으로 저술 되었으며, 엔터프라이즈에 대한 기반 지식을 조금 알고 있다면 술술 읽혀질 정도록 매끄럽게 번역 되었습니다.


엔터프라이즈 닷넷 표지, 출처 웹지니님 블로그 http://www.mvpmagazine.net/40




원서를 펼쳤을 때 공 저자인 아킹이 엔터프라이즈를 알았을 때 느꼈다는 감정에 너무 동감 했기 때문에 읽지 않을 수 없었던 책이며, 번역서를 발견 했을 때 매우 기쁜 책입니다. 엔터프라이즈의 개념을 접하는 분들은 아마 공통적으로 느낄 감정이라고 생각됩니다.

"아킹 씨, 귀하의 경험과 능력은 출중하지만 이력서로 미루어 볼 때 귀하는 엔터프라이즈 분야의 경험이 전무하군요, 아쉽지만 다음에는 함께 일할 수 있는 인연이 있기를 바랍니다"

...

감독관이 말했던 '엔터프라이즈 패턴'에 대해 알아보기 시작했다. 그러나 인터넷에서 엔터프라이즈 아키텍처에 대해 검색했을때, 지난 8년간 내가 해왔던 컴퓨터 프로그래밍을 무용지물로 만드는 완전히 새로운 수준의 소프트웨어 디자인을 발견하고는 머리가 멍해지는 느낌이었다. - 프로페셔널 엔터프라이즈닷넷 - Professional Enterprise.NET, p.3

업계에서 '엔터프라이즈' 라는 용어는 '기업용' 이라는 한정적인 의미로 받아들이는 경향이 있습니다. 이런 생각은 자신의 영역이 기업용의 복잡한 비즈니스를 처리하는 서비스가 아니니 엔터프라이즈 아키텍처는 나와는 관계가 없어 라고 무시 또는 회피하는 경우가 발생합니다. 저는 엔터프라이즈에 대한 저자의 아래의 정의에 동의 합니다.

엔터프라이즈 아키텍처란 무엇인가?

엔터프라이즈 아키텍처 Enterprise architecture 란 주로 조직의 요구를 효과적이고 효율적으로 지원하기 위한 비즈니스 프로세스, 정보의 흐름, 시스템, 애플리케이션, 데이터 그리고 인프라스트럭처 등을 묘사하는 광범위한 프레임워크를 설명하기 위해 사용된다. 

....

개발자의 관점에서 엔터프라이즈 아키텍처란 어떤 의미를 가질까? 엔터프라이즈 아키텍처를 정의한다는 것은 프로세스, 프레임워크, 디자인, 개발 및 배포를 위한 일련의 패턴을 정의하고, 회사나 부서에서 필요로 하는 소프트웨어의 모든 것을 관리한다는 것을 말한다. 이 문장에서 가장 중요한 구문은 소프트웨어의 모든 것 all of software이다. 즉, 엔터프라이즈 아키텍처란 모든 단계의 디자인에서 소프트웨어가 필요로 하는 모든 요소들을 생성하기 위한 통합된 개발 플랫폼이다. -  p.5, p.6


이 책은 에릭 에반스의 도메인-드리븐 디자인 DDD 와 마틴 파울러의 패턴 오브 엔터프라이즈 어플리케이션 아키텍처 PoEAA 에서 제안된 개념들을 닷넷에서 어떻게 적용될 수 있는지, Structuremap, NHibernate 등의 프레임워크가 구현한 개념이 무엇이며 그 적용되는 방법은 무엇인지에 대해 다루고 있습니다. 실제 자신의 프로젝트에 이런 프레임워크를 적용해 보지 않더라도 작동방법을 알 수 있고, 엔터프라이즈의 다양한 주제에 대한 인덱스를 한권의 책을 통하여 제공받을 수 있다는 것은 개발자들에게 매우 행운이 아닐 수 없습니다.

이 책의 좋은 점중 하나는 개념의 도입부에 그 개념이 도출된 히스토리를 담고 있는 것입니다. 이런 내용은 오랜 경험과 같은 것인데 책보다는 사수로 부터 일대일로 전해지는 내용이어서 도자기를 만드는 기술이 그러하듯이 단절되기 쉬운 것이죠.

책 한권을 읽는다고 해서 엔터프라이즈 아키텍처의 모든 것을 알 수 있다고 기대하는 건 아니겠죠? 저자는 서문에서 아래와 같이 밝히고 있습니다.

만일 여러분이 개발에 매우 능하며 블로그와 포럼에 많은 시간을 할애하는 오픈 소스 전문가라면 지금 당장 이 책을 내려놓기 바란다. 이 책은 엔터프라이즈의 모든 것을 다루는 완벽한 참고서가 아니다. 이 책은 테스트 우선 방법론을 강요하지 않는다. 또한 애자일 선언문을 내세우지도 않으며 엔터프라이즈 전문가에게 어필하는 책도 아니다. - 저자 서문 중에서


이 책은 엔터프라이즈 아키텍처의 많은 필수 개념과 최신의 프레임워크들을 소개한다 라는 관점에서 매우 가치있는 책이라 생각됩니다. 포스트의 제목이 적용하기 안내서 인 것은 바로 이 때문입니다.


관련링크
알라딘 책 사러가기 - 가격비교에서 강컴이 2~3천원 더 싸다. 책은 예스24에서 샀다.  <-- 이런 난 뭐니~~~


### 끝.



저작자 표시
신고

이 글을 Twitter / Facebook 에 공유하기
이 글이 유익하다면 아래의 트위터 버튼을 눌러 공유해 주시거나, 페이스북 "좋아요" 버튼을 눌러 주세요.

   


Posted by 반더빌트
성숙한 개발팀에서 어플리케이션 또는 서비스 개발함에 있어 종종 프레임워크를 만든 다는 말이 거론됩니다. 이는 아직 개념이 잡히지 않은 개발자들을 혼란스럽게 만드는 말이 될 수가 있습니다. 범위에 대한 정의가 생략되어 말해지기 때문이죠. 프레임워크를 개발한다는 것은  매우 넖으면서도 깊은 지식과 경험을 필요로 하며, 닷넷프레임워크와 같은 '기반 프레임워크'를 만드는 일은 엄청난 인원, 자원, 시간이 소요되는 작업입니다. 인-하우스 개발팀이 프레임워크를 개발해 사용한다는 말은 닷넷프레임워크와 같은 '기반 프레임워크'가 아닌, 어플리케이션 프레임워크를 말하는 것입니다. 이 포스트는 어플리케이션 프레임워크란 무엇이며 개발기법에 대한 것입니다. 포스팅의 그림과 내용은 Developing Application Framework in .NET by Xin  Chen (ISBN:1590592883) , Apress , 2004  일부 내용 요약 및 정리입니다.

“당신이 애플파이를 맨 처음부터 만들고자 한다면, 세상을 먼저 만들어야 할 것이다.  If you want to make an apple pie from scratch, you must first create the universe.”
—칼 세이건, Carl Sagan

어플리케이션 프레임워크란?

어플리케이션 프레임워크란 이 어떠한 문제를 해결하는 어플리케이션을 개발할 때  '어떻게 하면 맨손으로 개발 하지 않을 수 있을까?' 의 고민으로 부터 시작된 것입니다. 맨손으로 시작하지 않기 위해서는 구조화된 '그 무엇'을 개발자에게 제공해야 하며, 그 '무엇' 이 바로 '어플리케이션 프레임워크 이다' 라고 Xin Chen이 제안한 용어(selling idea) 입니다. 닷넷, 자바 개발자들은 닷넷프레임워크 와 자바프레임워크 위에서 개발을 합니다. 각각의 문제를 해결하기 위한 코드의 덩어리, 공통문제 해결을 지원하는 라이브러리등을 개발하게 되죠. 어플리케이션을 개발 할 때마다 데이터베이스로부터 화면표시까지 모든 개개의코드 덩어리를 만들고 있다면 여러분은 맨손으로 세상을 만들고 있는 중 입니다. 

인-하우스 개발팀이 프레임워크라 불리우는 것을 만들고 있다면 닷넷프레임워크 또는 자바프레임워크 위의 계층에서 돌아가는 '어플리케이션 프레임워크'라는 것을 개발한다는 뜻 이며, 삼성 SDS 의 애니프레임(Anyframe), SK C&C의 NEXTCORE 등이 어플리케이션 프레임워크라 할 수 있습니다.


어플리케이션 프레임워크 왜 사용하는가?

우리가 개발을 할때 마다 거의 같은 일을 하는 코드들을 개발자 개개인이 나름의 스타일로 만드는 일이 대부분 입니다. 매번 같은 일을 맨손으로 만드는 일이 허다하고, 같은 문제를 해결함에도 모두 다른 스타일로 만들어 진 것은 '개발' 과 '관리'의 악몽을 수반합니다.

어플리케이션 프레임워크는 일관된 개발을 지원하고, 경계설정을 강제함으로써 모듈성 Modularity, 재사용성 Reusability, 확장성 Extensibility, 단순성 Simplicity, 유지관리성 Maintainability 의 이익을 얻게 됩니다.


프레임워크 레이어 계층 구조


어플리케이션 프레임워크 레이어, 전체 시스템에서의 각각 프레임워크의 책임. 하위레이어로 갈수록 특정 비즈니스와 커플링이 느슨해 짐



비즈니스 어플리케이션

비즈니스 영역의(Business-Domain) 의 문제를 해결하는 어플리케이션.


어플리케이션 프레임워크

어플리케이션 프레임워크는 Domain-Specific Framework 와 Cross-Domain Framework Layer로 구분됩니다.

Domain-Specific Framework Layer

문제영역에 특화된 작업을 지원하는 프레임워크. 비즈니스 어플리케이션과 하부 레이어가 완전히 분리 된다면 개발과 유지관리에서 레고블록 처럼 결합하고 교체할 수 있겠지만, 이것은 이상(ideal)일 뿐 문제를 해결하기 위해서는 연관이 필연적으로 발생합니다. Domain-Specific 프레임워크는 비즈니스 어플리케이션 문제영역에 특화된 일을 처리하기 위한 프레임워크 입니다.

Cross-Domain Framework Layer

문제영역과 상관없이 모든 문제 영역에서의 공통 문제 해결을 지원하는 프레임워크를 의미합니다. MVC 프레임워크, Entity Framework, Spring 프레임워크 등의 문제영역과 상관없이 여러 비즈니스 도메인 공통주제를 지원하는 프레임워크 레이어 입니다.


프레임워크 개발 기법


Common spots - 모든 비즈니스 어플리이션에서 반복적으론 나타나는 공통 주제로써, 어플리케이션에 따라 변경할 필요 없이 인스턴스화 해서 사용할 수 있는 지점.

Hot spots - 개별 비즈니스 어플리케이션에 따라서 커스터마이즈 되어야 작동하는 지점.

상속을 통한 접근법 Inheritance Approach
공통된 문제를 해결하지만 어플리케이션에 특화되어 처리되어야 하는 Hot Spot 지원하기 위한 접근법으로는 상속 Inheritance 이 있으며, 상속은 override 를 이용한 hook method 방법과  해결방법의 형태를 잡아 놓는 Template Method 방법이 있습니다.

조합을 통한 접근법 Composition Approach
Hot Spot 문제를 해결하는 간단한 접근법이 상속 접근법이지만 이는 부모의 상세 detail 을 너무 많이 알게 된다는 잠재적인 문제를 가지고 있습니다. 조합을 통한 접근법은 Pluggable components 기법을 사용하며 Interface 의 구현으로 Hot Spot을 작동하게 만드는 방법입니다.


White-box framework
추상클래스 abstract 들로 구성된 프레임워크로 상속 접근법으로 Hot Spots을 작동하도록 하는 구조를 가지는 프레임워크 입니다. 옷으로 치자면 맞춤복.


Black-box frameworks
옷으로 치자면 기성복 Ready-Made, Ready-To-Use, 바로 사용 할 수 있는 클래스와 서비스들로 구성된 프레임워크입니다. Composition 접근법으로 Hot Spots 을 지원합니다.

Gray-box frameworks
옷으로 치면 반-기성복 Measure-To-Made,  White-box 와 Black-box가 결합된 형태로 상속 접근법과 조합 접근법 모두를 지원하는 프레임워크.


White, Black, Gray의 세가지 접근법은 성능, 유지관리성, 재사용성 에서 트레이드-오프 (동시에 성취 될수 없는 배타적인) 특성이 있음을 유념해야 합니다.

파운데이션 프레임워크

닷넷프레임워크와 같은 기반 프레임워크 입니다.

운영체제

파운데이션 프레임워크를 호스팅 하는 운영 시스템 입니다.

결론

일선 웹서비스와 소프트웨어 개발 회사의 프레임워크 팀은 바로 '어플리케이션 프레임워크'를 작업하는 팀을 말하며 ,유지관리 될 수 있는 소프트웨어와 서비스를 만들고 싶다면, 단순 공용 라이브러리가 아닌 어플리케이션 프레임워크를 구축하는 것을 심각하게 고려해 봐야 합니다. 


### 끝.

참고자료 :

Developing Application Framework in .NET by Xin Chen (ISBN:1590592883) , Apress , 2004
저작자 표시
신고

이 글을 Twitter / Facebook 에 공유하기
이 글이 유익하다면 아래의 트위터 버튼을 눌러 공유해 주시거나, 페이스북 "좋아요" 버튼을 눌러 주세요.

   


Posted by 반더빌트


티스토리 툴바