RangA 2023. 5. 24. 17:13

인터페이스 설계 명세

04. 인터페이스 구현을 위한 도구

1) 데이터 통신을 위한 인터페이스 구현

  • 응용 프로그램 영역에서 인터페이스 형식에 맞춘 데이터 포맷을 인터페이스 대상으로 전송하고 이를 수신측에서 파싱하여 해석하는 방법
    • 파싱(Parsing) : 문장이나 프로그램 소스 혹은 데이터를 일정한 규칙으로 분리해 내는 작업
  • JSON 및 XML 형식의 데이터 포맷을 사용하여 인터페이스를 구현함

2) 인터페이스 엔티티 구현

  • 인터페이스가 필요한 시스템 사이에 별도의 인터페이스 엔티티(Entity)를 두어 상호 연계함
  • 엔티티의 역할은 데이터베이스에서 인터페이스 테이블을 두어 각 시스템 간 데이터 교환에 활용하는 방법으로 업계에서 많이 사용됨
  • 송신 시스템에서 전달할 내역을 송신 인터페이스 테이블에 쓰기(Write)하면 수신 인터페이스 테이블과 네트워크로 연결된 송신 인터페이스 테이블은 프로시저, 트리거 등을 사용하여 데이터를 수신 인터페이스 테이블에 전달하게 됨
  • 수신 시스템은 전달된 데이터를 선택하여 활용할 수 있음

3) JSON(JavaScript Object Notation)

  • 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 데이터 객체를 속성-값의 쌍(Attribute-Value Pairs) 형태로 표현하는 형식으로 자바스크립트를 토대로 개발된 형식
  • JSON은 속성과 값으로 이루어진 데이터 객체를 전달하기 위해 사용하는 개방형 표준 포맷
  • AJAX에서 많이 사용되고, XML을 대체하는 주요 데이터 포맷
    • AJAX(Asynchronous Javascript And XML)
      • AJAX는 자체가 하나의 특정한 기술을 말하는 것이 아니며, 함께 사용하는 기술의 묶음을 지칭하는 용어
      • Javascript를 사용한 비동기 통신 기술로 클라이언트와 서버 간에 XML 데이터를 주고받는 기술
      • 웹 브라우저 ASP, PHP, JSP를 포함한 HTML 문서 요청을 하면 웹 브라우저는 Javascript를 호출함
      • AJAX를 사용하면 웹 페이지 한 화면에서 페이지 이동 없이 고속으로 화면을 전환할 수 있음
  • 언어 독립형 데이터 포맷으로 다양한 프로그래밍 언어에서 사용되고 있음

4) XML(eXtensible Markup Language)

  • 다른 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장하는 다목적 마크업 언어
    • 마크업 언어
      • 출판사에서 저자가 집필한 원고를 교정하는 부호로 띄어쓰기, 줄 바꿈, 제거 등을 표현하는 기호
      • 소프트웨어에서는 문장이나 표의 배치 방법, 글자의 크리나 모양, 들여쓰기와 줄 간격, 여백 등에 대한 정보를 나타내는 언어
  • 다른 많은 종류의 데이터를 기술하는 데 사용될 수 있음
  • 다른 종류의 시스템끼리 데이터를 쉽게 주고받을 수 있음
  • XML 문서는 문자로 이루어져 있음
  • 유니코드 문자는 XML 문서에 나타날 수 있음
  • 파서는 마크업을 분석하고 필요한 정보를 추출하여 응용 프로그램에 넘김
  • XML 문서를 구성하는 문자들은 마크업과 내용으로 구분되며 간단한 문법 규칙으로 이루어짐



05. 인터페이스 구현

1) 사전에 정의된 기능 구현 분석

  1. 송신측에서 필요 대상을 선택하여 수신측에 데이터를 전송
    • 대상자 선택 : 데이터베이스에 저장된 정보를 SQL로 선택하여 인터페이스 대상을 확인
    • 데이터베이스 정보를 가공 : 인터페이스 데이터 생성 JSON 또는 인터페이스 테이블 형식에 맞게 데이터베이스에 있는 정보를 가공
    • 인터페이스 데이터 전송 요청 : 인터페이스 데이터를 생성 후 해당 데이터를 HTTP에서 인터페이스 또는 수신측으로 전송
  2. 데이터 전송
    • 인터페이스 데이터 전송 : 수신지 주소에 REST 방식으로 전달될 수도 있으며 DB Connection을 이용하여 DB Procedure, Trigger 등을 활용, 전송함
    • 인터페이스 데이터 수신 : 인터페이스 데이터를 수신하고 데이터의 형식이 맞는지 점검, 각 룰(Rule)을 사전에 정의하고 이를 활용함
    • 인터페이스 데이터 파싱 : 인터페이스 객체는 파서를 이용하여 파싱하거나 인터페이스 테이블에서 SELECT함
    • 인터페이스 데이터 검증 : 각 세부 데이터의 포맷과 논리적인 제약조건에 해당하는지 검사(사용자가 정의한 룰 기준)
    • 후속 기능 수행 : 각 세부 데이터를 활용해서 수신 시스템에서 정의된 Action을 진행함
  3. 전달 후 전달 여부 값 반환
    • 인터페이스 수신 결과를 생성, 전송 : 정상적으로 수신되면 참, 아니면 거짓의 리턴 값을 JSON 형태로 전송
    • 수신측에서 처리한 인터페이스 결과를 반환 받음 : 수신측에서 보낸 응답 JSON을 통해 수행 여부를 확인하고 이를 화면상으로 표시함

