달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2007. 1. 29. 15:07

아키텍처 입문 - 통합 그거/Architecture2007. 1. 29. 15:07

developerWorks
개요   |   요구사항 분석   |   모델링   |   자산과 패턴   |   통합   |   샘플 프로젝트
프로세스
인력
정보
애플리케이션
IBM 제품 통합

비즈니스 프로세스에는 많은 애플리케이션들 간 복잡한 상호 의존성이 개입되어 있다. 이러한 비즈니스 프로세스와 애플리케이션들은 하나의 기업 내에 존재하거나, 비즈니스 체인(공급자, 제조자, 판매자, 파트너) 내의 여러 기업들까지 확장될 수 있다. 이러한 프로세스를 하나의 완벽한 워크플로우로 통합함으로써 보다 유연하고 적응성 있는 비즈니스와 IT 운영을 실현할 수 있다.

다음 소개할 자료들은 비즈니스 프로세스 통합에 사용되는 베스트 프랙티스, 툴, 패턴, 표준들이다.


베스트 프랙티스   레퍼런스 아키텍처
  포럼
패턴   블로그
표준      
 



베스트 프랙티스

프로세스 구성법과 SIBus, Part 2: 엔터프라이즈 프로세스 구성법: 비즈니스 프로세스 구성법과 WebSphere® Platform Messaging (SIBus)을 함께 사용하면 엔터프라이즈급의 비즈니스 프로세스 실행 환경을 만들 수 있다. 비즈니스 프로세스 구성법이 SIBus 관리 웹 서비스 연산과 어떻게 조화되는지를 설명한다.

WebSphere Business Integration Server Express를 사용하여 SMARTEAM Gateway와 SAP ERP 애플리케이션 통합하기: WebSphere Business Integration Server Express V4.3을 사용하여 SMARTEAM 제품 라이프 사이클 관리(PLM) 시스템과 SAP 엔터프라이즈 리소스 플래닝(ERP) 애플리케이션을 통합하는 방법을 설명한다. 유스 케이스를 통해 SMARTEAM 애플리케이션과 SAP ERP 시스템간 부분들, 머터리얼, 문서들을 동기화 하는 방법을 설명한다.

PHP를 사용하여 WebSphere Process Server V6 비즈니스 프로세스에 액세스 하기: PHP Hypertext Preprocessor (PHP) Server에서 WebSphere Process Server V6상에서 실행되는 Business Process Execution Language (BPEL) 기반 애플리케이션에 액세스 한다.

WebSphere Process Server 보안 개요: WebSphere Process Server V6에 기반하여 비즈니스 통합 시스템을 보안화 한다. 보안 요구 사항들, Process Server가 WebSphere Application Server V6의 보안 기능을 활용하는 방법, Process Server 컴포넌트를 보안화 하는 방법을 배운다. 비즈니스 통합을 위한 여러 엔드투엔드 보안 시나리오를 검토한다.

비즈니스 프로세스 통합 프로젝트 관리 규칙: 복잡한 비즈니스 프로세스 통합 프로젝트를 관리하는 기술들을 배운다. 구성 프로세스와 툴, 구조, 요구 사항과 변경 관리 프로세스를 설명한다.

온 디맨드 솔루션 구현하기: BPEL을 사용하여 비즈니스 프로세스 설계 및 구현하기: 비즈니스 프로세스를 설계 및 구현할 때 사용하는 다양한 패턴들을 연구한다.

Patterns: 프로세스 구성법과 워크플로우에 대한 직렬 및 병렬 프로세스: IBM 레드북에서는 프로세스 중심 통합을 사용한 비즈니스 애플리케이션 통합을 설명한다. 엔터프라이즈 내 직렬 및 병렬 프로세스 애플리케이션 패턴을 설명한다.

중개 교환 솔루션 디자인 및 구현: 서비스 소비자, 브로커, 공급자 간 비즈니스 프로세스 통합하기: 밸류 체인 속에서 비즈니스 프로세스 통합의 가치를 발견한다.

서비스 지향 아키텍처에서의 B2B 프로세스 중심 애플리케이션의 설계 및 전개: WebSphere Studio Application Developer Integration Edition V5.1에서 BPEL을 사용한 비즈니스 프로세스와, WebSphere Business Integration Message Broker Toolkit V5에서의 메시지 플로우를 생성 및 전개하는 방법을 설명한다.

비즈니스 프로세스 모델링: WebSphere Business Integration Modeler를 사용하여 새로운 비즈니스 프로세스를 만들고, 프로세스에 필요한 리소스들을 정의하며, 프로세스의 처리량과 비용을 테스트 하기 위한 시뮬레이션을 실행한다.

WebSphere Process Choreographer와 디자인 패턴을 사용하여 워크플로우 구현하기: 여러 가지 기본 액티비티를 포함하고 있는 비즈니스 프로세스를 구현 및 테스트하고, 간단한 웹 서비스를 호출하는 액티비티를 만들어 낸다.

WebSphere Business Integration Server Foundation 비즈니스 프로세스 통합 및 공급 체인 솔루션의 BPEL 프로세스: Business Process Choreographer의 비즈니스 프로세스 통합으로 공급 체인 프로세스를 체계화 하는 솔루션을 구현한다.

WebSphere Business Integration 어댑터: 어댑터 개발과 WebSphere Business Integration 솔루션: 어댑터 개발 프로젝트의 디자인 전략, 구현, 테스팅, 다중 브로커 유형에 기반한 전개 및 구현 등 전체 라이프 사이클을 설명한다.

WebSphere Business Integration 커넥터 개발 및 테스트: 샘플 커넥터를 빠르게 구현 및 전개한다. 커넥터와 커넥터 프레임웍을 간략히 소개한 후에, 커넥터 개발에 개입된 컴포넌트들(비즈니스 객체와 브로커)를 설명하고, Eclipse IDE를 사용하여 커넥터를 개발하는 방법을 설명한다.

WebSphere Partner Gateway V6와 AS2를 사용한 보안 문서 프로세스: WebSphere Partner Gateway의 컴포넌트와 네 개의 AS2 시나리오 내에서 인터랙팅 방법을 설명한다. AS2 스팩과 WebSphere Partner Gateway의 아키텍처를 설명한다.

zSeries V6용 WebSphere Developer를 사용하여 COBOL/CICS로 연결하기: J2EE™ 커넥터, IBM CICS® Transaction Gateway, CICS Transaction의 사용법을 설명한다.

WebSphere Business Integration Adapters와 WebSphere Process Server 통합: WebSphere Process Server의 비즈니스 프로세스를 설정하고, 이것을 WebSphere Business Integration Adapter의 공지 이벤트에서 호출한다.

EJB 서비스와 WebSphere Process Server 통합: 서비스 컴포넌트 아키텍처(SCA)에서 EJB 서비스를 통합하는 WebSphere Process Server 솔루션을 구현하고, WebSphere Process Server 같은 통합 제품을 실행하여 기존 EJB 기반 서비스를 재사용 한다.

J2EE 커넥터와 EGL을 사용하여 COBOL/CICS 애플리케이션 호출하기: J2EE 커넥터, JavaServer Faces, Enterprise Generation Language (EGL)를 사용하여 자바 코드 없이 웹 페이지에서 COBOL/CICS 프로그램을 실행하여 WebSphere Application Server Managed Connection Factory를 활용한다.



위로



  • WebSphere Portal 은 엔터프라이즈를 포탈이라고 하는 싱글 인터페이스로 통합하는데 사용할 수 있는 런타임 서버, 툴, 기타 여러 기능들을 포함하여 프레임웍을 제공한다. 또한 비즈니스 프로세스를 지원하는 워크플로우를 정의할 수 있다. 제품 관련 페이지를 참조하라.
  • WebSphere Process Server는 서비스 지향 아키텍처를 사용하여 비즈니스 프로세스를 통합 및 자동화 하고, 기존 IT 리소스들을 서비스 컴포넌트로서 사용하는 프로그래밍 모델을 제공한다. 제품 관련 페이지를 참조하라.
  • WebSphere Integration Developer는 재사용과 효율성을 향상시키고, 비즈니스 중심 개발을 수행하며, WebSphere Business Modeler와 통합하여 빠른 구현을 위해 모델을 반입한다. 제품 관련 페이지를 참조하라.
  • WebSphere Business Modeler는 프로세스 모델링, 필수 데이터 및 생성물 모델링, 구성 모델링, 리소스 모델링, 타임라인 및 위치 모델링, 시뮬레이션, 비즈니스 프로세스 분석 관련 기능을 제공한다. 제품 관련 페이지를 참조하라.
  • WebSphere Adapters는 엔터프라이즈 리소스 플래닝(ERP), Human Resources (HR), 고객 관리(CRM), 공급 체인 시스템간 정보를 교환하는 프로세스의 빠르고 쉬운 통합을 가능케 한다. 이들을 SOA를 구동하는 Enterprise Service Bus로 연결하여 애플리케이션을 실행한다. 제품 관련 페이지를 참조하라.
  • WebSphere Adapter Toolkit을 사용하여 J2EE Connector Architecture (JCA) 어댑터를 개발하여 비즈니스 고유의 요구 사항들을 채울 수 있다. 이 Eclipse 기반 툴킷은 기본 JCA 1.5 어댑터를 구현하거나 WebSphere Adapters에서 사용되는 Adapter Foundation Classes의 추가 기능을 활용하는 어댑터를 생성한다. 제품의 시험판을 다운로드 하라.
  • WebSphere Partner Gateway는 B2B 환경을 위한 통합 게이트웨이이다. 제품 관련 페이지를 참조하라.


위로



패턴

Direct Connection: Use the Direct Connection 애플리케이션런타임 패턴을 사용하여 한 쌍의 애플리케이션을 실행하여 커넥터나 어댑터를 통해 서로 직접 통신하는 시스템 디자인을 구축한다.

Broker: 약결합 인터페이스를 사용하여 목표 여러 목표 시스템들을 업데이트 할 프로세싱 요청을 구현할 때 Broker 애플리케이션런타임 패턴을 사용한다.

직렬 프로세스: 직렬 프로세스 애플리케이션런타임 패턴을 사용하여, 소스 애플리케이션에서 시작된 인터랙션에 대한 반응으로 여러 목표 애플리케이션에 의해 구현된 비즈니스 서비스를 활용하여, 엔드투엔드 비즈니스 프로세스 플로우를 구성한다.

병렬 프로세스: Use the 병렬 프로세스 애플리케이션런타임 패턴을 사용하여, 소스 애플리케이션에서 시작된 인터랙션에 대한 반응으로 여러 목표 애플리케이션에 의해 구현된 비즈니스 서비스를 활용하여, 엔드투엔드 비즈니스 프로세스에서의 사이클 시간을 줄인다.



위로



표준

Service Component Architecture (SCA)는 서비스 지향 아키텍처를 사용하여 애플리케이션과 시스템을 구현하는 모델을 설명하는 스팩이다. SCA는 서비스를 구현하는 이전 접근 방식을 확장 및 보완하며, 웹 서비스 같은 오픈 표준을 기반으로 구현된다.

Business Process Execution Language for Web Services Version 1.1 (한글)은 비즈니스 프로세스와 인터랙션 프로토콜을 공식적으로 기술하는 수단을 제공한다.

Web Services Business Process Execution Language Version 2.0 Working draft는 비즈니스 프로토콜과 실행 프로세스 모델에 필요한 프로세스 인터페이스 디스크립션을 포함하여, 여러 사용 패턴에 필요한 기술적 기반을 형성하는 비즈니스 프로세스 실행 언어에 대한 공통 개념들을 정의한다.



위로



레퍼런스 아키텍처

SOA Foundation: 이 백서에서는 IBM에서 정의한 SOA Foundation을 소개하고, IBM 관점의 서비스 지향 아키텍처를 설명한다. 라이프 사이클 모델, 논리적 아키텍처, 프로그래밍 모델, 물리적 아키텍처를 중심으로 아키텍처를 설명한다.

WebSphere Integration Reference Architecture 소개 (한글): 일반적인 통합 문제를 겪지 않고 엔터프라이즈 레벨의 비즈니스 통합의 요구 사항들을 설명한다.

온 디맨드 운영 환경: 아키텍쳐 개요 (한글): SOA의 개념에 입각하여, IBM On Demand Operating Environment의 엘리먼트를 설명한다.



위로


포럼


위로



블로그
:
Posted by 뽀기
2007. 1. 29. 15:07

아키텍처 입문 - 자산과 패턴 그거/Architecture2007. 1. 29. 15:07

developerWorks
개요   |   요구사항 분석   |   모델링   |   자산과 패턴   |   통합   |   샘플 프로젝트

개요   레퍼런스 아키텍처
컴포넌트   베스트 프랙티스와 표준
패턴  
 


다양한 IT 자산들이 개발되고 재사용 되어 미래 프로젝트에 가치를 더하고, 참조 아키텍처, 패턴, 프레임웍, 컴포넌트를 포함하여 추가 아키텍처 프레임웍을 보조한다. work products 또는 artifacts라고 불리는 이러한 자산들은 개발 프로세스의 직접적인 결과이다. 소프트웨어 개발 라이프 사이클의 결과로 생긴 다른 유형의 생성물들에는 요구 사항 문서, 소스 코드 파일, 전개 디스크립터, 테스트 케이스 또는 스크립트 등이 포함된다.

대부분의 경우, 이러한 생성물들은 처음부터 만들어지지 않는다. 대신, 이전의 작업에서 얻게 되거나, 오픈 표준 작업 그룹, 컨소시엄, 외부 퍼블리케이션을 통해 얻어진다. 소프트웨어 개발 자산들은, 새로운 솔루션과 애플리케이션을 구현할 때, 개발 프로세스를 추진하고, 디자인 결정을 재확인 하고, 코드 개발을 최소화 하는 등의 미래의 재정적인 이득을 만들어 낼 수 있다.

IT 자산들을 개발 및 재사용 하는 것과 관련한 베스트 프랙티스, 툴, 방법을 설명한다.

자산과 패턴 소개

소프트웨어 개발을 자산 기반 모델로 변형하기: Grady Booch는 IBM의 아키텍처와 전략 분야 전문가인 Mike Devlin과 Danny Sabbah와 인터뷰를 했다.

패턴 솔루션: 자산 기반 개발의 개요를 설명한다.

e-비즈니스용 패턴: 재사용 전략: 패턴을 정의하고, 소프트웨어 아키텍처에서 패턴을 이해하고 사용하는 방법을 설명한다.

서비스-지향 아키텍처(SOA)용 자산 라이프- 사이클 관리: 자산들을 관리, 적용, 재사용하는 툴과 메소드를 SOA 개발에 활용할 때 서비스의 효과적인 라이프 사이클 관리가 어떤 영향을 미치는 지를 알아본다.



위로



컴포넌트

컴포넌트는 대부분 IT 솔루션이나 애플리케이션으로 구성된 엘리먼트이다. 결합되었을 때, 식별 가능한, 자율적인 엘리먼트로서, IT 솔루션 내에서 비즈니스 가치를 제공한다. 컴포넌트는 아키텍처에서 기능을 나타내는 고급 엘리먼트가 될 수 있고, 제품에 전개되는 보다 상세한 프로그래밍 엘리먼트가 될 수 있다.

WebSphere Business Components와 웹 서비스 아키텍처: 컴포넌트의 예비 분석과 웹 서비스 이니셔티브를 이해하고, 완벽한 아키텍처의 보완 엘리먼트로서 이들의 차이점과 유사점을 설명한다.

진화하는 컴포넌트 모델 (한글): 웹 서비스 구현과 조합을 서비스-지향 아키텍처(SOA)의 언어 중립적인, 컴포넌트-기반 프로그래밍 모델을 가진 솔루션에 적용한다. 프로그래밍 모델은 프로그래머가 아닌 사람들도 기술을 마스터 하지 않고도 기존 IT 자산들을 사용할 수 있도록 한다.

Service Component Architecture로 SOA 솔루션 구현하기: SOA에서 비즈니스 솔루션을 구현 및 조합하고, 서비스를 통합하고 구성하도록 특별히 설계된 새로운 프로그래밍 모델인 Service Component Architecture라고 하는 서비스 지향 아키텍처를 구현하는 새로운 프로그래밍 패러다임을 공부한다.

컴포넌트 통합하기: 컴퓨팅이 메인프레임 시스템에서 웹-기반 분산 시스템으로 옮겨가면서 네트워크로 연결된 시스템과 컴포넌트들이 엔터프라이즈 시스템의 부분들을 통합하는데 얼마나 중요한 역할을 하는지를 설명한다.

기능 장애가 있는 조직에서 컴포넌트 아키텍처 사용하기: 컴포넌트 아키텍처와 코드 재사용에 대한 저자의 경험을 나눈다.

Rational Application Developer for WebSphere를 이용한 컴포넌트 테스팅: 컴포넌트 테스트를 구현 및 전개하는 프로세스를 자동화하는 것에 초점을 맞춰, 컴포넌트 테스팅을 소개한다.

컴포넌트 구성과 Unified Change Management: 설정 관리를 위한 컴포넌트-기반 아키텍처인 Unified Change Management (UCM)를 사용한다.

컴포넌트 다이어그램과 UML: Unified Modeling Language (UML) 2.0 스팩의 구조 다이어그램인, 컴포넌트 다이어그램을 소개한다.



위로



패턴

패턴은 일반적으로, 솔루션 개발에 사용될 수 있는 폼, 템플릿, 또는 프로그래밍 모델이다. 패턴은 필수적인 애플리케이션 컴포넌트이다. 개발 될 컴포넌트가 기반 패턴과 많은 공통점을 갖고 있다면, 그 컴포넌트는 패턴을 나타내는 것으로 간주된다.

