FrameWork
소 프트웨어의 세계에서, 어플리케이션 소프트를 개발할 때에 빈번히 쓰여지는 범용 기능을 한꺼번에 제공하여, 어플리케이션의 토대로서 기능하는 소프트웨어이다. 어플리케이션의 아웃라인. 개발에 프레임워크를 이용하면 독자적으로 필요로 하는 부분만을 개발하면 되기 때문에 개발 효율의 향상을 기대할 수 있다. 구체적인 소프트웨어 뿐만 아니라, 범용으로 적용 가능한 프로그램의 설계 모델이나 전형적인 처리 패턴 등도 포함한 의미로 프레임워크라고 부르는 경우도 있다
GoF의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson) 교수는 프레임워크를 "소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"이라고 정의하였다. 프레임워크는 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라, 그 위에 개발된 개발자의 코드를 제어한다. 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다.
문자 그대로 해석하면프로그램의 골격
- Struts
Jakarta프로젝트가 개발하고 있는 오픈소스의 프레임워크
- Spring
J2EE기반의 웹 어플리케이션을 쉽게 하는 것을 목적으로 하고 있으면서 J2EE서비스에 종속되지 않으며, 계층화, 모듈화가 잘 되어 있는 유연한 프레임워크 이다.
스프링의 주요목적중 하나인 "기존의 잘 만들어진 솔루션들과 경쟁하지 않고, 이들과의 통합을 추진한다."는 점이 다른 프레임워크들과 유기적으로 잘 연동할 수 있을 것인가를 알 수 있게 한다.
스 프링 프레임워크는 다른 프로젝트에서 개발된 컴포넌트를 어떻게 잘 조합하여 사용할 것인가에 대한 고민의 해답으로 제시된 IoC(제어역행화; Inversion of Control)* 또는 연관성 삽입(Dependency Injection)* 패턴이 스프링의 중심된 개념이다.
- Hibernate
ORM (Object Relational Mapping)* 프레임워크
- ibatis
ORM (Object Relational Mapping)* 프레임워크
- Pico
Ioc (Inversion of Control)*컨테이너의 일종
- Gauce
우리나라꺼인듯
- Tiles
템플릿 엔진 (레이아웃 구성을 편하게 해주는 거인듯)
- Velocity
자카르타 프로젝트에서 진행 중인 자바 기반의 템플릿 엔진.
템플릿으로부터 SQL, HTML, 자바 소스를 생성하는 등 사용할수 있는 용도가 다양하지만, JSP의 대안으로 웹 어플리케이션 개발에서 많이 사용된다.
스트럿츠는 JSP를 통해 구현된 뷰를 프리젠테이션의 기본으로 하고 있지만, 일부 개발자들은 벨로시티를 선호하고 있다.
WAS (Web Application Server)
WAS 는 웹이 탄생한 이래, 주로 데이터베이스 조회나 일반적인 비즈니스 로직에 대한 처리를 위해 다양한 언어로 개발된 인터넷/인트라넷 환경의 소프트웨어를 지칭한다. 자바스크립트나 JSP 등과 같은 스크립트 및 서비스들은 대개 최신의 데이터를 검색하기 위해 데이터베이스에 접근하고, 브라우저 또는 클라이언트 프로그램을 통해 사용자들에게 검색 결과를 제공한다.
WAS를 비롯한 애플리케이션 서버들은, 웹서버* 즉 HTTP 서버와 같은 컴퓨터를 공유할 수도 있지만, 별개의 컴퓨터를 독립적으로 사용하는 경우도 많다. 대규모 사이트에서는, 오히려 WAS와 웹서버 등을 위해 여러 대의 컴퓨터가 동원되기도 한다. 넷스케이프의 Netscape Application Server, BEA의 Weblogic Enterprise, 볼랜드의 AppServer, 그리고 IBM의 Websphere Application Server 등이 WAS의 대표적인 제품들이다.
- Web-logic (BEA)
BEA WebLogic은 100% 자바로 구현되었고 EJB(Enterprise Java Beans) 표준을 처음으로 구현한 제품이다. BEA
Weblogic4.0에서는 미션크리티컬한 업무수행을 위해 Clustering, Failover, Load Balancing 기능 등이 보강되었다.
- 제우스 (티맥스 소프트)
국산이다
- Web-sphere (IBM)
IBM 꺼 -_-
UML Tools
툴에 대해서 자세히 알 필요는 없을듯.. UML에 대해서만 알아봅시다! 사실 찾기가 힘들었음
- Together
- Rational Rose
- Omondo (eclipse-plugin)
UML (Unified Modeling Language)
UML 이란 소프트웨어 개발 과정에서 산출되는 산출물들을 명시, 개발, 문서화하기 위한 모델링 언어이다. UML은 Rational 사의 Grady Booch, James Rumbaugh에 의해 1994년 10월에 처음 개발에 착수되었다. 이후 1995년 10월에 Unified Method 0.8의 명칭으로 OOPSLA '95에서 발표되었으며, 이후 Ivar Jacobson이 UML 개발에 함께 협력하면서 1996년에 버전 0.9를 발표하였고, 1997년 11월에는 UML 1.1 이 OMG에 의해 표준으로 채택되었다.
UML은 모델링 언어일뿐 메쏘드(또는 방법론)는 아니다. 메쏘드는 프로세스에 대한 정의와 각각의 업무들에 대한 지침과, 업무들 간의 순서들을 명시해야 하는 반면, 모델링 언어는 표기법(또는 다이어그램)들만을 제시하는 것이다. 따라서 UML은 소프트웨어 개발에 사용하기 위한 여러 다이어그램들을 정의하고 있으며, 또 다이어그램들의 의미들에 대해 정의하고 있다.
UML 은 여러가지 다이어그램들을 제시함으로써 소프트웨어 개발과정의 산출물들을 비주얼하게 제공하고, 개발자들과 고객 또는 개발자들 간의 의사소통을 원활하게 할 수 있도록 하고 있다. UML은 시스템을 모델링 할 수 있는 다양한 도구들을 제공하기 때문에, 도메인을 모델링하기가 훨씬 용이할 뿐만 아니라 모델링한 결과를 쉽게 파악할 수 있게 된다. 또한 산업계 표준으로 채택되었기 때문에 UML을 적용한 시스템은 신뢰성 있는 시스템으로 평가받을 수 있다.
DATABASE
여 러 개의 어플리케이션 소프트 또는 유저에 의해 공유 되는 데이터 집합. 또는, 그런 관리 시스템을 포함해서 데이터 베이스라고 하는 경우도 있다. 데이터베이스라는 말은 1950년대에 미군에 의해 쓰여지기 시작했다. 데이터의 집합을 겉 모양으로 표현한 레이셔널 데이터베이스가 주류였으나, 최근에는 데이터의 집합을 절차와 데이터를 일체화 한 오브젝트의 집합으로서 다루는 오브젝트 데이터베이스가 대규모 시스템 등에서 이용되고 있다. 데이터 베이스의 조작이나 보수, 관리를 위한 소프트웨어를 DBMS라
한다
- Oracle
Oracle 사의 대표적인 제품으로써 전 세계적으로 가장 많은 수요자 층을 확보하고 있는 제품이다.
유닉스, 리눅스, 윈도우 버전이 따로 있으며 리눅스 버전의 경우에는 홈페이지에서 다운로드 받아 개발용으로 사용할 수 있다.
- MS SQL Server
마이크로소프트의 대표적인 데이터베이스 시스템이다. 윈도우 환경에서 가장 많이 사용되고 있으며 비주얼 베이직과의
직접적인 프로그래밍도 가능하다. Window 2000 서버나 Windows 2003 서버를 사용하는 시스템에서 활용되고 있다.
- DB II
IBM 의 DB2 (Data Base 2) 는 1983년에 발표된 상업용 관계 데이터베이스 관리 시스템으로서 MVS/XA와 MVS/370 운영체제
에서 사용되며, SQL 을 데이터 언어로 사용하여 다수의 사용자들이 여러 개의 관계 데이터베이스를 동시에 접근할 수 있는
대형 데이터 베이스를 위한 시스템이다.
- My-SQL
600만 사용자를 확보하고 있는 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템
MySQL AB가 관리 지원하고 있으며 이중 라이선스가 적용된다.
최근 썬 마이크로 시스템즈에 85억달러에 인수 되었다.
- 무결성 제약 조건
: 데이터의 정확성 유지, 사용자가 원치 않는 데이터가 저장되는 것을 방지
NOT NULL : NULL 을 허용하지 않음
UNIQUE : 항상 유일무이한 값을 가짐, 중복되지 않고 NULL 포함 가능
PRIMARY KEY : 반드시 존재해야 하고 유일해야 하며 중복되지 않고 NULL 포함도 불가
FOREIGN KEY : 타 컬럼의 값을 참조해야만 함
CHECK : 저장 가능한 데이터 값의 범위나 사용자 조건을 지정
- 조인
: 한개 이상의 테이블에서 데이터를 조회하기 위해 사용
- 서브쿼리
: 하나의 테이블에서 검색한 결과를 다른 테이블에 전달하여 새로운 결과를 검색하는 것
- 트랜잭션
: 데이터 처리의 한 단위
SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는 것
- 락
: 사용자가 동시에 하나의 테이블에 접근해서 DML 문으로 데이터베이스를 변경하게 되면 특정 사용자가 자원을 독점하지
못하도록 하기 위해서 락을 발생시킨다.
한 사용자가 커밋이나 롤백을 수행하여 락을 풀기 전까지 다른 사용자는 무한 대기 상태가 된다.
- 데드락
: A와 B가 서로 물고 물리는 관계이기에 어느 하나가 커밋이나 롤백을 할 수 없는 상태
세이브 포인터까지 자동으로 롤백된다.
- 뷰
: 물리적인 테이블을 근거한 논리적인 가상 테이블
- 시퀀스
: 자동 번호 발생기
- 인덱스
: SQL 명령문의 처리속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체
- 롤
: 사용자에게 효율적으로 권한을 부여할 수 있도록 여러 개의 권한을 묶어 놓은 것
- 커서
: SQL*Plus 에서 사용자가 실행한 SQL 문의 단위
암시적 커서 (하나의 결과를 리턴하는 경우 암시적으로 커서에 저장된다.)
명시적 커서 (결과로 얻어지는 행이 여러 개일 경우에는 반드시 명시적인 커서를 사용해야 한다.)
- 저장 프로시저
: 사용자가 만든 PL/SQL 문을 데이터베이스에 저장한 것
복잡한 DML 문들을 저장 프로시저를 호출해서 간단하게 실행할 수 있다.
- 정규화
: 관계형 데이터베이스에서 데이터 일관성, 최소한의 데이터 중복, 최대한의 데이터 안전성을 확보하기 위해 이상현상이 적게
발생하는 작은 Relation 들로 분해하는 방법을 정규화라 한다.
제1 정규화 (1NF)
제1 정규화란 반복 또는 복수값을 갖는 속성을 제거하여 모든 속성은 반드시 하나의 값만을 갖도록 하는 것입니다.
제2 정규화 (2NF)
제2 정규화란 기본키에 종속되지 않는 속성을 제거하는 것입니다. 즉 모든 속성은 반드시 엔티티 식별자에 전부 종속되
어야 한다는 뜻입니다.
제3 정규화 (3NF)
제3 정규화란 기본키가 아닌 속성에 종속적인 속성을 제거하는 것입니다. 즉 모든 속성은 반드시 엔티티 식별자에 전부
종속되어야 한다는 뜻입니다.
기타 정규형
BCNF (Boyce Codd Normal Form) 라고도 하는 제4 정규형과 제5 정규형도 있지만 이 형식은 실제 디자인에서 거의 고려되
지 않습니다. 이러한 규칙은 무시해도 데이터베이스 디자인의 완벽성은 덜하겠지만 기능적으로는 영향이 없습니다.
*ORM (Object Relational Mapping)
DB와 객체와의 관계를 맵핑시켜 퍼시스턴스 로직처리를 도와주는 프레임워크입니다.
말그대로 데이타 베이스의 테이블과 자바 객체를 맵핑(xml같은 파일에 맵핑정보를 기술)하여
데이타 베이스에 CRUD(생성,조회,수정,삭제)작업을 도와주는 역할을 합니다.
자바로 데이타 베이스에 접근하려면 JDBC를 이용해 쿼리문을 모두 입력해야 합니다.
예를 들어
insert하기위해 dao에서 쿼리문을 모두 세팅해 excute시켜야 합니다.
Hibernate에서는 XXXX.save(dataTO) 이렇게 save라는 메소드를 이용하면
맵핑정보를 읽어 dataTO에 담겨있는 데이터를 디비에 저장하게 됩니다.
이렇게 Persistance 티어에 생산성을 높여 주는 프레임워크가 ORM 프레임워크고,
대중에 유명한것들중에 iBatis와 hibernate이 있습니다.
*Ioc(Inversion of Control) 또는DI(Dependency Injection) (혼용해서 쓰는듯?)
자바 초기에는 객체 생성 및 의존관계에 대한 모든 제어권이 프로그래머에게 있었다. 서 블릿과 EJB가 등장한 후에 개발자들이 서블릿과 EJB를 직접 생성하고 싶어도 이 객체들을 직접 생성하여 제어할 수 없게 되어 버렸다. 객체 생성에 대한 제어권이 컨테이너에게 넘어가면서 객체의 생명주기를 관리하는 권한 또한 컨테이너들이 전담할 수 밖에 없게 된것이다. IoC에서 이야기하는 제어(권)의 역전이란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다. |
*Web server와Web application server 의 차이
웹서버에서 화면을 동적으로 보여주기 위해선
여러가지 로직이 들어가지요... 그런데
한 서버에 로직이 집중되어 있다보니 당연히 무거워지고
속도 및 보안 같은 퍼포먼스에 문제점이 생기게 됬습니다.
이런것 때문에 여러개의 서버를 병렬로 처리하는 방법을 쓰기도 하지만
이것보다는 구조적으로 편중된 로직을 분리해서 나누자는 것이죠.
그래서 화면에 뿌려주는 로직(Presentation Logic)은 웹서버(Servlet Engine)에,
실제 돌아가는 로직(Business Logic)은 WAS(Web Applications Server)에서
일을 나누어 역할분담 시키는 것입니다... 이것은 컴포넌트의 유용성과도 밀접한데,
큰 로직을 한번에 돌리는 것보단 쪼개서 여러번 돌리는게 시스템 부하가 적고
신뢰도가 높아지는 원리입니다..
보통 미들웨어라 불리우는 WAS에서는 Component 형식의 Application(EJB)를
많이 쓰구요 이런 구조를 분산시스템 또는 분산 Archtecture 라고도 합니다. (출처 지식인~)
*Web server와JSP컨테이너의 차이
웹서버는 클라이언트/서버 모델과 웹의 HTTP를 사용하여 웹 페이지가 들어 있는 파일을 사용자들에게 제공하는 프로그램이다.
- 웹서버와 JSP컨테이너는 별개라고 할수도 아니라고 할수도 있다. 대부분 JSP로 만들어진 사이트는 웹서버와 JSP컨테이너를 탑재하고 있는 WAS를 연동해 사용하기 때문이다.
쉽 게 말하면 웹서버가 하는 일은 html,img등 일반 웹문서를 사용자에게 보여주는 역할만을 하지만, JSP컨테이너를 탑재하고 있는 WAS(Web Application Server)는 JSP를 컴파일하여 실행한 결과를 html으로 만들어 보여준다.
웹서버만 구축되어 있는 서버는 웹페이지,이미지,영상등을 전달해 줄수는 있지만,
JSP페이지를 컴파일해 동적인 페이지를 생성하지는 못한다. 이를 위해서는
JSP컨테이너가 탑재되어 있는 WAS가 필요한 것이다.
웹서버는 웹문서를, WAS는 JSP 페이지를, 이런식으로 양분하여 역할분담을
함으로 서버에 부담되는 양을 줄이고자 함이다.
'Computer Science' 카테고리의 다른 글
우분투(ubuntu) 서버 설정 (0) | 2008.12.01 |
---|---|
Object-Relational Mapping Strategies (0) | 2008.11.30 |
전문가처럼 UNIX 명령행 편집하기 (0) | 2008.11.30 |
PHP 프로그램에서 구글 캘린더 사용하기 (0) | 2008.11.30 |
데이터베이스 성능 진단 및 통계 (0) | 2008.11.26 |