Skip to content

Instantly share code, notes, and snippets.

@vandbt
Last active May 21, 2018 02:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vandbt/480c9f9c918a2ad1d1838d5741ba89bd to your computer and use it in GitHub Desktop.
Save vandbt/480c9f9c918a2ad1d1838d5741ba89bd to your computer and use it in GitHub Desktop.
어플리케이션 프레임워크란?

Framework Layers

인-하우스 개발팀이 프레임워크를 개발해 사용한다는 말은 닷넷프레임워크와 같은 '기반 프레임워크'가 아닌, 어플리케이션 프레임워크를 말하는 것입니다. 이 포스트는 어플리케이션 프레임워크란 무엇이며 개발기법에 대한 것입니다. 포스팅의 그림과 내용은 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) 입니다. 닷넷, 자바 개발자들은 닷넷프레임워크 와 자바프레임워크 위에서 개발을 합니다. 각각의 문제를 해결하기 위한 코드의 덩어리, 공통문제 해결을 지원하는 라이브러리등을 개발하게 되죠. 어플리케이션을 개발 할 때마다 데이터베이스로부터 화면표시까지 모든 개개의코드 덩어리를 만들고 있다면 여러분은 맨손으로 세상을 만들고 있는 중 입니다.

인-하우스 개발팀이 프레임워크라 불리우는 것을 만들고 있다면 닷넷프레임워크 또는 자바프레임워크 위의 계층에서 돌아가는 '어플리케이션 프레임워크'라는 것을 개발한다는 의미 입니다.

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

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

어플리케이션 프레임워크는 일관된 개발을 지원하고, 경계설정을 강제함으로써 모듈성 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

끝.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment