20. 연계 모듈 구현 환경 구성 및 개발

y55n·2022년 3월 27일
1

정보처리기사

목록 보기
21/50

수제비 2022 정보처리기사 실기 수험서를 보고 공부한 기록입니다.


👉연계 모듈 기능 구현

  • 개발하고자 하는 응용 소프트웨어와 연계 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 연계 기능을 구현할 수 있다
  • 연계 모듈 기능 구현은 주로 EAI/ESB 방식과 웹 서비스 방식으로 구분된다

👉EAI 방식

1. EAI(Enterprise Application Integration) 개념

  • EAI는 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션이다
  • EAI를 사용함으로써 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높여 줄 수 있으며 각 시스템 간의 확장성을 높여 줄 수 있다

2. EAI 구성요소

EAI Platform 기반 위에 각 애플리케이션의 어댑터가 데이터 및 프로세스를 변환하여 이기종 간의 비즈니스를 연결한다

EAI 플랫폼(EAI Platform)

  • 이기종 시스템 간 애플리케이션 상호 운영
  • 데이터의 신뢰성 있는 전송을 위한 메시지 큐와 트랜잭션 미들웨어 기능 수행
  • 대규모 사용자 환경 지원을 위한 유연성과 확장성 보장

어댑더(Adapter)

  • 다양한 패키지 애플리케이션 및 기업에서 자체적으로 개발한 애플리케이션을 연결하는 EAI의 핵심 장치로 데이터 입출력 도구

브로커(Broker)

  • 시스템 상호 간 데이터가 전송될 때, 데이터 포맷과 코드를 변환하는 솔루션

메시지 큐(Message Queue)

  • 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터를 송수신하는 기술

비즈니스 워크플로우(Business Workflow)

  • 미리 정의된 기업의 비즈니스 Workflow에 따라 업무를 처리하는 기능

3. EAI 구축 유형

포인트 투 포인트(Point-to-point)

  • 가장 기초적인 애플리케이션 통합방법으로 1:1 단순 통합방법
  • 장점으로는 솔루션을 구매하지 않고 개발자 간의 커뮤니케이션을 통해서도 통합 가능

허브 앤 스포크(Hub & Spoke)

  • 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
  • 허브 장애 시 전체 장애 발생

메시지 버스(Message Bus)

  • 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식
  • 뛰어난 확장성과 대용량 데이터 처리 가능

하이브리드(Hybrid)

  • 그룹 내는 허브 앤 스포크 방식을 사용하고, 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식
  • 그룹 내 환경에 맞는 작업 가능

👉ESB 방식

1. ESB(Enterprise Service Bus) 개념

  • 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처이다
  • ESB는 미들웨어(Bus)를 중심으로 각각 프로토콜이 호환할 수 있도록 애플리케이션의 통합을 느슨한 결합 방식으로 지원하는 방식이다

2. ESB 특징

  • 서비스들을 컴포넌트화된 논리적 집합으로 묶는 핵심 미들웨어이며, 비즈니스 프로세스 환경에 맞게 설계 및 전개할 수 있는 아키텍처 패턴이다
  • 버스 방식으로 확장성, 유연한 아키텍처 구성이 가능하다

3. EAI와 ESB의 비교

구분EAIESB
개념미들웨어(Hub)를 이용하여 비즈니스 로직을 중심으로 기업 내 애플리케이션을 통합 연계미들웨어(Bus)를 이용하여 서비스 중심으로 서비스를 지원하기 위한 관련시스템과 유기적 연계
수행 목적기업 내부의 이기종 응용 모듈 간 통합기업 간의 서비스 교환을 위해 표준 API로 통합
토폴로지포인트 투 포인트, 허브 앤 스포크, 메시지 버스, 하이브리드버스 방식의 분산형 토폴로지 구성
표준벤더 종속적 기술 적용표준기술사용(웹 서비스, XML 등)
핵심 기술어댑터, 브로커, 메시지 큐웹 서비스, 지능형 라우터, 포맷 변환, 개방형 표준
통합 형태애플리케이션 간의 단단한 통합서비스 간의 느슨한 통합
적용 영역기업 내부망기업 내부+기업 외부 채널망

👉EAI/ESB 방식 연계 모듈 구현

1. EAI/ESB 방식 연계 모듈 환경 구축 절차

