모던지 / 정보처리기사 / 소프트웨어 개발 5강. 인터페이스 구현과 성능 개선

소프트웨어 개발 5강. 인터페이스 구현과 성능 개선

시스템 두 개를 잇는 순간, 장애의 가짓수는 두 배가 아니라 제곱으로 늘어납니다. 인터페이스 설계가 방어적인 이유입니다.

풀고 시작

문제 1. 서로 다른 시스템이나 애플리케이션을 연결해 데이터를 주고받게 해 주는 중간 계층 소프트웨어를 통칭하는 것은?
클라이언트와 서버 사이에 서서 통신과 연계를 담당하는 것이 미들웨어입니다. 펌웨어는 하드웨어에 내장된 제어 프로그램, 셰어웨어는 배포 방식의 이름, 그룹웨어는 협업 지원 응용 소프트웨어라 층위가 각각 다릅니다.

미들웨어는 사이에 서는 소프트웨어입니다

시스템을 잇는 일은 생각보다 지저분합니다. 서로 다른 운영체제와 데이터베이스, 다른 통신 방식, 다른 데이터 형식을 맞춰야 하니까요. 그 사이에 서서 차이를 흡수해 주는 것이 미들웨어입니다.

시험에 나오는 종류는 다섯쯤입니다. 데이터베이스 접속을 표준화하는 DB 미들웨어로 ODBC와 JDBC가 있고, 원격의 함수를 내 함수처럼 부르게 해 주는 RPC(원격 프로시저 호출), 메시지를 큐에 넣어 비동기로 주고받는 MOM(메시지 지향 미들웨어), 분산 객체를 연결하는 ORB, 그리고 트랜잭션 처리를 관리하는 TP 모니터입니다.

MOM의 핵심은 비동기입니다. 보내는 쪽이 받는 쪽의 응답을 기다리지 않고 큐에 넣어 두고 자기 일을 계속합니다. 받는 쪽이 잠시 죽어 있어도 메시지가 큐에 남아 있죠. 반대로 RPC는 부르고 답을 기다리는 동기 방식입니다. 이 대비가 그대로 문제가 됩니다.

WAS(Web Application Server)도 미들웨어의 일종으로 분류됩니다. 정적 파일만 주는 웹 서버와 달리, 동적 처리와 트랜잭션 관리를 담당합니다.

인터페이스는 명세부터 씁니다

인터페이스 구현은 코드부터 짜지 않습니다. 인터페이스 설계서를 먼저 만듭니다. 송신 시스템과 수신 시스템, 주고받는 데이터 항목과 형식, 연계 주기, 오류 처리 방식이 여기 적힙니다.

데이터를 실어 나르는 형식으로는 셋이 나옵니다. JSON은 이름과 값의 쌍으로 표현하는 경량 형식이고, XML은 태그로 구조를 표현하며 스키마로 검증이 가능하고, YAML은 들여쓰기로 구조를 나타내 사람이 읽기 좋습니다.

통신 방식으로는 RESTSOAP가 대비됩니다. REST는 자원을 URI로 지목하고 HTTP 메서드로 조작하는 방식이라 가볍고 캐시가 쉽습니다. SOAP는 XML 기반의 규격화된 메시지를 쓰며, WSDL로 서비스를 기술하고 UDDI로 등록합니다. 규격이 엄격한 쪽이 SOAP, 가벼운 쪽이 REST로 잡아 두시면 됩니다.

연계 방식은 직접 연계와 간접 연계로 갈립니다. 직접 연계는 DB 링크나 API 호출처럼 시스템끼리 바로 붙는 것이라 속도가 빠르지만 한쪽이 바뀌면 다른 쪽도 영향을 받습니다. 간접 연계는 연계 솔루션(EAI, ESB)을 사이에 두는 방식이라 결합도가 낮지만 구성이 복잡하고 성능 손실이 있습니다.

인터페이스 보안과 감시

시스템 사이를 흐르는 데이터는 가장 노출되기 쉬운 구간입니다. 그래서 보안을 세 계층으로 나눠 겁니다. 네트워크 구간은 IPSec이나 SSL/TLS 같은 암호 통신으로 보호하고, 애플리케이션 구간은 입력값 검증과 권한 확인으로 지키며, 데이터베이스 구간은 민감 항목의 암호화와 접근 통제로 막습니다.

