지난 시간에는 프레임웍 기반 개발이란 어떤 의미가 있으며 이때 사용할 수 있는 범용 개발 프레임웍은 어떤 것들이 시장에 나와 있는지에 대해 살펴보았다.

Framework-based Development – 개념
Framework-based Development – 적용
Framework-based Development – 종류
Framework-based Development - 오픈 소스 적용 사례

이번 시간에는 주제를 좁혀서 범용 개발 프레임웍 중에서 닷넷 개발자 생태계 내에서 성장하고 발전해가는 오픈 소스 프레임웍의 적용 사례를 살펴보고자 한다. 오픈 소스 프레임웍들을 실제 적용하여 비지니스를 하고 있는 사례들을 살펴봄으로해서 닷넷 개발자 생태계의 건강성을 확인하고 닷넷 오픈 소스 프레임웍의 현재와 미래를 가늠해보는 시간이 되었으면 한다.

대부분의 SI 업체들은 SI 프로젝트에서 공통적으로 사용할 표준 개발 프레임웍이라는 것을 가지고 있는데, 대부분 오픈 소스 기반의 범용 프레임웍들을 조합하여 기본적인 기능을 제공하고 이를 기반으로 자사가 가지고 있는 도메인 특화된 노하우를 올리거나 일반 범용 프로임웍이 제공하지 못하는 모니터링이나 툴 최적화 기능 등을 묶어 제공하는 경우가 일반적이다. 아래 그림에서 보듯이 범용 프레임웍들의 조합을 통해 시장에서 입증된 QoS (품질요소)를 제공하고 그 기반위에 고객에게 전달할 가치를 부가적으로 제공하게 된다. 고객에게 전달할 가치가 범용 프레임웍만으로 끝난다면, 이것만 가지고 고객에게 어필(별도의 비용 청구 등)할 수 없을 것이다. 혹은 특정 회사가 개발하여 제공하는 프레임웍이라는 것이 시장의 범용 프레임웍들의 조합만으로도 제공할 수 있는 가치를 전달한다면 고객에게 외면 받을 것은 자명하다.

국내외를 막론하고 기업이 오픈 소스 기반의 프레임웍을 사용한 경우 일반적으로 그 사실을 외부에 알리는 것을 꺼려하는 경우가 있다. 이런 이유로 Spring.NET의 해외 적용 사례를 보더라도 유럽의 굴지의 온라인 여행사라든가, 어떤 도메인의 유명한 기업 정도만 밝히는 경우가 허다하다. 국내에도 마찬가지여서 외부로 드러나는 적용사례는 극히 드물다. 오늘 소개할 사례를 이전 DevDays 2008과 Open & Interop Day에서 적용 사례 발표를 했던 기업들이다.

아래는 이랜드 시스템의 표준 개발 프레임웍에 적용되어 있는 오픈 소스 프레임웍에 대한 내용이며, 황용호 팀장께서 발표하신 슬라이드에서 가져왔다. 이랜드 시스템의 Formular#은 Spring.NET + NHibernate의 조합을 통해 기본 기능을 제공하고 비지니스 특성상 북경 개발 센터와의 원활한 협업을 위해 사용되는 툴들에 대한 add-on 모듈이라든지, 테스팅 자동화와 같은 기능을 제공하고 있다.

예스24에서는 iBATIS.net을 현재 운영 중인 쇼핑몰에 적용한 사례를 최만석 팀장께서 발표하였으며 아래는 그 일부이다.

SK C&C에서는 개발 프레임웍인 NEXCORE.NET에 적용된 오픈 소스 프레임웍에 대해 설명을 하셨으며 아래는 이진우 대리께서 발표한 자료에서 발췌했다. NEXCORE.NET은 ASP.NET MVC + Spring.NET + iBATIS.NET 혹은 Entity Framework 등으로 구성되어 있으며 Visual Studio에 통합된 자동화가 인상 깊은 프레임웍이다.

위에서 언급된 세가지 사례는 발표 자료와 함께 동영상 자료가 DevDays 2008에 게시되어 있으므로 좀 더 상세한 내용을 원하시는 분은 DevDays 2008 싸이트를 참고하시길...

그 밖에도 국내 또 다른 SI 업체의 개발 프레임웍에 ASP.NET MVC가 사용되고 있으며, 닷넷 솔루션 파트너사의 일부 솔루션에도 NHibernate가 사용되고 있음을 확인할 수 있었다.

