NeoDEEX

NeoDEEX 개발 프레임워크 홈 페이지
PM> Install-Package NeoDEEX4.Free

What’s the NeoDEEX?

NeoDEEX는 ㈜미니소프트에서 개발하고 유지/보수하는 닷넷 플랫폼의 개발 프레임워크 입니다. 개발 프레임워크가 무엇인지 생소한 독자가 있다면 개발 프레임워크에 대해 소개하고 있는 포스트를 먼저 참고하시는 것이 좋을 듯 싶습니다. 이 글에서는 NeoDEEX가 무엇이며 그 장점은 무엇인가에 대해 설명하고자 합니다. 이 글에서 언급하는 Fox Data Access, Fox DB Profile, Fox Query, Fox Transactions 등  NeoDEEX의 상세 기능들에 대해서는 NeoDEEX 기능 목록 문서NeoDEEX 소개 PPT를 참고하시기 바랍니다.

NeoDEEX is ……

NeoDEEX는 닷넷 프레임워크 4.0 이상의 환경에서 사용할 수 있는 어플리케이션 개발 프레임워크(이하 개발 프레임워크) 입니다. 개발 프레임워크는 어플리케이션을 개발하는데 사용할 수 있는 일련의 클래스 라이브러리, 도구들, 명명 표준, 코딩 표준, 아키텍처 표준 등을 말합니다. NeoDEEX와 유사한 개발 프레임워크로는 오픈 소스 형태의 Spring.NET, 마이크로소프트에서 제공하는 Enterprise Library(이하 EL) 이 있습니다. 이 두 개발 프레임워크 외에는 개발 프레임워크라는 이름으로 판매되는 제품은 거의 찾을 수 없으며 일부 컴포넌트 슈트 제품(DevExpress)에서 어플리케이션 프레임워크를 포함하여 판매하고 있습니다. 국내에서는 일부 닷넷 컨설팅 회사에서 개발 프레임워크를 판매하고 있지만 별도의 제품이라기 보다는 컨설팅의 과정에서 제공하고 있습니다.

NeoDEEX는 2002년 알파 버전이 만들어진 후, 2004년에 최초의 1.0 버전이 상용으로 판매되었습니다. 그 이후로 2.x 버전이 여러 기업의 개발 프레임워크로 채용되었고 이번에 4.0이 새로이 출시를 앞두고 있습니다. 4.0 버전의 출시는 10월 초로 계획되어 있습니다.

4.0 버전은 기존 2.x 버전에 비해 개발자들의 개발 생산성 향상을 위한 다양한 기능이 대폭 강화되었고 어플리케이션 성능을 측정하고 추적하며 튜닝 하기 위한 기능이 새로이 추가되었습니다. 또한 로깅, 트랜잭션 처리, WCF 웹 서비스, 윈폼 UI 등 기존 기능들이 크게 향상 되었습니다.

NeoDEEX를 사용하여 어플리케이션을 개발하면 개발 생산성을 10~30% 향상 시킬 수 있으며 우수한 품질의 어플리케이션을 손쉽게 개발할 수 있습니다. 또한 NeoDEEX 기반의 어플리케이션들은 일정 수준의 성능을 보장하며, 또 어플리케이션의 성능이 어떠한지 손쉽게 감시하고 추적할 수 있어서 성능 튜닝 역시 손쉽게 수행할 수 있습니다. 이제부터 구체적으로 NeoDEEX가 어떻게 개발자들의 개발 생산성을 향상시키고 어플리케이션 품질을 높일 수 있으며 어플리케이션 성능 향상에 어떤 도움을 주는지 구체적으로 살펴보도록 하겠습니다.

image
[그림1] NeoDEEX의 장점

High Productivity

NeoDEEX는 개발자들이 지루하고 반복적인 코드를 최대한 작성하지 않도록 함으로써 프로그램을 작성하는데 보다 편리하게 해줄 뿐만 아니라 어플리케이션의 핵심 비즈니스 로직이나 SQL 문장을 작성하는데 집중할 수 있도록 해줍니다.