e-비즈니스용 패턴: 재사용 가능한 자산 그룹이 웹 기반 애플리케이션 개발 프로세스의 속도를 어떻게 높이는 지를 설명한다. 다음은 그러한 패턴들을 분류한 것이다.

Redbook: e-비즈니스 시리즈에 패턴 접근 방식 적용하기: e-비즈니스에 IBM Patterns를 사용하여 재사용 가능한 아키텍처 템플릿들을 인스턴스로 만들어서, 80% 되풀이 되는 비즈니스 문제를 해결한다.

e-비즈니스용 패턴: 재사용 전략: 아키텍트 관점에서, 소프트웨어 개발에 있어서 패턴의 사용법을 설명한다.

e-비즈니스용 퍼베이시브 포탈 패턴: 본 IBM Redbooks™ 시리즈에서는 퍼베이시브 액세스용 포탈 상에서 Access Integration pattern을 설명한다.

SOA 환경에서 자가 서비스 구현하기: IT 시스템의 유연한 통합을 실현하는데 도움이 되는 솔루션을 구현할 때 SOA와 Enterprise Service Bus (ESB)를 검토한다.



위로



레퍼런스 아키텍처와 프레임웍

AIT 또는 소프트웨어 아키텍처는 큰 IT 솔루션에 속한 각 측면들의 디자인을 이끄는 패턴, 프레임웍, 컴포넌트 세트이다. 프레임웍은 일반적으로, 어떤 솔루션과 애플리케이션이 구성 및 개발될 수 있는지에 대한 지원 구조로서 정의된다. 프레임웍에는 지원 프로그램, 코드 라이브러리, 스크립팅 언어, 기타 생성물들을 지원하여 다양한 솔루션 컴포넌트들 또는 애플리케이션을 결합한다. 레퍼런스 아키텍처(reference architecture)는 기업 또는 업계에서 고려되는 IT 솔루션 아키텍처로서, 일반적인 문제들에 대한 구체적인 필요를 다루고 있다. 기업에 의해 사용되는 레퍼런스 아키텍처는 비즈니스 요구 사항에서 명시되어 있지 않는 한, 솔루션 개발용 디폴트 아키텍처로서 간주된다.

레퍼런스 아키텍처: 최상의 베스트 프랙티스: IBM Rational® Unified Process에서 제공하는 가이드라인을 따라가다 보면, 강력한 레퍼런스 아키텍처가 소프트웨어 개발 프로젝트에서 어떤 역할을 하는지, 그 차이점을 알 수 있다. 레퍼런스 아키텍처를 효과적으로 수집, 관리, 사용하는 실질적인 분류법을 설명한다.

웹 서비스를 구현하는 SOA 프로그래밍 모델: 프로그래머가 아닌 사람들도 IT 기술을 마스터 하지 않고 IT 자산들을 생성 및 재사용할 수 있도록 하는 SOA용 IBM 프로그래밍 모델을 검토한다.

재사용 가능한 아키텍처의 빠른 생성: 소스 코드를 복사해서 붙이는 클래스 레벨의 소단위 재사용에서, 프레임웍과 아키텍처 레벨에서 대단위, 대규모 재사용으로 성장한 재사용 기술을 검토한다. 이 글은 패턴과 IBM Rational XDE를 사용하는 재사용 가능한 프레임웍에 초점을 맞춘다.

자율 컴퓨팅 레퍼런스 아키텍처: 자율 컴퓨팅 시스템 구현에 필요한 프레임웍을 자율 컴퓨팅 레퍼런스 아키텍처가 구성하는 방법을 설명한다.

WebSphere Integration Reference Architecture 소개 (한글): 이 포괄적인 서비스-기반 토대에서 통합과 관련한 전통적인 문제를 일으키지 않고, 엔터프라이즈 레벨의 비즈니스 통합을 어떻게 이룩하는지를 설명한다.

WebSphere Business Integration Server의 Enterprise Service Bus 기능: WebSphere Business Integration Server의 정황 속에서 IBM WebSphere® Business Integration Reference Architecture를 분석한다.

비즈니스 정보 솔루션 아키텍처: 데이터 웨어하우징 솔루션에서 비즈니스 정보의 역할을 분석한다.

포탈 솔루션 구현하기: 본 IBM 레드북에서는 WebSphere Portal Server 기반 동적 워크플레이스의 설계와 구현을 설명한다.

The Open Group Architecture Framework (TOGAF)과 IT 아키텍처: 오픈 표준 프레임웍을 연구하고, 더 나은 IT 아키텍트가 되는 방법을 연구한다.

기타 IBM 프레임웍:

  • IBM Tivoli Management Framework: Tivoli 관리 애플리케이션 수트의 토대가 되는 IBM Tivoli Management Framework을 설명한다.
  • Enterprise Identity Mapping (EIM): Kerberos, Lightweight Directory Access Protocol (LDAP), Kerberos Network Authentication Service를 포함한 광범위한 기술이 포함된 크로스 플랫폼 솔루션인 Enterprise Identity Mapping (EIM)을 사용법을 설명한다. EIM은 IBM에서 제공하는 프레임웍으로서 인증 사용자들을 OS/400 (애플리케이션) 사용자 ID로 연결한다.
  • Unstructured Information Management Architecture Framework (UIMA): 컴포넌트 인터페이스, 디자인 패턴, 데이터 표현, 개발 역할들을 지정하는 아키텍처에 대해 배운다.

오픈 소스 프레임웍 예제:

  • Eclipse: 소프트웨어 구현에 확장성 있는 개발 플랫폼과 애플리케이션 프레임웍을 제공하는 오픈 소스 커뮤니티 프로젝트인 Eclipse에 대해 알아본다.
  • Graphical Editing Framework과 Eclipse Modeling Framework을 사용한 Eclipse 개발: Eclipse 플랫폼에서 사용하도록 Eclipse Tools Project에서 개발된 두 개의 프레임웍인 Graphical Editing Framework (GEF)과 Eclipse Modeling Framework (EMF)을 IBM Redbook에서 설명한다.
  • Apache Struts: Apache Struts 프로젝트가 전통적인 Model-View-Controller (MVC) 디자인 패러다임의 변형인 Model 2 방식에 기반하여 애플리케이션 아키텍처를 개발시키는 방법을 설명한다.
  • Apache Cocoon: 영역의 분리와 컴포넌트 기반 웹 개발 개념을 중심으로 구현된 웹 개발 프레임웍인 Apache Cocoon을 소개한다.
  • XML 프로젝트: Xerces, Xalan, Simple Object Access Protocol (SOAP), XML-RPC를 포함하여, XML에 기반한 프로젝트에 대해 배운다.


위로



베스트 프랙티스와 표준

자산과 패턴의 베스트 프랙티스는 실제-경험에 기반한 가이드라인이다. 이것은 비즈니스와 기술적 문제를 해결하는데 도움이 된다.

Java theory and practice: pseudo-typedef 반패턴: 자바 언어에 대한 제너릭의 추가로 유형에 대한 짧은 이름을 정의하는데 어떤 typedef 장치도 존재하지 않기 때문에, 일부 개발자들은 그다지 좋지 않은 대안 typedef에 의존한다. Brian Goetz가 이 반패턴의 한계를 설명한다.

온 디맨드 솔루션 설계하기: 모델링, 애플리케이션 통합, 정책 기반 오케스트레이션을 사용하여, 온 디맨드 솔루션을 설계 및 구현할 때 분석가, 디자이너, 아키텍트의 역할에 대해 알아본다.

온 디맨드 소프트웨어 개발에 재사용 가능한 자산 구현하기: 온 디맨드 환경의 구현 뒤에 숨은 방법론을 분석하고, 패턴, 모델링, 워크플로우, 규칙과 모니터링이 포함된 유스 케이스를 살펴본다.

WebSphere Business Integration 툴로 웹 서비스 애플리케이션 최적화 하기: WebSphere Business Integrator를 사용하여 서비스 지향 아키텍처에서 웹 서비스 애플리케이션을 최적화 한다.

모델-중심 아키텍처: 모델-중심 아키텍처의 모델링을 사용하여 소프트웨어를 보다 효율적으로 개발한다.

코드에 디자인 결점 노출하기: Architectural Discovery: IBM Rational Software Architect 툴의 Architectural Discovery 컴포넌트를 분석하고, 이것을 사용하여 코드에서 좋고 나쁜 패턴을 탐지한다.

SOA용 재사용 엔지니어링 (한글): SOA의 중요한 가치인 재사용을 적용할 시기를 알아본다. 솔루션을 개발할 때 재사용을 적용할 적기를 알아본다.

SOA 반패턴: 서비스 지향 아키텍처의 채택과 성공적인 실현의 방해물 (한글): 부정적인 결과를 만들어 내는 일반적인 상황이나 솔루션을 피해보자. 다양한 SOA 작업을 통해 얻은 개인적인 경험을 바탕으로 걸러낸 반패턴을 설명한다.

SCA와 SDO 스팩: 새로운 Service Component Architecture와 Service Data Objects 스팩을 사용하여 SOA에 기반하여 애플리케이션을 구현하는 보다 강력하고 단순한 방법들을 찾아본다.

SOA와 통합용 패턴 언어:SOA와 SOI용 패턴을 연구하고, 강력하고 유연한 SOA를 구현하기 위해 핵심 아키텍처를 결정할 때 사용할 수 있는 개념들을 검토한다.

웹 서비스 개발 패턴 이해하기: 자바™를 사용하여 Web Services Description Language (WSDL)를 만든다. WSDL을 사용하여 자바를 만든다. WSDL로 시작하여 자바를 만든다. 이는 다시 WSDL을 만드는데 사용되고, 다시 자바를 만드는데 사용된다. 이러한 세 가지 개발 패턴의 장단점을 분석한다.

패턴을 사용하여 포틀릿 구현하기: Rational Software Architect와 IBM State Oriented Portlet Patterns를 사용하여 IBM WebSphere Portal용 포틀릿 애플리케이션을 빠르게 구현할 수 있는 방법을 연구한다.

패일오버(failover) 패턴을 사용하여 IBM Tivoli System Automation 설정하기: Tivoli System Automation Failover Configuration Pattern 자산을 사용하여 고 가용성 솔루션의 개발과 전개를 단순화 할 수 있다.

점-대-점 트랜잭션 사용 케이스 모델: 재사용 가능한 자산을 사용하여 프로젝트의 아키텍처 단계에 대한 문서화를 단순화 한다.



위로



아래 소개하는 툴들은 아키텍처의 디자인, 개발, 적용에 도움이 되는 툴들이다. 잘 알려진 패턴(Gang of Four)을 사용하거나, Rational Software Architect 빌트인 패턴 엔진과 패턴 마법사를 사용하여 직접 만들 수 있다. 이 마법사를 사용하여 기존 코드와 모델을 활용할 수 있다.

  • IBM SOA Business Catalog는 IBM과 IBM SOA Specialty 비즈니스 파트너들이 제공한 재사용 가능한 SOA 콘텐트의 온라인 디렉토리이다. 어댑터, 모델, QuickStarts, 웹 서비스에 이르기까지, 기존 서비스, 컴포넌트, 기능, 확장 등을 활용함으로써, SOA 환경을 빠르게 향상시킬 수 있다.
  • IBM Rational Software Architect는 통합 디자인 및 개발 툴로서, 애플리케이션과 서비스 구현에 UML과 모델 중심 개발을 활용한다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • Reusable Asset Specification은 재사용 가능한 소프트웨어 자산들을 패키징 할 수 있는 표준 방식을 정의한다.
  • IBM RUP for Asset-Based Development 플러그-인은 설정 가능한 소프트웨어 개발 프로세스 플랫폼으로서, 입증된 베스트 프랙티스와 설정 가능한 아키텍처를 제공한다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.

'그거 > Architecture' 카테고리의 다른 글

아키텍처 입문 - 샘플 프로젝트  (0) 2007.01.29
아키텍처 입문 - 통합  (0) 2007.01.29
아키텍처 입문 - 모델링  (0) 2007.01.29
아키텍처 입문 - 요구사항 분석  (0) 2007.01.29
아키텍처 입문 - 개요  (0) 2007.01.29
:
Posted by 뽀기
2007. 1. 29. 15:06

아키텍처 입문 - 모델링 그거/Architecture2007. 1. 29. 15:06

developerWorks
개요   |   요구사항 분석   |   모델링   |   자산과 패턴   |   통합   |   샘플 프로젝트

개요  
애플리케이션 모델링   표준
프로세스 워크플로우 모델링   포럼
서비스-지향 모델링   블로그
데이터 모델링  
 


모델링은 전체 시스템을 시각화 하고, 다양한 옵션들을 평가하며, 기술적 또는 재정적 위험에 처하기 전에 디자인을 보다 면밀히 검토할 수 있는 기능을 제공한다. 오늘날의 소프트웨어 시스템은 복잡하다. 그러한 시스템을 모델링 하면 그 복잡함을 관리할 수 있고, 디자인과 관련 리스크를 이해할 수 있다.

모델링 애플리케이션, 프로세스 워크플로우, 서비스 지향 환경, 데이터를 위한 베스트 프랙티스, 툴, 방법론을 연구해 본다. 모델을 실행 코드와 재사용 가능한 자산으로 변형하는 방법도 설명한다.

모델링 소개

모델링의 가치: 모델링이 비주얼 콘텐트뿐만 아니라, 텍스트 콘텐트를 어떻게 제공하고, 이들의 조합이 왜 중요한지를 설명한다. 소프트웨어 개발 라이프 사이클의 다양한 단계를 모델링 하는 방법과, 각 단계에 맞는 모델링 유형을 살펴본다.

모델-중심 아키텍처(Model-Driven Architecture) 소개: 모델과 모델링의 중요성을 연구하고, 모델 중심 아키텍처(MDA)의 네 가지 핵심 원리를 설명한다.

코드-중심에서 모델-중심 개발로 옮기는 방법: 모델-중심 개발 방식을 사용하여 고급 소프트웨어를 보다 효율적으로 개발하는 방법을 설명한다.

모델-중심 개발로 IT의 비즈니스 가치를 높이는 방법: 성공적인 IT 프로젝트는 비즈니스 실패가 될 수 있다. 모델 중심 개발 방식을 사용하여 이렇게 원치 않는 결과를 미연에 방지할 수 있다.

아키텍처-중심 개발: 패턴과 모델-중심 개발을 사용하여 복잡성을 줄여서 전체 개발 프로세스를 단순화 한다.

모델-중심 시스템 개발 방식을 사용한 하드웨어/소프트웨어 공동 개발: 솔루션 설명: 첨단 프린팅 시스템 정황에서 모델 중심 시스템 개발(MDSD) 프로세스를 자세히 설명한다.


애플리케이션 모델링

UML 기초: Unified Modeling Language 소개 (한글): Unified Modeling Language (UML)의 기초를 이해하고, 사용 방법과 이유를 설명하고, 비주얼 디자인 언어의 중추를 형성하는 기본 다이어그램을 소개한다.

Unified Modeling Language Version 2.0: 모델-중심 개발의 개요와 UML 2.0에서 향상된 부분을 설명한다.

유스 케이스 유형과 생성물 이해하기: 다양한 유형의 유스-케이스와 생성물들을 검토하고, 유스 케이스 기술을 여기에 대해 잘 모르는 팀에 도입해 본다.

UML 기초: 클래스 다이어그램: 구조 다이어그램 유형(클래스, 인터페이스, 데이터 유형, 컴포넌트)를 정의하는데 사용되는 클래스 다이어그램을 소개한다.

UML기초: 시퀀스 다이어그램 (한글): 시스템의 요구 사항들을 문서화 하고 시스템의 디자인을 고양시키는 시퀀스 다이어그램을 소개한다.

UML 기초: 컴포넌트 다이어그램: 시스템의 컴포넌트들 간 구조적 관계를 보여주는데 사용되는 중요한 컴포넌트 다이어그램을 소개한다.

효과적인 UML 다이어그램을 쉽게 만들기: 콘텐트 어시스트와 다이어그램 어시스트 같은 보조 모델링 기능을 사용하여 IBM Rational® 모델링 제품에서 UML 다이어그램을 만들어 본다.

Rational Software Modeler: Rational Software Modeler가 요구 사항들을 클래스 다이어그램과 시퀀스 다이어그램 같은 UML에 기반하여 유스 케이스와 기타 생성물들로 변환하는 방법을 설명한다.

Rational Software Architect: Rational Software Architect를 사용하여 간단한 클래스와 유스 케이스 다이어그램을 만들고, 클래스 다이어그램에서 코드를 만들고, 코드의 구조적 분석을 수행한다.

모델-중심 개발로 복잡성 줄이기: 요구 사항 수집, 비즈니스 모델링, 애플리케이션 개발, 솔루션 개발 프로세스 단계를 상세히 설명한다.

Eclipse Modeling Framework을 이용한 모델링: 모델 생성, 코드 작성, 생성된 애플리케이션 사용, 에디터의 커스터마이징 과정을 설명한다.

패턴: Rational Software Architect를 사용한 모델-중심 개발: 본 IBM Redbook에서는 모델 중심 개발(MDD) 소프트웨어 라이프 사이클이 다른 방식과는 어떻게 다른지, MDD 프로젝트를 효과적으로 플래닝 및 관리하는 방법을 설명한다. 이미 MDD 프로젝트를 수행하고 있다면, Rational Software Architect를 사용하여 작업을 수행하는 방법을 배운다.

