포스트

17. 인터페이스 구현

17. 인터페이스 구현

인터페이스 설계 확인

인터페이스 기능 확인

인터페이스 개념

  • 이기종 시스템 또는 컴포넌트 간 데이터 교환

  • 내/외부 시스템끼리 서로 연동하여 상호작용하기 위한 접속 방법이나 규칙

  • 근래 들어 외부와의 인터페이스를 통해서 많은 업무를 처리

인터페이스 설계서

인터페이스 설계서의 개념

  • 시스템의 인터페이스 현황 확인하기 위해 정의한 문서

  • 시스템이 갖는 인터페이스 목록 및 각 인터페이스의 상세 데이터 명세

  • 인터페이스 목록과 시스템 인터페이스 정의서로 구성

  • 인터페이스 송수신 방법과 인터페이스 송수신 데이터 명세화 과정에서 작성한 산출물을 기반으로 작성

  • 내외부 모듈 간 공통적으로 제공되는 기능과 각 데이터의 인터페이스를 확인하는데 사용

인터페이스 목록

  • 시스템에서 가지고 있는 인터페이스 목록

  • 인터페이스 번호 및 인터페이스 되는 시스템의 정보 및 관련 요구 사항 ID를 리스트 형태로 보여줌

  • 인터페이스 번호, 시스템 명, 처리형태 등을 기본적으로 가지고 있음

인터페이스 명세서

  • 인터페이스 목록에 있는 각 인터페이스의 상세 정보

  • 각 인터페이스 번호당 인터페이스 되는 데이터, 데이터 형식, 송수신 시스템의 정보 등을 구체화하여 작성

형태에 따른 인터페이스 설계서

정적, 동적 모형을 통한

  • 트랜잭션을 통해 해당 인터페이스가 시스템의 어느 부분에 속하는지, 상호 교환되는 트랜잭션의 종류를 확인

데이터 정의를 통한 | 일반적인 설계서

  • 제공하는 인터페이스 서비스에 대한 상세 명세를 표현하는 산출물

  • 제공하는 서비스 목록과 이에 대한 인터페이스 방식 및 명세, 반환 형태까지 정의를 상세화하여 개발 수준에서 인터페이스를 어떻게 구현해야할지 잘 명시


인터페이스 데이터 표준

개념

  • 인터페이스를 위해 인터페이스가 되어야 할 범위의 데이터들의 형식과 표준을 정의하는 것

  • 기존에 있던 데이터 중 공통의 영역을 추출하여 정의하는 경우도 있고 인터페이스를 위해 한 쪽의 데이터를 변환하는 경우도 있음

확인

  • 상호 인터페이스 해야 할 모듈의 데이터 표준과 함께 인터페이스 데이터 표준을 같이 정의하고 산출물에 표현

  • 인터페이스에 필요한 데이터 포맷의 표준을 표현

  • 데이터 포맷은 JSON, DB, XML 등 다양한 형태로 표현이 가능

확인 절차

  • 식별된 데이터 인터페이스를 통해 인터페이스 데이터 표준을 확인

  • 식별된 인터페이스 기능을 통해 인터페이스 데이터 표준을 확인

  • 데이터 인터페이스 및 식별된 인터페이스 기능을 통해 데이터 표준을 확인

포맷

JSON | JavaScript Object Notation

  • Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷

  • 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용

  • JSON 데이터는 이름과 값의 쌍으로 이루어짐Attribute - Value Pairs

XML | eXtensible Markup Language

  • 여러 특수 목적의 마크업 언어를 만드는 용도에서 권장되는 다목적 마크업 언어

  • HTML 태그표현의 한계를 보완하고, SGML 복잡성을 개선한 언어

  • 유니코드를 사용하므로 전 세계의 모든 문자를 처리

  • XQuery : XML 문서를 해석하고 검색하는 기능을 제공하는 범용 XML 질의언어

CSV | Comma Separated Values

  • 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일

  • 표 형태의 데이터를 저장하는 파일 형식