간결한 코드

NeoDEEX를 사용하여 코드를 작성하면 그렇지 않았을 때에 비해 훨씬 더 적은 양의 코드만을 작성해도 됩니다. 예를 들어, ADO.NET 만을 사용하여 트랜잭션 기반의 데이터베이스를 액세스 하는 코드와 NeoDEEX의 Fox Data Access 기능과 Fox Transactions 기능을 사용하여 트랜잭션 기반 데이터 액세스 코드의 비교는 [그림2]와 같습니다.

image
[그림2] NeoDEEX를 사용한 경우와 그렇지 않은 경우의 코드 비교. (클릭 시 확대)

[그림2]의 두 코드는 동일한 작업을 수행하지만 NeoDEEX 기반 코드는 데이터베이스 연결 관리, 트랜잭션 제어, 에러 로깅을 프레임워크가 처리해 주기 때문에 이와 관련된 별도의 코드를 작성할 필요가 없습니다. 개발자는 AOP(Aspect Orientied Programming) 기반의 특성(attribute)를 명기하는 수준의 코드만을 작성하면 되고 핵심 비즈니스 로직이라 할 수 있는 SQL 문장을 작성하는 데에만 집중할 수 있습니다. 만약 DB 전문가가 저장 프로시저를 작성해 준다면 개발자는 더욱더 빠르게 데이터 액세스 코드를 작성할 수 있을 것입니다.

더욱이 [그림2]의 두 코드는 성능 차이가 거의 나지 않습니다. 이는 NeoDEEX 기반의 코드들은 성능 측면에서도 손해를 거의 보지 않고 훨씬 더 적은 노력만을 요구한다는 것입니다. 따라서 동일한 시간이 주어진다면 NeoDEEX를 사용하는 개발자가 더 많은 결과물을 작성할 수 있게 됩니다.

Fox Query

NeoDEEX의 Fox Query는 iBatis와 유사한 SQL 매퍼(혹은 DB 매퍼)를 제공합니다. Fox Query는 SQL 문장과 매개변수 정보를 담고 있는 XML 파일(foxml)을 읽어 쿼리를 수행하고 그 결과를 반환해 주기 때문에 데이터 액세스 컴포넌트를 아주 간편하게 작성할 수 있습니다. Fox Query를 위해 NeoDEEX에서는 전용 Fox Query Editor를 제공합니다. Fox Query Editor는 Visual Studio 2010에 완벽하게 통합되어 있어서 SQL 문장을 담고 있는 XML 파일을 직접 작성하고 수정하는 작업을 편리하게 도와 줍니다.

image
[그림3] Visual Studio에 통합된 Fox Query Editor

Fox Query Editor는 Foxml을 편집하는 기능 뿐만 아니라 쿼리 문장에서 매개변수를 추출해 주는 기능, 쿼리 인라인 테스트 기능, DB 스키마로부터 SQL 문장 생성 등의 기능을 포함하고 있으며 SQL 문장으로부터 C# 코드를 생성하는 기능도 제공합니다.

image
[그림4] Foxml로부터 C# 코드 생성

다양한 아이템 템플릿

NeoDEEX 설치 패키지에는 서버 측 비즈니스 로직 컴포넌트, 데이터 액세스 컴포넌트를 비롯하여 클라이언트 측 화면들을 위한 다양한 코드를 제공합니다. 이들 코드는 Visual Studio의 아이템 템플릿으로 제공되기 때문에 개발자는 손쉽게 서버 측 컴포넌트와 클라이언트 측 화면들의 뼈대를 추가하고 개발의 시작점으로 잡을 수 있습니다.

재사용 가능한 컴포넌트들