Graphical Editing Framework과 Eclipse Modeling Framework을 이용한 Eclipse 개발: Eclipse 프레임웍을 소개하고, 이 프레임웍을 사용하는 코드를 작성하는 방법을 설명한다. 본 IBM Redbook은 Eclipse 플러그인 개발자를 위한 글이다.

Architectural Manifesto: 본 칼럼에서는 모델 중심 아키텍처, IT 아키텍트의 공통 관심사 등을 다룬다.

SNAP/SHOT을 사용하여 Host Environments 모델링 하기: Parallel Sysplex®, MVS™ 호환성 모드, PR/SM, 동적 트랜잭션 라우팅, DB2® Universal Database™(데이터 공유), IMS™, SNAP/SHOT 시뮬레이션 툴을 사용한 배치(batch) 윈도우 같은 복잡한 호스트 환경을 모델링 한다. 본 레드북은 MVS 개발자를 위한 문서이다.

Rational Software Architect에서 UML을 CORBA로 변형하기: CORBA 템플릿 모델을 생성 및 사용하여, 고유의 CORBA 모델을 만들어 본다.



위로



프로세스 워크플로우 모델링

분석가를 위한 비즈니스 프로세스 모델링 기초 (한글): 비즈니스 프로세스를 정의하고, IBM WebSphere® Business Integration Modeler의 기능을 연구하는데 분석가들이 사용하는 모델링 개념을 설명한다.

비즈니스 모델링에서 웹 서비스 구현까지: 비즈니스 프로세스 모델링: 단순한 비즈니스 프로세스가 모델링 되는 샘플 시나리오를 통해서, 서비스 소비자에 의해 호출될 수 있는 웹 서비스를 정의하는데 사용하는 생성물들을 만들어 본다.

UML 에서 BPEL 까지 (한글): 웹 서비스의 UML, BPEL, 모델 중심 아키텍처를 설명한다.

BPEL4WS를 이용한 비즈니스 프로세스: 언어의 다양한 컴포넌트들을 이해하고, 자신만의 완전한 프로세스를 만든다.

WebSphere Business Integration Modeler를 사용한 비즈니스 프로세스 모델링 (한글): IBM WebSphere Business Integration Modeler V5.1을 사용하여 비즈니스 프로세스를 그래픽으로 모델링하는 방법과 기술을 익혀서 개발 환경에 사용할 수 있는 생성물들을 만들어 본다.

비즈니스 프로세스 모델링: WebSphere Business Integration Modeler 내에서 비즈니스 프로세스를 정의하는 세 단계를 배운다.

WebSphere Business Integration Modeler V5.1을 사용한 비즈니스 프로세스 모델링: WebSphere Business Integration Modeler와 Rational XDE를 사용하여 비즈니스 프로세스를 모델링 한다. WebSphere Application Developer Integration Edition의 컴포넌트인 WebSphere Process Choreographer를 사용하여 프로세스 모델링의 복잡함을 줄인다.

온 디맨드 비즈니스 프로세스 라이프 사이클: : IBM에서 사용했던 실제 하드웨어 주문 처리 시스템을 기반으로 한 시나리오를 사용하여, 재사용 가능한 자산들을 구현하는데 사용할 수 있는 패턴, 모델링, 워크플로우, 규칙, 모니터링, 방법과 기술을 설명한다. 이 모든 것이 온 디맨드 비즈니스 프로세스의 빠른 생성에 도움이 된다.

WebSphere MQ Workflow를 사용한 비즈니스 프로세스 모델링: WebSphere MQ Workflow를 사용하여 비즈니스 프로세스를 모델링 한다. 특히 이 프로세스에는 루프(looping) 같은 복잡한 로직이 포함된다.

비즈니스 모델링을 위한 Rational UML 프로파일: Rational Unified Process (RUP)의 컴포넌트인 비즈니스 모델링 용 Rational UML 프로파일을 설명한다. 비즈니스 모델을 캡처에 UML 언어를 사용하고 RUP에서 Business Modeling Discipline의 지원을 받는다.

비즈니스 서비스 모델링: WebSphere Business Modeler와 Rational Software Modeler를 통합하면 비즈니스 요구 사항과 IT 솔루션 사이의 의미적 차이를 메울 수 있다.



위로



서비스-지향 모델링

서비스-지향 모델링과 아키텍처 (한글): 서비스 지향 모델링과 아키텍처를 소개하고, 서비스 지향 아키텍처(SOA) 구현에 필요한 분석과 디자인에 필요한 작업들을 설명한다.

서비스-지향 분석과 디자인 엘리먼트: Object-Oriented Analysis and Design (OOAD), Enterprise Architecture (EA) 프레임웍, 비즈니스 프로세스 모델링(BPM) 같은 프랙티스에서 엘리먼트들을 결합하여, 여기에 혁신적인 엘리먼트를 필요에 따라 추가하여, 양질의 SOA를 구현할 수 있는 접근 방식을 모색한다.

서비스-지향 솔루션 모델링: Rational Unified Process Update for Service-Oriented Architecture (RUP Update for SOA)와 UML Profile for Software Services의 Rational Software Architect 구현의 결합 뒤에 숨은 의미, 범위, 개념 등을 분석한다.



위로



데이터 모델링

Rational Data Architect를 사용하여 데이터 소스 통합하기: IBM Rational Data Architect에서는 비즈니스 결정과 비즈니스 변형을 문서화 할 수 있는 하나의 툴을 사용하고, 체크포인트를 사용하고, 정보 통합 프로세스를 자동화 할 수 있다. 연합 디자인을 위한 툴 지원 프로세스에 대해 알아본다.

