[실기] 소프트웨어 구축- 인터페이스 구현
최초 작성일: 2024-09-01
최종 작성일: 2024-09-01
목표 : 정처기 합격 및 CS 지식 쌓기
Section 01. 인터페이스 개요 및 설계서 확인
1. 인터페이스 시스템
(1) 개념
서로 다른 시스템이나 장치 간에 정보나 신호를 주고받을 수 있게 도와주는 시스템
다양한 시스템과 장치의 호환성을 보장하며, 효율적인 데이터 교환을 가능하게 한다
(2) 구성 : 송신 시스템(송신 모듈, 모니터링) – 중계 시스템(모니터링, 변환 및 매핑) – 수신 시스템(수신 모듈, 모니터링)
(3) 인터페이스 시스템 구성
1) 송신 시스템 : 연계할 데이터를 생성하고 이를 인터페이스 테이블 또는 파일 형태로 송신하는 시스템
단계별 작업
① 연계 데이터 생성 및 추출
② 코드 매핑 데이터 변환
③ 인터페이스 테이블/ 파일 생성
④ 로그 기록
⑤ 데이터 전송
2) 수신 시스템 : 수신할 데이터를 데이터 형식에 맞게 저장하고 활용하는 시스템
단계별 작업
① 데이터 수신
② 코드 매핑 및 데이터 변환
③ 로그 기록
④ 연계 데이터 반영
3) 연계 시스템 ( 중계 서버)
송신 시스템과 수신 시스템 사이에서 데이터를 송수신 하며, 이들의 현황을 모니터링 하는 시스템
연계 데이터의 보안 강화와 다중 플랫폼 지원이 가능
2. 연계 시스템 분류와 데이터 식별
(1) 시스템 분류 체계
기업 내부에서 사용하는 시스템을 분류하여, 대내외 인터페이스 시스템을 식별하는 체계
기업의 업무를 파악하여 상위 및 하위 시스템을 구분하고 각 인터페이스 시스템에 식별 코드를 부여하는 과정
(1) 연계 시스템 식별 정보
구분 | 설명 |
대내외 구분 정보 | 기업 내부 시스템인지 외부 기관 시스템인지 구분 |
기관명 | 대외 기관일 경우 기관명을 기재 |
시스템 ID | 시스템 분류 체계에 따라 부여된 식별 번호 |
한글명 | 시스템 한글명 |
영문명 | 시스템 영문명(영문 코드) |
시스템 설명 | 시스템에 대한 업무, 위치 등에 대한 부가정보 |
시스템 위치 | 시스템이 설치된 위치(노드)정보 |
네트워크 특성 | 네트워크 속도, 대역폭, 유의 사항 등 네트워크 특성 |
전용 회선 정보 | 전용 회선을 사용할 경우, 전용 회선 연결 방법 과 속도 등의 정보 |
IP/URL | 시스템 접속에 필요한 IP 또는 URL 정보 |
Port | 접속에 필요한 Port 정보 (방문) |
Login | 시스템 로그인 id와 암호 |
DB 정보 | 데이터 베이스 연계 시 필요한 DBMS 유형, DBMS 로그인 정보 |
(2) 송수신 데이터 식별
송수신 시스템 사이에서 교환되는 데이터는 규격화된 표준 형식에 따라 전송된다.
송수신 시스템 간에 전송되는 표준 항목, 업무 처리용 데이터, 공통 코드 정보 등을 누락 없이 식별하고 인터페이스 명세서 작성
송수신 전문 구성
구성 | 설명 |
전문 공통부 | - 인터페이스 표준 항목을 포함 - 인터페이스 ID, 서비스 코드, 접속 IP 등 |
전문 개별부 | - 업무 처리에 필요한 데이터를 포함(해당하는 내용이 들어감) |
전문 종료부 | - 전송 데이터의 끝을 표시하는 문자 포함 |
Section 2. 인터페이스 설계서 확인
인터페이스 목록 : 우리 시스템에서 사용하는 인터페이스 목록
인터페이스 정의서 : 각각의 목록에서 뽑아서 상세하게 기재
1. 인터페이스 설계서 구성
(1) 인터페이스 목록 : 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식과 통신 유형 등에 대한 정보
주요 항목
인터페이스 ID
n 인터페이스 명
n 송신/ 수신 시스템
n 대내외 구분
n 연계 방식
n 통신 유형
n 처리 유형
n 주기
n 데이터 형식
n 관련 요구사항 ID
(2) 인터페이스 정의서 : 데이터 송신 시스템과 수신 시스템간의 속성과 제약 조건 등을 상세히 포함한다
주요 항목 : 인터페이스 ID, 최대 처리 횟수, 데이터 크기(평균/최대), 시스템 정보, 데이터 정보
(3) 인터페이스 설계서 명세화
인터페이스 설계 가이드와 인터페이스 설계서 작성 양식 준비
목록 양식에 맞춰 작성
2. 데이터 표준 확인 (서로 표준을 맞춘다)
(1) 인터페이스 데이터 표준 개념 : 인터페이스를 위해 인터페이스가 되어야 할 범위의 데이터 들의 형식과 표준을 정의하는 것/ 데이터의 공통영역을 추출하여 정의하는 경우와 한 쪽의 데이터를 변환하는 경우가 있다.
(2) 표준 확인 : 인터페이스에 필요한 데이터 포맷의 표준을 표현한다/ 데이터 포맷은 JSON, DB, XML 등 다양한 형태로 표현이 가능
(3) 표준확인 절차
Section 3. 인터페이스 기능 구현
송신 – 연계(중계) 서버 – 수신 시스템
전문 공통(포트등)/개별(실질적인 내용)/종료부
json등의 데이터 전달
1. 내 외부 모듈 연계 방식
(1) EAI (Enterprise Application Integration)
1) EAI 개념 : 기업 내의 다른 플랫폼 및 애플리케이션들을 연계, 통합하는 솔루션
A. 목적 : 비즈니스통합 및 연계성 증대, 시스템 확장성 향상
2) EAI 구축 유형
종류 | 설명 | 연결형태 |
Point-to-Point | -미들웨어 없이 직접 애플리케이션끼지 연결 -솔루션 구매 없이 직접 통합 가능 |
|
Hub & Spoke | -중앙 허브를 통한 중앙 집중적 연결방식 - 모든 데이터 전송 보장, 확장 및 유지보수 용이 -단점: 허브에 문제가 생길 경우 전체 시스템에 영향 |
|
Message Bus (ESB 방식) |
-미들웨어를 사용하여 애플리케이션 사이에서 메시지를 전달 -뛰어난 확장성, 대용량 처리 가능 |
|
Hybrid | - 내부적으로는 Hub & Spoke, 외부적으로는 메세징 버스 방식을 사용 - 표준 통합 기술 사용, 데이터 병목 현상 최소화 |
(2) ESB(Enterprise Service Bus)
1) ESB의 개념( 여러 어플리케이션에서 데이터가 있으면 사용할 데이터를 버스 형태로 이용할 수 있는 것)
웹 서비스 중심의 표준화된 데이터 버스를 이용하여 다양한 애플리케이션을 유연하게 통합하는 플랫폼
프로토콜 변환, 서비스 중심의 메시지 라우팅 기능 제공
2) ESB의 구축 유형
관리 및 보안 용이, 높은 품질 지원
EAI와 유사하지만, 서비스 중심 통합을 지향
단점: 표준화 필요, 벤더 종속성, 일부 성능 문제 존재
2. 인터페이스 연계 기술
(1) DB Link : 데이터 베이스에 제공하는 DB Link 객체를 이용/ 수신 시스템에서 DB Link를 생성하고 송신/ 시스템에서 해당 DB Link를 직접 참조하는 방식
(2) DB Connection : 수신 시스템의 WAS에서 송신 시스템 DB로 연결하는 DB Connection Pool을 생성하고 연계 프로그램에서 해당 DB Connection Pool명을 이용
(3) JDBC : 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결/ DBMS 유형, DBMS 서버 IP와 PORT, DB Instance 정보가 필요함
(4) API/OpenAPI : 송신 시스템의 애플리케이션 프로그래밍 인터페이스 프로그램/ API명, 입출력 파라미터 정보가 필요함
FRAME와 라이브러리를 이용하여 API 형태의 프로그램을 개발함
(5) Web Service ( SOAP, WSDL, UDDI) : WSDL(Web Service Description Ln, 설명서,XML형식), UDDI(설명서를 모아둔 도서관), SOAP(실제 데이터 교환이 가능한 프로토콜)을 이용하여 연계
(6) Hyper Link : 웹 어플리케이션에서 사용
(7) Socket : 통신을 위한 소켓을 생성하여 포트를 할당하고 클라이언트의 통신 요청 시 클라이언트와 연결하고 통신하는 네트워크 기술(그 쪽 서버로 완전 연결)
3. 인터페이스 전송 데이터
(1) JSON : JS의 객체 문법을 기반으로 데이터를 표현하는 문자 기반의 표준 포맷/ 웹 애플리케이션에서 주로 사용/ JSON 데이터는 이름과 값의 쌍으로 이루어진다
(2) XML : 웹에서 구조화한 문서를 표현하고 전송하도록 설계한 마크업 언어/ XML은 문서내용에 대한 구조와 의미를 기술하기 위한 언어/ 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장하는 다목적 마크업 업어/ 다양한 표현이 가능하고 확장성이 뛰어나며 간단하다/ HTML처럼 데이터를 보여주는 목적이 아닌 데이터를 저장하고 전달할 목적으로 만들어졌다/ HTML처럼 태크가 정해져있지 않고 사용자가 직접 정의할 수 있다.
(3) YAML : 구성 파일 작성에 자주 사용되는 데이터 직렬화 언어
(4) CSV :몇가지 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일/ 표 형태의 데이터를 저장하는 파일 형식
4. 인터페이스 구현
(1) AJAX
1) AJAX 개념
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능(비동기 이기 때문에 다른 것도 사용가능)
브라우저가 가지고 있는 XMLHttpRequest 객체를 이용
전체 페이지를 새로고침하지 않고, 페이지의 일부만을 변경할 수 있는 기법
2) 비동기 방식
웹 페이지를 리 로드하지 않고 데이터를 불러오는 방식
페이지 리로드시 전체 리소스를 다시 불러와야 하지만, 비동기 방식을 이용할 경우 필요한 부분만을 불러와 사용하므로 불필요한 리소스가 발생하지 않는다.
3) AJAX 장/단정
장점 | -웹페이스의 속도 향상 -서버의 처리가 완료될 때 까지 기다리지 않고 처리가 가능하다 -서버에서 필요한 데이터만 전송하면 되므로 전체적인 코딩의 양이 줄어든다 -기존 웹에서는 불가능했던 다양한 UI를 가능하게 해준다 |
단점 | -히스토리 관리가 되지 않는다(뒤로 가기 버튼을 눌렀을 때 로컬 스토리지가 없으면 초기화 화면으로 넘어감) -다른 도메인과는 통신이 불가능하다 -페이지 이동이 없는 통신으로 인한 보안상의 문제가 있다 |
*GET은 파라미터를 물고 가고 POST방식은 파라미터가 노출되지 않은 상태
(2) SOAP(Simple Object Access Protocol)
1) 개념 : HTTP, HTTPS, SMTP 등을 통한 XML 기반 메시지 교환 프로토콜/ RPC 패턴 사용, 클라이언트와 서버 간의 요청 및 응답을 처리/ SOA 개념을 실현하는 기술
2) SOAP 구성
① SOAP(Simple Object Access Protocol) : HTTP, HTTPS, SMTP 등을 활용하여 XML 기반 메시지를 네트워크 상에서 교환하는 프로토콜
② UDDI(Universal Description Discovery and integration)
비즈니스 업체 목록 등록을 위한 XML 규격, 도서관
③ WSDL(Web Services Description Language)
웹 서비스 기술 언어, 서비스의 기술적 세부사항, 기술(설명서)
3)SOAP 보안 프로토콜
SAML: 인증/권한 관리
XKMS: 키 관리
XACML: 접근 제어
4)장담점
장점 | -프록시와 방화벽에 구애받지 않는 통신(80 포트는 막아두지 않았으니까) -HTTP이외의 다른 전송 프로토콜 (SMTP)을 사용할 수 있다 -플랫폼 독립적(SOAP으로 구현해둔 것은 다른 시스템에서 언제든지 사용 가능.) |
단점 | -XML 포맷의 사용으로 인해 상대적으로 느림 |
(3) REST
1) REST의 개념 : HTTP URI를 통한 자원 명시(해당하는 URL에 자원이 있음 – NAVER.COM/WEBTOON에 자원이 명시되어 있음)와 HTTP Method(PUT, DELETE 등)를 통한 CRUD Operation 적용/ 자원 기반의 구조(ROA) 구현
2) REST(데이터를 이용, 해당 데이터가 어디 있는지 알아야함) 구성요소
구성요소 | 설명 |
자원 | URI를 통해 식별되는 서버의 데이터 |
행위(METHOD) | GET, POST, PUT 등의 http method 사용 |
표현(Representation) | Json, xml 등 다양한 형태로 표현 가능 |
3) CRUD Operation, HTTP Method
- CREATE : POST(자원 생성)
- Read : GET ( 자원의 정보 조회)
- Update : PUT(자원의 정보 업데이트)
- Delete : DELETE (자원 삭제)
4) REST 특징
특징 | 설명 |
유니폼 인터페이스 | -http 표준만 따르면 어떤 언어나 플랫폼에서 사용해도 사용이 가능한 인터페이스 스타일 -특정 언어에 상관없이 사용이 가능하다 |
Stateless(상태정보 유지 안함) | -REST는 상태 정보를 유지하지 않는다(로그인 시 로그인 정보를 가지고 있지 않음.) -서버는 각각의 요청을 완전히 다른 것으로 인식하고 처리 한다 |
캐시 가능 | -HTTP가 가진 캐싱 기능이 적용가능 |
자체 표현 구조 | -REST API 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어 있다 |
캐쉬를 날려라 -> 저장된 것을 날려라
캐쉬를 날리는 것보다는 중요한 이미지라면 구조를 달리해서 다시 가져올 수 있게 해야함(사용자가 캐쉬를 날리지 말지 어떻게 알겠음. 구조를 바꾸거나 파라미터 값을 변경 필요. 파라미터 값을 달리하면 캐쉬를 알아서 날려줌)
5) 장/단점
장점 | -별도의 인프라 필요 없음 -클라이언트와 서버의 분리 -플랫폼에 독립적 -사용 용이 |
단점 | -표준 부재 -HTTP Method 한계 |
6) RESTFUL : REST의 원리를 따르는 시스템
5. 인터페이스 보안(소스 코드-> 시큐어 코딩 가이드, 네트워크-> IP Security, SSL, S-HTTP,TLS, 데이터 베이스-> API, TDE 등)
(1) 인터페이스 보안 취약점 분석
인터페이스를 통한 데이터 변조, 탈취
패킷(데이터 왔다 갔다 하는 ) 공격 기법
-스니핑: 네트워크 상에서 전송되는 패킷을 가로채는 행위로 주로 비밀 정보를 탈취하는 데 사용
-스푸핑: 일반적으로 IP 주소나 다른 식별자를 위장하여 다른 사용자나 시스템으로 속이는 행위
(2) 인터페이스 보안 기능 적용
1) 네트워크 영역 :인터페이스 송/수신 간 스니핑 등을 이용한 데이터 탈취 및 변조 위협 방지 위해 네트워크 트래픽에 대한 암호화 설정
IPSec(네트워크 단), SSL, S+HTTP(인증서등을 통해 데이터를 암호화) 등 다양한 방식으로 적용
2) 애플리케이션 영역: 시큐어 코딩 가이드를 참조하여 애플리케이션 코드 상 보안 취약점을 보완하는 방향으로 보안 기능 적용
3) DB 영역 : DB,스키마, 엔티티의 접근 권한과 프로시저, 트리거 등 DB 동작 객체의 보안 취약점에 보안 기능을 적용/ 민감 데이터를 암호화, 익명화 등을 통해 데이터 자체 보안 방안도 고려
Section 4. 인터페이스 검증
(1) 인터페이스 구현 검증 도구
도구 | 설명 |
Xunit | 다양한 언어를 지원하는 단위 테스트 프레임 워크 |
STAF | 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크 |
FitNesse | 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임 워크 |
NTAF | 피트니스 + STAP, 폐지 됨 |
Selenium | 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임 워크 |
Watir | Ruby를 사용하는 애플리케이션 테스트 프레임워크 |
(2) 인터페이스 구현 감시 도구(데이터가 왔다갔다 하는 것을 감시)
APM(Application Performance Management)을 사용하여 동작 상태 감시/데이터 베이스, 웹 애플리케이션 의 다양한 정보를 조회하고 분석하여 시각화 함/종류: 스카우터, 제니퍼 등