NeoDEEX는 어플리케이션 내에서 반복적이고 동일하게 나타나는 구성 요소에 대한 구현을 제공합니다. 예를 들어, 단순히 클라이언트로부터 매개변수를 받아 비즈니스 컴포넌트로 전달하고 비즈니스 컴포넌트의 결과를 클라이언트로 반환하는 웹 서비스는 개발자들이 매번 반복적으로 작성할 필요가 없습니다. NeoDEEX 프레임워크에서 제공하는 FoxBizService를 사용하면 개발자는 이러한 웹 서비스 코드를 작성할 필요가 없습니다.

비슷하게 FoxBizComponet, FoxDacComponent를 사용함으로써 개발자는 비즈니스 컴포넌트, 데이터 액세스 컴포넌트를 작성할 필요가 없습니다. 다만, 특별한 비즈니스 로직을 담고 있거나 데이터 가공을 수행하는 데이터 액세스 컴포넌트는 직접 개발자가 코드를 작성해야만 합니다. 하지만 이러한 컴포넌트들은 전체 어플리케이션에서 20%를 넘지 않습니다.

High Performance

http://minisoft-site.azurewebsites.net/nxblog/

NeoDEEX 프레임워크는 설계에서 개발까지 어플리케이션 성능을 최대한으로 고려한 개발 프레임워크 입니다. 어플리케이션의 성능을 극대화 할 수 있는 어플리케이션 아키텍처를 기반으로 하고 있으며 이 어플리케이션 아키텍처는 NeoDEEX 1.0이 적용된 2003년부터 지금까지 여러 프로젝트에서 성능상 아무런 문제가 없다는 것이 이미 검증되었습니다.

성능 지원 기능들

NeoDEEX는 어플리케이션 성능 향상을 위한 다양한 기능들이 포함되어 있습니다. NeoDEEX의 성능 관련 기능들을 통해 개발자는 적은 노력으로도 빠른 응답 속도를 내는 어플리케이션을 손쉽게 개발할 수 있습니다.

Fox Data Access는 배치 업데이트 기능을 통해 다수의 데이터를 추가/수정/삭제하는 경우 성능을 향상 시킬 수 있습니다. Fox Transactions는 다른 어플리케이션 프레임워크들과 달리 COM+를 사용하지 않습니다.

Fox DB Profile 기능은 Fox Data Access를 통해 수행되는 모든 SQL 문장에 대한 로그를 기록해 줍니다. 이 때 SQL 문장 로그가 성능에 영향을 미치지 않도록 별도의 쓰레드에서 로깅 작업을 수행합니다. Fox DB Profile 기능을 활성화 해 놓아 모든 SQL 문장을 기록하더라도 어플리케이션의 성능은 거의 변화가 없습니다.

Fox Transactions는 내부적으로 System.Transactions를 사용하여 COM+에 비해 트랜잭션 처리 오버헤드를 20% 이상 낮추었습니다. 또, Fox Transactions는 4.0부터 로컬 트랜잭션을 지원합니다. Fox Transactions의 로컬 트랜잭션 컨트롤러는 개발자가 트랜잭션 관련 코드를 작성하지 않더라도 트랜잭션이 로컬 트랜잭션 하에서 작동하도록 관리해 주기 때문에 개발 생산성을 떨어뜨리지 않고도 로컬 트랜잭션의 높은 성능 잇점을 누릴 수 있습니다.

Fox Web Service는 다량의 데이터 송/수신 상에서 발생하는 커다란 XML 데이터에 대한 전송 문제를 해결하기 위해 압축 채널을 지원합니다. Fox Web Service의 압축 채널은 HTTP/TCP/Named Pipe 등에 관계 없이 데이터의 크기를 크게 줄여 줍니다. 네트워크 상에서 전송되는 데이터의 양이 줄어들기 때문에 어플리케이션의 응답 속도가 향상되게 됩니다.