마지막으로, 오픈 소스 프레임웍들을 적용하여 사업을 할 경우에 이들에 강제하고 있는 라이선스 정책에 대해서도 관심을 가질 필요가 있다. 오픈 소스는 곧 무료이기에 내 맘대로 가져다 고쳐 쓰면 되지..라는 잘못된 생각에 빠져 마냥 가져다 쓰다가 저작권 위반으로 소송으로 가는 경우가 심심찮게 보고되고 있다. 위에서 언급된 것들 중 가장 많이 사용되는 프레임웍의 라이선스 정책을 보면, Spring.NET과 iBATIS.NET이 Apache License 2.0을 채택하고 있으며, NHibernate가 LGPL을 채택하고 있다. 즉, 이것들 모두 상용 제품 만드는데 사용할 수 있으나 NHibernate가 채택한 LGPL의 경우에는 좀  더 엄격하여, 가져다가 소스를 수정했으면 NHibernate 관련 부분의 소스를 공개하여야 하는 제약이 있다. 물론 이 보다 더 엄격하여 GPL의 경우, 오픈 소스 소프트웨어를 가져다 쓰면, 이와 링크 형태로 엮일 지라도 메모리 상의 영역을 함께 쓰는 모든 소프트웨어의 소스 코드 전부를 공개해야하며 상용 소프트웨어와의 결합을 금지하고 있다. 다만, 이 경우에도 배포만 하지 않고 웹 싸이트에서 서비스 형태로 제공된다면 설령 GPL일 지라도 공개할 의무는 없다.

각종 오픈 소스 소프트웨어의 라이선스 정책에 대한 간단한 설명과 비교자료를 원하시는 분은 예전 정통부와 컴퓨터프로그램보호위원회가 함께 펴 낸 오픈 소스 SW 라이선스 가이드를 참고하시길...

아울러 알려지지 않았지만, 시장에서 오픈 소스 프레임웍을 적용하여 프로젝트가 진행되었거나 진행되고 있는 곳이 있다면 가능한 선에서 그 정보를 댓글이나 메일을 통해 공유하여, 오픈 소스를 적용하고자하나 용기가 없어 주저하고 계신 분들께 힘을 실어주시길....

Posted by 장현춘

댓글을 달아 주세요

  1. Favicon of http://funnygangstar.tistory.com/ BlogIcon 권효중 2009.01.28 23:13  댓글주소  수정/삭제  댓글쓰기

    완료된 프로젝트는 아니지만 현재 저희팀이 개발 진행중인 모국가의 보건복지부 의료정보 포탈 사이트가 ASP.NET MVC + jQuery + iBatis.Net으로 개발되고 있습니다.
    후에 프로젝트가 종료되어 가능하다면,,, 개발 경험을 공유토록 하겠습니다.

    항상 유용한 글 감사히 보고 있습니다^^

  2. Favicon of https://acroama.net BlogIcon 장현춘 2009.01.28 23:39 신고  댓글주소  수정/삭제  댓글쓰기

    아.. 그러시군요. 참 반갑네요. ^^
    제가 잘 정리해두었다가 다시 공유하도록 하겠습니다.
    님의 블로그에 유용한 정보가 많네요. 많이 보고 배우도록 하겠습니다.
    감사합니다.

  3. 임영진 2009.02.25 18:00  댓글주소  수정/삭제  댓글쓰기

    정말 필요로했던 유용한정보를 얻어갑니다. 많이 배웠습니다.
    감사합니다.

  4. Favicon of https://acroama.net BlogIcon 장현춘 2009.02.26 13:07 신고  댓글주소  수정/삭제  댓글쓰기

    찾아주셔서 감사합니다.
    관심을 갖고 찾아보니 오픈 소스 프레임웍들이 닷넷의 여러 부분에 많은 기여를 하고 있더군요. Windsor 컨테이너와 NHibernate를 상용 BPM 솔루션에 적용한 파트너도 있더군요. 근래에 다양한 영역에서 닷넷 개발자 생태계의 건강성을 확인하고 있으며 실제 개발에 참여한 분들의 경험담을 각종 행사를 통해 직접 개발자들에게 전달하려고 생각중입니다. 감사합니다.

한국마이크로소프트의 닷넷 파트너인 엔소아 컨설팅에서는 닷넷 오픈 소스 프레임웍의 활성화를 위해 "Spring.NET 프레임웍 활용 가이드"를  만들고 있으며 현재까지 완성된 v0.2 를 공개하였다. 닷넷에서, 특히 국내 닷넷 프로젝트에서 관심이 점점 증가하고 있으나 쉽게 접하여 활용할 수 있는 가이드 형태의 문서가 많지 않은 현실에서 엔소아 컨설팅의 이러한 시도에 많은 박수를 보내고 싶다.

엔소아 컨설팅에서 작성중인 "Spring.NET 프레임웍 활용 가이드"는 여기서 다운로드 받을 수 있다.
==> 다운로드