연계 모듈 환경 구축을 위해 계정 생성, 테이블 생성, 프로그램 구현 절차를 가진다

1. 연계 DB 또는 계정 생성

  • 송수신 시스템에서 각각 DB 구성 및 계정 생성
  • 기존 DB 존재 시 목적에 따라 분리된 연계 사용자 계정 생성

2. 연계를 위한 테이블 생성

  • 연계에 필요한 연계 테이블, 로그 테이블, 매핑 테이블, 오류 코드 테이블 등을 구성

3. 연계 응용 프로그램 구현

  • 연계 응용 프로그램 구현 방식으로 트리거를 활용
  • 트리거는 송신 시스템의 운영 DB 테이블과 수신 시스템의 연계 테이블을 대상으로 구현하고 테이블 단위로 구현

2. EAI/ESB 방식 연계 모듈 구현 사례

  • 추출 대상 테이블에서 삽입, 삭제, 갱신이 발생했을 때 로그를 기록하고 연계 테이블에 데이터를 전달한다
  • 다음은 트리거로 구현한 송신 시스템의 연계 응용 프로그램 예시이다
CREATE OR REPLACE TRIGGER 프로그램명
//[프로그램명]으로 트리거를 생성

AFTER INSERT
	OR UPDATE
    OR DELETE ON 테이블명
FOR EACH ROW
//연계 데이터를 추출할 테이블 각 행에 INSERT, UPDATE, DELETE가 발생할 때마다 수행

DECLARE AFTER_CODE VARCHAR2(5);
//선언부
//사용할 변수 선언

IF INSERTING THEN
//데이터가 추가 된 경우

SELECT [변환 후 코드 값]
INTO AFTER_CODE
FROM [코드 매핑 테이블]
WHERE [변환 전 코드 값] = :new.[코드 컬럼]
//공통 코드 및 데이터 변환 처리

INSERT INTO [로그 테이블명] ([컬럼명1], [컬럼명2], ... [컬럼명n]) VALUES(...);
//진행 단계별 수행 결과에 대한 로깅 처리
로그 테이블에 처리 결과 INSERT

INSERT INTO [연계 테이블명] ([컬럼명1-처리 일시], [컬럼명2-변경 구분], ...[컬럼명n])
VALUES (SYSDATE, 'I', AFTER_CODE, ...[:new.컬럼명]);
//연계 테이블에 INSERT 처리
//변경 구분을 'I'로 설정

ELSIF DELETING THEN
(...)
//데이터가 삭제된 경우 처리
//공통 코드 및 데이터 변환 처리
//연계에 INSERT 처리
//변경 구분을 'D'로 설정
//진행 단계별 수행 결과에 대한 로깅 처리
//로그 테이블에 처리 결과 INSERT

ELSE
	IF UPDATING('[코드1 컬럼]') OR UPDATING('[코드2 컬럼]')
    THEN
    ...
    ELSIF UPDATING('[텍스트 컬럼]')
    THEN
    ...
    ELSIF UPDATING
    THEN
    ...
    END IF;
   END IF;
//데이터가 수정된 경우
//연계 데이터 중 코드 컬럼이 변경된 경우
//연계 데이터 중 텍스트 컬럼이 변경된 경우
//연계 데이터가 아닌 컬럼이 변경된 경우

EXCEPTION
//오류 처리

WHEN NO_DATA_FOUND THEN (...)
//등록된 코드에 매핑 코드가 없을 경우

WHEN DUP_VAL_ON_INDEX THEN (...)
//테이블 등록 시 동일 PK 데이터 존재

END;
//트리거 종료

👉웹 서비스 방식

 1. 웹 서비스(Web Service) 개념

웹 서비스는 네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술로써 서비스 지향 아키텍처 개념을 실현하는 대표적인 기술이다

2. 웹 서비스 유형

웹 서비스는 SOAP 방식, UDDI 방식, WSDL 방식 등이 존재한다

[ SOAP(Simple Object Access Protocol) ]

  • SOAP는 HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜이다
  • HTTP 프로토콜상에 SOAP Envelope, 헤더(Header), 바디(Body) 등이 추가된 XML 문서로 기본적인 송수신은 HTTP로 수행한다
  • SOAP은 보통의 경우 원격 프로시저 호출(RPC; Remote Procedure Call)을 하는 메시지 패턴을 사용한다
  • 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청하고, 서버는 메시지를 즉시 응답하게 된다