이들 외에도 Fox Logging의 파일 로깅은 다중 쓰레드 환경에서 안정적으로 빠르게 로그를 기록할 수 있습니다. Fox Logging의 파일 로깅은 1초에 4만여 개의 로그 메시지를 기록할 수 있을 정도 빠릅니다. 개발자들은 Fox Logging의 파일 로깅 기능을 통해 성능적인 부담 없이 어플리케이션 관리나 디버깅을 위한 로그를 남길 수 있습니다.

성능 관리 도구들

NeoDEEX와 같은 개발 프레임워크가 아무리 성능 향상을 위한 어플리케이션 아키텍처나 클래스 라이브러리 등을 제공한다 할지라도 데이터 베이스 쿼리에 성능적인 문제를 가지고 있거나 잘못된 코드에 의한 성능 하락을 완벽하게 막을 수는 없습니다. 따라서 어플리케이션의 성능을 측정하거나 모니터링 하여 성능 문제를 미연에 확인하고 조치할 수 있어야 합니다.

NeoDEEX는 어플리케이션 성능을 고려한 기능 외에도 어플리케이션 성능을 측정하고 감시할 수 있는 기능이 포함되어 있습니다. Fox DB Profile 기능은 Fox Data Access를 통해 수행되는 모든 쿼리를 로그로 남길 수 있습니다. 단순히 SQL 문장만을 기록으로 남기는 것이 아니라 이 쿼리를 수행한 사용자 ID, 쿼리 수행 시간, 또 쿼리에 사용된 매개변수 값들도 기록하며 성능 추적을 위해 로그마다 유일한 ID를 부여함으로써 추적이 가능하게 해줍니다.

Fox Performance Trace 기능은 다 계층 어플리케이션 아키텍처에서 웹 서비스 계층, 비즈니스 로직 계층, 데이터 액세스 계층 등 각 계층 별로 성능을 자동으로 측정할 수 있습니다. Fox Transactions 가 제공하는 컴포넌트 베이스 클래스를 사용하거나 Fox Web Service 가 제공하는 서비스 기능을 사용하면 자동으로 성능 정보가 호출 스택 형태로 측정이 됩니다. 이렇게 측정된 정보는 Fox Logging을 통해 다양한 매체(파일, DB 등)에 기록이 가능하고 추후 분석이 가능합니다. 각 계층 별로 수행 시간이 측정되기 때문에 어플리케이션의 성능 병목 지점이 어느 계층인가 정확하게 판별이 가능하며 호출 스택 정보에 의해 구체적으로 어떤 메서드가 가장 긴 수행 시간을 갖는지 파악이 가능합니다. Fox Performance Monitor 기능은 For Performance Trace 로부터 생성된 성능 정보를 실시간으로 수집하여 개발자 혹은 관리자에게 보여주는 인프라와 UI 도구를 제공합니다.

image
[그림5] Fox Performance Trace와 Fox Performance Monitor 개념

High Quality

NeoDEEX의 다양한 기능들은 어플리케이션이 보다 높은 성능 하에서 안정적으로 작동함을 의미합니다. 이는 곧 어플리케이션을 사용하는 최종 사용자는 빠른 응답속도와 높은 가용성에 만족하게 됨을 의미하기도 합니다. 또, NeoDEEX가 제공하는 높은 개발 생산성은 개발 기간을 단축시키기 때문에 보다 많은 시간을 테스트에 투자할 수 있으며 많은 테스트를 거친 어플리케이션은 보다 높은 품질을 갖게 됩니다.