Rational Application Developer V6.0에서의 시각적 데이터 모델링: IDEF1X, Information Engineering (IE or Crow's Foot, UML 등, 이 세 개의 산업 표준 디자인을 지원하는 Rational Application Developer 6.0의 비주얼 데이터 모델링 기능을 설명한다.

alphaWorks 다운로드: DB2 Content Manager용 데이터 아키텍트: DB2 Content Manager 애플리케이션용 재사용 가능한 모델 자산을 구현하는 데이터 모델링 툴과 인프라스트럭처를 사용한다.

IBM Rational XDE Developer for Java를 사용한 DB2 UDB 데이터베이스 모델링: Rational XDE Developer for Java™를 사용하여 DB2 Universal Database (UDB)를 모델링 하는 방법을 설명한다.

효과적이고 유연한 데이터 웨어하우스 솔루션: DB2 Data Warehouse Edition에 기반하여 기본적인 데이터 웨어하우스 솔루션을 플래닝, 디자인, 구현하는 유연하고 효과적인 방법을 생각해 본다.



위로



  • Rational Data Architect는 비즈니스 결정과 비즈니스 변형을 문서화 하고, 체크포인트를 도입하고, 정보 통합 프로세스를 자동화 할 수 있는 정보 통합 툴이다. 제품 관련 페이지를 참조하라.
  • Rational Systems Developer는 Eclipse를 활용하고, 소프트웨어 아키텍트와 모델 중심 개발자들이 Unified Modeling Language (UML 2)를 활용하는 C/C++, Java J2SE, CORBA 기반 애플리케이션을 구현할 수 있도록 하는 디자인 및 개발 툴이다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • Rational Software Modeler는 커스터마이징 가능한, UML 2.0 기반 비주얼 모델링 및 디자인 툴로서, 프로세스, 플로우, 디자인의 문서화와 통신을 실행한다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • Rational Software Architect는 애플리케이션과 서비스 구현에 모델 중심 개발과 UML을 활용하는 디자인 및 개발 툴이다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • Rational Application Developer는 포괄적인 IDE로서, 웹, 웹 서비스, 자바, J2EE, 포탈 애플리케이션의 디자인, 개발, 분석, 테스트, 프로파일링 및 개발에 사용된다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • Rational Rose Data Modeler는 고급의 유연한 모델링 환경을 제공하여 데이터베이스 디자인을 가속화 한다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • Rational Rose XDE Developer for Java는 UML 2.0같은 최신 표준을 지원하는 비주얼 모델링 제품이다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • WebSphere Business Modeler는 프로세스 모델링, 엔터프라이즈 모델링, 필수 데이터 및 생성물 모델링, 구성 모델링, 리소스 모델링, 타임라인 및 배치 모델링, 시뮬레이션, 비즈니스 프로세스 분석 기능을 제공한다. 제품 관련 페이지를 참조하거나 시험판을 다운로드 하라.
  • WebSphere Business Integration Workbench는 비즈니스 프로세스와 소프트웨어 모델을 테스트, 분석, 시뮬레이트, 검사하는 프로세스 모델링 툴이다. 제품 관련 페이지를 참조하라.
  • WebSphere MQ Workflow는 시스템과 사람을 포함한 프로세스의 자동화에 사용된다. 제품 관련 페이지를 참조하라.


위로



표준
  • Object Management Group Model-Driven Architecture (OMG MDA)는 비즈니스와 기술의 변화에 대해 개방적이고, 벤더-중립적인 방식을 취한다.
  • W3C Web Services Architecture는 웹 서비스 아키텍처를 정의한다. 기능 컴포넌트를 규명하고, 이러한 컴포넌트들 간 관계를 정의하여, 전체 아키텍처의 속성을 만들어 낸다.
  • Unified Modeling Language (UML)는 OMG Model-Driven Architecture의 토대를 제공한다. 아키텍처와 애플리케이션 모델링을 통한 비즈니스 모델링부터, 개발, 전개, 관리, 혁신에 이르기까지 개발 및 통합의 모든 단계를 통합한다.


위로



포럼


위로



블로그
:
Posted by 뽀기
2007. 1. 29. 15:05

아키텍처 입문 - 요구사항 분석 그거/Architecture2007. 1. 29. 15:05

developerWorks
개요   |   요구사항 분석   |   모델링   |   자산과 패턴   |   통합   |   샘플 프로젝트

개요   포럼
베스트 프랙티스   블로그
  교육
방법  
 


소프트웨어 개발 프로젝트에서는 요구 사항을 통해 거의 모든 액티비티, 태스크, 결과물들이 발생한다. 몇 가지 핵심 기술과 반복적인 개발 방식을 사용함으로써, 프로젝트의 성공을 보장하는 요구 사항들을 개발할 수 있다. 프로젝트 초기에 시간을 들여서, 필요, 기능, 요구 사항들을 정의 및 문서화 하면, 비즈니스 목표에 맞게 소프트웨어 요구 사항 스팩을 마련할 수 있다.

본 장에서는, 베스트 프랙티스, 툴, 요구 사항 분석 방법을 검토하고, 그러한 요구 사항들을 IT 기능과 솔루션으로 연결시켜 본다.


요구 사항 분석

요구 사항: 개요: 정확한 요구 사항은 소프트웨어 프로젝트 성공의 필수 요소이다. 이 글에서 그 이유를 설명하고, 효과적인 요구 사항 문서화를 위한 3 단계 접근 방식을 설명한다.

유스 케이스 유형과 생성물 이해하기: 다양한 유형의 유스 케이스와 생성물을 검토하고, 이러한 것에 익숙하지 않은 팀들에 유스 케이스 기술을 도입하는 방법을 설명한다.

소프트웨어 요구 사항에서 비즈니스 가려내기: 복잡한 요구 사항들을 분석하는 기술을 익혀서, 비즈니스와 소프트웨어 요구 사항을 더욱 부각시킬 수 있다.

유스 케이스를 사용하여 비즈니스 요구 사항 파악하기: 핸드폰 결제 시스템인 Simpay의 비즈니스 요구 사항 엔지니어링 프로젝트에 기반하여 비즈니스 요구 사항들을 파악하는 7 가지 실질적인 원리들을 배운다.

요구 사항 방식 (PDF): 세 가지 전형적인 요구 사항 방식을 연구한다. 익스트림(Extreme) 요구 사항 방식, 애자일(Agile) 요구 사항 방식, 강력한(Robust) 요구 사항 방식.

비즈니스-중심 개발의 핵심 원리: 소프트웨어-중심 시스템의 생성, 전개, 진화에 있어서 산업계의 베스트 프랙티스로 자리잡은 새로운 원리를 배워봅시다.



위로



베스트 프랙티스

소프트웨어 개발 생산성과 프로젝트 성공 비율: 우리가 문제를 제대로 파악하고 있는가? Rational RequisitePro 같은 훌륭한 요구 사항 관리 툴을 사용하는 방법은 알고 있겠지만, 처음부터 올바른 요구 사항을 관리하고 있다는 것을 어떻게 확신할 수 있는가? 이 글에서 그 해답을 찾는다.

요구 사항에서 디자인으로 이동하기 (PDF): 요구 사항 스팩에서 디자인으로 원만하게 진행해 본다. 디자인을 시작하기 전에 유스 케이스로 어디까지 진행할지, 아키텍처적으로 중요한 요구 사항을 분석하고, 요구 사항 스팩에서 디자인으로 이동할 때 연결하는 중심 생성물로서 유스 케이스를 만드는 방법을 설명한다.

Rational 툴을 J2EE-기반 프로젝트에 적용하기 (한글): IBM Rational® Unified Process와 기타 Rational 툴들을 빡빡한 스케줄과 예산이 책정된 개발 프로젝트에 적용한다. Part 1에서는 고급 플래닝과 요구 사항 분석을 설명한다.

비즈니스 필요에 맞는 올바른 소프트웨어 개발 인프라스트럭처 구현하기: 소프트웨어 개발 인프라스트럭처를 강화하고 온 디맨드 환경을 만드는 올바른 구매 결정을 내린다. Part 1에서는 비즈니스와 인프라스트럭처 필요의 우선순위를 정하고, 제안서(RFP)를 정의하고, 요구 사항과 분석 기능을 강화하는 옵션에 대해 설명한다.

모델-중심 개발로 복잡함 줄이기: 솔루션 개발 프로세스에서 요구 사항 수집, 비즈니스 모델링, 애플리케이션 개발과 전개 단계를 분석한다.

서비스 mock를 사용하여 SOA 개발 체계화 하기: 유스 케이스와 mock 객체를 사용하여 SOA 애플리케이션의 품질을 높여보자. Bobby Woolf가 여러 팀들과 작업할 때 개발을 쉽게 할 수 있는 다섯 단계 프로세스를 설명한다.

Comment lines: 기능 외적 요구 사항이 왜 문제가 되는가? 기능은 중요하다. 하지만, 기능 외적 요구 사항을 고려하지 않는다면, 솔루션은 무용지물이 된다.

애플리케이션 개발용 Rational 비주얼 툴 연구: 소프트웨어 애플리케이션을 시각적으로 디자인 및 개발할 수 있는 Rational 툴을 설명한다.



위로



  • Rational RequisitePro®는 프로젝트 팀을 위한 요구 사항 및 유스 케이스 관리 툴이다. 제품 관련 자료자료를 찾아보거나, 시험판을 다운로드 하라.
  • Rational ClearCase®는 소프트웨어 개발 자산들의 라이프 사이클 관리와 컨트롤을 제공한다. 제품 관련 자료를 참조하라.
  • Rational SoDA는 포괄적인 프로젝트 문서 및 리포트의 생성 및 관리를 자동화 한다. 시험판을 다운로드 하라.
  • Rational Software Modeler는 커스터마이징 가능한, UML 2.0 기반 비주얼 모델링 및 디자인 툴로서, 프로세스의 문서화 및 통신, 흐름 및 디자인을 가능케 한다. 제품 관련 자료를 찾아보거나, 시험판을 다운로드 하라.
  • IBM Rational Software Development Platform은 소프트웨어와 소프트웨어 기반 시스템을 구현, 통합, 현대화, 확장, 전개할 수 있는 제품, 툴, 서비스를 제공한다. 오퍼링 관련 자료를 참조하라.


위로



솔루션 개발 방식

포럼


위로



블로그


위로



교육

'그거 > Architecture' 카테고리의 다른 글

아키텍처 입문 - 샘플 프로젝트  (0) 2007.01.29
아키텍처 입문 - 통합  (0) 2007.01.29
아키텍처 입문 - 자산과 패턴  (0) 2007.01.29
아키텍처 입문 - 모델링  (0) 2007.01.29
아키텍처 입문 - 개요  (0) 2007.01.29
:
Posted by 뽀기
2007. 1. 29. 15:04

아키텍처 입문 - 개요 그거/Architecture2007. 1. 29. 15:04

developerWorks
개요   | 요구사항 분석   |   모델링   |   자산과 패턴   |   통합   |   샘플 프로젝트

소개  
왜 아키텍처가 중요한가  
IT 아키텍트의 역할  
아키텍처의 역사 요약  
IBM이 IT 아키텍트를 정의하는 방법  
IT 아키텍처  
샘플 IT 프로젝트  
추가 자료  
 


Bobby Woolf는 IT 아키텍처의 의미와 역사를 설명합니다. IT 아키텍처가 어떻게 진화했는지, 그리고 IBM 아키텍처 의미를 어떻게 규명하는지도 설명합니다. 아키텍처를 더욱 잘 이해할 수 있도록 developerWorks에 개제된 자료들도 제공합니다.

Bobby는 IBM Software Services for WebSphere의 멤버이자, WebSphere® 개발 컨설턴트이다. Enterprise Integration PatternsThe Design Patterns Smalltalk Companion을 공동 집필했다. Bobby의 블로그(developerWorks)에서 IT 아키텍처를 주제로 한 더 많은 정보들을 볼 수 있다.

IT 아키텍처 소개

IT 아키텍처란 무엇인가? 아키텍처는 중요하다. 시스템 전문가에게 무엇이 중요한지를 묻는다면, 그들은 아키텍처라고 할 것이다. 시스템의 아키텍처는 시스템을 구현하는 전문가들이 공통으로 이해해야 하는 부분이다. 시스템의 주요 부분들을 이해함으로써, 시스템, 주 컴포넌트들, 이들의 상관 관계를 이해할 수 있다. 아키텍처는 전문 디자이너들이 가장 중요하다고 생각하고 있는 모든 것들을 포함하고 있다. 아키텍처는 중요성으로 상세히 분류되고, 덜 중요한 아키텍처는 낮은 수준의 디자인으로 간주된다.

시스템이 실행되는 한, 아키텍처는 결코 끝나지 않는다. 아키텍처는 시스템이 인식될 때, 첫 번째로 그려지는 부분이다. 시스템의 요구 사항들을 지속적으로 파악하고, 그러한 요구 사항들을 실현하면서 아키텍처는 변하게 된다.

정보 기술(IT) 분야에서, 하나의 소프트웨어 중심 시스템일지라도, 많은 아키텍처가 있다. 전체 시스템이 가장 높은 우선순위에 있는 것으로 간주된다면, 이것은 엔터프라이즈 아키텍처(enterprise architecture)이다. 하드웨어와 시스템을 실행하는 낮은 수준의 소프트웨어는 인프라스트럭처 아키텍처(infrastructure architecture)이다. 네트워크 아키텍처(network architecture)에서 네트워크는 가장 높은 우선 순위가 된다. 또 다른 것으로는 스토리지 아키텍처(storage architecture)가 있다. 연산 아키텍처(Operations architecture) 는 로드 스파이크(load spike) 같은 상황 속에서도 시스템을 무리 없이 실행하는 책임을 맡고 있다.

한 개의 아키텍처는 없지만, 엔터프라이즈 아키텍처는 가장 높은 레벨의 아키텍처이다. 엔터프라이즈는 공통 목표를 가진 조직들의 집합이다. 엔터프라이즈는 기업 또는 정부 기관이 될 수 있고, 같은 조직에서 서로 독립적으로 운영되는 부서가 될 수도 있다. 엔터프라이즈에는 비즈니스 파트너, 공급자, 고객들이 포함된다. 비록, 상충하는 이해관계 때문에 공통 목표를 달성하기가 어렵다. 엔터프라이즈 아키텍처는 소프트웨어 중심 시스템을 생산, 실행, 관리하는데 필요한 엔터프라이즈의 모든 영역과 필요들을 다룬다.



위로



왜 아키텍처가 중요한가

모든 시스템은 아키텍처를 갖고 있기 때문에 아키텍처는 중요하다. 가끔, 아키텍처는 시스템의 일부가 구현되기 전에 개발된다. 또 어떤 경우에는, 아키텍처에 대한 정식 정의 없이 소프트웨어 구현이 발생한다. 하지만, 후자와 같은 경우에도, 시스템은 아키텍처를 갖고 있고, 소프트웨어 세계에서도, 시스템 아키텍처는 시스템이 구현된 후에 명확해진다.

구조화 되지 않은(non-architected) 아키텍처에는 세 가지 일반적인 유형이 있고, 각각 경멸하는 듯한 뉘앙스이지만 중요한 이름을 갖고 있다.

  1. 커다란 진흙 덩이(Big ball of mud) (Shantytown) -- 이러한 유형의 시스템에는 사용되지 않는 많은 세그먼트가 포함된다. 하지만, 사용되지 않는 부분들도 규명하기도 힘들고, 제거하기는 더욱 어려운 것들로 쌓여있다.
  2. 스파게티(Spaghetti) -- 어떤 논리적 흐름이 없는 시스템이다. 여기에서 어떤 부분은 다른 부분과 연결되어 있을 수 있다. 이 같은 경우, 대부분의 부분들은 다른 많은 부분들에 대해 약간의 의존성을 갖고 있다. 이 같은 의존성이 시스템의 전체 기능에 작은 차이를 만든다.
  3. 카드로 만든 집(House of cards) -- 이러한 아키텍처에서는, 모든 부분들이 다른 많은 부분들에 의존하여, 한 부분을 변경하면 여러 부분들에 영향을 미치고, 한 가지 문제를 해결하면 더 많은 것들이 해결된다.

한 가지 유형의 속성을 가진 많은 시스템들이 두 개의 다른 유형들을 가질 수도 있다. 아래 그림은 이 세 가지 유형 모두를 가진 아키텍처 예제이다.

complex system design

시스템은 플래닝 되지 않기 때문에 이러한 방식으로 구현된다. 장기적 성공에 필요한 자질을 고려하지 않고, 필요 기술과 리소스가 부족한 사람들에 의해서, 순간적인 필요만 맞추기 위해 서둘러 구현된다. 그와 같은 시스템을 구현하는 팀은 너무 적은 인원을 갖고 있거나, 재능 있는 팀 멤버들의 효율성을 희석시키는 사람만 너무 많은 경우가 있다.

앞의 그림을 보면, 팀이 시스템을 구현하기 전에 아키텍처 디자인이 왜 필요한지를 알 수 있다. 시스템을 구현할 때, 단 한 가지라도, 작은 비전만 있어도 디자인 팀을 이런 식으로 혼란에 몰아 넣지 않을 수 있다. 이러한 비전은 세부적일 필요는 없고, 무엇이 필요하고, 어떻게 해야 하는지에 대한 전체적인 개념을 담고 있어야 한다. 누군가가 시스템 구현을 시작하기 전에 아키텍처를 포괄한 비전만 있으면, 주문은 일관성 있고 이해하기에 충분하고, 시스템은 구현될 수 있다. 새로운 필요가 생기면 팀이나 다른 팀이 수정할 수도 있다.




위로


IT 아키텍트의 역할

아키텍트는 아키텍처를 개발하고 구현된 것을 보장하는 책임을 맡은 사람이다. 개인 아키텍트가 이 모든 일을 할 수 있지만, 개발에는 팀 위주의 접근 방식이 개입된다. 이러한 관점에서 볼 때, 아키텍트는 팀의 코치, 오케스트라의 지휘자, 영화 감독 정도로 간주된다. 구현되고 있는 시스템의 아키텍트 비전은 팀의 구현 플랜이 된다.

IT 아키텍트에게 어떤 기술이 필요한가? IT 아키텍트는 큰 그림을 봐야 하고, 주요 부분들을 이해해야 하며, 이들을 어떻게 조합할 것인가를 알아야 한다. IT 아키텍트는 요구 사항, 예산, 인력, 타임프레임 같은 상충하는 필요들간 균형을 맞춰야 한다. 시스템이 무엇을 수행해야 하는지를 봐야 한다. 또한, 앞으로의 필요와 시스템이 직면할 문제들을 예상할 수 있어야 하고, 이 문제를 해결할 방법도 준비해야 한다. 아키텍트는 비전을 세운 후에, 그 비전에 대해서 팀과 상의하고, 멤버들이 그 비전을 수행할 수 있도록 동기를 부여해야 한다.

아키텍트에게 가장 필요한 것은 경험이다. 초보자가 아키텍트가 될 수는 없다. 아키텍트가 되고자 하는 사람들은 큰 일을 시도하기 전에 개인 분야를 통달해야 한다. 프로젝트를 관리하고, 스테이크홀더들과 작업하고, 팀을 이끈 경험이 필요하다. 좋은 아키텍트가 따로 있는 것이 아니다. 그 역할에 맞게 성장하는 것이다.



위로



아키텍처의 역사 요약

다음은 IT 아키텍처의 주요 사건들을 연대기별로 요약한 것이다.

  • 메인프레임. 최초의 애플리케이션은 중앙 컴퓨터에서 실행되었다. 사용자들은 단순 단말기나 텔레타이프 머신을 통해 연결했다. 아키텍처는 단순했다: 애플리케이션은 운영 체계 이상의 모든 일을 수행했다. IBM DB2® 또는 Oracle--같은 외부 데이터베이스도 없었다. 애플리케이션은 데이터를 자체 파일에 저장했다. 메시징 시스템, GUI, 공유 데이터, 애플리케이션들간 인터랙션이 없었다.
  • 워크스테이션. 데스크탑 컴퓨터가 일반화 되면서, 데스크탑 컴퓨터에서 실행되는 애플리케이션도 일반화 되었다. VisiCalc, WordPerfect (현재 Corel Corporation), Microsoft® Office 애플리케이션 같은 개인용 애플리케이션이 생겼다. 이들은 개인용 애플리케이션이었다; 각 사용자들은 로컬로 설치된 카피를 실행했고, 사용한 후에는 중지했다. 어떤 데이터도 공유되지 않았다. 로컬 디스크에 있는 파일에 저장되었으며, sneaker-net에 의해서만 분산되었다.
  • 네트워킹. 네트워크는 워크스테이션들을 서로서로 연결하거나, 공유 서버 컴퓨터, 메인프레임 스타일의 중앙 프로세싱 컴퓨터로 연결했다. 이로써 엔터프라이즈 내에서 이메일 기능을 실행할 수 있고, 파일 서버상에서 파일을 공유하게 되었다.
  • 클라이언트/서버. 네트워킹이 클라이언트/서버 컴퓨팅을 가능케 하고, 애플리케이션은 더 이상 중앙 컴퓨터나 워크스테이션에서 전적으로 실행되지 않고, 이 둘 사이를 나누었다. 원래 클라이언트/서버 애플리케이션들은 워크스테이션에서 실행되었지만, 데이터베이스 서버에서 중앙 데이터에 액세스 했다. 나중에 아키텍처는 애플리케이션을 두 부분으로 나누었다: 서버에서 실행되는 비즈니스 로직용 공유 컴포넌트와, 사용자 인터페이스를 구현했던 로컬 클라이언트로 나누었다. 중앙 비즈니스 로직을 호스팅 할 필요가 애플리케이션의 서버 부분을 실행 및 관리하는 애플리케이션 서버 개발을 이끌었다.
  • N-tier. 클라이언트/서버 아키텍처는 2-티어(two-tier) 아키텍처로 일컬어진다. 데이터베이스 서버는 애플리케이션 서버와는 다른 호스트 컴퓨터에서 실행되고, 이것은 3-티어(three-tier) 아키텍처이다. 네트워크 기반 애플리케이션이 점점 더 복잡해지면서, 디자이너들은 애플리케이션 스택--GUI에서 데이터베이스까지--을 클라이언트와 서버상의 더 많은 프로세스들로 나누었다. 이 같은 멀티-티어(multiple-tier) 디자인을 n-tier 아키텍처라고 한다.
  • 인터넷. 인터넷은 글로벌 네트워크이다. 인터넷은 대부분의 기업들의 네트워크 보다 오래되었지만, 인터넷으로 연결될 수 있는 내부 네트워크를 구현하기 전까지는 비즈니스 세계에서는 액세스 하는 것이 불가능 했다. 인터넷은 통신과 정보를 엔터프라이즈의 사용자들뿐만 아니라, 전 세계 사용자들 사이에서도 공유가 가능하도록 했다.
  • World Wide Web. 웹(Web)은 인터넷을 그래픽으로 만들었다. 작성자는 단어와 그림--Hypertext Markup Language (HTML)를 사용--을 조합 문서로 공개하고 전 세계 사용자들이 볼 수 있도록 한다. 이러한 HTML 문서들은 다른 문서에 대한 하이퍼링크를 포함하고 있기 때문에, 또 다른 문서에 대한 레퍼런스도 활성화 되었고, 독자들은 참조된 소스로 직접 액세스 할 수 있다. 이것은 노드 만큼 중요한 링크에 대한 정보를 온 디맨드(on demand)로 제공하는 것의 시작이었다.
  • Browser GUIs. 웹은 HTML 브라우저를 사용하여 정정 HTML 문서들을 본다. 이 패러다임은 빠르게 채택되어, 원격 애플리케이션들에 액세스 하는 인터랙티브 GUI를 제공했다. 이것은 중앙화된 컴퓨팅 모델로의 회귀였다. HTML 실행과 단순한 스크립팅을 제외하고는 클라이언트에서 실행되는 애플리케이션은 실제로 없었기 때문에, 사실상, 클라이언트/서버 모델이 아니었다. 인풋 값의 밸리데이션 조차도 서버에서 수행되어야 했다.
  • 웹 서비스. 인터넷은 애플리케이션들을 연결하기 위해 구현되었지만, 웹은 사람들을 정적 콘텐트와 서버 애플리케이션으로 연결시켜 주었다. 웹 서비스는 웹을 사용하여 애플리케이션들을 연결하여, 하나의 애플리케이션이 웹 연결을 통해 또 다른 애플리케이션을 실행할 수 있다.
  • Web 2.0. 웹 서비스를 웹 사이트에 적용한 것이다. 웹 사이트의 사용자는 더 이상 사람이 아니라, 또 다른 애플리케이션이 된다.
  • 서비스-지향 아키텍처(SOA). 애플리케이션은 중앙 컴퓨터나 워크스테이션에서 전적으로 실행하려는 경향이 있다. 클라이언트/서버와 n-티어 아키텍처는 애플리케이션 레이어들을 분산했다. 브라우저 GUI들은 애플리케이션을 서버로 옮겼다. n-티어 아키텍처 조차도, 런타임 스택이 독립적이기 때문에 완전히 통일된 구조였다. 애플리케이션들은 피어(peer)들 처럼 인터랙팅 한다. SOA는 애플리케이션을 사용자 기능을 나타내는 서비스 코디네이터(합성 애플리케이션의 소비자)와 그 기능을 구현하는 공급자로 나눈다. 코디네이터가 특정 애플리케이션에 고유하다면, 서비스는 여러 합성 애플리케이션들을 재사용 하고 공유될 수 있다.
  • 이벤트-중심 아키텍처(Event-driven architecture). SOA에서, 서비스 코디네이터는 원하는 서비스를 지정 및 호출한다. 이벤트 중심 아키텍처(EDA)에서, 애플리케이션은 이벤트를 탐지하고 공지를 만들어 낸다; 다른 애플리케이션들은 공지를 받고 서비스를 호출할 수 있는 핸들러를 갖고 있다. 이러한 방식으로, 탐지 애플리케이션은 이벤트에 대한 응답으로 호출해야 하는 모든 서비스에 대해 알 필요가 없다; 간단히, 이벤트를 알리고, 다른 애플리케이션들이 어떤 서비스를 호출해야 할지를 결정할 수 있도록 한다.

developerWorks Service-Oriented Architecture (SOA)와 웹서비스에서 자세한 내용을 참조하기 바란다.



위로



IBM이 IT 아키텍트를 정의하는 방법

Information technology (IT) 아키텍처는 소프트웨어 중심(software-intensive) 시스템의 기본적인 구조이다. IT 아키텍처의 가장 주도적인 부분은 애플리케이션이고, 여기에서 사용자들은 비즈니스 태스크를 수행하기 때문에, 시스템은 소프트웨어 중심적이다.

애플리케이션 외에도, IT 아키텍처에는 다른 측면들이 있다. IT 아키텍처에서 애플리케이션들은 실행 토대인 인프라스트럭처가 필요하다. 이 토대는 하드웨어-서버 컴퓨터, 데스크탑 워크스테이션, 스토리지, 네트워킹으로 구성된다. 또한, 미들웨어-애플리케이션 서버, 데이터베이스 서버, 메시징 시스템, 워크플로우 엔진, 규칙 엔진들을 포함한, 서버 소프트웨어로 구성된다. 데이터는 이러한 토대에 저장되고, 자산으로서 관리되며, 여러 애플리케이션들에 액세스 하여 사용할 수 있다. 이 토대는 통합 솔루션의 호스트도 되며, 애플리케이션들은 이 토대 위에서 서로 통신할 수 있다.

IT 아키텍처의 또 다른 측면은 이러한 엘리먼트들을 조합하는 것이다. 이 모든 것은 런타임 시 관리되어 올바른 연산을 수행할 수 있도록 해야 한다. 아키텍트는 이 모든 부분들--인프라스트럭처, 애플리케이션, 데이터, 통합, 연산--이 하나의 완벽한 시스템을 형성하여 사용자의 필요를 채울 수 있도록 해야 한다.

다양한 종류의 IT 아키텍트들이 있다. IBM은 다음과 같이 여섯 개의 아키텍처 원칙을 정의했다.

  1. 엔터프라이즈 아키텍처. 엔터프라이즈 아키텍트는 IT 기능을 비즈니스 필요에 연결하는데 집중한다. 아키텍트는 다양한 애플리케이션들 간 관계, 애플리케이션들 간 공유된 데이터, 애플리케이션 통합, 애플리케이션 실행 인프라스트럭처 등 엔터프라이즈 전체의 소프트웨어-중심 시스템을 관리한다.
  2. 애플리케이션 아키텍처. 애플리케이션 아키텍트는 비즈니스 프로세스를 자동화 하고, 사용자가 비즈니스 태스크를 수행할 수 있도록 돕는 기능을 제공하는 애플리케이션 디자인에 집중한다. 성능, 가용성, 확장성, 보안, 무결성을 포함한 기능 및 서비스 품질에 대한 요구 사항에 부합하는 애플리케이션을 설계할 책임을 맡고 있다. 또한, 애플리케이션을 실행하는데 필요한 소프트웨어와 하드웨어를 비롯하여, 애플리케이션을 개발하는 툴과 방법론을 평가 및 선택하는 책임도 있다.
  3. 정보 아키텍처. 정보 아키텍트는 데이터의 구조, 무결성, 보안, 접근성을 포함하여, 여러 애플리케이션에서 사용되는 데이터에 집중한다. 아키텍트는 데이터 관리용 시스템을 디자인, 구현, 테스트, 설치, 운영, 관리하는 책임이 있다. 이러한 시스템의 디자인은 소스, 위치, 무결성, 가용성, 성능, 수명 등을 설명해야 한다.
  4. 인프라스트럭처 아키텍처. 인프라스트럭처 아키텍처는 서버 컴퓨터, 스토리지, 워크스테이션, 미들웨어, 비 애플리케이션 소프트웨어, 네트워크, 엔터프라이즈에서 요구하는 애플리케이션과 비즈니스 프로세스를 지원하는 물리적 장치 등, 하드웨어와 서버 소프트웨어의 디자인에 집중한다. 아키텍트는 이러한 컴포넌트들을 평가 및 선택할 책임이 있다. 디자인과 선택된 제품의 유효성 검사를 위한 모델링, 시뮬레이션, 테스트도 담당하고, 결과 인프라스트럭처의 성능, 가용성, 확장성도 관리한다.
  5. 통합 아키텍처. 통합 아키텍트는 기존 애플리케이션, 소프트웨어 오퍼링, 네트워크, 엔터프라이즈 또는 엔터프라이즈들 간 협업할 수 있는 시스템을 실행하는 솔루션의 디자인에 집중한다. 다양한 기술, 벤더, 플랫폼, 컴퓨팅 스타일을 사용한다.
  6. 연산 아키텍처. 연산 아키텍트는 엔터프라이즈에서 사용되는 인프라스트럭처와 애플리케이션을 관리하는 솔루션의 디자인에 집중한다. 플래닝, 전략, 그리고, 복잡한 정보 시스템의 설치, 연산, 마이그레이션, 관리용 아키텍처를 담당한다.

이러한 아키텍트들은 영역들이 겹치기 때문에 독립적으로 작업하지 않는다. 인프라스트럭처 아키텍트는 시스템 실행을 위한 토대를 설계한다. 애플리케이션 아키텍트는 사용자용 프로그램을 설계하고, 통합 아키텍트는 프로그램들이 통합될 수 있도록 힘쓰고, 정보 아키텍트는 여기에 데이터가 포함되도록 한다. 연산 아키텍트는 이 모든 것들이 올바르게 실행되도록 하고, 엔터프라이즈 아키텍트는 이 모든 측면들을 감독하고 이들이 모두 협력할 수 있도록 한다. 다음 섹션에서는 IBM에서 규명한 여섯 개의 아키텍처 원리들간 관계를 설명하겠다.

six IT disciplines

IT 아키텍처

IBM developerWorks에는 아키텍처를 비롯한 다양한 기술 토픽들을 배울 수 있는 풍부한 자료들이 있다. 다음과 같이 유형 별로 자료를 제공한다.

  • 기술자료. IBM의 가장 숙련된 기술 스태프와 객원 기고가들이 집필을 맡고 있다. developerWorks 기술자료는 아키텍처를 비롯하여, 특정-제품 및 벤더-중립적인 애플리케이션 개발에 대한 모든 것을 망라하고 있다.
  • 튜토리얼과 교육. IT 기술을 배울 수 있는 단계별 가이드이다. 제품과 기술과 관련하여 시리즈로 구성된다.
  • IBM 교육 보조 자료. IBM 제품들을 사용하는데 필수적인 기술 관련 튜토리얼이다.
  • 팟캐스트. IBM 내/외부의 기술 리더들로부터, 전문적인 견해와 기술 혁신과 진화에 대해 들어본다.
  • 웹캐스트. 무료 기술 프레젠테이션으로서 최신 제품과 기술에 대한 정보를 알 수 있다.
  • 블로그. IBM의 유명한 기술 스태프들의 블로그를 소개한다. 주로 아키텍처 문제에 대한 이슈들을 다룬다.
  • 샘플 IT 프로젝트. 요구 사항부터 구현에 이르기까지 전체 프로젝트를 샘플링 했다.

다양한 아키텍처 관련 주제들을 찾을 수 있다. 다음은 가장 중요한 아키텍처 주제 및 IBM 제품들이다.

  • 서비스-지향 아키텍처
  • WebSphere Business Process Management
  • 가상화, 그리드, 자율 컴퓨팅
  • WebSphere Extended Deployment

서비스 지향 아키텍처(Service-Oriented Architecture)

SOA는 가장 새롭고, 가장 훌륭한 애플리케이션 아키텍처이며, IT의 미래이다. 다음은 추가 자료이다.


WebSphere Business Process Management

WebSphere Business Process Management는 SOA 애플리케이션의 구현과 전개와 관련한 IBM 제품을 제공한다. 다음은 WebSphere Business Process Management 관련 자료들이다.


가상화, 그리드, 자율 컴퓨팅

가상화는 구현 구조를 숨기면서, 논리적 리소스를 만든다. 그리드 컴퓨팅은 리소스들을 모으고, 태스크들을 선택적으로 분산한다. 자율 컴퓨팅은 자가 치료가 가능한 시스템으로 만들며, 요구와 문제에 동적으로 반응할 수 있도록 한다. 기타 자세한 정보:


WebSphere Extended Deployment

WebSphere Extended Deployment은 WebSphere Application Server 환경으로서 그리드와 자율 기능을 제공한다. 다음은 추가 자료들이다:



위로



샘플 IT 프로젝트

developerWorks 샘플 IT 프로젝트에는 IT 시스템 개발 과정을 이해하는데 도움이 되는 아키텍처, 기술, IBM 제품들이 망라되어 있다. 아키텍처를 다루는 프로젝트는 다음과 같다.



위로



추가 자료

IT 아키텍처 관련 추가 자료들도 참조하라.

:
Posted by 뽀기
2007. 1. 29. 14:59

자주 참조하는 딕셔너리 그거/DB2007. 1. 29. 14:59


분류

성능뷰 / 딕셔너리

딕셔너리

세션과 관련된 정보

V$SESSION

세션에 대한 전반적인 정보를 보여준다

V$SESSSTAT

세션의 현황에 대한 통계정보를 보여준다

V$SESSION_WAIT

세션의 WAITING 통계정보를 보여준다

V$SESSION_EVENT

세션의 현재 WATING EVENT를 보여준다

V$SESS_IO

세션의 IO현황을 보여준다

V$STATNAME

SESSSTAT STATUS의 이름을 보여준다.

성능 관련 정보

V$SYSTAT

시스템 전반의 성능 통계 정보를 보여준다

V$SYSTEM_EVENT

시스템의 WATING EVENT별 통계정보를 보여준다

V$LIBRARYCACHE

라이브러리 캐쉬 사용 정보를 보여준다.

V$ROWCACHE

데이터 딕셔너리의 사용정보를 보여준다

V$LATCH

LATCH에 대한 정보를 보여준다

V$LOCK

LOCK에 대한 정보를 보여준다

V$LOCKED_OBJECT

LOCK이 걸린 오브젝트에 대한 정보를 보여준다

V$SQLAREA

SQLAREA에 대한 정보를 보여준다

V$WAITSTAT

시스템의 현재 Waiting현황을 보여준다

SQL관련

V$SQL

Parse SQL문장을 보여줌

V$SQLTEXT

라인별로 SQL문장을 보여줌

V$SQLTEXT_WITH_NEWLINES

NewLine을 포함하여 SQL문장을 보여줌

시스템
구성정보

V$SGA

SGA 의 정보를 보여준다

V$PARAMETER

InitSID.ora 등에서 설정된 파라메터, 즉 데이터베이스의 구동되었을 때의 환경 파라메터 정보이다

V$CONTROLFILE

Control 파일에 대한 정보를 보여준다.

V$DATAFILE

데이터 파일에 대한 정보를 보여준다.

V$LOG, V$LOGFILE

리두 로그에 대한 정보를 보여준다.

USER

DBA_USERS

데이터베이스 USER에 대한 정보를 보여준다

권한

DBA_ROLES

ROLE에 대한 정보를 보여준다.

DBA_TAB_PRIVS

테이블에 대한 권한이 설정된 정보를 보여 준다

DBA_SYS_PRIVS

SYSTEM 권한이 설정된 정보를 보여준다

DBA_ROLE_PRIVS

ROLE에 대한 권한이 설정된 정보를 보여 준다.

DBA_COL_PRIVS

컬럼 단위로 권한이 설정된 정보를 보여준다.

세그먼트&오브젝트

DBA_SEGMENTS

세그먼트(저장공간이 있는 오브젝트)에 대한 정보를 보여준다.

DBA_OBJECTS

모든 오브젝트에 대한 정보를 보여준다.

테이블

스페이스

V$TABLESPACE

테이블 스페이스에 대한 정보를 보여준다.

DBA_TABLESPACES

테이블 스페이스에 대한 정보를 보여준다.

DBA_DATA_FILES

테이블스페이스를 구성하고 있는 데이터 파일에 대한 정보를 보여준다.

DBA_FREE_SPACE

아직 사용되지 않은 영역에 대한 정보를 보여준다.

DBA_EXTENTS

할당된  EXTENT의 정보를 보여준다.

DBA_TS_QUOTAS

QUOTA가 설정된 정보를 보여준다

테이블

DBA_TABLES

테이블에 대한 정보를 보여준다.

DBA_TAB_COLUMNS

테이블을 구성하는 컬럼에 대한 정보를 보여준다

DBA_TAB_COMMENTS

테이블의 설명에 대한 정보를 보여준다

DBA_PART_TABLES

파티션 테이블에 대한 정보를 보여준다.

DBA_PART_KEY_COLUMNS

파티션을 구성하는 기준 컬럼에 대한 정보를 보여준다

DBA_COL_COMMENTS

컬럼에 대한 설명에 대한 정보를 보여 준다

인덱스

DBA_INDEXES

인덱스에 대한 정보를 보여준다.

DBA_PART_INDEXES

파티션된 인덱스에 대한 정보를 보여준다

DBA_IND_COLUMNS

인덱스를 구성하는 컬럼에 대한 정보를 보여준다

CONSTRAINT

DBA_CONSTRAINTS

테이블에 걸려있는 제약조건을 보여준다.

DBA_CONS_COLUMNS

제약조건을 구성하는 컬럼에 대한 조건을 보여준다.

DBA_VIEWS

VIEW를 정의한 정보를 보여준다.

시노님

DBA_SYNONYMS

시노님에 대한 정보를 보여준다.

시퀀스

DBA_SEQUENCES

시퀀스에 대한 정보를 보여준다.

DB LINK

DBA_DB_LINKS

DB 링크에 대한 정의를 보여준다

트리거

DBA_TRIGGERS

트리거에 대한 정의를 보여준다.

DBA_TRIGGER_COLS

컬럼 단위로 작성된 트리거에 대한 정의를 보여준다.

ROLLBACK

DBA_ROLLBACK_SEGS

롤백세그먼트에 대한 정보를 보여 준다.

FUNCTION, PROCEDURE,

PACKAGE

DBA_SOURCE

FUNCTION, PROCEDURE,PACKAGE를 구성하는 PL/SQL 소스코드를 보여준다


(출처: 마소지 2003.09)
:
Posted by 뽀기
오라클 10g와 그리드] 스트림 기능 이용하기

