본문 바로가기
개발적인/기타 개발적인 부분

V. 인터페이스

by klm hyeon woo 2022. 10. 3.

오늘의 용어 정리

- 레스트 (REST) : 웹과 같은 분산 하이퍼 미디어 환경에서 자원의 존재 및 상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍쳐

- 프로시저(Procedure) : SQL을 이용해 생성된 데이터를 조작하는 프로그램으로 데이터 베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행

- 트리거(Trigger) : 특정 테이블에 삽입, 수정, 삭제 등의 변경 이벤트 발생 시 DBMS에서 자동 실행되도록 구현된 프로그램

- 배치 작업(Batch Job) : 실시간 작업의 반대 개념으로 일련의 작업을 하나의 작업단위로 묶어서 일괄로 처리하는 작업

01. 인터페이스 설계 확인

인터페이스란?

인터페이스는 사용자 인터페이스(User Interface)와 시스템 인터페이스(System Interface)로 구분이 된다.

 

소프트웨어 개발 단계별 인터페이스 산출물

- 분석 단계 : 인터페이스 요구사항을 통한 인터페이스 정의서 작성 

- 명세 단계 : 인터페이스 정의서에 따라 인터페이스 명세서 작성 (명세서와 정의서는 구분 없이 동일하게 부르기도 한다)

- 설계 단계 : 인터페이스 명세에 따라 설계 단계를 통해 구체적인 인터페이스 설계서 작성

 

➟ 일반적인 인터페이스 설계서는 *시스템 인터페이스 설계서상세 기능별 인터페이스 명세서로 나눠진다

*시스템 인터페이스 설계서 = 시스템 인터페이스 목록 + 시스템 인터페이스 정의서

 

시스템 인터페이스 설계서란?

이 기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터, 업무, 송수신 주체 등이 정의된 문서 (각 기능의 세부 인터페이스 정보)

 

시스템 인터페이스 목록 사례란?

인터페이스 번호 및 인터페이스가 되는 시스템의 정보 및 관련 요구사항 ID를 목록 형태로 보여준다.

 

시스템 인터페이스 정의서란?

각 인터페이스 번호 당 인터페이스가 되는 데이터, 데이터 형식, 송수신 시스템의 정보 등을 구체화 하는 문서 (각 인터페이스의 상세 정보)

 

상세 기능별 인터페이스 명세서란?

데이터 송 · 수신 시스템 간의 데이터 저장과 속성 등의 상세 내역을 포함하는 명세서

 

상세 기능별 인터페이스 명세서 주요 항목

- 인터페이스 ID : 인터페이스를 구분하기 위한 식별자

- 인터페이스 명 : 해당 인터페이스를 나타내는 고유 명칭

- 오퍼레이션 명 : 해당 인터페이스의 세부 동작 명칭

- 오퍼레이션 개요 : 해당 인터페이스의 세부 동작 프로세스에 대한 세부 설명

- 사전 조건 : 해당 인터페이스의 세부 동작이 정상적으로 작동하기 위한 사전에 완료되어야하는 조건 기술

- 사후 조건 : 해당 인터페이스의 세부 동작이 정상적으로 작동된 이후에 발생되는 조건 기술

- 파라미터 : 인터페이스 구성 항목 값

- 반환 값 : 인터페이스 전송 후 반횐되는 값 

 

정적 · 동적 모형을 통한 인터페이스 설계서 (일반적인 인터페이스 설계서와는 다름)

각 시스템의 구성요소를 표현한 다이어그램을 활용하여 시스템, 컴포넌트별 인터페이스와 요구조건을 확인할 수 있다. 

 

데이터 명세를 통한 인터페이스 설계서

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

 

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

기업 시스템이나 공공 서비스를 위한 시스템에서 인터페이스를 위해 외부 및 내부 모듈을 연계하는 대표적인 방법은 *EAI 방식과 *ESB 방식이 있다.

*EAI(Enterprise Application Integration) : 기업에서 운영되는 서로 다른 플랫폼 및 어플리케이션 간 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션

➟ EAI 구축 유형에는 Point-to-Point, Hub & Spoke, Message Bus, Hybrid가 있다는 것을 꼭 기억하자!

*ESB(Enterprise Service Bus) : 기업에서 운영되는 서로 다른 플랫폼 및 어플리케이션들 간 하나의 시스템으로 관리 운영될 수 있도록하는 서비스 중심의 통합을 지향하는 아키텍쳐 (느슨한 결합 방식 지원)

 

인터페이스 데이터 표준 확인

상호 연계하고자 하는 시스템 간 인터페이스가 되어야 할 범위의 데이터 형식과 표준을 정의하는 활동