YAML

  • XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 ‘사람이 쉽게 읽을 수 있는’ 데이터 직렬화 양식

내 & 외부 모듈 연계 방식

EAI | Enterprise Application Integration

개념

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

  • EAI를 사용함으로써 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높여줄 수 있으며 각 시스템 간의 확장성을 높여줄 수 있음

구축 유형

Point-to-Point

  • 중간에 미들웨어를 두지 않고 각 애플리케이션 간 Point to Point 형태로 연결
  • 솔루션 구매 없이 통합

Hub & Spoke

  • 단일 접점이 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
  • 모든 데이터 전송 보장
  • 확장, 유지 보수 용이
  • 허브 장애 시 전체 영향

Message Bus | ESB 방식

  • 애플리케이션 사이 미들웨어(Bus)를 두어 처리
  • 미들웨어 통한 통합
  • 어댑터가 각 시스템과 버스를 두어 연결하므로 뛰어난 확장성, 대용량 처리 가능

Hybrid

  • 그룹 내에는 Hub & Spoke 방식을 그룹 간 Message Bus 방식을 사용
  • 표준 통합 기술, 데이터 병목 현상 최소화

ESB | Enterprise Service Bus

  • 웹 서비스 중심으로 표준화된 데이터, 버스를 통해 이기종 애플리케이션을 유연(loosely-coupled)하게 통합하는 핵심 플랫폼(기술)

  • ESB는 bus를 중심으로 각각 프로토콜이 호환이 되게끔 변환이 가능하고 서비스 중심으로 메시지 이동을 라우팅 할 수 있음

  • 관리 및 보안이 쉽고 높은 수준의 품질 지원이 가능하지만 표준화가 미비하고 특정 벤더 종속, 성능 문제에서 개선되어야 할 부분이 남아 있음

  • ESB는 애플리케이션 간의 통합 측면에서 EAI와 유사하다고 볼 수 있으나 애플리케이션보다는 서비스 중심으로 통합을 지향하는 아키텍처 또는 기술


인터페이스 기능 구현

인터페이스 보안

취약점

  • 인터페이스는 시스템 모듈 간 통신 및 정보교환을 지원하므로 데이터 변조 & 탈취 및 인터페이스 모듈 자체의 보안 취약점이 있을 수 있음

패킷 공격 기법

Sniffing

  • 데이터 통신 내역을 중간에서 감청하여 기밀성을 훼손하는 기법

Spoofing

  • 악의적 네트워크 침입자가 임의로 웹사이트를 구성하여 일반 사용자들의 방문을 유도해 인터넷 프로토콜인 TCP/IP의 구조적 결함을 이용하여 사용자의 시스템 권한을 획득한 뒤 정보를 빼가는 해킹 방법

구현

시큐어 코딩

  • 대표적인 웹 애플리케이션의 보안 취약점 발표 사례인 OWASP(Open Web Application Security Project) Top 10을 참고하여 KISA(한국 인터넷 진흥원)에서 SW 보안 약점 가이드를 발표하였고 SW 보안 취약점, 약점 및 대응 방안이 구체적으로 서술되어 있음

입력 데이터 검증 및 표현

  • 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터형식을 잘못 지정하여 발생하는 보안 취약점

보안 기능

  • 보안기능(인증, 접근제어, 기밀성, 암호화, 권한 관리 등)을 부적절하게 구현 시 발생하는 보안 약점

시간 및 상태

  • 동시 또는 거의 동시 수행을 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작되는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점

에러 처리

  • 에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보가 포함될 때 발생하는 보안 약점

코드 오류

  • 타입변환 오류, 자원(메모리 등)의 부적절한 반환 등과 같이 개발자가 범하는 코딩오류로 인해 유발되는 보안 약점

캡슐화

  • 중요한 데이터 또는 기능성을 불충분하게 캡슐화 하였을 때, 인가되지 않은 사용자에게 데이터 누출이 가능해지는 보안 약점

API 오용

  • 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점