최치영, 정현훈 (한국오라클)

 

최근 흩어져 있는 데이터를 공유하는 것에 대한 논의가 활발히 이뤄지고 있다. 특히 원거리의 분산환경 상의 정보뿐만 아니라 서로 성격을 달리하는 정보들(DW, CRM, 인사, 회계 등)간의 긴밀한 데이터 통합이 필수적이다. 이런 요구가 생기는 것은 기업 환경의 급격한 변화에 기인하고 있다. 기업에서는 회사의 업무 우선 순위의 변경이라든지 업무요구의 변화에 따라 자체 자원 조정의 요구에 종종 직면하게 된다. 오라클10g에서는 급격한 변화 요구에 따른 회사 자원의 손쉬운 조정을 가능하게 하는 완벽한 그리드 컴퓨팅 솔루션을 제공한다. 정보 프로비저닝(provisioning)은 분산환경하에서 언제 어디서든지 필요로 하는 정보의 접근을 가능케 하는 그리드 솔루션의 중요한 구성요소이다.

원하는 곳, 필요한 때에 데이터 얻기
그리드 컴퓨팅은 필요로 하는 자원의 동적 재배치와 가상화를 통한 조정의 어려움을 배제할 수 있다. 정보는 필요로 하는 곳에 반드시 제공되어야 하는 중요한 자원 중 하나이다. 원하는 곳, 필요로 하는 때에 데이터를 얻기 위해서 매우 정교한 정보 프로비저닝 기술이 요구된다. 이러한 프로비저닝 기술은 정보의 물리적인 위치와 상관없이 필요로 하는 시기와 장소에 최적의 정보를 얻을 수 있도록 한다. 그리드 내의 분산 환경이거나 독립형 시스템, 다수의 그리드에 걸쳐 있는 정보를 통합한다.

정보를 공유하면 사용자가 필요로 할 경우 그것이 어디에 저장되어 있는지 알 필요 없이 정보를 취득할 수 있다. 정보가 어떤 가용 자원상에 있는지 관계없이 처리하기 위해서 그리드는 다수의 시스템에 걸쳐 효율적으로 정보를 공유해야 한다. 그리드는 이기종의 시스템에 있는 데이터 액세스까지도 제공해야만 한다.

오라클10g에서는 분산 SQL, 메시지 큐잉과 복제 기능을 포함한 데이터 공유를 위한 단일 통합환경을 제공하는 오라클 스트림(Streams), 오라클 환경으로부터 non-오라클 시스템의 데이터 접근을 허용하는 ‘투명한 게이트웨이’와 transportable tablespace, data pump 등을 이용한 대규모 데이터 이동 기술을 이용한 정보 프로비저닝 기능을 갖고 있다.

그 중 오라클에서 제시하는 정보 공유(information sharing) 기법들 중 오라클 스트림에 대해서 자세히 알아보도록 하겠다. 오라클 스트림은 오라클9i R2부터 소개된 정보 공유 기능이다. 오라클 스트림은 데이터베이스 내 또는 하나의 데이터베이스에서 다른 데이터베이스로 데이터(데이터, 트랜잭션 및 이벤트)를 전달할 수 있도록 지원한다.

예를 들어 스트림을 사용해 데이터베이스 객체의 DML 및 DDL 변경 사항을 이벤트로 캡처할 수 있다. 그런 다음 데이터베이스 객체를 다른 데이터베이스로 효율적으로 복제해 이러한 이벤트를 다른 데이터베이스에 전달할 수 있다. 또한 같은 오라클 버전, OS, 플랫폼과 같은 제한사항이 없으며, 또한 게이트웨이를 사용해 이기종 DBMS(Heterogeneous DBMS; DB2, SQL 서버, 사이베이스 등)와의 연동까지도 가능하다.

<그림 1> 오라클 스트림


활용방안
데이터 복제 기능 활용
현재의 시스템 환경은 데이터와 인터넷 환경을 통한 사용자의 급격한 증가에 직면하고 있는 상황이다. 고로 OLTP로 운영되는 메인 시스템 같은 경우 피크 타임(peak time)시의 부하량 증가 및 배치 작업시의 OLTP와 대규모 쿼리성 작업의 병목현상으로 인한 문제가 심각하다. 이 경우 보통 OLTP 시스템의 물리적인 증가(CPU, 메모리 증가)를 통해서 문제를 해결하던지 제한적이나마 튜닝을 통해서 해결될 수 있지만, 너무 많은 비용의 소요와 제한적인 해결책이라고 할 수 있다.

OLTP에서 생기는 막대한 데이터들은 배치/리포트용 시스템, fail-over 시스템, 분석 시스템으로 Near Real time으로 이동시키는 것이 가능하다면, 또한 이런 작업을 할 때 OLTP에 부하를 주지 않을 수만 있다면 OLTP 시스템의 안정화, 소규모 투자를 통한 분석/리포트 시스템 구축이라는 두 마리 토끼를 한꺼번에 잡을 수 있다.

현재 이런 작업은 여러 산업 분야에서 사용되고 있으며, 그 중 반도체 생산시스템 분야의 생산 레거시 시스템에서 분석 시스템으로의 데이터 이동 처리 업무에 파일롯 형태로 검토하고 있다.

데이터 웨어하우스 로딩 사용
OLTP에서 DW 시스템으로 데이터를 이동시키는 전통적인 방법은 배치 프로그램을 통한 하루에 한 두 번씩의 대규모 SQL문의 수행이었다. 그러나 새롭게 개선된 오라클 스트림을 사용하면 OLTP 시스템에 부하 없이 리두 로그 파일의 변경된 내용만을 전달하는 것이 가능하고, 또한 리두 로그 파일이 거의 실시간에 데이터가 생기는 속성으로 인해서 근접 실시간 데이터 이동이 가능하다. 현재의 RTE(Real Time Enterprise) 환경에서 가장 중요한 기능이 제공된다.

현재의 진화하는 DW 시스템은 예전의 오래된 데이터를 누적해서 분석하는 차원에서 진일보해 실시간으로 파악되는 현황을 토대로 분석하는 응용된 DW 시스템으로 나아가고 있다. 몇 일전 혹은 몇 년 전의 가격 추이도 중요한 정보지만 지금 당장의 판매 현황, 판매 추이 분석이 더 중요한 기업환경에서 DW의 ETT 작업에 스트림을 활용할 수 있다.

메시지 큐잉 기능의 활용
단순한 데이터의 이동뿐만 아니라 하나의 운영 시스템에서의 특정 데이터를 대상으로 다른 복수의 시스템으로 복수의 변형된 데이터로 변환해 전송할 수 있다. 예를 들면 생산시스템에서 회계 시스템, 판매 시스템, 분석 시스템, DW 시스템, CRM 시스템, EIS 시스템 등 다수의 데이터가 필요한 곳으로 보낼 수도 있고, 필요에 의해서 원본 데이터에서 변형된 형태로 데이터를 보낼 수 있다. 오라클 큐잉 매커니즘을 사용하기 때문에 안정적으로 사용되며, 현 업무에서 적용 가능한 데이터 통합(integration) 시스템의 구축도 가능하다. 보통의 메시지를 이용하는 EAI 솔루션과 동일 수준의 데이터 관리, 이벤트 처리가 가능하며 더불어 데이터베이스의 안정성까지 추가적으로 보장한다.