➟ 데이터 형태가 동일한 경우는 그대로 전송하고, 동일하지 않은 경우는 데이터를 변환하여 전송

 

인터페이스 데이터 표준 확인 절차

(1) 식별된 데이터 인터페이스를 통해 인터페이스 데이터 표준 확인

- 데이터 인터페이스 입 · 출력 의미 파악

- 데이터 인터페이스 입 · 출력 의미 파악을 통한 데이터 표준 확인

(2) 인터페이스 기능을 통한 인터페이스 데이터 항목 식별

(3) 데이터 표준 최종 확인

02. 인터페이스 기능 구현

컴포넌트 명세서

*컴포넌트의 개요, 내부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의

*컴포넌트(Component) : 특정한 기능을 수행하기 위해 독립적으로 개발되어 보급되는 잘 정의된 인터페이스를 가지며, 다른 부품과 조립되어 응용시스템을 구축하기 위해 사용되는 소프트웨어 프로그램

 

인터페이스 명세서

컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서

 

인터페이스 기능 구현 기술

JSON : 비동기 브라우저 / 통신(AJAX)를 위해 "속성-값 쌍", "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷

➟ 표현 자료형에는 Number, String, Array, Obejct 로 구성이 되어져 있다.

JSON 장점 JSON 단점
- XML보다 가볍고 빠르다.
- 자료 종류에 큰 제한이 없다.
- XML은 모두 String이고, JSON은 String, Number, Array, Boolean 등 다양하다.
- Javascript 코드 안에서 JSON 객체에 접근이 쉽다.
- 태그가 없어서 가독성이 떨어진다.
- DTD(Document Type Definition) 같은 것이 없기 때문에 데이터 형식이 틀렸을 경우 체크가 쉽지 않다.

XML : HTML의 단점을 보완한 인터넷 언어로, *SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어

*SGML(Standard Generalized Markup Language)은 문서용 마크업 언어를 정의하기 위한 메타 언어

➟ XML 문서는 크게 `XML 프롤로그 부분`과 `XML 요소`로 구성이 된다.

- XML 프롤로그 : 맨 첫줄에 XML 문서임을 명시하는 선언부 (version, encoding, standalone으로 구성되어져있다)

 

XML 요소 : 시작 태그부터 종료 태그까지의 모든 것

(1) 요소 이름 : 사용자가 임의로 요소의 이름을 지정할 수 있음

(2) 속성-속성값 : XML 요소의 속성은 속성명-속성값의 형태로 정의

(3) 내용 : 요소의 내용으로 생략이 가능

  <cafe name="testTag"> 테스트 </cafe> 와 같이 요소 이름(cafe), 속성-속성값(name="testTag"), 내용(테스트)으로 구성이 되는 문법

 

AJAX : 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술

또는, 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법

 

AJAX의 주요 기술

(1) XMLHttpRequest : 비동기 통신을 담당하는 자바스크립트 객체

(2) JavaScript : 객체 기반의 스크립트 프로그래밍 언어

(3) XML(Entensible Markup Language) : HTML의 단점을 보완한 인터넷 언어로서 SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어

(4) DOM(Document Object Model) : XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API

(5) XSLT(Extensible Stylesheet Language Transformations) : XML 문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반 언어

(6) HTML(Hyper Text Markup Language) : 인터넷 웹(WWW) 문서를 표현하는 표준화된 마크업 언어

(7) CSS(Cascading Style Sheet) : 마크업 언어가 실제 표시되는 방법을 기술하는 언어, 스타일시트

 

REST : 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재 및 상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처

 

REST의 기본 형태 : REST는 크게 자원(리소스), 메소드(처리), 메세지의 3가지 요소로 구성된다.

자원 (예) URI

➟ 처리 (예) HTTP Methods

➟ 콘텐츠 타입 (예) XML, JSON

 

REST는 HTTP 메서드 중 CRUD에 해당하는 4가지 메서드만 사용한다.

메서드 의미
POST Create(생성)
GET READ(조회)
PUT Update(수정)
DELETE DELETE(삭제)

REST 각 세부 리소스(명사)에 id 값을 붙인다.

➟ 사용자라는 리소스 타입을 /users라고 정의했다면, user1이라는 id를 갖는 리소스는 /users/user1 형태로 정리를 할 수 있다.

 

REST 특징

- 클라이언트 및 서버 구조 : 클라이언트와 서버는 독립적으로 구현되며, 서로 간 의존성을 축소한다.

- 무 상태성 : 상태 정보를 따로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 단순 처리

- 일관된 인터페이스 : HTTP 표준에만 따른다면 특정 언어나 기술에 종속되지 않고 모든 플랫폼에서 사용 가능

