[소프트웨어개발] 2. 시스템인터페이스 구현

인터페이스 기능 확인

인터페이스 설계서(정의서)

  • 시스템의 인터페이스 현황을 한눈에 확인
  • 이기종의 시스템간 데이터 교환과 처리를 위하여 사용되는 데이터뿐 아니라 업무, 그리고 송수신 시스템 등에 관한 상세 내용을 기술한 문서
  • 설계서 구분
    • 정적, 동적 모형을 통한 설계서
    • 일반적 형태의 설계서
  • 클래스 분할 배치 : 시각적인 다이어그램 사용
  • 적절한 주석

인터페이스 기능 확인 순서

인터페이스 설계서의 외부 및 모듈의 기능을 확인 → 공통으로 제공되는 기능과 각 데이터의 인터페이스 확인

모듈 연계

데이터 표준 확인

  • 내/외부 모듈 간 데이터를 교환 시 데이터 표준을 정의하고 이를 관리해야 함
  • 기존 데이터 중 공통 영역을 추출 or 다른 한 쪽의 데이터 형식을 변환
  • JSON, DB, XML, YAML, AJAX, CSV, REST 등의 표준을 사용
  • 데이터 표준 확인 → 인터페이스 데이터 항목을 식별 → 데이터 표준 최종확인

모듈 연계

  • 시스템 인터페이스를 목적으로 내부 모듈-외부 모듈 or 내부 모듈-내부 모듈 간 인터페이스를 위한 관계를 설정하는 것
  • EAI, ESB, Web Service, IPC

🔎 EAI (Enterprise Application Integration) ⭐

플랫폼 및 애플리케이션 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션

  • 특징
    • 효율성
    • 각 시스템간의 확정성
    • 비표준 어댑터를 배포하여 통합하는 방식
EAI 유형 기능
Point-to-Point
Untitled
중간 미들웨어 없이 연결, 변경 및 재사용이 어려움
Hub & Spoke
Untitled 2
단일 접점인 허브 시스템을 통해 데이터 전송,
중앙 집중형 방식, 허브에 장애 발생 시 시스템 전체에 영향
Message Bus
Untitled 1
미들웨어 배치, 확장성이 뛰어남, 대용량 데이터 처리에 유리
Hybrid
Untitled 3
Hub & Spoke + Message Bus,
그룹 내 : Hub & Spoke, 그룹 간 : Message Bus,
데이터 병목현상 최소화, 한 가지 방식으로 EAI 구현 가능
  • 구성 요소
    • EAI 플랫폼 : 상호 운영 가능하도록 함, 유연성과 확장성 보장
    • 어댑터 : EAI의 핵심 장치, 데이터 입출력 도구
    • 브로커 : 데이터 포맷과 코드를 변환
    • 메시지 큐 : 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터를 송수신
    • 비즈니스 워크플로우

🔎 ESB (Enterprise Service Bus)

  • ESB=SOA+EAI
  • *SOA : 일 처리 단위를 서비스로 판단하고 그 서비스를 네트워크에 연동하여 시스템 전체를 구축해 나가는 방법론
  • ESB의 개념
    • 애플리케이션 간의 데이터 변환 및 연계 지원 등을 제공하는 인터페이스 제공 솔루션
    • 애플리케이션 보다는 서비스 중심으로 통합을 지향함
    • 유연(Loosely-Coupled)하게 통합하는 핵심 플랫폼(기술)
    • SOAP, REST, JMS 등 다양한 기술을 이용하여 서비스 통합
구분 EAI ESB
개념 기업 애플리케이션 통합을 위한 소프트웨어 아키텍처 서비스 지향 아키텍처를 기반으로 하는 통합 플랫폼
통합 방식 Point-to-Point, Publish-Subscribe 등 다양한 방식 Enterprise Service Bus를 통해 표준화된 방식 제공
연결 방식 직접 연결(Ad-hoc) 방식 중앙집중형(Broker)방식
비즈니스 규칙 EAI 서버에서 처리 ESB 에서 처리
트랜잭션 관리 각각의 애플리케이션에서 관리 ESB 에서 관리
확장성 비교적 낮음 높음
성능 성능이 떨어짐 성능이 우수
유연성 제한된 유연성 높은 유연성

🔎 Web Service

  • 네트워크의 정보를 표준화된 서비스 형태로 만들어 공유하는 기술
  • 서비스 지향 아키텍처(SOA)개념을 실현
  • XML, SOAP, WSDL, UDDI 등 다양한 기술을 이용하여 개발
  • 웹 서비스의 구성 ⭐
    • SOAP(Simple Object Access Protocol)
      • HTTP, HTTPS, SMTP 등을 할용하여 XML 기반의 메시지를 네트워크 상에서 교환하는 프로토콜
    • UDDI(Universal Description, Discovery and Integration)
      • WSDL을 등록하여 서비스와 서비스 제공자를 검색하고 접근하는 방식으로 사용
      • XML기반
    • WSDL(Web Service Description Language)
      • 웹 서비스에 대한 상세 정보를 XML형식으로 구현