분산환경에서의 데이터 복제 가능
중앙 집중적인 통합 시스템의 문제로 인한 분산환경으로 시스템이 구축돼 있을 경우 서로 공유하는 데이터에 대해서는 분산 복제 기능을 사용해 데이터의 정확성을 맞춰야 하는데, 이 경우 과거 버전의 오라클에서는 db_link, trigger, replication 등의 방법을 이용했다. 이런 방법들은 발표될 시점에서는 아주 강력하고 손쉬운 방법이었으나, 지금은 셋업의 불편, 퍼포먼스의 문제 등으로 인해 그 사용이 제한적인 상태이다. 스트림을 이용한 데이터 복제는 기존의 오라클 데이터 공유(data sharing) 방법에서 할 수 있는 양방향 복제, 데이터 충돌에 따른 resolution, 이기종 DBMS와의 연동뿐만 아니라 더 빠른 속도와 네트워크 부하의 감소, 더 간편한 셋업(configuration)이 가능하다.

고가용성 솔루션
원본 시스템의 전체 데이터베이스를 백업 시스템으로 near real time으로 이동시킨다면 원본 시스템의 장애시 백업 시스템을 즉시 활용하는 것이 가능하다. 즉 원격지에서의 데이터 보호를 위한 솔루션인 재난복구(DR) 시스템으로도 사용이 가능하다.

스트림 구조
스트림은 오라클9i R2에 소개된 것으로 Logminer(리두 로그 파일 분석기)의 기능을 이용해 리두 로그 파일/아카이브 파일(Archive File)을 읽어서 원하는 테이블, 스키마 혹은 전체 데이터베이스의 변경사항을 캡처해 리모트 데이터베이스(Remote Database)로 전달해 적용한다.

이러한 방식으로 원격지 데이터베이스간의 정보 공유를 지원하며, 또한 스트림은 전달하는 과정에서 소스 변경사항 이외의 추가적인 변경이나 정보를 맵핑해 타겟 데이터베이스에 반영할 수 있는 트랜스포메이션(transformation) 기능도 지원한다.

<그림 2> 스트림 아키텍처



<그림 3> 3대 기본 요소


캡처
원래 오라클 데이터베이스의 변경은 모두 리두 로그 파일로 기록된다. 이 리두 로그 파일은 향후 복구시 이용될 수 있도록 데이터베이스의 변경 내역을 담고 있으며, 또 아카이브 프로세스에 의해서 리두 로그 파일이 arch 로그 파일로 복사된다.

캡처 프로세스는 소스 데이터베이스의 리두 로그 & 아카이브 로그의의 변동 사항을 읽어서 등록된 객체의 변경사항(DML, DDL)이 있으면 리두 로그 포맷을 LCR 포맷으로 변경해 송신 큐에 넣어 주는 역할을 한다. 즉 리두 로그 파일에 있는 변경된 사항만을 캡처해 LCR이라는 형태로 변환시켜 송신 큐에 넣어주는 역할을 하며 캡처 시작(capture start)에 의해서 ora_cnnn_sid라는 백그라운드 프로세스가 실질적인 작업을 한다. 캡처 프로세스는 buffered 큐 형태의 Sys.AnyData라는 데이터 타입을 이용해 LCR 형태로 저장한다. 스트림에서는 모든 사용자 메시지를 SYS.AnyData 타입으로 랩핑(wrapping)해 전달한다.

<그림 4> 캡처 프로세스


◆ 캡처 진행 과정
[1] 사용자에 의해서 dept 테이블에 변경 요청이 들어옴
[2] 오라클 DBMS는 dept 테이블을 수정하고, 그와 동시에 리두 로그 파일에도 그 내용을 저장함
[3] 캡처 프로세스는 리두 로그 파일을 분석해 LCR 포맷의 형태로 전환해 SGA 메모리 영역의 buffered 큐에 저장함(ora_cnnn_sid).
[4] 캡처할 때 규칙에 의한 평가, 변환 작업을 수행할 수도 있다(evaluation & transformation).

Staging & Propagation
소스 데이터베이스 대기열의 변경 사항을 도착지 데이터베이스의 대기열로 전달한다. 도착지(destination) 데이터베이스의 큐에 반영하기 위해 스케줄링을 한다. Staging area는 캡처된 이벤트에 대한 저장, 관리 서비스를 제공하는 큐 매커니즘이다. 동일한 데이터베이스나 다른 데이터베이스에 존재하는 또 다른 staging area로 전달(propagation)될 수 있으며 네트워크 라우팅의 간소화와 트래픽의 감소를 위해 모든 데이터베이스와 애플리케이션에 바로 보낼 필요 없이 일단 일종의 허브 데이터베이스(실제로 적용은 하지 않는)로 전달할 수 있다.

일반적인 큐잉 시스템이 제공하는 데이터의 유실(loss)을 절대로 허용하지 않기 때문에 도착지 사이트에 전달되기 전까지는 큐에 남아있어 데이터 유실이 전혀 있을 수 없다. 또한 표준 방식을 통해 핸들링되므로 PL/SQL, JMS, OCI 프로그래밍 등 일반적인 프로그래밍 방식을 통해서 사용자 프로그램이 enqueue 메시지 처리를 할 수 있다.

<그림 5> 소스 큐와 Destination 큐


◆ Propagation의 진행 과정
[1] 캡처에 의해서 만들어진 LCR 포맷 데이터나 사용자 프로그램에 의해서 만들어진 사용자 메시지가 큐에 저장된다.
[2] DBMS_job 또는 DBMS_schedule에 의해 등록된 propagation을 처리하는 job이 설정된 값에 따라(1초부터 초단위로 간격 조정 가능) 큐에서 데이터를 읽어 목적지(도착지) 시스템의 큐에 짚어 넣는다.
[3] 이때 사용되는 큐 테이블은 SGA의 메모리 영역에 있는 것으로서 메모리 사이의 I/O를 수행하기 때문에 빠른 처리 속도를 가진다. 만약 할당된 메모리 영역이 부족할 경우는 스트림을 지원하는 테이블스페이스(디스크)에 저장되어, 데이터 유실이 없도록 하는 안정장치를 갖고 있다. 메모리에서 propagation 작업이 이뤄지다가 아직 도착하지 못한 데이터가 있는 상태에서 DBMS의 갑작스런 정지 상황이 생기면 다시 startup될 때 캡처 프로세스에 의해서 소스 큐에 미 전달된 데이터의 정보를 파악해 다시 큐잉 작업을 수행해 도착지 DBMS에 가는 작업을 자동적으로 수행한다.

APPLY
Staging area에 있는 이벤트는 apply 프로세스에 의해 소비(consumption)되어, 데이터베이스 내에서 SQL문 형태로 적용되던지, 또는 사용자 메시지의 경우 애플리케이션에 의해서 도착지 데이터베이스에 적용된다. 이때 빠른 처리를 위해서 병렬 apply 서버 셋업이 가능하다.

결국 범용적인 표준을 따르는 큐에서 데이터를 추출해서 적용하는 것이므로, JMS, C, C++, PLSQL, SOAP (XML/HTTP) 등 어떠한 프로그래밍 방법을 통해서 적용되는 것이 가능하다. 원본 데이터베이스에서 변경된 레코드를 도착지 데이터베이스에서 적용하려고 할 때, 두 데이터를 동시에 변경하면 충돌이 일어날 경우가 있는데, 이 경우 자동적으로 데이터 충돌을 확인해 만약 미리 정의된 해결 루틴이 있다면 그 방법대로 적용하고 해결 루틴이 실패한다면 에러 큐에 저장해 어떠한 경우라도 데이터의 유실이 없도록 한다.

<그림 6> Apply 프로세스


◆ apply 진행 과정
[1] propagation 프로세스에 의해서 도착지 서버의 큐에 도달한 데이터를 apply 프로세스에 의해서 도착지 데이터베이스에 적용한다(ora_annn_SID).
[2] 이때 apply에서 적용하는 핸들러들에 의해서 각 단계나 액션별로 특정 로직을 첨가해 적용되는 데이터에 대한 조작이 가능하다.
[3] apply 핸들러를 거쳐서 해당 테이블에 최종적으로 적용된다.

Apply 핸들러
핸들러에는 다음과 같은 5가지 사항으로 생각해 볼 수 있다.

[1] 메시지 핸들러 : 사용자 메시지(Non-LCR) 처리를 전용하는 핸들러
[2] Pre-commit 핸들러 : commit시의 로직 처리할 때 사용하는 핸들러
[3] DML/DDL 핸들러 : Insert/update/delete/DDL 처리에 적용하는 핸들러
[4] Conflict 핸들러 : Apply 적용시 발생하는 데이터 충돌을 해결하는 핸들러 정의이다. 즉 여러 가지 발생할 수 있는 에러를 위한 해결 로직을 구현해 발생할 수 있는 에러를 해결할 수 있도록 한다.
[5] 에러 핸들러 : Apply 적용시 발생하는 에러에 대한 처리 로직을 등록해 사용할 수 있다. 다만 에러 핸들러와 DML 핸들러는 동시에 사용할 수 없다.

<그림 7>Apply 핸들러


스트림 적용
데이터 충돌
다음의 <그림 7>과 같이 동시에 서울 데이터베이스와 부산 데이터베이스에서 사원번호가 115번인 사람의 manager_id를 변경했을 경우 서울에서 변경된 사항이 리두 로그에 적용되고 캡처에 의해서 큐에 저장되고, propagation에 의해서 부산 데이터베이스의 큐에 도착하고, apply 프로세스에 의해서 적용되려고 할 때, 이때 부산 데이터베이스의 사원번호 115번이 이미 다른 것으로 변경돼 있는 경우 데이터 충돌이 발생한다.

<그림 8> 서울과 부산에서의 스트림 적용



<그림 9>오라클 다운 스트림


좀 더 자세히 살펴보면 다음과 같다.

[1] 소스 사이트에서 데이터를 가져올 때부터 변경되기 전인 old value(manager_id= 100이라고 가정)와 변경된 후인 new value(manager_id=120) 둘 다의 정보(old, new)를 갖고 타겟 사이트로 온다.
[2] 타겟 사이트에서 해당 건(사원번호 115번)의 현재 value(manager_id=108)와 old value(manager_id=100)를 비교한다.
[3] 만약 매치한다면 new value로 적용한다.
[4] 만약 매치가 되지 않는다면, conflict resolution 메쏘드를 이용해 적용을 시도한다. 이때 사용하는 resolution 메쏘드는 timestamp 방식(시간 기준), maximum/minimum value 방식, overwrite(소스 사이트 우선), discard(타겟 사이트 우선), user defined 방식이 있다.
[5] 만약 resolution 메쏘드로 해결되지 않거나 해결 루틴 자체가 없을 경우 정상적으로 적용되지 못하므로 에러 큐에 저장되어져 DBA의 수동적인 처리를 따르게 된다.

또한 스트림의 적용 환경은 다음과 같다.

[1] 오라클9i R2 이상 버전(9.2.0.3 이상 추천), 특히 오라클10g에서는 다운 스트림이 적용 가능
스트림은 오라클9i R2의 기본 기능으로 오라클9i R2를 설치하면 스트림을 사용할 수 있는 소프트웨어 및 데이터베이스 내부의 객체는 모두 설치된다. 즉 다른 스크립트를 수행해줄 필요가 없으며 DBMS 설치 후 즉시 사용 가능하며, DBMS 기본 기능임으로 추가적인 비용이 들지 않는다.
[2] 아카이브 로그 모드로 셋업
캡처 프로세스는 일반적으로 온라인 리두 로그를 읽어서 변경을 Capturing하지만 RAC 환경이나 캡처 프로세스가 다운된 후 재 시작될 때 아카이브 로그 파일을 액세스하는 경우가 있다. 그러므로 소스가 되는 데이터베이스는 반드시 아카이브 로그로 운영되어야 한다.
[3] Initialization 파라미터
Global_names = true(네트워크상에서 unique 오라클을 설정하기 위해 db link를 생성할 때 리모트 데이터베이스의 global_name으로 만들도록 제약을 가하는 파라미터)


JOB_QUEUE_PROCESSES = 10
AQ_TM_PROCESSES = 2
STREAMS_POOL_SIZE = 200m


다운 스트림
오라클9i R2에 소개된 스트림은 소스 사이트에서 Capturing을 해 타겟으로 전달해 타겟 사이트가 적용하는 방식의 구조이다. 이 경우 보통 소스 사이트는 주요한 레거시 업무를 처리하고, 타겟 사이트는 DW 등과 같은 쿼리 전용 업무를 운영할 경우가 많다. 주요한 레거시 시스템의 캡처 부하를 없애기 위해서 오라클10g부터는 타겟 사이트에서 직접 캡처를 할 수 있는 다운 스트림 캡처를 제공하기 때문에 소스 사이트의 부하를 획기적으로 줄였다.

[1] 처리 방식
로그 트랜스포트 메쏘드(Log transport method)나 FTP와 유사한 방식으로 소스 사이트의 리두 로그를 타겟 사이트로 이동한 후 캡처하는 것이다. 고로 연관된 객체, logminer session, queues, rules, capture process가 타겟 사이트에 생성된다. 특히 소스 사이트에서 하는 일은 리두 로그를 타겟 사이트로 이동시키는 것만 담당하기 때문에 시스템 부하가 거의 없다.

[2] 장점
소스 사이트의 부하를 거의 완전히 없앨 수 있다. 또한 캡처 프로세스 관리가 용이하다(여러 개의 다른 소스 사이트의 로그를 캡처하고 제어할 수 있음). 그리고 소스 사이트의 장애에 대한 추가적인 보호 장치로서 역할을 한다.

[3] 제약 사항
리두 로그 파일, 아카이브 로그 파일을 다른 시스템으로 전송해야 하므로 같은 OS, 오라클10g이어야 한다. 단, 다운 스트림 후 또 다른 타겟 사이트에 전송한다면 스트림의 일반 특성과 마찬가지로 같은 OS일 필요는 없다.

◆ Support 타입
[1] support datatype
CHAR , NCHAR
VARCHAR2, NVARCHAR2,
NUMBER,
DATE,
RAW,
BLOB, CLOB , NCLOB
TIMESTAMP
LONG, LONG RAW, UROWID columns
UROWID columns
BINARY_FLOAT and BINARY_DOUBLE columns -- 오라클10g부터 생긴 데이터 타입
Index organized tables (IOTs): 예외 LOB, overflow segment, partition IOT,
Tables that use function-based & descending indexes

[2] Unsupport datatype
BFILE, Unicode CLOBs,
ROWID
Changes to SYS objects, Changes to SYSTEM objects,
Temporary Objects,
Simple and nested user-defined datatypes,
Collections (REFs, nested tables and VARRAYs),
XML Type,
Object REFs,
CREATE TABLE AS SELECT of a table with a clustered key,
Spatial datatypes

데이터 공유 기술 중 최고의 기능을 활용
데이터 공유의 요구가 증가하는 IT 환경에서 오라클의 스트림 기술은 기본적으로 DB 기본 기능에 포함되어 있으므로, 비용이 추가적으로 더 들지 않으면서도 데이터 통합, 데이터 공유의 요구를 완벽히 이룰 수 있다. 더군다나 빠른 처리 메커니즘이나 아주 유연한 변환 기능은 다른 상용 제품을 완전히 대체할 수 있다. 데이터 통합이 주요한 이슈이거나, 기존 시스템에 부하 없이 데이터를 가져오고 싶을 때 활용할 수 있으며, 오라클 데이터 공유 기술 중에 최고의 성능과 기능을 가진 오라클 스트림을 많이 활용해 보길 바란다.

그리드 컴퓨팅 적용으로 IT 과제 해결
TenG 주식회사의 ‘그리드 TFT 팀’은 IT 시스템을 오라클10g를 적용하기로 결정해 나가는 과정에서 여러 기술적인 요건을 살펴봤다. 또한 그리드 컴퓨팅에 대해 다양한 개념을 접하고 있는 상태이다. 온 디맨드 비즈니스, 어댑티브 비즈니스, 유틸리티 컴퓨팅 등 많은 새로운 컴퓨팅 환경 중에 유독 ‘그리드 컴퓨팅’이 가장 주목받고 있는 이유는 무엇인가? 그 배경에는 크게 두 가지 이유가 있다. 첫 번째는 자원의 효과적 활용, 두 번째는 IT의 복잡성을 줄일 수 있기 때문이다.

첫 번째, ‘자원의 효율적 활용’은 그리드 컴퓨팅의 기본 개념이라고 볼 수 있다. 즉 표준화되고 모듈화된 스토리지와 서버들을 하나의 풀(pool)로 만들어 놓고 이를 총체적으로 자동 관리하도록 한다는 것이다. 두 번째 ‘IT의 복잡성을 줄인다’는 측면에서 봐도 그리드 컴퓨팅은 IT 인프라의 고립화, 복잡화의 문제점을 해결해 줄 수 있는 실현 가능한 대안이 되고 있는 것이다.

<그림 10> 인포메이션 아키텍처와 그리드 컴퓨팅과의 관계


이와 같이 데이터베이스 선택 기준이 그리드 컴퓨팅이 되는 것이다. 오라클10g는 그리드의 개념을 데이터베이스 선택기준으로 제시하며 다음과 같은 특성이 기업의 기존 인프라를 그리드 환경으로 전환하도록 지원한다.

