소프트웨어 개발 5. 인터페이스 구현

박유현·2020년 5월 20일
0

1. 인터페이스 설계서

  • 시스템 간 연계를 위해 교환하는 데이터 및 처리, 관련 업무, 송/수신 시스템 등에 대해 정의(인터페이스 정의서)
  • 일반적 인터페이스 설계서
    - 시스템 목록, 인터페이스별 상세 데이터 명세, 기능별 세부 인터페이스 정보 정의
    - 시스템 인터페이스 설계서: 시스템 인터페이스 목록 및 상세 데이터 명세 정의
    - 상세 기능별 인터페이스 명세서: 세부 기능의 개요, 사전/사후 조건, 인터페이스 데이터, 호출 후 결과 확인하는 반환값 등
  • 정적/동적 모형을 통한 인터페이스 설계서
    - 시스템별 구성 요소를 다이어그램으로 표현
    - 주요 구성 요소 간 트랜잭션으로 인터페이스가 속한 시스템 위치, 교환되는 트랜잭션 종류 확인

2. EAI

  • Enterprise Application Integration
    - 기업 내 애플리케이션과 플랫폼 간 정보 상호 연동을 해주는 대표적인 모듈 연계 솔루션
    • 비지니스 간 통합/연계성 증대로 효율성/시스템 간 확정성(Determinancy) 높임
    • 구축 유형
      • Point-to-Point: 가장 기본적인 통합 방식, 애플리케이션을 1:1로 연결, 변경/재사용 어려움
      • Hub & Spoke: 허브 시스템(단일 접점)으로 데이터 전송하는 중앙 집중형 방식, 확장/유지 보수 쉬움, 허브 장애 시 전체 시스템에 영향
      • Message Bus(ESB 방식): 애플리케이션 간에 미들웨어(Middle Ware) 둠, 확장성 뛰어남, 대용량 처리
      • Hybrid: Hub & Spoke(그룹 내)와 Message Bus(그룹 간) 혼합, 한 가지로 구현도 가능, 데이터 병목 최소화

3. ESB

  • Enterprise Service Bus
    - 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반 인터페이스 제공 솔루션
    • 통합 측면에서 EAI와 유사하나 애플리케이션보다 서비스 중심 통합 지향
    • 특정 서비스가 아닌 범용으로 사용하기 위해 애플리케이션 결합도(Coupling) 약하게(Loosely)
    • 관리와 보안 유지 쉽고 높은 수준의 품질 지원

4. 모듈 세부 설계서

  • 모듈의 구성 요소와 세부 동작 등을 정의
    - 인터페이스 기능 구현 정의를 위해 필요
    - 컴포넌트 명세서와 인터페이스 명세서 기반으로 필요 기능 확인
  • 컴포넌트 명세서
    컴포넌트의 개요와 내부 클래스의 동작, 인터페이스로 외부와 통신하는 명세 등
  • 인터페이스 명세서
    컴포넌트 명세서 항목 중 인터페이스 클래스 세부 조건과 기능 등

5. JSON

  • JavaScript Object Notation
    - 데이터 통신을 이용한 인터페이스 구현 방법
    • 속성-값의 쌍(Attribute-Value Pairs)인 데이터 객체 전달을 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
    • 비동기처리에 쓰이는 AJAX(Asynchronous JavaScript and XML)에서 XML 대신 사용

6. XML

  • eXtensible Markup Language
    - 데이터 통신을 이용해 인터페이스 구현
    • 다목적 마크업 언어
    • HTML(웹페이지 기본 형식) 문법과 웹 브라우저와 호환 문제와 SGML(Stand Generalized Markup Language)의 복잡성을 해결하기 위해 개발

7. 인터페이스 보안

  • 시스템 모듈 간 통신과 정보 교환의 통로로 쓰이므로 데이터 변조 및 탈취 등의 위협에 노출
    - 충분한 보안 기능 갖춰야
  • 취약점 분석
    - 인터페이스 기능 수행되는 각 구간 현황 확인하여 보안 취약점 분석
    - 송/수신 영역의 구현 기술과 특징 등 구체적으로 확인
    - 확인된 기능 기반으로 송신 데이터 선택, 송신 객체 생성, 인터페이스 송/수신, 데이터 처리 결과 전송 등의 영역별로 발생 가능한 취약점을 시나리오로 작성
  • 기능 적용
    - 분석된 기능 및 취약점 기반으로 보안 기능 적용
    - 일반적인 적용 영역
    • 네트워크
      • 인터페이스 송/수신 간 스니핑(Sniffing) 등의 데이터 탈취와 변조 위협 방지를 위해 네트워크 트래픽에 대한 암호화
      • 아키텍처에 따라 IPsex(IP Security), SSL(Secure Sockets Layer), S-HTTP(Secure Hypertext Transfer Protocol) 등 적용
    • 애플리케이션
      • 소프트웨어 개발 보안 가이드 참조
      • 애플리케이션 상 보안 취약점 보완하는 방향으로
    • 데이터베이스
      • 스키마, 엔티티 접근 권한 및 프로시저(Procedure), 트리거(Trigger) 등 동작 개체에
      • 데이터 자체의 보안도 고려(개인 정보 혹은 업무상 민감 데이터의 암호화/익명화)

8. xUnit

  • 인터페이스 구현 검증을 위한 통합테스트(단위 기능 및 시나리오 등을 기반) 자동화 도구
    - Java(Junit), C++(Cppunit), Net(Nunit) 등 지원
    - 단위 테스트 프레임워크

9. NTAF

  • 검증 위한 통합테스트를 효율적으로 수행하기 위한 자동화 도구
    - FitNesse(웹 기반 테스트케이스 설계, 실행, 결과 확인 등 지원)의 장점인 협업 기능과 STAF(서비스 호출과 컴포넌트 재사용 등의 환경 제공)의 장점인 확장성을 통합
    - Naver의 테스트 자동화 프레임워크

10. APM

  • Application Performance Management/Monitoring
    - 구현된 인터페이스가 외부 시스템과 연결 모듈 간에 정상 동작하는지 감시(Monitoring)하는 도구
    • 애플리케이션 성능 관리 위해 접속자, 자원 현황, 데이터베이스와 웹 애플리케이션의 트랜잭션 수행 내역, 호출 함수, 로그/시스템 부하, 장애 진단 등의 모니터링 기능 제공
      • 리소스 방식
        - Nagios
        - Zabbix
        - Cacti
      • 엔드투엔드(End-to-End) 방식
        - VisualVM
        - 재니퍼(Jennifer): 개발부터 테스트, 오픈, 운영, 안정화까지 모든 단계에 걸친 성능 모니터링 및 분석
        - 스카우터(Scouter): 애플리케이션과 OS 자원에 대한 모니터링(오픈소스)

0개의 댓글