구분 Web Service ESB
개념 네트워크 상에서 서로 다른 플랫폼 간의 통신을 가능하게 하는 소프트웨어 시스템 서비스 지향 아키텍처를 기반으로 하는 통합 플랫폼
기술 XML, SOAP, WSDL, UDDI 등 다양한 기술을 이용하여 개발 SOAP, REST, JMS 등 다양한 기술을 이용하여 서비스 통합
역할 네트워크상에서 데이터 교환을 위한 인터페이스 역할 서로 다른 애플리케이션 간의 통신을 위한 브로커 역할 및 비즈니스 프로세스 관리
컴포넌트 서비스 인터페이스, 웹 서비스 클라이언트 등 라우터, 변환기, 어댑터, 메시지 버퍼 등
데이터 포맷 주로 XML 기반 데이터 포맷 사용 다양한 데이터 포맷 지원
보안 보안 기능 제공하지 않음 보안 기능 제공
확장성 높음 높음
비즈니스 규칙 비즈니스 규칙 처리 기능 제공하지 않음 비즈니스 규칙 처리 기능 제공

🔎 IPC 방식 (Inter-Process Communication)

  • 운영체제에서 프로세스 간 서로 데이터를 주고 받기 위한 통신 기술
  • 프로세스 사이의 동기를 맞추는 기능을 제공
  • 주요 기술
    • Pipe
    • Socket
    • Message Queue
    • Shared Memory

인터페이스 기능 정의

인터페이스 기능에 대한 구현 방법을 기능별로 기술하는 과정

  • 컴포넌트 명세서 확인 → 인터페이스 명세서 확인 → 일관된 인터페이스 기능 구현 정의 → 정의된 인터페이스 기능 구현 정형화
  • 인터페이스 명세서 작성 항목
    • 인터페이스명, 설명, 메소드, 파라미터, 반환값, 예외 처리, 상태 정보, 예시 코드

모듈 세부 설계서

  • 컴포넌트 설계서 + 인터페이스 설계서
  • 모듈 세부 설계서 확인
    • 컴포넌트의 주기능은 컴포넌트 명세서(컴포넌트 개요, 내부 클래스의 클래스명, 설명 등)으로 확인
    • 인터페이스에 필요한 주 기능은 인터페이스 클래스를 통해 확인
    • 인터페이스 명세서를 통해서 컴포넌트 명세서의 인터페이스 클래스에 작성된 인터페이스 세부 조건 및 기능을 확인

인터페이스 구현

  • 송수신 시스템 간의 데이터 교환 및 처리를 실현해주는 작업
  • 인터페이스 구현 방법을 분석 후 인터페이스 구현
  • 데이터 통신을 이용한 인터페이스 구현
    • 애플리케이션 영역에서 인터페이스 형식에 맞춘 데이터 포맷을 인터페이스 대상으로 전송하고
    • 수신측에서 구문 분석하여 해석하는 방식

인터페이스 구현을 위한 연계 기술

🔎 AJAX (Asynchronous JavaScript and XML)

  • JavaScript를 사용한 비동기 통신 기술
  • XML 데이터 주고 받음

🔎 JSON (JavaScript Object Notation)

  • 데이터 통신을 이용한 인터페이스 구현 방법
  • 용량이 적은 데이터를 교환하기 위해 객체를 속성-값의 쌍 형태로 표현
  • JavaScript토대로 개발됨
  • 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
  • AJAX에서 XML을 대체하는 주요 데이터 포맷

🔎 인터페이스 엔티티를 이용한 인터페이스 구현

  • 인터페이스가 필요한 시스템 사이에 별도의 중계 인터페이스 엔티티를 배치해 상호 연계

🔎 REST (Representational State Trasfer, 대표 상태 이전) ⭐

  • 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재, 상태 정보를 표준화된 HTTP 메소드로 주고받는 웹 아키텍처
  • REST 메소드 (CRUD 만 사용)
    • Create : POST
    • Read : GET
    • Update : PUT
    • Delete : DELETE

인터페이스 구현 검증

  • 인터페이스의 동작 상태를 검증 및 감시(Monitoring)
  • 인터페이스 명세서를 참조
구현 검증 도구의 종류 설명
Watir Ruby 기반 웹 애플리케이션 테스트 프레임워크
xUnit Java(Junit), C++, .Net(Nunit), JMockit, EMMA, PHPUnit, HttpUnit, DBUnit 등 다양한 언어를 지원하는 단위 테스트 프레임워크
FitNesse 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
STAF 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크,
데몬을 사용해 테스트 대상 분산 환경에서 테스트를 수행하고 통합하는 자동화 검증 도구,
테스트 자동화/에러 검출 및 디버깅/테스트 리포팅
NTAF Naver 테스트 자동화 프레임워크(STAF+FitNesse)
Selenium 웹 어플리케이션의 인터페이스 구현 검증을 위한 도구, 다양한 언어 지원, 크로스 브라우징 지원
Appinum 모바일 애플리케이션의 인터페이스 구현 검증을 위한 도구