운영 중에는 인터페이스가 잘 도는지 지켜봐야 합니다. APM(Application Performance Management) 도구로 응답 시간과 오류율, 처리량을 감시하고, 정해진 임계치를 넘으면 경보를 냅니다. 연계 이력을 남기는 것도 필수입니다. 문제가 생겼을 때 어느 쪽이 무엇을 보냈는지 대조할 수 있어야 하니까요.

인터페이스가 정상 동작하는지 확인하는 방법으로는, 실제 호출을 흉내 내는 테스트 자동화 도구와, 송수신 데이터를 비교하는 검증 절차가 쓰입니다.

성능은 알고리즘 앞에서 결정됩니다

느린 시스템을 만나면 서버부터 늘리고 싶어집니다. 하지만 순서가 있습니다. 시간 복잡도가 O(n²)인 코드를 O(n log n)으로 바꾸면 데이터가 열 배 늘 때 차이가 백 배 가까이 벌어집니다. 하드웨어 증설보다 알고리즘 개선이 먼저인 이유입니다.

시간 복잡도 표기법인 빅오는 자주 나옵니다. 상수 시간 O(1), 로그 시간 O(log n), 선형 시간 O(n), O(n log n), 제곱 시간 O(n²), 지수 시간 O(2ⁿ) 순으로 나빠집니다. 이진 탐색이 O(log n), 순차 탐색이 O(n), 좋은 정렬이 O(n log n)이라는 짝만 확실히 해 두셔도 대부분 풀립니다.

코드 수준에서는 반복문 안의 불필요한 연산을 밖으로 빼고, 같은 계산을 반복하지 않도록 결과를 저장해 두며(캐싱), 데이터베이스 접근 횟수를 줄이는 것이 기본입니다. 여기까지가 소프트웨어 개발 과목입니다. 다음 과목에서는 데이터가 저장되는 곳, 데이터베이스로 내려갑니다.

인출 문제

문제 1. 송신 측이 수신 측의 응답을 기다리지 않고 큐에 메시지를 넣어 두는 비동기 방식의 미들웨어는?
메시지를 큐에 적재해 비동기로 처리하는 것이 메시지 지향 미들웨어인 MOM입니다. RPC는 원격 함수를 호출하고 응답을 기다리는 동기 방식이고, ORB는 분산 객체 요청을 중개하며, TP 모니터는 트랜잭션 처리를 관리합니다.
문제 2. REST와 SOAP에 대한 설명으로 옳은 것은?
SOAP는 XML 메시지와 WSDL 기술 문서를 쓰는 무거운 규격입니다. 자원을 URI로 지목하는 것은 REST의 특징이고, REST는 JSON을 비롯한 여러 형식을 쓸 수 있으며 규격은 SOAP보다 느슨합니다.
문제 3. 다음 시간 복잡도를 성능이 좋은 순서대로 나열한 것은?
입력이 커질 때 증가 속도가 느릴수록 좋습니다. 상수, 로그, 선형, 제곱 순서이며 로그가 선형보다 앞선다는 점에서 순서를 뒤집은 보기가 자주 나옵니다.
문제 4. 인터페이스 보안을 위한 조치로 적절하지 않은 것은?
로그를 남기지 않으면 사고가 났을 때 원인과 범위를 밝힐 수 없습니다. 이력 관리는 보안을 해치는 것이 아니라 사고 대응의 전제이며, 나머지 셋은 네트워크와 애플리케이션과 데이터베이스 구간의 표준적인 보호 조치입니다.

생각해볼 질문 (정답 없음)

시스템을 느슨하게 잇는 대가로 성능과 복잡도를 지불합니다. 어느 규모의 조직에서 그 대가가 이득으로 바뀔까요.


이전: 4강 애플리케이션 테스트 · 다음: 3과목 1강 데이터베이스 개념과 논리 설계

모던지 · 궁금하면 모던지 GitHub · 2026-09-10