5장 인터페이스 구현

1. 인터페이스 설계 확인

인터페이스 시스템

서로 다른 시스템, 장치 사이에서 정보나 신호를 주고 받을 수 있도록 도움을 주는 시스템
-> 서로 주고 받는 것

인터페이스 설계서 구성

  • 인터페이스 목록 : 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식과 통신 유형 등에 대한 정보
  • 인터페이스 정의서 : 데이터 송신 시스템과 수신 시스템 간의 데이터 저장소와 속성 등의 상세 내역을 포함
  • 인터페이스 설계서 명세화 : 문서를 만드는 것

외부 및 내부 모듈 연계를 위한 인터페이스 기능 식별

EAI

Enterprise Application Integration
기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션

EAI 구축유형

  • Point-to-Point
    가장 기초적인 애플리케이션 통합방법, 1:1 단순 통합.
    중간에 미들웨어를 두지 않음
  • Hub & Spoke
    단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
    허브 장애 시 전체 영향
  • Message Bus(ESB 방식)
    애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식
    어댑터가 각 시스템과 버스를 두어 연결하므로 뛰어난 확장성, 대용량 처리 가능
  • Hybrid
    그룹 내부는 허브 앤 스포크 방식을 사용하고, 그룹 간에는 메시지 버스 방식을 사용
    데이터 병목 현상 최소화

ESB

Enterprise Service Bus
웹 서비스 중심으로 표준화된 데이터, 버스를 통해 이 기종 애플리케이션을 유연하게 통합하는 핵심 플랫폼
버스를 중심으로 각각 프로토콜이 호환되게끔 변환 가능(느슨한 결합), 서비스 중심으로 메시지 이동 라우팅 가능
애플리케이션보다는 서비스 중심으로 통합을 지향

2. 인터페이스 기능 구현

모듈 간 세부 설계서

  • 컴포넌트 명세서
    컴포넌트의 개요, 내부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의
  • 인터페이스 명세서
    컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서
컴포넌트
특정한 기능을 수행하기 위해 독립적으로 개발되어 보급되는, 잘 정의된 인터페이스를 가지며 다른 부품과 조립되어 응용시스템을 구축하기 위해 사용되는 소프트웨어 프로그램

인터페이스 기능 구현 기술

1) JSON

속성-값 쌍 또는 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷

2) XML

HTML의 단점을 보완한 인터넷 언어
웹에서 구조화한 문서를 표현하고 전송하도록 설계한 마크업 언어

3) AJAX

자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능

4) REST

웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
HTTP URI를 통해 자원을 명시하고 HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것

  • Create : POST
  • Read : GET
  • Update : PUT
  • Delete : DELETE

REST 구성요소

  • 자원(Resource), URI
    서버에 존재하는 데이터의 총칭
  • 행위(Verb), Method
    클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다
  • 표현(Representation)
    REST에서 하나의 자원은 JSON, XML, TEXT 등 여러 형태의 Representation으로 나타낼 수 있다

REST의 특징

  • 유니폼 인터페이스(일관된 인터페이스)
    특정 언어에 상관없이 사용 가능
  • 무상태성(Stateless)
    작업을 위한 상태 정보를 따로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 단순 처리
  • 캐시 처리 가능(Cacheable)
    HTTP가 가진 캐싱 기능 적용 가능
  • 자체 표현 구조(Self-descriptiveness)
    API 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조

인터페이스 보안 기능 적용

데이터 통신 시 스니핑을 통한 데이터 탈취 위협, 전송 데이터에 대한 삽입, 삭제, 변조 공격을 통한 시스템 위협 존재
-> 시큐어 코딩 가이드 및 데이터베이스 보안 적용

시큐어 코딩 가이드

  • 입력데이터 검증 및 표현
  • 보안 기능
  • 시간 및 상태
    거의 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리
  • 에러 처리
  • 코드 오류
  • 캡슐화
  • API 오용 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API의 사용

3. 인터페이스 구현 검증

구현된 인터페이스의 동작을 검증하기 위해 인터페이스 구현 및 감시 도구를 통해서 인터페이스 동작 상태를 검증하고 모니터링할 수 있다

인터페이스 구현 검증 도구

  • xUnit
    다양한 언어를 지원하는 단위 테스트 프레임워크
  • STAF
    서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
  • FitNesse
    웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
  • NTAF
    FitNesse의 장점과 STAF의 장점 결합
  • Selenium
    다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
  • watir
    Ruby 기반 웹 어플리케이션 테스트 프레임워크

중요 인터페이스 데이터의 암호화 전송 보안 기술

  • IPSec(IP Security)
    IP계층에서 보안 서비스 제공
  • SSL/TLS
    전송계층과 응용계층 사이에서 데이터 무결성 보장
  • S-HTTP(Secure Hypertext Transfer Protocol)
    클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송