[ WSDL(Web Service Description Language) ]

  • WSDL은 웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보가 기술된 XML 형식으로 구현되어 있는 언어이다
  • WSDL은 SOAP와 XML 스키마와 결합하여 인터넷상에 웹 서비스를 제공하기 위해 사용되기도 한다

[ UDDI(Universal Description, Discovery and Integration) ]

  • UDDI는 웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리이자 표준이다
  • 서비스 제공자는 UDDI라는 서비스 소비자에게 이미 알려진 온라인 저장소에 그들이 제공하는 서비스 목록들을 저장하게 되고, 서비스 소비자들은 그 저장소에 접근함으로써 원하는 서비스들의 목록을 찾을 수 있게 된다
  • 알려진 송수신 시스템의 통합 구현에서는 서비스의 공개 및 검색과정이 필요 없으므로, UDDI를 구축하지 않는다

3. 웹 서비스 방식 연계 환경 구축 및 구현 절차

웹 서비스 방식은 EAI/ESB 방식과는 달리 실제 전송이나 전송 이력에 대한 기록 및 모니터링 기능을 별도로 구현해야 한다

  1. 송수신 파일 경로 및 파일명 정의
    • 송수신 시스템에서 송수신 연계 파일, 로그 파일 생성 경로와 파일명을 정의하고 디렉터리 생성
  2. 송신 연계 응용프로그램 구현
    • 연계 데이터를 추출하고 송신 파일을 XML 형식으로 생성하는 프로그램 구현
    • 주기적 실행을 위해 운영체제의 크론(Cron) 또는 DBMS의 잡 스케줄러(Job Scheduler)에 등록
  3. 파일 전송
    • HTTP 기반의 SOAP을 사용하여 전송
    • SOAP 대신 REST 프로토콜로 대체 가능
  4. 수신 DB 반영 서비스 호출 처리
    • 연계 파일을 수신 위치로 전송 후 파일 내용을 수신 DB에 반영하는 서비스 실행
    • 서비스 명세서인 WSDL을 작성 후 송수신 시스템 간 공유 (XML 기반)
  5. 수신 연계 응용 프로그램 구현
    • WSDL에 기술된 운영 DB에 연계 데이터를 반영하는 서비스 구현 (Java 등 활용)
    • 연계 파일의 데이터를 수신 시스템의 운영 DB에 반영 및 처리 과정을 기록하는 내용으로 구현

4. 웹 서비스 방식 연계 모듈 구현

①파일 전송 및 서비스 호출처리 구현

웹 서비스 방식인 SOAP 및 WSDL을 활용한 XML 방식으로 구현한다

▼SOAP 요청/응답 구현 예시
[헤더]

<SOAP-ENV: Envelope   
xmlns: SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"   
SOAP-ENV: encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

[바디]
HTTP 요청 SOAP 메시지

<SOAP-ENV: body>   
<m: NoteSrch xmlns: m="">   
<NoteNo>202001011</NoteNo>   
<m: NoteSrch>   
</SOAP-ENV: body>   
</SOAP-ENV: Envelope>

HTTP 응답 SOAP 메시지

<SOAP-ENV: body>   
<m: NoteRes xmlns: m="">   
<NoteNm>채용공고</NoteNm>   
<m: NoteRes>   
</SOAP-ENV: body>   
</SOAP-ENV: Envelope>

▼WSDL 문법구조

//서비스 인터페이스
<wsdl:definitions>       
	<wsdl:types>데이터 타입 선언</wsdl:types>       
	<wsdl:message>메시지 인자와 리턴값 선언</wsdl:message>       
	<wsdl:portType>인터페이스 정의           
		<wsdl:operation>메서드 선언</wsdl:operation>       
	</wsdl:protType>
    //서비스 구현
	<wsdl:binding>네트워크 프로토콜 및 포트매핑</wsdl:binding>       
	<wsdl:service>서비스 정의           
		<wsdl:port>웹 서비스 URL</wsdl:port>       
	</wsdl:service>   
<wsdl:definitions>

▼WSDL 문법 상세 설명