- 캐시 처리 가능 : HTTP가 가진 캐싱 기능 적용 가능

- 자체 표현 구조 :  API 메세지 자체만 보고도 API를 이해할 수 있는 직관적인 구조를 가짐

 

인터페이스 구현

 

인터페이스 구현 방법에는 데이터 통신을 사용하는 방법인터페이스 개체를 사용하여 인터페이스를 구현하는 방법이 있다.

 

데이터 통신을 사용하는 방법

인터페이스 객체 생성 구현(정보들을 JSON으로 생성) ➟ 인터페이스 객체 전송 후 전송 결과를 수신 측에서 반환 받도록 구현(AJAX 기술을 통해 수신측에 송신)

방법 설명
인터페이스 객체 생성 구현 - 인터페이스 객체를 생성하기 위해서 데이터베이스에 있는 정보를 SQL을 통하여 선택 후 JSON으로 생성
인터페이스 객체 전송 후 전송 결과를 수신 측에서 반환받도록 구현 - 송신 측에서 JSON으로 작성된 인터페이스 객체를 AJAX 기술을 이용해 수신 측에 송신
- 수신측에서 JSON 인터페이스 객체를 수신받고 파싱 후 처리
- 처리 결과 값은 송신 측에 True / False 값을 전달하여 인터페이스 성공 여부 확인 전달

 

인터페이스 개체를 사용하는 방법

송신 시스템의 인터페이스 테이블(DB 커넥션을 통해 수신측과 연계 및 포르시저, 트리거, 배치 작업 등의 방법을 통해 데이터 전송 구현) ➟ 수신 시스템의 인터페이스 테이블

방법 설명
송신 시스템의 인터페이스 테이블 - 송신 관련 정보를 관리하기 위한 항목과 송신 시스템에서 필요한 항목 구현
- 인터페이스 이벤트 발생 시 인터페이스 테이블에 인터페이스 내용이 기록되도록 구현
- 데이터 전송을 위해 DB 커넥션(DB Connection)이 수신 측 인터페이스 테이블과 연계되도록 구현
- *프로시저, *트리거, *배치 작업 등의 방법을 통해서 수신 테이블로 데이터를 전송
수신 시스템의 인터페이스 테이블 - 수신 관련 정보를 관리 하기 위한 항목과 수신 시스템에서 필요한 항목 구현
- 수신 측 시스템에서 인터페이스 데이터를 읽은 후 사전에 정의된 데이터 트랜잭션을 진행할 수 있도록 구현
- 데이터를 읽을 때나 해당 트랜잭션이 진행될 때 오류가 발생하면 오류 코드 칼럼에 정의된 오류 코드와 오류 내용을 입력하도록 구현

*프로시저(Procedure) : SQL을 이용해 생성된 데이터를 조작하는 프로그램으로 데이터 베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행

*트리거(Trigger) : 특정 테이블에 삽입, 수정, 삭제 등의 변경 이벤트 발생 시 DBMS에서 자동 실행되도록 구현된 프로그램

*배치 작업(Batch Job) : 실시간 작업의 반대 개념으로 일련의 작업을 하나의 작업단위로 묶어서 일괄로 처리하는 작업

 

인터페이스 예외 처리 방안

 

데이터 통신을 사용한 인터페이스에서 예외처리 방법

방법 설명
송신 측에서 예외 처리 방법 - AJAX 호출 후 반환 값을 받아 어떻게 처리할지 호출 부분에서 사전 정의
- 반환 값은 성공 및 실패로 나뉘며 예외 처리는 실패 시 발생 
수신 측에서 예외 처리 방법 - 수신 측에서 받은 JSON 객체를 처리 시에 try-catch 구문을 통해 발생한 예외를 처리하고 이를 송신 측에 전달
- 별도 예외 결과를 설정하지 않아도 에러 발생 시 에러 결과를 반환

인터페이스 개체를 사용한 인터페이스에서 예외처리 방법

방법 설명
송신 인터페이스 테이블에서 예외 처리 방법 - 예외 발생 시 송신 인터페이스 테이블에 예외 유형에 따른 예외 코드와 상세한 원인을 입력
- 프로시저, 트리거 등을 통해 데이터 전송 시 발생하는 예외 유형을 정의하고, 예외 원인을 입력
수신 인터페이스 테이블에서 예외 처리 방법 - 예외 발생 시 사전에 정의된 예외 코드를 입력하고 예외 발생 사유를 함께 기록
- 수신된 인터페이스 정보를 활용할 때 예외 발생 시, 수신 인터페이스 테이블에 별도의 예외 사항을 기록

 

인터페이스 보안 기능 적용