인터페이스 구현 감시 도구

  • APM (Application Performance Management)을 사용
  • 트랜잭션과 변수값, 호출 함수, 로그 및 시스템 부하 등 종합적인 정보를 조회하고 분석 가능
  • 스카우터, 지니퍼 등
  • 주요 기능 : 애플리케이션 모니터링, 성능 분석, 성능 향상

인터페이스 보안

  • 데이터 통신 시 데이터 탈취 위협
    • Sniffing : 네트워크 주변의 패킷을 옆보는 것
    • Spoofing : 사용자가 통신하는 정보를 크래커의 사이트를 통하도록 함
  • 데이터베이스 암호화
  • 시큐어 코딩 (OWASP)

네트워크 보안 적용

  • 개념
    • 인터페이스 송수신 간 중간자에 의한 데이터 탈취 또는 위변조 방지
    • 네트워크 트래픽에 대한 암호화 적용
  • 고려 사항
    • Trasport Layer Network 보안
      • IPSec(Internet Protocol Security) 프로토콜 적용 : 인터넷 프로토콜 네트워크에서 보안 및 프라이버시를 제공
      • AH(Authentication Header) 프로토콜 적용 : 메시지 체크섬을 활용한 데이터 인증과 비연결형 결성을 보장해 주는 프로토콜
    • Application Layer Network 보안
      • SSL(Secure Socket Layer)의 서버 인증 상태를 운영
      • S-HTTP를 적용해 메시지 암호화

🔎 SSL 과 S-HTTP

  • SSL : 웹 브라우저와 서버 간의 통신에서 데이터를 암호화하고 인증하는 데 사용
  • S-HTTP : 웹 서버와 웹 클라이언트 간의 통신에서 전송 데이터의 일부 또는 전체를 암호화하는 데 사용

데이터베이스 보안 적용

  • 데이터베이스의 기밀성 유지를 위해
  • 데이터베이스의 접근 권한 및 SQL, 프로시저, 트리거 등 데이터베이스 동작 객체의 보안 취약점을 보완
  • 중요도가 높은 정보 전송시에는 반드시 암화화, 복호화 과정을 거치도록 함
  • IPSec, SSL/TLS 등 보안 채널을 활용해 전송
    • IPSec :
      • 통신 세션의 각 IP 패킷을 암호화하고 인증하는 안전한 인터넷 프로토콜 통신을 위한 프로토콜
    • SSL/TLS :
      • 국제 인터넷 표준화 기구에서 표준으로 지정한 공개키 기반의 프로토콜
      • 인터넷에서 정보를 암호화해 수신하기 위한 용도
      • 역할 : 서버의 공개 키를 클라이언트에게 전달하는 것
  • 암호화 기법 : API, Filter(Plug-in), Hybrid
  • 암호화 알고리즘 : 대칭키 알고리즘, 해시 알고리즘, 비대칭키 알고리즘
구분 API 방식 Filter(Plug-in)방식 Hybrid방식
개념 암호모듈(API) 적용 Plugin 또는 Snap-in모듈 형식으로 작성 어플라이언스 제공
*어플라이언스: 각종 기업용 소프트웨어를 서버와 스토리지 하드웨어에 최적화해 통합한 장비
암호화/보안 방식 별도의 API 개발/통합 DB 내 설치/연동 어플라이언스 / DB내 설치
서버 성능 부하 애플리케이션 서버에서 부하가 발생 DB 서버에서 부하 발생 DB 와 어플라이언스에서 부하가 분산
시스템 통합 용이성 애플리케이션 개발 및 통합 기간이 필요 애플리케이션 변경이 필요하지 않음,
통합 용이성이 높음
애플리케이션 변경이 필요하지 않음,
통합 용이성이 높음
관리 편의성 애플리케이션 변경할 때 유지보수 필요 관리자용 GUI를 이용해 DB 통합 관리 가능하여 관리 편의성이 높음 관리자용 GUI를 이용해 DB 통합 관리 가능하여 관리 편의성이 높음

인터페이스 연계 테스트

  • 송수신 시스템이 정상적으로 동작하는지 테스트
  • 연계 테스트 케이스 작성 → 연계 테스트 환경 구축 → 연계 테스트 수행 → 연계 테스트 수행 결과 검증
  1. 소프트웨어 연계 단위 테스트
    • 기능 동작 여부 및 결함 여부 확인
  2. 소프트웨어 연계 테스트 구간
    • 데이터의 흐름 및 처리 절차, 기능의 정상적 동작 확인
  3. 소프트웨어 연계 통합 테스트
    • 운용 애플리케이션 기능과의 통합 구조 흐름 확인