2) 인터페이스 구현

  1. 인터페이스 객체 생성 구현
    • 인터페이스 객체를 생성하고 전송하기 위해 인터페이스 객체를 생성할 데이터를 선택
    • 선택한 데이터는 JSON을 이용하여 인터페이스 객체를 만드는 데 사용
      • JSON 메소드
        • JSON.parse() : 문자열을 JSON 객체로 변환
        • JSON.stringify() : JSON 객체를 문자열로 변환
    • 인터페이스 객체를 생성할 데이터를 각 시스템 및 환경에 맞게 선택
    • 일반적으로 데이터베이스에 있는 정보를 SQL을 통하여 선택한 후 이를 JSON으로 생성
    • SQL 실행 결과를 저장한 객체를 화면으로 가져와서 JSON 객체를 생성
    • JSON 형식에 맞게 Javascript 객체에 저장
  2. 인터페이스 객체를 전송 후 결과 반환
    • 인터페이스 객체를 전송 후 전송 결과를 수신측에서 반환받음
    • 수신측에서는 JSON 인터페이스 객체를 수신받고 이를 파싱 후 처리함
    • 처리 결과 값을 송신측에 전달
    • 일반적으로 True/False를 전달하여 인터페이스 성공 여부를 확인

3) 인터페이스 엔티티를 사용하는 인터페이스 구현

  1. 송신측 인터페이스 테이블에 데이터를 Write하고 전송
    • 송신 시스템의 인터페이스 테이블에서는 송신 관련 정보를 관리하기 위한 항목과 송신 시스템에서 필요한 항목을 추가하여 설계함
      • 송신 관련 정보 : 연계 데이터 생성 일시, 송신 일시, 송신 상태 등
    • 송신측에서 테이블에 데이터를 Write함
    • 인터페이스 이벤트 발생 시 인터페이스 테이블에 인터페이스 내용을 Write함
    • Write 동작은 INSERT이며 UPDATE 및 DELETE는 사용할 수 없음
      • UPDATE 및 DELETE 할 수 없는 이유는 데이터 무결성 유지 및 인터페이스 이력 관리를 위함
    • 제약조건은 테이블 생성 시 제약조건을 통하여 구현할 수 있음
    • 송신측에서 테이블의 데이터를 전송
    • 정의된 인터페이스 시점에 수신측으로 데이터를 전송할 수 있음
      • 인터페이스 시점 : 즉시 또는 특정 기간 이후 혹은 주기적인 시점
    • 전송하기 위해서는 일반적으로 데이터베이스 커넥션(DB Connection)이 수신측 인터페이스 테이블과 맺어져 있어야 하고 프로시저(Procedure), 트리거(Trigger), 일괄 작업(Batch Job) 등의 방법을 통하여 수신 테이블로 전송함
  2. 수신측 인터페이스 테이블에서 인터페이스 데이터를 Read하고 처리
    • 수신 시스템의 인터페이스 테이블에서는 수신 관련 정보를 관리하기 위한 항목과 수신 시스템에서 필요한 항목을 추가하여 설계함
      • 수신 관련 정보 : 수신 일시, 처리 일시, 수신 상태 등
    • 수신측 인터페이스 테이블에서 인터페이스 데이터를 Read함
    • 인터페이스 데이터가 수신측 인터페이스 테이블에 입력되면 정해진 주기에 따라 데이터를 읽음
    • 수신측 인터페이스 테이블에서 Read한 인터페이스 데이터를 처리
    • 수신측 시스템에서는 인터페이스 데이터를 읽은 후 사전에 정의된 데이터 트랜잭션을 진행함
    • 데이터를 읽을 때나 해당 트랜잭션이 진행될 때 오류가 발생하면 오류 코드 컬럼에 정의된 오류 코드와 오류 내용을 입력함