데이터 통신 시 *스니핑을 통한 데이터 탈취 위협과 데이터 위 · 변조의 위험이 존재한다.

*스니핑 : 공격 대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격기법

 

인터페이스 개발 시 보안 취약점을 방지하기 위한 소프트웨어 개발 필수사항으로 7가지 규칙을 가진 `시큐어 코딩 가이드`가 존재한다.

 

시큐어 코딩 가이드

(1) 력 데이터 검증 및 표현 : 입력 값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 지정

(2) 안 기능 : 보안기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현

(3) 간 및 상태 : 거의 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리

(4) 러 처리 : 에러 미처리, 불충분한 처리 등으로 에러 메세지에 중요 정보가 포함

(5) 드 오류 : 개발자가 범할 수 있는 코딩 오류로 인해 유발

(6) 슐화 : 기능성이 불충분한 캡슐화로 인해 인가되지 않는 사용자에게 데이터 누출

(7) API 오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API의 사용

 

데이터베이스 보안 적용

데이터베이스 암호화 알고리즘

(1) 칭 키 암호화 알고리즘 : 암 · 복호화에 같은 암호 키를 사용하는 알고리즘

(ARIA 128/192/256, SEED)

(2) 대칭 키 암호화 알고리즘 : 공개키는 누구나 알 수 있지만, 비밀키는 키의 소유자만 알 수 있으며 공개와 비밀키를 사용하는 알고리즘

(RSA, ECC, ECDSA)

(3) 시 암호화 알고리즘 : 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘

(SHA-256/384/512, HAS-160)

 

데이터베이스 암호화 기법

(1) API 방식 : 어플리케이션 레벨에서 암호모듈(API)를 적용하는 어플리케이션 수정 방식

(2) Plug-in 방식 : 암 · 복호화 모듈이 DB 서버에 설치된 방식

(3) TDE 방식 : DB 서버의 DBMS 커널이 자체적으로 암 · 복호화 기능을 수행하는 방식

(4) Hybrid 방식 : API 방식과 Plug-in 방식을 결합하는 방식

 

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

(1) IPSec(IP Security) : IP 계층(3계층)에서 무결성, 인증헤더(*AH), 암호화(ESP)를 이용하여 양 종단 간 구간에 보안 서비스를 제공

*AH(Athentication Header) : 메세지 Checksum을 활용한 데이터 인증과 비연결형 무결성을 보장해주는 프로토콜

➟ 동작모드는 전송모드와 터널모드로 구성

(2) SSL/TLS : 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜 

➟ 433 포트를 이용하고, 인증모드는 익명 모드, 서버인증 모드, 클라이언트-서버인증 모드가 있음

(3) S-HTTP(Secure HyperText Transfer Protocol) : 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간에 전송되는 모든 메세지를 각각 암호화하여 전송

➟ HTTP 어플리케이션에 한해 적용 가능, S-HTTP 서버 접속 시 shttp:// 로 접속이 가능

 

03. 인터페이스 구현 검증

인터페이스 구현을 검증하기 위해서는 인터페이스 세부 기능을 기능 단위로 테스트 하는 단위 테스트와 전체 인터페이스 흐름을 확인할 수 있는 시나리오를 통한 통합 테스트가 필요하다.

 

인터페이스 구현 검증 도구

- xUnit : 자바, C++, .NET 등 다양한 언어를 지원하는 단위테스트 프레임워크

- STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크

- FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크

- NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN의 테스트 자동화 프레임워크

- Selenium : 다양한 브라우저 지원 및 개발언어를 지원하는 웹 어플리케이션 테스트 프레임워크

- Watir : 루비 기반 웹 어플리케이션 테스트 프레임워크

 

인터페이스 감시 도구

인터페이스의 동작이 잘 진행되는지 지속적으로 확인하기 위해서는 어플리케이션 모니터링 툴을 사용하여 동작 상태를 감시할 수 있다.

- 스카우터(SCOUTER) : 어플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능 제공

- 제니퍼(Jennifer) : 어플리케이션 전 생애주기 단계 동안 성능을 모니터링하고 분석해주는 APM 소프트웨어

 

인터페이스 오류 처리 방법

(1) 사용자 화면에서 오류를 인지하도록 구현하는 방법 (주로 실시간으로 데이터가 인터페이스 되는 경우)

(2) 인터페이스 오류 시스템 로그를 별도로 작성하여 파일로 보관하는 방법 (인터페이스 오류의 자세한 내역을 알기 위해)

(3) 별도 데이터베이스에 인터페이스 관련 오류 사항을 기록하는 방법 (테이블을 통한 인터페이스 기능을 구현할 경우나, 인터페이스 트랜잭션 기록을 별도로 보관하는 경우)

 

 

댓글