NeoDEEX를 사용한 코드는 눈에 보이지 않지만 내부적으로 권장되는 코딩 패턴이 이미 적용되어 있으며 성능적인 고려가 적용된 코드가 사용되고 있습니다. 다시 말해 개발자의 수준에 상관없이 개발 프레임워크가 요구하는 코딩 패턴을 따르면 그 개발 프레임워크가 제공하는 수준의 성능을 낼 수 있다는 말이 됩니다. 이는 곧 NeoDEEX가 개발자의 수준을 (상향 혹은 하향) 평준화시키게 되고 이로써 일정 수준의 성능을 내게 된다는 말도 됩니다. [그림6]은 개발자 수준별 코드 품질과 평균적인 코드 품질을 보여주고 있습니다. 일반적으로 개발 프로젝트에서는 고급 개발자의 숫자가 절대적으로 부족하기 때문에 평균적인 코드 품질은 높지 않습니다. 하지만 NeoDEEX가 제공하는 개발 패턴(클래스 라이브러리, 코딩 패턴)을 적용함으로써 초급 개발자도 일정 수준의 품질을 가진 코드를 작성할 수 있게 됩니다. 비록 NeoDEEX가 고급 개발자의 코드를 하향 평준화 시킬 수 있지만 전체적으로 어플리케이션의 품질을 향상시키는 것입니다.

image
[그림6] 개발자들의 평균 코드 품질과 NeoDEEX의 코드 품질

개발 생산성의 연장선 상에서도 NeoDEEX는 어플리케이션의 품질을 향상할 수 있습니다. 다시 [그림1]의 두 코드를 비교해 보면 단순히 코드가 짧다는 것 외에도 NeoDEEX의 장점을 보여주고 있습니다. [그림1]에서 NeoDEEX를 사용하지 않는 코드는 이 코드의 핵심이라 볼 수 있는 데이터 액세스(SQL 문장) 외에도 데이터베이스 연결, 트랜잭션 처리, 예외 처리, 로깅 등 다양한 코드가 많습니다. 반면 NeoDEEX를 사용하는 코드는 핵심적인 어플리케이션 로직(SQL 문장) 이외의 기능은 프레임워크에서 처리해 주는 것을 알 수 있을 것입니다. 개발자는 개발 프레임워크를 사용함으로써 어플리케이션 로직에 보다 집중할 수 있으며 보다 정확하고 빠른 SQL 문장을 작성할 여유를 가질 수 있으며 이는 곧 어플리케이션 품질 향상에 직결됩니다.

유지 보수 관점에서도 NeoDEEX는 어플리케이션 품질 향상에 도움을 줍니다. NeoDEEX는 어플리케이션 아키텍처를 시작으로 명명 표준, 코딩 표준, 코딩 가이드 등을 제시할 뿐만 아니라 다양한 방법으로 코드를 생성해 줍니다. 앞서 살펴본 대로 개발자가 작성해야 할 코드의 양은 매우 적을 뿐만 아니라 직관적이고 일관됩니다. 이는 곧 어플리케이션의 코드들이 개발자의 수준에 상관없이 비슷한 패턴으로 수렴되어 감을 의미합니다. 개발자들이 작성한 코드가 비슷하기 때문에 담당자가 바뀌거나 새로운 개발자가 유지/보수에 투입되더라도 빠르게 적응이 가능하게 됩니다.

Verified Solution

NeoDEEX는 2003년 1.0 버전 개발 이후 다양한 프로젝트에서 검증을 받은 개발 프레임워크 입니다. EL이나 Spring.NET과는 달리 국내 SI 환경이 고려된 개발 프레임워크이기 때문에 실제 프로젝트에서 고객이 요구하는 사항이나 개발자의 요구 사항을 반영하고 있습니다. SI 개발자의 고통을 잘 이해하고 있는 NeoDEEX는 개발자가 보다 빠르고 손쉽게 어플리케이션을 작성하도록 도와 줍니다.

실제로 P 건설사는 시스템 테스트에 보다 많은 시간을 할당하기 위해 계획보다 1개월이나 줄인 개발 기간 안에 단위 테스트가 완료된 개발 물량을 소화했어야 했습니다. P 건설사가 사내 개발 프레임워크로 채택한 NeoDEEX를 이용하여 개발자들은 목표한 개발 기간 내에 개발 물량을 모두 개발할 수 있었고 실제로 줄어든 개발 기간을 시스템 테스트와 성능 테스트에 할애하여 보다 신뢰도 높으며 빠른 응답속도를 내는 업무 시스템을 개발할 수 있었습니다.