[1] 프로비저닝
[2] 리소스 풀링 및 가상화
[3] 양질의 서비스
[4] 관리의 편이성

<표 1> 그리드 컴퓨팅을 통한 기업 IT 과제의 해결


TenG 주식회사와 같이 시스템 중단이 없는 기업 인프라를 갖추고자 한다면 인포메이션 아키텍처를 구성하면서 향후 컴퓨팅 환경의 가장 주요한 변환 추세인 그리드 컴퓨팅을 기업 내에 적용해 나가며 <표 1>과 같은 IT 과제를 해결할 수 있을 것이다. @


[Replication vs. 스트림]  
시스템 오버헤드의 감소
이전의 replication 방식은 복제가 설정된 테이블 하나하나 마다 inner-trigger, 패키지를 이용해 트랜잭션이 발생할 때마다 inner-trigger, 패키지가 구동되는 메커니즘을 갖고 있어 오버헤드를 수반하는 방식이었다.
그러나 스트림 방식은 DB 운영 중에 기본적으로 생기는 리두 로그 파일에서 변경된 것만 캡처하고, 또한 데이터베이스 코어 프로세스가 아닌 별도의 캡처 프로세스를 활용함으로 시스템의 로드를 줄인다. 또한 매번 발생하는 트랜잭션마다의 처리가 아니라 리두 로그 파일 단위의 async한 처리 위주임으로 일의 양이 대폭 줄어든다. 더군다나 오라클10g의 다운 스트림을 이용한다면 시스템의 오버헤드를 더 줄일 수 있다.

exp/imp/data pump 사용 가능
이전의 replication 방식은 새로운 사이트가 생기거나 데이터를 이동할 경우 exp/imp 등과 같은 bulk 작업이 원활 하지 않았으나, 스트림은 exp/imp/data pump와 같은 기능들을 아무런 제한 없이 사용하는 것이 가능하다. 이전에는 100만건 정도의 데이터를 초기 셋업하는데 10시간 정도 걸렸다면, 스트림에서 pump를 사용하면 1분 이내에 처리가 될 수 있다.

transformation 기능 제공
이전의 replication 방식은 단순한 데이터 복제를 하거나 부분 집합 정도의 처리밖에 하지 못했으나, 스트림은 transformation 기능을 이용하거나 apply시 핸들러를 이용한 로직 처리를 통해서 데이터 포맷의 변경, 데이터 처리의 변환까지 가능하다. 데이터 integrate 차원의 기능을 지원한다.

DDL 처리시에도 복제 가능
이전의 replication 방식은 멀티 마스터 환경에서만 DDL 변경이 가능했고, 또 이 경우에도 복제 환경을 정지시키고서야 가능했다. 그러나 스트림에서는 복제 환경이 계속되고 있는 상태에서 DDL 처리를 할 수 있다. 이전 방식의 셋업 환경보다 획기적으로 개선됐다.

다른 데이터베이스와 강력한 통합
이전의 replication 방식에서도 이기종과의 통합이 가능했으나 그 제약사항이 많았다. 그러나 스트림에서는 transparent 게이트웨이 및 generic connectivity를 이용해 이기종 DBMS와의 연동을 아주 쉽고 강력하게 이룰 수 있다. 이기종 DBMS에서 어댑터 프로그램을 이용하거나 사용자 프로그램을 이용해서 데이터를 캡처해 낼 수도 있으며, apply시 게이트웨이나 자바 프로그램을 통해서 이기종 DBMS에 적용시키는 것도 가능하다.

'그거 > DB' 카테고리의 다른 글

TOAD에서 Explain plan 사용하기  (0) 2007.08.02
[Oracle] recursive select  (0) 2007.08.02
테이블의 FK 잠깐 꺼 놓는 방법  (0) 2007.08.01
자주 참조하는 딕셔너리  (0) 2007.01.29
오라클 한글지원 문자타입들  (0) 2007.01.29
:
Posted by 뽀기
2007. 1. 29. 14:56

오라클 한글지원 문자타입들 그거/DB2007. 1. 29. 14:56

한글을 지원하는 characterset 에는 아래의 것들이 있습니다.

KO16KSC5601
- 완성형
- 한글 2350자 지원

KO16MSWIN949
- 일명 확장완성형(MS에서 windows 에 만들어 놓은 codepage)
- 한글 11172자 지원
- 한글 순서가 뒤죽박죽(2350자의 KSC5601 에서 지원하는 글자는 가나다 순이지만 그 외 글자는 남는 코드 여기저기에 들어가 있음)
- 8.0.6 이상에서만 사용가능 (8.0.5 이하 버전과의 db link나 client 가 8.0.5 등인 경우는 문제가 발생)

UTF8
- Unicode의 CES 중 하나(구현방법중 하나라고 생각하면 될 듯)
- ascii는 1byte, 그 외 유럽쪽은 2byte, 아시아는 3byte(CJK)
- 한글 11172자 지원(고어도 지원) 및 가나다 순 정렬
=> '가'와 '나'의 차이와 '나'와 '다'의 차이가 같음. 제대로 된 전화번호부를 만들 수 있을 듯...

AL32UTF8
- Unicode의 CES중 하나(9i부터 나온 것으로 알고 있음)
- Length semantics로 하면 4 byte( varchar2(3 char) 로 하면 12byte, UTF8에서는 9byte로 알고 있음)
- UTF8과 한글지원 부분은 똑같은 것으로 알고 있음.
- 8i는 미지원이므로 db link나 8i client 사용시 정상적 처리 불가

AL16UTF16
- Unicode의 CES중 하나
- national characterset 에서만 선택가능
- 모든 글자를 2byte or 4byte로 표현

고로

용량을 줄이면서 한글표현 다하고 싶고 8.0.5는 없다면 ko16mswin949를,
한글 표현 제대로 하면서 가나다 순으로 제대로 정렬될 필요가 있으면서 8i와 전혀 연동할 계획이 없다면 AL32UTF8,
위와 같지만 8i가 껴있다면 UTF8로 하시는 것이 좋을 듯 합니다.
 
 
OTN 퍼옴..  TUNNEL 님..
:
Posted by 뽀기

현우성 (드림헌터)   2004/10/26
매크로미디어
하루가 다르게 신기술이 쏟아진다. 시시각각 변화하는 IT 환경을 보고 있자면 문득 스펜서 존슨의 「누가 내 치즈를 옮겼을까」라는 책이 떠오른다. 사람들은 변화를 진행하고 있는 일의 일부라고 생각할 뿐 생활의 일부로 받아들이지 않는다. 자신이 하고 있는 일이 언제까지 계속 안정적으로 지속될 수 있을 것인가? 우리는 언제나 변화하고 있는 환경에 대처하는 준비가 필요하다. X인터넷의 활용 가치가 부각되는 요즘 관련 기술들에 대해 조금만 더 귀를 기울여 보자. 준비가 되었다면 지금부터 새로운 치즈인 ‘플렉스’를 향한 여행을 시작해 보자.

플렉스의 설치
플렉스의 탄생과 그 특성에 대해서는 각각 1, 2부에서 살펴봤다. 이 글에서는 플렉스의 설치에 관한 내용부터 접근해 보겠다. 여기서 설치하는 플렉스는 윈도우용 버전이며, 설치 파일은 .exe 파일로 제공되어 더블클릭만으로 쉽게 설치할 수 있다(만약 자바 애플리케이션 서버가 설치되어 있는 상태에서 플렉스를 설치한다면 설치 완료 후 해당 디렉토리에 war 파일의 압축을 풀어 배포하면 된다). 설치 도중 인스톨 옵션을 선택하는 항목이 나타나는데, 기존 자바 애플리케이션 서버가 설치되어 있는 곳에 플렉스를 설치할 것인지 또는 JRun4와 통합된 플렉스를 설치할 것인지를 선택해야 한다. 필자는 JRun4와 통합되어 있는 설치를 선택했다. JRun4와 통합된 플렉스를 설치하면 다음과 같은 폴더가 구성된다.

/dochome.htm
/license.htm
/Macromedia_Flex_1.0_InstallLog.log
/readme.htm
/bin/...
/extras/..
/flexforflash/..
/jrun4/bin/..
/jrun4/lib/..
/jrun4/servers/default/flex/.. (exploded flex.war application ? context root)
/jrun4/servers/default/profiler/.. (exploded profiler.war application - profiler)
/jrun4/servers/default/samples/.. (exploded samples.war application - samples)
/lib/..
/UninstallerData/..

JRun4와 통합된 플렉스를 설치하면 war 파일 형태가 아닌 세 개의 폴더(flex, profiler, samples)가 생성되어 시스템에 위치하며, 기본적으로 8700포트가 사용된다. http://locathost:8700/samples 설치가 끝나면 샘플로 제작된 플렉스의 데모를 볼 수 있다. 자세한 설치 관련 사항은 플렉스 인스톨 문서(http://www.macromedia.com/go/flex_install)를 참고하기 바란다.

플렉스에서는 콜드퓨전이나 커뮤니케이션 서버와 같은 어드민 콘솔 형식의 사용자 컨피규레이션 툴은 제공하지 않는다. 서버의 설정은 flex-config 파일을 통해 가능하며, 여기서는 디버깅 정보 생성 여부(프로파일링 포함), 컴포넌트 관련 경로, 웹 서비스나 HTTP 서비스 그리고 리모트 오브젝트, 캐싱, 컴파일러, 플래시 플레이어 자동 감지, 로깅, 폰트 등을 설정할 수 있다.

플렉스 애플리케이션 제작에는 MXML과 액션스크립트가 사용된다. 두 가지의 언어로 작성된 코드는 플렉스 컴파일러에 의해 브라우저가 MXML 파일을 요청할 때 그에 상응하는 swf 파일로 컴파일해 사용자의 브라우저에서 보여진다. 현재 베타 4 테스트 중인 플렉스 빌더 ‘브래디(Brady)’로 제작하면 쉽고 빠르게 제작이 가능하지만, 일반적인 텍스트 에디터나 메모장을 사용해도 상관없다. 물론 자바 개발 툴인 이클립스 등을 사용해도 된다.

플렉스 컴포넌트
흔히 컴포넌트는 프로그램의 꽃이라 비유된다. 컴포넌트의 장점이라 한다면 간단한 설정을 통해 프래그램에서 다양한 효과를 손쉽게 구현할 수 있다는 데에 있다. 플렉스에서 컴포넌트들은 모두 액션스크립트의 MovieClip 클래스로부터 상속받아 사용된다(<그림 1>).

<그림 1> 플렉스 컴포넌트의 계층 구조

무비클립은 플래시에서 가장 많이 사용되는 요소 중 하나로, 외부로부터 불러들이는 플래시 무비나 그림들은 모두 무비클립 형태로 이용된다. 플렉스 프로그램의 개발시에도 개발자가 직접 만든 플래시 컴포넌트를 플렉스 애플리케이션에서 사용할 수 있다. 그러나 이때에는 작성된 결과물을 일반 swf 파일이 아닌 swc 파일 형식으로 만들어 사용해야 한다.

플래시에서는 컴포넌트의 개념이 스마트클립에서 출발해 MX 버전부터 본격적으로 적용됐다. 따라서 역사가 길다고 할 수는 없으나 유용한 컴포넌트들이 많이 존재한다. 컴포넌트 중 가장 일반적인 UI 컴포넌트 사용 예제를 살펴보자(<리스트 1>).

 <리스트 1> component.mxml

<리스트 1>에서 컴포넌트의 내부 구성이 어떻게 되어 있는지는 전혀 알 수 없다(컴포넌트를 사용하면 사용자의 간단한 조작으로 원하는 형태의 결과물을 얻을 수 있다. 플렉스에서 사용되는 플래시 컴포넌트는 swc 파일로 존재한다). 몇 줄 되지 않는 코드에서 보여지는 화면은 정말 흥미롭다. 앞에서도 언급했듯 플렉스 컴포넌트는 무비클립 클래스에 기반을 두고 있다. 무비클립 클래스에 대한 자세한 내용은 「Flex ActionScript and MXML API Reference」를 참조하기 바란다.

<화면 1> 컴포넌트 예제

플렉스 컨트롤
컨트롤은 UI 컴포넌트의 컨트롤을 의미한다. 여기서는 Checkbox, Button, Text Area, 그리고 Combobox 컨트롤에 대해서 알아보자. 플렉스에서는 기본적인 컨트롤(버튼, 체크박스, 라디오 버튼 등)과 데이터 프로바이더 컨트롤(리스트, 트리, 콤보박스 등)을 제공한다.

 <리스트 2> Control.mxml

<리스트 2>에서 데이터 ComboBox 컨트롤에 데이터를 넣는 법, CDATA 섹션을 사용해 데이터를 처리하는 부분, MXML에서 Action 함수를 호출하는 부분은 유심히 봐야 한다. 기존의 데이터 ComboBox에 데이터를 설정하는 방법은 두 가지로 분류했다. colorCombo ComboBox에는 MXML 코드에서 직접 데이터를 넣었고, cityCombo ComboBox에는 프로그램적인 요소가 섞여 있을 경우 액션스크립트를 사용해 처리했다.