WSDL 1.1WSDL 2.0설명
serviceservice웹 기반 프로토콜에 노출되는 시스템 함수의 집합을 포함한다
portendpoint웹 서비스로의 주소 또는 연결 지점을 정의한다
bindingbinding인터페이스를 규정하고 SOAP 바인딩 스타일(RPC/Document)과 트랜스포트(SOAP 프로토콜)을 정의한다
porttypeinterface웹 서비스를 정의한다
operationoperationSOAP의 동작 및 메시지 인코딩 방식을 정의한다
message없음보통 message는 operation에 상응한다
typestypes데이터를 기술한다

현재의 표준은 2.0으로, RESTful 웹 서비스에 대한 더 나은 지원을 제공하며 구현하기가 훨씬 쉬워졌다

②수신 연계 응용 프로그램 구현

송신 시스템에서 전달받은 XML의 정보를 추출하여 운영 DB에 INSERT하는 연계 응용 프로그램을 작성한다

▼수신 연계 응용 프로그램 구현(자바)

//변수 선언
String dbURL="jdbc:[DB제품명]:[드라이버 명]@[ip]:[port]:[인스턴스명]";
Connection Conn=null;
PreparedStatement pstmt=null;
String logString="";

try{
	//연계(인터페이스) 파일 읽기
    NodeList nList=doc.getElementsbyTagName("[연계 데이터 XML Tag명]");
    
    //진행 단계별 수행 결과에 대한 로깅 처리, 로그 파일에 처리 결과 기록
    logString="[진행단계명]"+[진행단계 변수명]+"[처리결과]"+[처리 결과 변수명];
    logWriter.write(logString);
    
    //운영 DB Connection
    Class.forName("[JDBC 드라이버명]");
    conn=DriverManager.getConnection(dbURL, "[DB ID]", "[DB PW]");
    
    if(conn==null){
    //운영 DB 연결 실패, 오류 로그 처리
}
	else{
		//진행 단계별 수행 결과에 대한 로깅 처리, 로그 파일에 처리 결과 기록
    	//운영 DB의 테이블에 데이터 INSERT를 위한 SQL
    	String sql="INSERT INTO[운영 DB 데이터 반영 대상 테이블명]" + "([컬럼명1], [컬럼명2], ..., 
    			[컬럼명n])" + "VALUES(?, ?, ..., ?)";
    	pstmt=conn.perpareStatement(sql);
    
    	for(int idx=0; idx<nList.getLength(); idx++){
    	//행(Row)의 수만큼 반복
    		Node dataNode=nList.item(idx);
        
        	if(dataNode.getNodeType==Node.ELEMENT_NODE){
        		Element dataElement=(Element)dataNode;
            	//INSERT SQL 파라미터(물음표)를 연계 파일에서 읽는다
            	pstmt.setString(1, dataElement.getAttribute("[컬럼단위 XML 태그명1]"));
            	pstmt.setString(2, dataElement.getAttribute("[컬럼단위 XML 태그명2]"));
            	pstmt.setString(n, dataElement.getAttribute("[컬럼단위 XML 태그명n]"));
            	//행의 각 컬럼 값으로 설정
            	//운영 DB의 테이블에 INSERT
            	int insertCnt=pstmt.executeUpdate();
	}
} catch(SQLException sqle){
	//SQLException 예외 처리
} catch(NullPointerException npe){
	//NullPointerException 예외 처리
} catch(FileNotFoundException fnfe){
	//FileNotFoundException 예외 처리
} catch(IOException ioe){
	//IOException 예외 처리
}

👉IPC 방식

1. IPC(Inter-Process Commnunication) 개념

IPC는 운영체제에서 프로세스 간 서로 데이터를 주고받기 위한 통신 기술이다

2. IPC 주요 기법

IPC의 주요 기법에는 메시지 큐, 공유메모리, 소켓, 세마포어가 있다

  • 메시지 큐: 메시지 또는 패킷 단위로 동작하여 프로세스 간 통신
  • 공유메모리: 한 프로세스의 일부분을 다른 프로세스와 공유
  • 소켓: 클라이언트와 서버 프로세스 둘 사이에 통신을 가능하게 함
  • 세마포어: 프로세스 사이의 동기를 맞추는 기능을 제공
profile
나 혼자 공부 기록

0개의 댓글