NeoDEEX는 EL이나 Spring.NET과는 달리 개발에 필요한 전반적인 아키텍처, 명명 표준, 코딩 표준, 코딩 패턴을 제시하기 때문에 기업의 전사 개발 프레임워크로 많이 채택되었습니다. 국내 대기업으로 H 중공업은 NeoDEEX를 전사 개발 프레임워크 채택하여 사내에서 개발하는 모든 닷넷 환경 어플리케이션들에 NeoDEEX를 적용하고 있습니다. 개발자들은 닷넷 프레임워크에 대한 기본 지식과 NeoDEEX 기반 개발에 대한 지식만으로 다양한 어플리케이션을 빠르게 작성할 수 있었습니다.

Technical Support

NeoDEEX는 닷넷 분야에서 국내 최고의 기술력을 보유한 ㈜미니소프트에 의해 개발되고 공급되는 개발 프레임워크 “제품”입니다. 국내 어떤 기업도 개발 프레임워크를 단독 패키지로써 공급하지 않으며 컨설팅의 일부나 SI 프로젝트의 일부로써 공급될 뿐입니다. 다시 말해 NeoDEEX 만이 번들이 아닌 유일한 독립 제품이라는 것입니다.

이는 ㈜미니소프트에서 지속적으로 NeoDEEX에 대한 일련의 품질 보증과 유/무상 유지보수, 그리고 기술지원을 수행함을 의미합니다. EL이나 Spring.NET 과 같은 오픈 소스 개발 프레임워크는 일관된 기술 지원, 유지/보수, 품질 보증 서비스를 받기 어렵습니다. 기업의 표준 개발 프레임워크로 오픈 소스 기반의 개발 프레임워크를 선정하기 어려운 이유 중 하나가 바로 여기에 있습니다. 이들 개발 프레임워크의 소스가 공개되어 있기 때문에 임으로 수정하기 쉬울 수 있으나, 오픈 소스 개발 프레임워크의 버전이 바뀌게 되면 동일한 수정 작업을 새 버전에 반복적으로 수행해야 할 수도 있습니다. 실제로 대형 SI 기업인 S 사와 L 사는 EL 1.x 소스를 수정하여 개발 프레임워크를 자체 개발하고 자사에서 수행하는 닷넷 프로젝트에 적용했었습니다. 하지만 닷넷 프레임워크 2.0과 함께 EL 2.0이 등장함에 따라 기존에 EL 1.x에 대한 수정작업을 EL 2.0에 대해서도 동일하게 반복해야 했습니다. 반면 NeoDEEX는 ㈜미니소프트에 의해 지속적으로 업데이트되고 유지/보수 되기 때문에 그러한 문제가 발생할 가능성이 낮습니다. NeoDEEX에 대한 여러분의 투자는 최대한으로 보호되고 유지될 것입니다.

Conclusion

요약 하자면, NeoDEEX는 닷넷 환경에서 사용할 수 있는 국내 유일의 독립 개발 프레임워크 제품으로써 개발자의 개발 생산성을 향상 시켜주며, 어플리케이션의 성능 및 품질 향상에 도움이 되는 다양한 기능을 포함하고 있습니다. NeoDEEX는 다양한 기업과 SI 프로젝트에서 검증되었으며 ㈜미니소프트의 기술 지원 하에서 지속적으로 업데이트되는 최고의 개발 프레임워크라고 자부하는 바 입니다.

감사합니다.

neodeex(Fox Framework)   미니소프트

NeoDEEX 란?

NeoDEEX는 ㈜미니소프트에서 제공하는 닷넷 환경 어플리케이션 개발 프레임워크 입니다.

Sign in