만일 XML 파서가 액션스크립트 구문 안에 ‘{‘ 나 ‘<’ 같은 문자들을 XML 코드로 인식해 파싱하게 되면 에러가 발생한다. 이런 경우에는 CDATA 섹션을 사용해 파싱하지 않고 파서에 넘겨주는 방법을 사용하며, 일반적으로 액션스크립트 블럭은 CDATA섹션으로 감싸주는 것이 좋다.

<화면 2> 컨트롤 예제

컨테이너 사용
컨테이너란 컴포넌트가 실행되는 것으로 알려져 있는 프로그램 빌딩 블럭 내의 애플리케이션이나 서브시스템을 말한다. 플렉스에서 컨테이너의 개념은 컨트롤을 담는 컴포넌트를 일컫는다. 보통 웹 프로그램에서는 화면을 프레임, 테이블 등으로 구성하지만 일반 윈도우 응용 프로그램 작성시에는 panel이나 Group Box 등을 이용해 화면을 구성하게 된다.

얼마 전 후배가 델파이로 작성된 프로그램을 갑자기 수정해야 할 일이 생겼다며 필자를 찾아 온 적이 있었다. 이 후배는 ASP, PHP, JSP 등 웹 프로그램만을 하다가 윈도우 응용 프로그램은 처음 접한 상황이었다. 그 후배가 필자를 급히 찾았던 이유는 기존에 구성된 폼에 패널을 추가해 화면을 재구성하는 내용이었다.

플래시는 Panel이나 Canvas 등을 사용해 화면을 구성하는 개념 없이 무비를 구성한다. 이 때문에 플렉스에서 컨테이너를 구성과 배치하는 것이 어색하게 느껴질 수도 있을 것이다. 가장 좋은 방법은 머릿속에 화면 구성을 생각해 놓고 자신이 생각한 그대로를 만들어 보는 것이다. 플렉스에서 컨테이너를 사용해 구성한 예제를 살펴보자(<리스트 3>).

 <리스트 3> container.mxml
 
Panel 안에 Horizonatl divider로 좌우를 나눈 다음 좌측은 Tree가 위치하고, 우측은 다시 Tab TabNavigator로 나누었다. 오른쪽의 Tree 메뉴에서는 XML 파일에서 데이터를 읽어와 Tree 메뉴를 구성했다. 컨테이너를 사용해 화면을 구성할 때에는 일반 메모장이나 에디터 프로그램보다는 ‘브래디’를 활용하는 것이 더욱 편리하다. 마치 HTML로 화면 구성시 드림위버를 사용하는 것에 비유할 수 있다.

<화면 3> 컨테이너 예제

이벤트 사용
이벤트란 프로그램에 의해 감지되는 어떤 행동이나 발생된 사건 등을 가리킨다. 예를 들어 마우스 단추나 키보드 키를 누르는 것과 같이 사용자에 의해 발생하는 행위뿐 아니라, 특정 조건에 의해 시스템에서 발생한 일들도 이벤트로 간주된다.

대부분의 최신 응용 프로그램들은 이벤트에 반응하도록 설계되어 있기 때문에 프로그램을 만드는 데 있어 이벤트처리는 매우 중요하다. 플렉스 애플리케이션 역시 이벤트 처리가 중요한 것은 말할 것도 없다. 플렉스 애플리케이션에서는 액션스크립트를 사용해 발생되는 이벤트를 처리한다.

<mx:Script>
  <![CDATA[
    function btnClick(){
      alert("button Click");
    }
  ]]>
</mx:Script>
<mx:Button label="click me" id="btn" click="btnClick()"/>

<리스트 4>는 기본적인 버튼 이벤트의 구성이다. 사용자가 버튼을 클릭하면 btnClick 함수를 호출한다. 여기서 MXML 파일에서 click 이벤트를 호출하는 방법은 자바스크립트의 문법과 거의 유사하다. ComboBox에 두 가지의 이벤트가 사용됐다. 콤보박스가 열릴 때 openEvt() 함수를 호출하고, 내용이 바뀔 때 changeEvt()가 실행되어 Object를 인자로 넘긴다.

 <리스트 4> event1.mxml
 
 
<화면 4> 이벤트 1 예제   <화면 5> 이벤트 2 예제

<리스트 5>는 이벤트 리스너를 사용한 이벤트 처리 예제이다. 이벤트 리스너는 함수가 아닌 객체이므로 객체를 생성한 다음 addEventListener 메쏘드로 해당 이벤트를 추가한 후 사용해야 한다.

 <리스트 5> event2.mxml
 
스타일 사용
플렉스 컴포넌트의 외형을 바꾸기 위해서는 스타일 프로퍼티를 사용해야 한다. 프로퍼티로는 크기, 폰트, 라벨 컨트롤 또는 배경색을 수정하는 데 사용되며, 한번 정의된 스타일을 이용해 모든 타입과 클래스에 이 속성을 적용시킬 수 있다. 또한 이 속성을 이용해 사용자가 적용하고 싶은 곳에만 스타일을 적용시킬 수도 있어 사용자가 애플리케이션을 제작할 때 매우 유연하게 컨트롤할 수 있다.

<mx:Style>
   .myFontStyle{fontSize : 15}
</mx:Style>
<mx:Button id = "myButton" label="Click">

일반적으로 이 방법은 해당 파일에만 스타일을 적용할 경우 사용되며, 태그 안에 스타일 속성을 정의한다. 또한 StyleManager 클래스를 사용해 스타일을 적용하면 글로벌하게 스타일을 적용시킬 수 있다. StyleManager를 사용한 스타일의 적용 문법은 mx.styles.StyleMamager.styles.style_name.setStyle(“property”, value);과 같다.

<화면 6> 스타일 예제

스타일 프로퍼티를 직접 제어하는 방법은 mx.styles.StyleMamager.styles.style_name.property=“value”;과 같다. 글로벌한 스타일을 적용시킬 경우에는 타입과 클래스를 선택해서 적용시킬 수 있다.

// 타입 선택의 경우 : 모든 툴 팁에 적용됨
mx.styles.StyleManager.styles.ToolTip.fontWeight = “bold”;
// 클래스 선택의 경우 : 스타일 이름이 myStyle인 모든 컨트롤에 적용됨
mx.styles.StyleManager.styles.myStyle.fontWeight = “bold”;

다음은 setStyle()과 getStyle 메쏘드를 적용시킨 예제이다.

// ex_style.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
  <mx:Style>
    .myClass{ <!?사용자 스타일 클래스 정의-->
      fontFamily : Arial, Helvetica, "_sans";
      color:Red;
      fontSize: 22;
      fontWeight:bold;}
    Button {fontSize : 10pt ; color:Blue}
  </mx:Style>
  <mx:Script>
  <![CDATA[function setNewStyles(newSize){ <!? ip1 텍스트의 폰트 크기를 적용하고 해당 값을 lb1 텍스트에 출력한다.

      ip1.setStyle("fontSize",newSize);
      lb1.text=ip1.getStyle("fontSize");
    }
    function readStyle(){
    myLabel.text = "style : "+myLabel.fontStyle; <!?myLable 텍스트의 폰트 스타일을 읽어 출력한다. -->

    }
  ]]>


스타일시트가 적용되는 우선 순위는 <그림 2>와 같다.
◆ 해당 코드 라인에 정의된 경우 :
◆ setSyle() 메쏘드가 정의된 경우 : btn1.setStyle(“color”, “red”)
◆ 인스턴스 클래스 선택의 경우 :
◆ 타입 선택의 경우 : Button{ color : red }
또는 StyleManager.styles.Button.setStyle(“color”, “red”)
◆ Global 스타일 타입 선택의 경우 : Global{ color : red }
또는 StyleManager.styles.global.setStyle ("color”, "red”)

<그림 2> 스타일시트 적용 우선순위

드래그 앤 드롭 매니저 사용
리치 인터넷애플리케이션의 장점을 그대로 보여지게 하는 기능 중 하나이다. 컴포넌트 또는 리스트, 이미지 등의 데이터 이동이 마우스의 드래그 앤 드롭만으로 가능하다. <화면 7>에서 볼 수 있듯이 놀라운 효과의 구성이 플렉스에서는 너무도 간단하게 구현 가능하다.

<화면 7> 드래그 앤 드롭 예제 1

이 기능을 활용하면 시각적인 효과가 뛰어나고 사용하기 쉬운 애플리케이션을 제작할 수 있다. <리스트 6>은 Canvas 컨테이너에는 드래그가 가능하도록 MouseDown 이벤트를 정의하고, List 컨트롤에는 dragEnter, dragExit, dragOver, dragdrop 이벤트를 정의해 구성된 예제이다.

 <리스트 6> dragAndDrop.mxml

소스를 하나씩 살펴보자. 사용자가 Canvas 컨테이너를 드래그할 때 dragIt() 함수를 호출하며, 함수 내에 정의된 DragManager 클래스인 dodrag 메쏘드가 실행되어 Canvas가 드레그된다. 이때 드래그된 컨테이너가 타겟 컨테이너 위에 위치하면 dragEnter() 함수가 해당 컨테이너로의 추가 여부를 판단한다. 만일 조건이 성립되면 doDragDrop 함수를 통해 해당 아이템을 추가한다.

또한 doDragDrop() 함수는 doDragOver() 함수에서 데이터의 복사, 링크, 이동 여부를 판단해(함수에서 정의한 대로 <Ctrl> 키를 누르고 타겟 컨테이너 위에 위치하면 복사, <Shift> 키는 링크, 아무런 키의 누름이 없으면 이동으로 처리된다) 각 조건에 맞는 문자열을 List 컨트롤에 추가한다.

<화면 8> 드래그 앤 드롭 예제 2

액션스크립트 프로파일러
기존의 스크립트 언어에서 코드의 성능 측정(performance profiling)은 거의 불가능한 일이었다. 그러나 플렉스에서는 자신이 만든 프로그램의 성능을 측정할 수 있는 액션스크립트 프로파일러가 존재한다. 프로파일러는 J2SE 1.3 스펙을 지원하는 운영체제와 애플리케이션 서버에서 동작하며, 플래시 플레이어에서 실행되는 액션스크립트의 성능 데이터를 출력하고 리포트 생성기를 통해 출력된 데이터를 바탕으로 보고서를 보여준다(웹 브라우저를 통해 보여진다, http://localhost:8700/profiler).

프로파일러는 플래시 플레이어가 swf 파일을 실행할 때(플래시에서 디버깅 모드로 컴파일해야 한다. 즉 swd 파일이 존재해야 한다) 함수가 실행된다. 이 때 요구되는 시간은 밀리세컨드 단위로 측정하고 파일에 바이너리 포맷으로 시간 데이터를 기록한다. 파일에 기록된 바이너리 데이터는 프로파일링 세션 동안 swf 애플리케이션의 실행 내용을 보여준다. 액션스크립트 프로파일러를 통해 다음과 같은 성능 데이터 측정이 가능하다.

◆ 성능 스냅샷 요약(Performance Snapshot Summary) : 프로파일링 세션 동안 플레이어가 실행하는 모든 함수를 요약해서 보여준다. 요약 보고서는 다른 성능 분석의 시작점이 된다. 이 보고서는 호출 횟수, 누적 시간, 셀프타임 등이 보여진다. 셀프타임(self-time)이란 하나의 메쏘드가 실행되는데 걸린 총 시간을 말하고, 사용자들은 누적 시간 별, 셀프타임 별로 데이터를 정렬할 수 있다. 그리고 요약 보고서에 있는 이름을 클릭함으로써 성능이 좋지 않은 함수를 발견하고 수정 및 보완할 수 있다.
◆ 메쏘드 레벨 통계(Method-Level Statistics) : 한 명의 사용자가 로파일링 세션 동안 플레이어에서 실행하기 위해 선택되는 함수 하나의 통계를 보여준다. 성능 스냅샷 요약과 유사하게 호출 횟수, 누적 시간, 셀프타임을 보여준다. 정렬 기능을 지원하며 사용자들은 다른 메쏘드 레벨 통계로 가기 위해 함수 이름을 클릭할 수 있다.
◆ MXML/액션스크립트 소스 레벨 통계 : 액션스크립트 소스 레벨 통계 페이지는 로파일링 세션 동안 사용자가 선택한 함수의 통계를 보여준다. 이것은 호출 횟수를 라인별로 보여주며, MXML 컴포넌트들의 모든 태그 안에 있는 함수의 실행 시간을 보여준다.
◆ 프레임 기반 성능 요약(Frame-Based Performance Summary) : 프로파일링 세션 동안 업데이트되는 프레임 사이에 실행되는 모든 함수의 실행 시간을 보여준다. 그러나 기본적으로 프레임 기반 관점으로 데이터를 보여주는 성능 스냅샷 요약 보고서와 같다.
◆ 비동기 함수 레이턴시(Asynchronous Function Latencies) :모든 네트워크 함수의 지연 시간을 밀리세컨드로 보여준다.

일신우일신 ‘플렉스’
지금까지 플렉스에서 사용되는 기본 요소들에 대해 간단히 살펴봤다. 매크로미디어는 X인터넷의 선두 주자이며, 그 중 플렉스는 확실히 리치 인터넷 애플리케이션을 쉽고 빠르게 개발하기 위한 좋은 도구임에 틀림없다. 또한 지금 베타 4 테스트중인 플렉스 IDE 툴 ‘브래디’가 정식 발매되어 사용된다면 그 효과는 더할 나위가 없을 것이다. 플래시가 버전을 거듭할수록 언제나 새로운 모습을 보여왔듯 플렉스 역시 계속해서 새로운 모습을 보일 것임을 믿어 의심치 않는다. @
:
Posted by 뽀기

태그 기능을 사용자 정의 애트리뷰트로 확장하기

developerWorks

 


난이도 : 초급

Brett McLaughlin, Author, O'Reilly and Associates

2003 년 8 월 05 일

커스텀 타임-스탬프를 확장하여 페이지 작성자가 자신의 타임-스탬프 포맷을 선택할 수 있도록 하는 방법을 설명한다.

지난 시간에는 JSP 페이지에서 커스텀 태그 라이브러리의 기본적인 사용 방법을 설명했다. 간단한 태그를 정의하고 태그 라이브러리 디스크립터(TLD)를 통해 다른 JSP 작성자까지 사용 할 수 있도록 만들었다. 이번 주에는 커스텀 태그에 대해 알고 있는 지식에 기반하여 구현을 할 것이다. 여기에서 사용할 예제 태그는 매우 간단하다. 따라서 커스텀 애트리뷰트를 결합하여 기능을 확장할 것이다.

예제에 대하여: 이 글에 사용된 모든 예제 코드는 지난 번 우리가 개발한 lastModified 태그에 기반하여 구현된다.

"Hello, world" 커스터마이징

JSP 태그의 가장 일반적인 요구사항은 페이지로부터 오는 데이터를 받아들이고 그 데이터에 응답할 수 있어야 한다는 것이다. 태그 애트리뷰트로 이 기능을 우리의 커스텀 태그에 결합할 수 있다.

간단한 예제로 "Hello, world" 애플리케이션을 들어보겠다. 이 스크립틀릿의 기능을 구현하는 커스텀 태그를 상상하는 것은 쉽지만 이를 어떻게 확장할 것인가?

Listing 1은 전형적인 "Hello, world!"를 결합한 JSP 페이지이다. name이라고 하는 애트리뷰트를 포함하고 있는 태그이다:


Listing 1. "Hello, world!" 태그

<p>
    <examples:hello name="Reader" />
</p>


name 애트리뷰트는 페이지 작성자가 hello 태그에 데이터를 공급할 수 있는 곳에 공간을 만든다. 이 경우 사람의 이름은 애플리케이션이 보내는 메시지를 받을 사람이다. Listing 2는 hello 태그를 구현하는 자바 코드이다:


Listing 2. hello 태그용 코드

package com.ibm.examples;

import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HelloTag extends TagSupport {

    // The "person" to say hello to
    private String name;

    // Accept the attribute data
    public void setName(String name) {
      this.name = name;
    }

    public int doEndTag() {
      try {
	  StringBuffer message = new StringBuffer("Hello, ");
	  message.append(name)
	         .append("!");
	  pageContext.getOut().println(message.toString());
	} catch (IOException ignored) { }
	return EVAL_PAGE;
    }


Listing 2의 코드는 매우 단순하다. setXXX() 메소드를 추가했다. XXX에는 애트리뷰트 이름이 들어간다. 보기에는 간단하지만 태그의 기능을 크게 확장한 것이다. 페이지 작성자는 특정 목적을 위해 커스텀 데이터를 설정할 수 있고 그 데이터는 저장, 조작, 활성화 될 수 있다. doEndTag() 메소드로는 필요한 어떤 방식으로든 태그 데이터를 사용할 수 있도록 한다.

lastModified 태그에 애트리뷰트를 추가할 때 어떻게 되는지 검토해보자.




위로


lastModified 확장하기

페이지 작성자에게 단지 하나의 디스플레이 옵션을 주는 대신 원하는 대로 아웃풋 포맷팅을 설정할 수 있도록 하고 싶다. lastModifiedTag 클래스가 아웃풋 포맷팅을 위해 java.text.SimpleDateFormat을 포함하도록 확장시켜서 백엔드에서 시작하겠다. (Listing 3):


Listing 3. LastModifiedTag 클래스에서 SimpleDateFormat 사용하기

package com.newInstance.site.tags;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.tagext.TagSupport;

public class LastModifiedTag extends TagSupport {

    private String format = "MMM d, yyyy";

    public int doEndTag() {
      try {
        HttpServletRequest request =
          (HttpServletRequest)pageContext.getRequest();
        String path = pageContext.getServletContext().getRealPath(
          request.getServletPath());
        File file = new File(path);

        DateFormat formatter = new SimpleDateFormat(format);

        pageContext.getOut().println(
          formatter.format(new Date(file.lastModified())));
      } catch (IOException ignored) { }
      return EVAL_PAGE;
    }
}


Listing 4에서는 새로운 포맷팅 기능을 태그로 가져왔다. format 애트리뷰트 값은 Listing 3에 적용된 새로운 format 메소드 변수에 어태치된다.


Listing 4. 새로운 애트리뷰트 핸들링하기

package com.newInstance.site.tags;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.tagext.TagSupport;

public class LastModifiedTag extends TagSupport {

    private String format = "MMM d, yyyy";

    public void setFormat(String format) {
      this.format = format;
    }

    public int doEndTag() {
      try {
        HttpServletRequest request = 
          (HttpServletRequest)pageContext.getRequest();
        String path = pageContext.getServletContext().getRealPath(
          request.getServletPath());
        File file = new File(path);

        DateFormat formatter = new SimpleDateFormat(format);

        pageContext.getOut().println(
          formatter.format(new Date(file.lastModified())));
      } catch (IOException ignored) { }
      return EVAL_PAGE;
    }
}





위로


구현 상세

format 애트리뷰트로 페이지 작성자는 날짜/시간 아웃풋 포맷을 원하는 대로 설정할 수 있다. 하지만 이 새로운 애트리뷰트를 사용하기 전에 TLD 파일을 약간 변경해야한다. (Listing 5):


Listing 5. TLD 수정하기

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2/EN"
           "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" >

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>site-utils</short-name>
    <uri>http://www.newInstance.com/taglibs/site-utils</uri>

    <tag>
      <name>lastModified</name>
      <tag-class>com.newInstance.site.tags.LastModifiedTag</tag-class>
      <body-content>empty</body-content>
      <attribute>
        <name>format</name>
      </attribute>
    </tag>
</taglib>





위로


디폴트 값

TLD를 업데이트 할 때, 새로운 애트리뷰트를 사용해야만 한다. 테스트도 필수이다. 서블릿 컨테이너를 재시작하여 이것이 새로운 태그와 TLD 변화를 감지했는지를 확인하고 여기에 lastModified 태그로 페이지를 작동시킨다.

당연히 타임 스탬프가 나타난다. 만일 여러분이 내가 보고있는 것을 보고있다면 아웃풋의 포맷팅은 전과 같다. 문제는 어떤 새로운 format 값도 추가되지 않았다는 점이다. 따라서 예전과 같은 것을 보고있는 것이 된다. 이 작은 테스트 실행으로 format 애트리뷰트에 디폴트 값을 추가하는 것이 얼마나 중요한일인지 알게된다.

커스텀 애트리뷰트에 디폴트 값을 주는 것은 좋은 생각이다. 왜냐하면 페이지 작성자가 고유의 값을 제공하고 싶지 않을 때 곤경에 처하지 않기 때문이다. 때로는 새로운 애트리뷰트와 포맷을 배우는데 시간이 필요하고 그 사이 디폴트는 훌륭한 대리인이 되는 것이다.




위로


맺음말

Listing 6 은 타임 스탬프 예제("JSP best practices : 타임 스탬프의 힘" 참조)의 footer.jsp 이다. format 애트리뷰트에 값이 제공되었다:


Listing 6. 포맷 애트리뷰트 사용하기

<%@ taglib prefix="site-utils"
             uri="http://www.newInstance.com/taglibs/site-utils"%>

          </td>
          <td width="16" align="left" valign="top"> </td>
    </tr>
    <!-- End main content -->

<!-- Begin footer section -->
    <tr>
      <td width="91" align="left" valign="top" bgcolor="#330066"> </td>
      <td align="left" valign="top"> </td>
      <td class="footer" align="left" valign="top"><div align="center"><br>
          &copy; 2003 
          <a href="mailto:webmaster@newInstance.com">Brett McLaughlin</a><br>
          Last Updated: <site-utils:lastModified 
            format="HH:mm a zz :: MM/dd/yyyy"/>
        </div></td>
          <td align="left" valign="top"> </td>
      <td width="141" align="right" valign="top" bgcolor="#330066"> </td>
    </tr>
</table>
<!-- End footer section -->





위로


참고자료




위로


필자소개

Brett McLaughlin은 현재 자바 및 관련 기술을 이용하여 애플리케이션 기반구조 구현을 전문적으로 수행하고 있다. Brett은 Java Apache 프로젝트인 Turbine의 공동 창립자이다

:
Posted by 뽀기