Posted by 장현춘

댓글을 달아 주세요

Sharp Architecture

프레임웍 2008.06.05 14:57

마이크로소프트가 운영하는 오픈 소스 프로젝트를 위한 호스팅 싸이트인 CodePlex(http://www.codeplex.com)에 지난 5월 16일자로 S#arp Architecture라는 프로젝트가 올라왔다. CodePlex에서 호스팅되는 프로젝트들은 오픈 프로젝트 형태로 개발자들간의 자유로운 의사소통을 통해 가장 바람직한 소프트웨어를 만들어내는 방향으로 진행되고 있으며, S#arp Architecture도 현재 다양한 사람들로부터 피드백을 받으며 나아가고 있다.

S#arp Architecture는 시장에서 가장 많이 선호되는 오픈 소스 프레임웍들을 조합하여 빠르고 견고하게 웹 애플리케이션을 만들 수 있는 프레임웍들의 조합이다. 여기에 포함되는 프레임웍들로는 ASP.NET MVC Preview 2 + Spring.NET 1.1.1 + NHibernate 1.2 등이다. 국내 닷넷 환경에서도 프레임웍 기반 개발 방식에 대한 관심이 고조되고 있으며, 특히 오픈 소스 프레임웍의 활용에 대한 문의가 부쩍 늘고 있는 상황에서 이에 부응이라도 하듯이 S#arp Architecture가 나타났다. S#arp Architecture는 가장 현실성있는 프레임웍의 조합을 나타내는 하나의 예일 뿐이며, 시장의 다양한 요구에 맞는 다양한 조합은 얼마든지 가능하다. 국내 개발자들을 만나본 결과 오픈 소스에 대해 관심을 넘어 실제 프로젝트에 적용하고자 자문 및 테스트를 진행하는 경우가 점차 늘고 있다.

한국마이크로소프트에서도 프레임웍 기반 개발을 활성화시키기 위해 각종 세미나를 진행해왔으며, 개발자들 사이에 이러한 논의가 활성화될 수 있도록, 또한 필요한 개발자들이 쉽게 접하고 학습할 수 있도록 컨텐츠 개발을 위해 노력중이며 조만간 온/오프라인을 통해 함께 할 수 있는 방안을 제시할 예정이다.

codeplex_logo

Posted by 장현춘

댓글을 달아 주세요

  1. 2009.03.04 13:12  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. Favicon of https://acroama.net BlogIcon 장현춘 2009.03.05 00:24 신고  댓글주소  수정/삭제  댓글쓰기

    음.. 제가 깊이가 없어서 잘 이해를 못하겠네요. 무엇이 되었건 프레임웍을 도입하게 되면 항상 복잡성을 증가하고 학습이 필수적입니다. 모든 사람이 겪는 애로사항이며 고영민님만의 문제가 아니니 마음을 좀 여유롭게 가지심이... EntLib와 같은 라이브러리성 프레임웍은 포함되어 있는 기능 중에서 필요한 부분을 필요한 시점에 사용하는 형태이며 웹이든 데스크탑 애플리케이션이든 상관이 없지요. 쿼리를 말씀하신 것으로 보아 EntLib중 Data Access Block을 의미하신 듯 한데, 다른 많은 프레임웍과 마찬가지로 좀 더 편리한 클래스들로 ADO.NET API들을 wrapping한 것입니다. http://www.codeplex.com/entlib 를 참조하시면 더 많은 정보를 얻으실 수 있습니다. (제가 잘 몰라서... ^^)
    iBATIS.NET은 이미 시장에서 검증 받은 OR Mapper이며 국내에서도 상용 프로젝트에 여럿 사용중입니다. 제 블로그를 살펴보시면 알겠지만, 저는 오픈 소스 기반의 많은 프레임웍이 생겨나서 닷넷 생태계가 건강해지기를 바라는 사람입니다. 물론 여기에 마이크로소프트도 각종 application block이나 프레임웍 등을 오픈 소스로 공개하면서 때론 경쟁하면서 때론 협력하면서 오픈 소스 활성화에 기여하고 있습니다. 도메인에 특화된 것이 아닌 소위 범용 개발 프레이임웍은 가급적 시장에서 생태계를 이루어 자생적으로 발전해갈 수 있는 오픈 소스 기반의 프레임웍을 적극 추천하는 입장입니다.
    국내 시장의 반응은 iBATIS.NET을 더 많이 사용하는데, 이유는 처음에 접하고 사용하기가 NHibernate보다 쉽다는 것이 중론입니다. 제가 맡은 역할이 Architect Evangelist이다 보니 특정 프레임웍에 대한 깊이보다는 닷넷 개발 자체가 프레임웍 기반으로 가야한다는 등의 방향성이나 아키텍트 혹은 Decision maker들의 마음을 움직이기 위한 전략적인 부분에 더 포커스하고 있습니다.

ASP.NET MVC 프레임웍의 출시와 더불어 함께 부각되고 있는 것이 IoC (Inversion of Control) 혹은 DI (Dependency Injection) 컨테이너이다. 마틴 파울러는 이 두 용어의 쓰임새를 분명히 하고자 패턴 이름으로 DI를 쓰자고 했으나 여전히 시장에서는 IoC, DI, Hollywood Principle 등을 거의 같은 의미로 사용하고 있다. 
현재 ASP.NET과 연동하여 비지니스 티어에 사용할 수 있는 DI Container로 주로 언급되는 것들로는 StructureMap, Windsor Container, Spring.NET, ObjectBuilder 등이 있다.

StructureMap은 Jeremy D. Miller가 만들고 유지보수호가 있으며, 닷넷 DI 컨테이너 가운데 가장 오래된 것이며 가장 널리 사용되고 있다.

ObjectBuilder는 Enterprise Library (EntLib) 2.0 부터 도입되기 시작하여 EntLib를 구성하는 각종 App Block들의 Factory 역할을 하는 DI 컨테이너이다. 다만, EntLib를 염두해두고 만들어졌기 때문에 외부 개발자가 애플리케이션 개발에 활용하기에 적합한 API 등을 갖추고 있지는 않았고 불편하다. 이점 때문에 많은 개발자들이 이의 개선을 요구하였고 마침내, ObjectBuilder를 대신할 새로운 Lightweight한 DI 컨테이너의 개발 계획이 발표되었다. EntLib v4 개발의 일환으로 발표되었지만, EntLib와는 함께 배포도 하고 혹은 DI 컨테이너 별도로 배포하여 다른 용도로의 활용을 쉽도록 하였으며 아울러 EntLib v4도 다른 DI 컨테이너와 사용될 수 있도록 할 예정이다. 자세한 사항은 아래 싸이트를 참조하길...
Enterprise Library v4 개발

Spring.NET은 자바 진영에서의 성공에 힘입어 닷넷으로 포팅된 DI 컨테이너이다. Spring.NET은 Spring.Java와 마찬가지로 핵심이 되는 DI 기능이외의 모든 모듈은 쉽게 빼고 넣을 수 있어서 개발자가 원하는 부분만을 취할 수 있다. 아울러 대부분의 모듈은 이미 시장에서 그 품질이 인정된 다른 프레임웍이나 기술을 그대로 활용할 수 있도록 일종의 Wrapper와 같은 모듈만을 제공함으로써, 개발자가 갖고 있는 다른 프레임웍이나 기술에 대한 경험을 그대로 활용할 수 있는 융통성을 제공하고 있다.  Spring.NET은 다음과 같은 모듈로 구성되어 있다.
Spring.Core : DI 기능을 구현하는 Factory이자 Registry와 같은 역할을 한다.
Spring.Aop : DI와 더불의 Spring의 핵심 기능으로 불리며 AOP (Aspect-oriencted Programming)을 제공한다.
Spring.Data : ADO.NET에 대한 wrapper 기능을 제공
Spring.Data.NHibernate : NHibernate를 사용할 수 있는 wrapper 기능을 제공
Spring.Web : ASP.NET을 사용할 때 Page에 대한 DI 기능까지 제공한다.
Spring.Web.Extensions : 웹 서비스를 자바스크립트에서 접근할 수 있도록 해주는 기능이나, WCF 3.5에서는 ASMX 웹 서비스나, WCF 서비스에 기본 기능으로 제공해주고 있기 때문에 그다지 사용할 필요가 없을 듯..
Spring.Services : 일반 닷넷 클래스 (PONO - Plain Old NET Object)에 대해 자동으로 proxy 등을 생성해줌으로써 ASMX 웹 서비스, Enterprise Services, .NET Remoting 이 가능해도록 하는 기능이나, WCF가 이미 제공하고 있다. 다른 점은 Spring.Services는 각종 proxy등을 통해 기존 기술을 사용할 수 있게 해주는 것이나, WCF는 새로운 방식으로 더 나은 성능을 제공한다는 점... 예전 기술을 사용하는 경우가 아니면, 별로 효용이 없을 듯.
Spring.Testing.NUnit : 단위 테스트 NUnit 사용하도록 하는 기능
전반적으로 Spring.NET은 .NET Framework 2.0 기반으로 작성되었으며, 자바와 달리 닷넷의 빠른 변화를 따라잡지 못하는 면이 있다.

Posted by 장현춘

댓글을 달아 주세요