데이터베이스 암호화

  • 데이터베이스의 기밀성을 유지하기 위해 중요 민감 데이터는 암호화하는 기법을 사용

  • 다양한 암호 알고리즘을 활용하여 중요 데이터는 암호화

대칭 키 알고리즘

  • 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘
  • ARIA 128 / 192 / 256, SEED

비대칭 키 알고리즘

  • 암호화할 때마다 복호화 할 때의 키가 서로 다른 키를 쓰는 알고리즘
  • 타인에게 절대 노출되어서는 안되는 개인키를 토대로 만든 공개키가 쌍을 이룬 형태
  • RSA, ECDSA

해시 알고리즘

  • 해시 함수를 이용하여 임의의 길이를 가진 데이터를 고정된 길이의 데이터로 변경
  • SHA-256 / 384 / 512, HAS - 160, MD5

API 방식

  • 애플리케이션 레벨에서 암호 모듈을 적용하는 애플리케이션 수정 방식
  • 애플리케이션 서버에 암 / 복호화, 정책 관리, 키 관리 부하 발생

Plug-in 방식

  • DB 레벨의 확장 프로시저 기능을 이용, DBMS에 plug-in 모듈로 동작하는 방식
  • DB 서버에 암 / 복호화, 정책관리, 키 관리 부하 발생

Hybrid 방식

  • API 방식과 Plug-in 방식을 결합한 방식
  • DB와 애플리케이션에서 부하 분산

TDE 방식

  • DBMS에 내장 또는 옵션으로 제공되는 암호화 기능을 이용하는 방식
  • 응용 프로그램에 대한 수정이 없고 인덱스의 경우 DBMS 자체 인덱스 기능과 연동 가능
  • DB 내부에서 암 / 복호 처리를 하는 방식

네트워크 구간 암호화

Transport Layer Network 보안

상대방 인증 적용
IPSec AH(Authentication Header) 적용
IKE(Internet Key Exchange) 프로토콜 적용
데이터 기밀성 보장
IPSec ESP(Encapsulation Security Payload) 적용
End-to-End 보안 적용
IPSec Transport mode 적용

Application Layer Network 보안

서버만 공개키 인증서를 가지고 통신(위험 분산)
SSL(Secure Soket Layer)
연결 단위 외 메시지 단위로도 인증 및 암호화 필요
S-HTTP 적용하여 메시지 암호화

기능 적용

보안 취약점 분석

  • 인터페이스 각 구간의 구현 현황을 분석

  • 인터페이스 각 구간의 보안 취약점을 분석

보안 기능 적용

  • 네트워크 구간에 보안 기능을 적용

  • 애플리케이션에 보안 기능을 적용

  • 데이터베이스에 보안 기능을 적용


연계 테스트

개념

  • 구축된 연계 시스템과 연계 시스템의 구성요소가 정상적으로 동작하는지 확인하는 활동

수행

  • 연계 테스트 케이스 작성

  • 연계 테스트 환경 구축

  • 연계 테스트 수행

  • 연계 테스트 수행 결과 검증

수행 결과 검증

  • 운영 DB 테이블의 건수를 확인하는 방법

  • 테이블 또는 파일을 열어 데이터를 확인하는 방법

  • 파일 생성 위치에서 파일 생성 여부 및 파일 크기를 확인하는 방법

  • 연계 서버에서 제공하는 모니터링 현황을 확인하는 방법

  • 시스템에서 기록하는 로그를 확인하는 방법


인터페이스 구현 검증

인터페이스 검증

검증 도구

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

감시 도구

  • APM(Application Performance Management)을 사용하여 동작 상태 감시

  • 데이터베이스, 웹 애플리케이션의 다양한 정보를 조회하고 분석하여 시각화

종류

  • Scouter

  • Jennifer


인터페이스 오류 발생 처리

알림

  • 화면을 통한 오류 메시지 표시

  • 오류 발생 시 SMS & E-mail 발송

확인

  • 인터페이스 오류 로그 & 테이블 & 감시도구 확인
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.