혼자공부중
공부하는 블로그
혼자공부중
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • 자격증 (49)
      • 정보처리기사 실기 (49)
    • JAVA (18)
    • DB (0)
    • 알고리즘 문제 풀이 (11)
      • 프로그래머스 (11)
    • Front (0)
      • HTML (0)
      • CSS (0)
      • Javascript (0)
    • 패스트캠퍼스 강의 (33)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
  • 수제비
  • 2022정보처리기사
  • 자바
  • 애플리케이션테스트
  • 반복문
  • 데이터모델
  • 프로그래머스
  • 정보처리기사 실기 정리
  • 2022정보처리기사필기
  • 관계형데이터베이스
  • 정보처리기사 필기 정리
  • 데이터베이스
  • 정보처리기사 실기
  • Java
  • 코딩테스트
  • UI
  • 인터페이스
  • 알고리즘
  • 시나공
  • 변수
  • 2022정보처리기사실기
  • 객체지향
  • 상속
  • DBMS
  • 정보처리기사
  • 메소드
  • 정보처리기사 필기
  • 배열
  • SQLD

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
혼자공부중

공부하는 블로그

자격증/정보처리기사 실기

20. [내외부 연계 모듈 구현] 연계 모듈 구현 환경 구성 및 개발

2022. 3. 27. 15:26
수제비 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의 비교

구분 EAI ESB
개념 미들웨어(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 요청/응답 구현 예시

구분 HTTP 요청 SOAP 메시지 HTTP 응답 SOAP 메시지
헤더 <SOAP-ENV: Envelope
xmlns: SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV: encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
바디 <SOAP-ENV: body>
<m: NoteSrch xmlns: m="">
<NoteNo>202001011</NoteNo>
<m: NoteSrch>
</SOAP-ENV: body>
</SOAP-ENV: Envelope>
<SOAP-ENV: body>
<m: NoteRes xmlns: m="">
<NoteNm>채용공고</NoteNm>
<m: NoteRes>
</SOAP-ENV: body>
</SOAP-ENV: Envelope>

▼WSDL 문법구조

구조 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.1 WSDL 2.0 설명
service service 웹 기반 프로토콜에 노출되는 시스템 함수의 집합을 포함한다
port endpoint 웹 서비스로의 주소 또는 연결 지점을 정의한다
binding binding 인터페이스를 규정하고 SOAP 바인딩 스타일(RPC/Document)과 트랜스포트(SOAP 프로토콜)을 정의한다
porttype interface 웹 서비스를 정의한다
operation operation SOAP의 동작 및 메시지 인코딩 방식을 정의한다
message 없음 보통 message는 operation에 상응한다
types types 데이터를 기술한다

현재의 표준은 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의 주요 기법에는 메시지 큐, 공유메모리, 소켓, 세마포어가 있다

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

'자격증 > 정보처리기사 실기' 카테고리의 다른 글

22. [인터페이스 설계 확인] 외부, 내부 모듈 간 공통 기능 및 데이터 인터페이스 확인  (0) 2022.03.27
21. [내외부 연계 모듈 구현] 연계 테스트 및 검증  (0) 2022.03.27
19. [연계 메커니즘 구성] 연계 장애 및 오류 처리 구현  (0) 2022.03.26
18. [연계 메커니즘 구성] 연계 메커니즘 정의  (0) 2022.03.26
17. [연계 데이터 구성] 연계 데이터 식별 및 표준화  (0) 2022.03.25
    '자격증/정보처리기사 실기' 카테고리의 다른 글
    • 22. [인터페이스 설계 확인] 외부, 내부 모듈 간 공통 기능 및 데이터 인터페이스 확인
    • 21. [내외부 연계 모듈 구현] 연계 테스트 및 검증
    • 19. [연계 메커니즘 구성] 연계 장애 및 오류 처리 구현
    • 18. [연계 메커니즘 구성] 연계 메커니즘 정의
    혼자공부중
    혼자공부중
    대단한 목적보다는 혼자 공부하는 것에 의미를 두려고 합니다.

    티스토리툴바