Framework (Anyframe, IAM) - FAQ
Frequently Asked Questions
- Anyframe이 무엇인가요?
- Anyframe과 Spring Framework의 다른 점은 무엇인가요?
- Anyframe Source Code의 라이센스 유형은 무엇인가요?
- JDK 버전에 따른 기능 제약 사항은 무엇인가요?
- 제공되는 Anyframe 라이브러리가 모두 필요한가요?
- IoC Container가 무엇인가요?
- DL(Dependency Lookup)과 DI(Dependency Injection)의 차이가 무엇인가요?
- AOP의 장점은 무엇인가요?
- 기술 공통 서비스에는 어떤 것이 있고 현장에서 많이 쓰는 서비스는 무엇인가요?
- MVC가 무엇인가요?
- WAS에 따른 기능 제약 사항은 무엇인가요?
- Struts와 Spring MVC의 차이점은 무엇인가요?
- JSP 외에 다른 UI컴포넌트와 Anyframe을 연계하여 사용 가능한가요?
- Ajax란 무엇인가요?
- IAM이 무엇인가요?
- IAM의 환경에 따른 제약 사항은 무엇인가요?
- Anyframe 3.x와 Anyframe 4.x은 어떤 차이점이 있나요?
- Anyframe 설치를 위한 기반이 되는 Maven이란 무엇인가요?
Answers
1. Anyframe이 무엇인가요?
Anyframe은 Spring Framework과 같은 오픈 소스를 활용/확장하여 best-of-breed JavaEE 기반 개발 시 겪게 되는 복잡성을 해소하고 JavaEE 기반 어플리케이션 개발을 좀 더 쉽고 빠르게 할 수 있도록 도와주는 어플리케이션 프레임워크입니다. 비즈니스 레이어를 개발할 때 필요한 공통 서비스 및 아키텍처를 제공할 뿐만 아니라 프리젠테이션 레이어 개발을 위한 Anyframe 기반 웹 어플리케이션의 골격을 제공하며 MVC 패턴 기반의 Model2 아키텍처를 따르고 있어 개발자가 프리젠테이션 레이어의 처리 로직에 초점을 맞추어 Controller와 View 파트를 구현하는데 도움을 줍니다. Struts Framework (ver. 1.2.7) / Spring MVC 를 재사용하고 있으며 웹 환경 프로젝트에 공통적으로 필요한 기능들을 포함하고 있습니다. 또한 사용자간 상호작용을 중시하는 RIA 기술 트랜드에 맞추어 다양한 UI 모듈(Ajax, X-internet 툴 등)을 연계할 수 있는 프레임워크 기반의 아키텍처를 제공합니다.
2. Anyframe과 Spring Framework의 다른 점은 무엇인가요?
Anyframe은 Spring Framework을 활용/확장했습니다. Spring Framework에서 사용할 수 있는 기능들 외에 JavaEE 기반 어플리케이션 개발 시 많이 이용되는 컴포넌트들을 기술 공통 서비스로 제공하여 개발 편의성을 높여줍니다.
3. Anyframe Source Code의 라이센스 유형은 무엇인가요?
Anyframe의 모든 소스는 아파치 라이센스를 따르기 때문에 어떤 방식으로 사용해도 관계가 없습니다. 즉, Anyframe 소스 코드를 수정하거나 확장한 결과물을 공개하지 않아도 관계가 없습니다.
아파치 라이센스 보기
4. JDK 버전에 따른 기능 제약 사항은 무엇인가요?
Anyframe의 라이브러리들은 JDK 1.4로 컴파일 되었습니다. 그렇기 때문에 JDK 1.4 이상이면 Anyframe을 사용하시는데 아무런 문제가 없습니다. 하지만 Annotation과 같은 특수한 기능을 포함하여 Anyframe의 기술 공통 서비스인 Generic Service, Web Services 기능은 JDK 1.5 이상에서 지원합니다.
5. 제공되는 Anyframe 라이브러리가 모두 필요한가요?
아닙니다. Anyframe 라이브러리는 서비스 별로 패키징되어 있기 때문에 사용할 서비스 관련 라이브러리만 필요합니다. 대신 공통으로 사용하는 anyframe-common-xxx.jar 파일과 같은 공통 라이브러리가 반드시 있어야 합니다.
6. IoC Container가 무엇인가요?
IoC(Inversion Of Control)란 Design Pattern의 하나로, 컴포넌트간의 dependency, 컴포넌트의 configuration 및 lifecycle 관리 방법 중의 하나입니다. 컴포넌트가 직접 자신을 컨트롤하지 않고, 자신의 환경(Container)에게 맡기는 것입니다. 즉, 컴포넌트가 다른 컴포넌트를 필요로 할 때, 참조되는 컴포넌트에 대한 연결을 해당 컴포넌트 구현 로직내에 직접 기술하지 않고, 참조될 컴포넌트만을 명시해 주면, 이러한 컴포넌트들을 관리하는 Container에 의해, 컴포넌트간의 dependency가 형성될 수 있습니다.
7. DL과 DI의 차이가 무엇인가요?
DI(Dependency Injection)는 각 클래스 사이의 의존 관계를 컨테이너가 자동적으로 설정해주는 것을 말합니다. 개발자들은 단지 설정 파일에 참조 관계가 필요하다는 정보를 추가적으로 정의해 주기만 하면 됩니다.
DL(Dependency Lookup)은 의존 관계에 놓인 특정 모듈을 사용하기 위해 개발자가 해당 모듈의 소스 코드 내에서 리소스들을 관리하는 컨테이너를 통해 직접적으로 찾는 것을 말합니다.
8. AOP의 장점은 무엇인가요?
프로젝트 개발 초기 Logging, Exception 및 Transaction 처리와 같이 어플리케이션 전반에 공통적으로 영향을 미치는 사항들은 초기 정책을 수립하고 개발을 진행하게 됩니다. 만약 이러한 정책이 변경되게 되면 개발자들의 생산성은 저하되고 개발에 소요되는 시간보다 정책들의 변경을 적용하는데 시간이 더 많이 들게 됩니다.
하지만 AOP를 이용해 프로젝트를 진행하게 되면 개발자들은 자신이 개발해야 할 비즈니스 로직에 집중하여 개발할 수 있으며 또한 이러한 공통 기능의 정책 변경 시 유연하게 대처할 수 있습니다.
9. 기술 공통 서비스에는 어떤 것이 있고 현장에서 많이 쓰는 서비스는 무엇인가요?
Anyframe에서 제공하는 기술 공통 서비스는 다양합니다. 적용 서비스는 프로젝트 상황에 따라 다르지만 현재까지 적용 사이트의 예를 살펴보면 Logging 서비스, Query 서비스, DataSource 서비스, Properties 서비스, Idgeneration 서비스 등이 많이 사용되고 있습니다.
10. MVC가 무엇인가요?
MVC(Model-View-Controller)란 중간에 Controller 컴포넌트를 두어 비즈니스 로직과 데이터 접근 로직 <-> 프리젠테이션 로직을 분리시킨 디자인 패턴입니다. 각 영역별로 역할이 명확히 구분되므로 모듈 간의 의존성을 낮추어 재사용성 및 확장이 용이한 구조이기 때문에 유지보수에 유리합니다.
모델 1이 JSP에 프리젠테이션 로직과 비즈니스 로직, 데이터 접근 로직이 함께 들어갔던 반면 모델2는 각각의 역할을 나누어 작업을 분담시킨 MVC 패턴을 웹에 적용한 것입니다. View를 담당하는 JSP는 프리젠테이션 로직만을 처리하고 Controller는 요청을 어디로 보낼지 결정합니다. 그리고 Model은 비지니스 레이어에 포함됩니다.
11. WAS에 따른 기능 제약 사항은 무엇인가요?
Anyframe은 특정 WAS(웹 어플리케이션 서버)에 종속적이지 않습니다. 현재 Anyframe은 Tomcat, WebSphere, Weblogic, Jeus 등에서 테스트하여 출시됩니다.
12. Struts와 SpringMVC의 차이점은 무엇인가요?
두 Web Framework 모두 Controller를 사용하는 MVC2 모델을 따르고 있다는 점은 같습니다. Spring MVC는 Spring 내에 포함되어져 있는 기능으로 Spring에 최적화 되어 있는데 일례로, Spring의 기본 개념인 Injection 기법을 이용하여 비즈니스 오브젝트에 손쉽게 접근할 수 있습니다. Struts와의 큰 차이로는 Form 객체 대신 Value Object를 사용한다는 점이 있습니다.
13. JSP 외에 다른 UI 컴포넌트와 Anyframe를 연계하여 사용 가능한가요?
가능합니다. 현재 Anyframe과 상용 X-Internet(Gauce, MiPlatform, FLEX) 및 Ajax 제품을 쉽게 연계하여 사용할 수 있는 모듈 및 템플릿을 제공하고 있습니다.
14. Ajax가 무엇인가요?
Ajax(Asynchronous JavaScript and XML)는 말그대로 비동기식으로 Javascript를 이용해 클라이언트 측에서 페이지 리로딩 없이 필요한 데이터를 얻어내는 기법을 말합니다. 페이지 이동 없이 화면을 전환할 수 있으며 서버 처리를 기다리지 않고 비동기 요청이 가능합니다. 수신하는 데이터량을 줄일 수 있고, 클라이언트에게 처리를 위임할 수도 있다는 장점이 있습니다.
15. IAM이 무엇인가요?
IAM은 Identify Access Management의 약자로써, 사용자를 인증하거나 시스템 자원에 대한 접근 권한을 허가 또는 거부합니다. 또한 정보 시스템에서 사용되는 데이터를 식별하고 관리하기 위하여 사람이나 프로세스, 또는 제품들을 캡슐화합니다. 무엇보다도 IAM의 궁극적인 목적은 엔터프라이즈 자원에 대한 적절한 접근을 제공하는 것입니다.
16. IAM의 환경에 따른 제약 사항은 무엇인가요?
Anyframe IAM을 적용하기 위한 기술적인 스펙은 다음과 같습니다. Java Versions : JDK 1.5 (IAM Core 는 1.4 를 지원), Framework : Anyframe Java 또는 Spring Framework(또는 호환 프레임워크), Presentation Layer : JSP (View Resource 를 제어하고자 하는 경우)
17. Anyframe 3.x와 Anyframe 4.x은 어떤 차이점이 있나요?
Anyframe 3.x에서는 Framework을 Anyframe Core와 Web으로 구분하고, 참조용 샘플 프로젝트와 Core, Web, 3rd-party 라이브러리를 중심으로 개발자가 직접 프로젝트에 적합한 샘플을 구현해야 했습니다. Anyframe 4.x 이후부터는 Anyframe Core와 Web을 통합하고 Spring, Hibernate, CXF, Struts 등과 같은 다양한 오픈 소스들을 중심으로 참조 라이브러리와 샘플 코드를 엮어서 구성된 다양한 Plugin들을 제공함으로써 사용자가 원하는 Plugin 들을 적절히 선택하고 설치할 수 있도록 합니다. 이로써 해당 프로젝트에 필요한 기능들을 갖춘 샘플 프로젝트를 손쉽게 구성할 수 있도록 지원하고 있습니다. 따라서, 어플리케이션 개발 초기에 프로젝트 특성에 맞는 개발 환경을 구성하는데 소요되는 시간을 대폭 줄이고, 프로젝트에 필요한 최적의 샘플을 제공받을 수 있게 될 것입니다.
18. Anyframe 설치를 위한 기반이 되는 Maven이란 무엇인가요?
Maven(http://maven.apache.org/)은 오픈소스로써 Jakarta Turbine 프로젝트의 빌드 프로세스를 단순화하기 위해 시작되었습니다. POM(Project Object Model) 정보를 기반으로 빌드, 리포팅, 문서화 등과 같이 어플리케이션 개발을 위해 반복적으로 진행해야 하는 작업들을 지원하는 역할을 수행합니다. 물론 Ant(http://ant.apache.org/)를 이용하여 빌드, 리포팅 등의 일부 작업 수행이 가능하지만 프로젝트를 진행할 때마다 반복적으로 많은 양의 빌드 스크립트를 정의해야 하는 불편함이 있었습니다. 이에 반해 Maven의 경우에는 프로젝트 관리를 위하여 필요한 모든 작업에 대해 추상화된 Maven Plugin과 같은 툴을 제공함으로써 이러한 작업들을 지원합니다.

