AP 과목 A 37 — 기술 분야 혼합 진단: 성능·DB·네트워크·보안·가용성·재시도
응용정보기술자시험 과목 A 기술 분야 혼합 진단. 캐시와 페이지 폴트의 단위 환산, 이진 탐색과 B-tree I/O, CIDR와 TLS·인증·인가, 공통 전원을 포함한 가용성, 재시도와 멱등성을 오리지널 5문항으로 점검합니다.
AP 과목 A 제37편 · 2026년도·실라버스 Ver.7.2 기준의 독립 학습 자료입니다. IPA와 제휴하지 않으며 합격을 보장하지 않습니다. 시리즈 허브 보기
2026년 IPA 응용정보기술자시험(AP) 과목 A, Syllabus Ver.7.2 기준이며 2026-10-22 확인했다. Motitory의 독립 학습 자료로 IPA와 제휴하거나 IPA의 승인·검토를 받지 않았다. 아래 5문항은 모두 Motitory가 만든 비공식 오리지널 문제이며 IPA 기출을 사용하거나 번안하지 않았다. 문제 속 수치는 연습용으로 정한 가상의 입력값이며 공식 기준값이 아니다.
학습 인덱스
- 이 진단의 사용법과 한계
- 범위 지도
- 풀이 예제 단위와 의존 경계
- Q1 캐시와 페이지 폴트
- Q2 탐색 비교와 인덱스 IO
- Q3 CIDR와 TLS 인증 인가
- Q4 종단 가용성과 공통 전원
- Q5 재시도 트랜잭션 멱등성
- 문항 횡단 오류 패턴
- 셀프 체크와 복습 계획
- 공식 출처와 개정 이력
- AP33–38 안에서의 위치
1. 이 진단의 사용법과 한계
이 글은 새 개념을 가르치지 않는다. 이미 공개한 회차의 지식을 한 문제 안에서 두세 분야씩 섞어, 분야 경계를 넘을 때 생기는 실수(단위 환산, 비용 단위 혼동, 신뢰 경계 혼동, 공통 의존, 재시도와 원자성)를 드러내는 것이 목적이다. AP1–36을 요약하지도 않는다. 개념이 흔들리면 각 선택지 해설의 링크로 돌아간다.
5문항은 합격 가능성을 예측하지 않는다. 5개 표본으로는 합격 여부, 시험 준비 완료 여부, Ver.7.2 전 범위의 숙달 여부를 판정할 수 없다. 5문항을 모두 맞혀도 “준비 완료”가 아니고, 틀려도 “불합격 수준”이 아니다. 결과는 어느 회차를 다시 볼지 고르는 데에만 쓴다.
권장 사용법:
- 각 문항을 풀이 과정을 보지 않고 종이에 계산까지 끝낸다(목표 시간은 정하지 않는다).
- 선택지를 고른 이유를 한 줄로 적는다. 맞혔어도 이유가 틀렸으면 틀린 것으로 기록한다.
- 해설에서 고르지 않은 선택지까지 왜 틀렸는지 확인한다.
- 9절의 오류 패턴 표에 자신의 실수를 표시하고, 10절의 계획대로 해당 회차를 복습한다.
2. 범위 지도
아래 대응은 각 문항이 건드리는 실라버스 항목이며, 5문항이 이 항목들을 다 다룬다는 뜻이 아니다.
| 문항 | IPA Syllabus Ver.7.2 계층 | 연결 회차 |
|---|---|---|
| Q1 | 大分類2:コンピュータシステム/中分類3:コンピュータ構成要素/2. メモリ/(5)メモリの容量と性能, 大分類2:コンピュータシステム/中分類5:ソフトウェア/1. オペレーティングシステム/(7)記憶管理 | AP7, AP9 |
| Q2 | 大分類1:基礎理論/中分類2:アルゴリズムとプログラミング/2. アルゴリズム/(2)代表的なアルゴリズム/①整列・併合・探索のアルゴリズム, 大分類3:技術要素/中分類9:データベース/4. トランザクション処理/(4)データベースの性能向上 | AP5, AP6, AP13, AP14, AP32 |
| Q3 | 大分類3:技術要素/中分類10:ネットワーク/3. 通信プロトコル/(1)プロトコルとインタフェース/③ ネットワーク層のプロトコル, 大分類3:技術要素/中分類11:セキュリティ/1. 情報セキュリティ/(8)情報セキュリティに関する技術/③ 利用者認証・⑤ 公開鍵基盤 | AP16, AP17, AP18, AP19, AP20, AP21 |
| Q4 | 大分類2:コンピュータシステム/中分類4:システム構成要素/2. システムの評価指標/(2)システムの信頼性特性と評価/②信頼性指標と信頼性計算, 大分類6:サービスマネジメント/中分類15:サービスマネジメント/5. ファシリティマネジメント/(1)ファシリティマネジメント | AP8, AP10, AP25, AP35, AP36 |
| Q5 | 大分類3:技術要素/中分類9:データベース/4. トランザクション処理/(1)同時実行制御(排他制御)・(3)トランザクション管理, 大分類4:開発技術/中分類12:システム開発技術 | AP10, AP15, AP22, AP23, AP35 |
자주 나오는 시험 용어: 実効アクセス時間(실효 접근 시간), ページフォールト(페이지 폴트), 二分探索(이진 탐색), B木インデックス(B-tree 인덱스), サブネットマスク(서브넷 마스크), サーバ証明書(서버 인증서), 認証と認可(인증과 인가), 稼働率(가동률), 単一障害点(단일 장애점), 冪等性(멱등성), 一意性制約(유일성 제약), トランザクション(트랜잭션).
3. 풀이 예제 단위와 의존 경계
문제에 들어가기 전에, 섞인 문제에서 쓰는 두 가지 습관을 문항과 다른 수치로 한 번 보여 준다.
습관 1 — 단위를 먼저 하나로 맞춘다. 가상의 API 요청 1건의 평균 처리 시간을 구한다고 하자. 가정(이 예제용): 애플리케이션 CPU 처리 0.4 ms, DB 왕복 3회 × 250 μs, 그리고 요청의 5%만 외부 서비스를 0.02 s 동안 호출한다. 각 항을 서로 독립인 평균으로 더한다고 단순화한다.
- 공통 단위를 μs로 정한다. 1 ms = 1,000 μs, 1 s = 1,000,000 μs.
- CPU: 0.4 ms = 400 μs
- DB: 3 × 250 μs = 750 μs
- 외부 호출: 0.02 s = 20,000 μs, 기댓값은 0.05 × 20,000 = 1,000 μs
- 합계: 400 + 750 + 1,000 = 2,150 μs = 2.15 ms
단위를 맞추지 않고 0.4 + 750 + 0.02처럼 숫자만 더하면 의미 없는 값이 나온다. 또 “5%만 일어나는 일이니 무시해도 된다”는 직감은 크기를 곱해 보기 전에는 믿을 수 없다. 이 예제에서는 5%짜리 항이 합계의 절반 가까이를 차지한다.
습관 2 — 의존 경계를 그린다. 가상 구성: 앱 서버 2대가 로드 밸런서 1대 뒤에 있고, 둘 다 같은 DB 1대를 쓴다. 요청이 성공하려면 무엇이 모두 살아 있어야 하는지 나열한다.
[로드 밸런서] → ( [앱 서버 1] 또는 [앱 서버 2] ) → [DB]
반드시 필요 둘 중 하나면 충분 반드시 필요
- 직렬(반드시 필요): 로드 밸런서, DB
- 병렬(하나면 충분): 앱 서버 2대
- 숨은 공통 의존을 찾는다: 두 앱 서버가 같은 랙 전원, 같은 스위치, 같은 설정 배포를 쓰면 “병렬”은 그 부분에서 다시 하나로 합쳐진다.
이 그림을 그리면 “앱 서버를 늘렸으니 전체가 그만큼 튼튼해졌다”는 결론이 틀릴 수 있음을 숫자 없이도 알 수 있다. 여기서는 가동률을 계산하지 않는다. 계산은 Q4에서 직접 해 본다.
4. Q1 캐시와 페이지 폴트
시나리오(가상). 어떤 프로그램이 메모리 참조를 1,000회 한다. 다음 단순화된 가산 모델을 가정한다.
- 참조의 90%는 캐시 적중으로 2 ns가 걸린다.
- 나머지 10%는 캐시 미스로 80 ns가 걸린다(주기억 접근 포함).
- 이와 별개로, 전체 참조의 0.1%에는 페이지 폴트 처리 8 ms가 추가로 더해진다.
이 모델에서 참조 1회당 평균 접근 시간과 그 해석으로 옳은 것은?
A. 9.8 ns. 페이지 폴트는 0.1%로 드물기 때문에 평균에 거의 영향을 주지 않는다.
B. 8,009.8 ns. 이 가정에서는 드문 페이지 폴트 항이 평균의 대부분을 차지한다. 다만 이 결론은 주어진 가산 모델 안에서만 성립한다.
C. 17.8 ns. 페이지 폴트가 더해져도 평균은 캐시 미스 시간보다 작다.
D. 8,000,009.8 ns. 페이지 폴트 8 ms가 평균에 그대로 더해지기 때문이다.
풀이 과정
- 단위를 ns로 맞춘다. 8 ms = 8 × 1,000,000 ns = 8,000,000 ns.
- 캐시 적중 항: 0.9 × 2 = 1.8 ns
- 캐시 미스 항: 0.1 × 80 = 8 ns
- 페이지 폴트 항: 0.001 × 8,000,000 = 8,000 ns
- 합계: 1.8 + 8 + 8,000 = 8,009.8 ns
- 검산(횟수로): 1,000회 중 적중 900회 × 2 = 1,800 ns, 미스 100회 × 80 = 8,000 ns, 페이지 폴트 1회 × 8,000,000 = 8,000,000 ns. 합계 8,009,800 ns ÷ 1,000 = 8,009.8 ns.
- 해석: 페이지 폴트 항 8,000 ns는 평균의 약 99.88%다. 이 비율은 문제의 가정(독립적으로 더하는 단순 모델, 고정된 발생률)에서 나온 것이며, 실제 시스템의 페이지 폴트 비용이나 빈도를 일반화한 것이 아니다.
정답: B
- A: 오답. 페이지 폴트 항을 빼고 1.8 + 8 = 9.8 ns만 계산했다. 발생률이 작아도 크기가 백만 배 단위로 크면 평균을 지배할 수 있다. 복습: AP7(실효 접근 시간), AP9(가상 기억과 페이지 폴트).
- B: 정답. 단위를 맞춘 뒤 세 항을 가중 평균으로 더했고, 해석을 주어진 가정 안으로 한정했다.
- C: 오답. 8 ms를 8,000 ns(= 8 μs)로 잘못 환산해 0.001 × 8,000 = 8 ns를 더했다. ms와 μs를 혼동한 단위 오류다. 복습: AP7.
- D: 오답. 페이지 폴트 8,000,000 ns에 발생률 0.001을 곱하지 않았다. 모든 참조에서 페이지 폴트가 난다고 본 셈이다. 복습: AP9, AP7.
5. Q2 탐색 비교와 인덱스 IO
시나리오(가상). 두 가지 조회를 비교한다.
- (가) 메모리 위의 정렬된 배열에 키 1,048,576개(= 2^20)가 있다. 이진 탐색(二分探索)의 최악 비교 횟수를 이 문제에서는 “후보 2^20개를 1개로 좁히는 데 필요한 반분 횟수” log₂(2^20) = 20회로 센다(마지막 일치 확인을 1회 더 세는 관례도 있지만 여기서는 쓰지 않는다).
- (나) 디스크 위 테이블의 B-tree 인덱스가 루트와 리프를 포함해 정확히 4단이다(4개의 페이지 계층). 관련 페이지는 하나도 캐시에 없고, 정확한 키 1개를 찾을 때 각 단에서 페이지를 1개씩 읽는다고 가정한다.
옳은 설명은?
A. (가)는 최악 1,048,576회 비교, (나)는 4회 페이지 읽기다.
B. (가)는 최악 20회 비교이고, B-tree도 이진 탐색과 같은 원리이므로 (나)도 20회 페이지 읽기가 필요하다.
C. (가)는 최악 20회 비교, (나)는 4회 페이지 읽기다. 비교 횟수와 페이지 I/O 횟수는 비용 단위가 다르므로 숫자 20과 4만으로 어느 쪽이 빠른지 결정할 수 없다.
D. (나)는 4회로 (가)의 20회보다 작으므로, 어떤 환경에서도 B-tree 인덱스 조회가 메모리 위 이진 탐색보다 빠르다.
풀이 과정
- (가): 비교 1회마다 후보가 절반이 된다. 2^20 → 2^19 → … → 2^0 = 1까지 20번 반분한다. 문제의 관례에 따라 최악 20회 비교.
- (나): 4단이고, 캐시 없음·단마다 1페이지라는 가정이 주어졌으므로 루트 1 + 중간 2 + 리프 1 = 4회 페이지 읽기. 각 페이지 안에서 키를 찾는 비교는 따로 일어나지만 이 문제의 (나) 비용 단위는 페이지 읽기다.
- 단위 확인: (가)의 단위는 “메모리 위 키 비교”, (나)의 단위는 “페이지 I/O”다. 1회당 비용이 크게 다를 수 있으므로 20과 4를 직접 비교하지 않는다.
- 가정 확인: 상위 페이지가 캐시에 있으면 실제 디스크 읽기는 4회보다 적을 수 있고, 테이블 행을 따로 읽어야 하면 더 많을 수 있다. “4단 = 항상 I/O 4회”가 아니라 이 문제의 가정에서 4회다.
정답: C
- A: 오답. 1,048,576회는 처음부터 하나씩 보는 선형 탐색의 최악이다. 정렬된 배열의 이진 탐색은 log₂ n 규모다. 복습: AP5(탐색), AP6(계산량).
- B: 오답. B-tree는 한 페이지에 많은 키를 담아 단 수를 줄이는 구조다. 단 수(4)가 페이지 읽기 수이고, 이진 탐색의 비교 횟수를 그대로 페이지 수로 옮기면 비용 단위를 혼동한 것이다. 복습: AP32(인덱스와 페이지 접근 수), AP13(키).
- C: 정답. 두 값을 각자의 가정과 단위로 구하고, 단위가 다르다는 것까지 말했다.
- D: 오답. 서로 다른 단위의 숫자를 크기만으로 비교해 보편적 결론을 냈다. 캐시 상태, 매체, 행 접근 방식에 따라 결과는 달라진다. 복습: AP32, AP14(SQL 조회), AP6.
6. Q3 CIDR와 TLS 인증 인가
시나리오(가상). 사내 웹 애플리케이션 서버의 주소가 192.0.2.130/26이다(192.0.2.0/24는 문서·예시용으로 예약된 주소 블록이며 실제 인터넷에서 경로가 잡히는 주소가 아니다). 사용자는 브라우저에서 HTTPS로 이 서버의 업무 화면에 접속한다. 일반적인 서브넷 연습 관례(/31·/32 같은 특수 경우가 아님)를 따른다.
네트워크 판단과 보안 설계를 함께 묶은 설명으로 옳은 것은?
A. /26의 블록 크기는 64이고 호스트 주소 .130이 네트워크의 시작이므로 네트워크 주소는 .130, 브로드캐스트는 .193이다. TLS에서는 서버 인증서와 호스트명을 검증하고, 사용자 인증과 인가는 따로 둔다.
B. 네트워크 주소 .128, 브로드캐스트 .191, 사용 가능 범위 .129–.190이며 .130은 그 범위 안이다. TLS로 통신이 암호화되므로 별도의 사용자 인증은 필요 없다.
C. 네트워크 주소 .128, 브로드캐스트 .191, 사용 가능 범위 .129–.190이며 .130은 그 범위 안이다. 서버 인증서를 검증하고 MFA로 사용자를 인증하면, MFA를 통과한 사용자에게는 모든 기능이 자동으로 허용된다.
D. 네트워크 주소 .128, 브로드캐스트 .191, 사용 가능 범위 .129–.190이며 .130은 그 범위 안이다. TLS에서는 서버 인증서와 호스트명을 검증해 서버를 확인하고, 사용자는 별도의 인증(필요하면 MFA)으로 확인한 뒤, 기능별 권한은 인가로 따로 판단한다.
풀이 과정
- /26 → 호스트부 32 − 26 = 6비트 → 블록 크기 2^6 = 64.
- 마지막 옥텟의 블록 경계: 0, 64, 128, 192. 130은 128 ≤ 130 < 192이므로 블록 128–191.
- 네트워크 주소 = .128, 브로드캐스트 = .191, 사용 가능 호스트 = .129–.190(64 − 2 = 62개). .130은 사용 가능 범위 안이다.
- 신뢰 경계를 나눈다.
- TLS 서버 인증서: 검증(신뢰할 수 있는 인증 기관 체인, 유효 기간, 호스트명 일치)에 성공하면 접속한 상대가 그 서버임을 확인하고 통신을 암호화한다. 사용자가 누구인지는 확인하지 않는다.
- 사용자 인증(MFA 포함): 이 사용자가 누구인지 확인한다.
- 인가: 인증된 사용자가 무엇을 해도 되는지 판단한다. MFA는 인증 수단이지 권한 부여가 아니다.
정답: D
- A: 오답. 호스트 주소를 네트워크 주소로 착각했다. 블록 경계는 64의 배수(.128)에서 시작한다. 보안 부분은 맞지만 네트워크 판단이 틀렸다. 복습: AP17(서브넷·CIDR), AP16(네트워크 계층).
- B: 오답. TLS는 서버 확인과 통신 보호를 제공할 뿐 애플리케이션 사용자를 인증하지 않는다. 암호화된 통로로도 누구나 로그인 화면에 닿을 수 있다. 복습: AP18(TLS), AP19(PKI·서버 인증서), AP20(사용자 인증).
- C: 오답. 인증(누구인가)과 인가(무엇을 해도 되는가)를 혼동했다. MFA를 통과해도 최소 권한에 따라 기능별 권한을 따로 부여해야 한다. 복습: AP20(인증·인가), AP21(계층형 방어).
- D: 정답. 주소 계산이 맞고, 서버 확인·사용자 인증·인가라는 세 경계를 섞지 않았다. 무선 구간의 인증(802.1X 등)도 같은 원리로 경계를 나눠 보고 싶다면 AP34를 참고한다(위 링크를 대신하지는 않는다).
7. Q4 종단 가용성과 공통 전원
시나리오(가상). 서비스가 동작하려면 컴퓨트 서브시스템과 그것에 전기를 공급하는 전원 경로가 둘 다 필요하다. 이 연습에서는 다음을 가정한다.
- 컴퓨트 노드 1대의 가동률: 0.999
- 공유 전원 경로의 가동률: 0.998
- 각 요소의 고장은 서로 독립이다(연습용 가정).
컴퓨트 노드를 같은 사양의 2대로 병렬화(1대만 살아 있으면 됨)하되, 두 노드가 같은 전원 경로를 공유한다. 옳은 설명은?
A. 컴퓨트를 2대로 병렬화하면 1 − (1 − 0.999)^2 = 0.999999이므로, 종단 가동률은 약 99.9999%가 된다.
B. 1대 구성의 종단 가동률은 0.999 × 0.998 = 0.997002(99.7002%), 2대 병렬 구성은 0.999999 × 0.998 = 0.997999002(약 99.7999002%)다. 공유 전원이 직렬로 남아 있으므로 컴퓨트를 이중화해도 종단 가동률은 0.998을 넘을 수 없다.
C. 2대가 모두 필요하므로 0.999 × 0.999 × 0.998 = 0.996004998이 되어, 병렬화하면 오히려 가동률이 떨어진다.
D. 노드 2대를 두면 전원 경로도 함께 이중화된 것으로 볼 수 있으므로 (1 − 0.001^2) × (1 − 0.002^2) = 0.999995000004, 약 99.9995%가 된다.
풀이 과정
- 의존 경계를 그린다:
( [노드1] 또는 [노드2] ) → [공유 전원]. 컴퓨트 부분은 병렬, 전원은 직렬. - 1대 구성: 직렬이므로 곱한다. 0.999 × 0.998 = 0.997002 = 99.7002%.
- 컴퓨트 병렬부: 둘 다 멈출 확률 (1 − 0.999)^2 = 0.001^2 = 0.000001 → 병렬부 가동률 1 − 0.000001 = 0.999999.
- 2대 구성의 종단: 0.999999 × 0.998 = 0.998 − 0.998 × 0.000001 = 0.998 − 0.000000998 = 0.997999002 ≈ 99.7999002%.
- 비교: 비가동률은 0.002998 → 0.002000998로 줄지만, 그중 0.002는 공유 전원 몫으로 그대로 남는다. 종단 가동률의 상한은 공유 전원의 0.998이다.
- 가정 확인: 독립 가정은 연습용이다. 실제로는 같은 전원·같은 랙·같은 배포를 공유하는 노드는 함께 멈출 수 있어(공통 원인 고장) 병렬부의 0.999999도 과대평가일 수 있다.
정답: B
- A: 오답. 병렬부의 가동률만 계산하고 직렬로 남은 공유 전원 0.998을 곱하지 않았다. 복습: AP8(직렬·병렬 가동률), AP36(설비 이중화와 공통 원인), AP25(SLA로 측정하는 대상).
- B: 정답. 직렬·병렬을 바르게 나누어 계산했고, 공유 의존이 상한을 정한다는 점과 독립 가정의 한계를 말했다.
- C: 오답. “하나만 살아 있으면 되는” 병렬을 “둘 다 필요한” 직렬로 계산했다. 복습: AP8.
- D: 오답. 노드 수를 늘린다고 그 노드들이 공유하는 전원 경로가 이중화되지는 않는다. 전원 경로는 하나뿐이므로 병렬 공식을 쓸 수 없다. 복습: AP36(전원 경로와 단일 장애점), AP10(분산 구성), AP35(복제와 장애 영역).
8. Q5 재시도 트랜잭션 멱등성
시나리오(가상). 주문 생성 API가 있다. 클라이언트는 응답을 일정 시간 기다리다 타임아웃되면 같은 요청을 다시 보낸다. 서버는 주문을 DB에 커밋한 뒤 응답을 보냈지만, 그 응답이 네트워크에서 사라져 클라이언트가 타임아웃되는 경우가 있다. 주문이 만들어지면 배송 시스템에 “주문 생성” 이벤트도 전달해야 한다.
중복 주문을 막는 설계로 가장 적절한 것은?
A. 클라이언트가 지수 백오프로 재시도 간격을 늘리면, 서버 쪽 변경 없이도 중복 주문이 생기지 않는다.
B. 서버가 주문을 넣기 전에 SELECT로 같은 요청이 있는지 확인하고, 없으면 INSERT한다. 유일성 제약은 성능을 위해 두지 않는다.
C. 클라이언트가 요청마다 고정된 멱등 키를 보내고, DB는 그 키에 유일성 제약을 둔다. 주문 행과 아웃박스 이벤트 행을 한 트랜잭션으로 함께 커밋하고, 키 중복이면 기존 주문 결과를 돌려준다. 이벤트를 받는 쪽도 같은 이벤트의 중복 전달을 멱등하게 처리한다.
D. 주문을 커밋한 다음, 별도 단계에서 메시지 브로커에 이벤트를 발행한다. 브로커가 있으면 전체 흐름이 정확히 한 번(exactly-once) 처리됨이 보장된다.
풀이 과정(선택지 C의 동작 추적)
- 첫 요청(멱등 키 K1): 트랜잭션 시작 → 주문 행 INSERT(K1) → 아웃박스 행 INSERT(이벤트 ID E1) → 커밋 성공.
- 응답 유실: 클라이언트는 결과를 모른 채 타임아웃된다. DB에는 주문 1건과 이벤트 1건이 있다.
- 재시도(같은 K1): 주문 INSERT가 K1의 유일성 제약 위반으로 실패하거나 충돌로 처리된다 → 두 번째 주문은 생기지 않는다.
- 서버는 K1로 기존 주문을 조회해 첫 번째와 같은 결과를 돌려준다. (같은 키에 다른 내용이 오면 거부하는 규칙도 함께 둔다.)
- 아웃박스 릴레이가 E1을 발행한다. 발행 확인이 유실되면 E1을 다시 보낼 수 있다(적어도 한 번 전달).
- 소비자는 처리한 이벤트 ID를 기록해 두고, E1이 다시 오면 효과를 한 번만 적용한다. 전체가 “정확히 한 번 전달”을 보장하는 것은 아니며, 중복이 와도 결과가 한 번 적용된 것과 같아지도록 처리하는 것이다.
필요한 테스트 매트릭스
| 시나리오 | 주입하는 상황 | 기대 결과 |
|---|---|---|
| 응답 유실 후 재시도 | 커밋 뒤 응답을 버리고 같은 키로 재요청 | 주문 1건, 아웃박스 1건, 두 응답이 같은 주문 결과 |
| 같은 키 동시 요청 | 같은 K1 요청 2개를 동시에 보냄 | 주문 1건. 한쪽은 기존 결과를 받거나 대기 후 받음. 서버 오류가 밖으로 새지 않음 |
| 커밋 전 롤백 | 주문 INSERT 후 아웃박스 INSERT 전에 장애 주입 | 주문·이벤트 둘 다 없음. 재시도하면 1건 생성 |
| 아웃박스 재전달 | 릴레이가 E1을 두 번 발행 | 소비자 쪽 효과는 1회 |
정답: C
- A: 오답. 재시도는 중복의 원인이지 해결책이 아니다. 백오프는 부하를 줄일 뿐, 이미 커밋된 주문에 대한 재요청을 막지 못한다. 복습: AP10(분산 처리), AP22(비기능 요구사항으로서의 멱등성).
- B: 오답. 확인 후 삽입(check-then-insert)은 같은 키 요청 2개가 동시에
SELECT를 통과하면 둘 다INSERT할 수 있다. 유일성을 DB 제약으로 보장해야 동시성에서도 1건이 된다. 복습: AP15(동시성 제어), AP13(키와 유일성). - C: 정답. 유일성 제약, 원자적 커밋, 기존 결과 반환, 소비자 측 멱등 처리를 모두 갖췄고, 위의 테스트 매트릭스로 검증할 수 있다. 복습: AP23(장애 주입을 포함한 테스트 설계).
- D: 오답. 주문 커밋과 이벤트 발행이 따로 일어나면, 그 사이에 장애가 나면 이벤트 없는 주문이 남는다. 브로커가 있다고 종단의 정확히 한 번이 보장되지는 않는다. 복습: AP15(트랜잭션의 원자성), AP35(분산 트랜잭션과 2단계 커밋).
정답 일람: Q1 B / Q2 C / Q3 D / Q4 B / Q5 C
9. 문항 횡단 오류 패턴
| 오류 패턴 | 나타나는 모습 | 해당 문항 | 점검 습관 | 복습 |
|---|---|---|---|---|
| 단위 환산 | ms·μs·ns를 섞어 더함, 발생률을 곱하지 않음 | Q1 (C·D), 풀이 예제 | 계산 전에 공통 단위를 적고, 각 항에 “확률 × 크기”를 쓴다 | AP7, AP9 |
| 비용 단위 혼동 | 비교 횟수와 페이지 I/O를 같은 숫자로 비교 | Q2 (B·D) | 각 숫자 옆에 단위(“회 비교”, “페이지 읽기”)를 붙인다 | AP5, AP32 |
| 신뢰 경계 혼동 | 서버 인증서 = 사용자 인증, MFA = 인가 | Q3 (B·C) | “누구를 확인하는가 / 무엇을 허락하는가”를 경계마다 적는다 | AP19, AP20 |
| 경계값 착오 | 호스트 주소를 네트워크 주소로 봄 | Q3 (A) | 블록 크기의 배수로 경계를 먼저 적는다 | AP17 |
| 공유 의존 누락 | 병렬부만 계산, 공유 경로를 병렬로 계산 | Q4 (A·D), 풀이 예제 | 의존 경계 그림을 먼저 그리고 직렬·병렬을 표시한다 | AP8, AP36 |
| 직렬·병렬 오분류 | “하나만 살아 있으면 되는” 병렬부를 “둘 다 필요한” 직렬로 계산 | Q4 (C) | 곱하기 전에 각 블록에 “하나만 있으면 됨 / 모두 필요함”을 적는다 | AP8 |
| 재시도와 원자성 | 재시도만으로 해결, 확인 후 삽입, 분리된 커밋 | Q5 (A·B·D) | 응답 유실·동시 요청·중간 장애를 하나씩 추적한다 | AP15, AP23 |
10. 셀프 체크와 복습 계획
이 체크는 점수나 준비 상태 판정이 아니다. 맞힌 개수로 합격 가능성을 추정하지 않는다.
- Q1의 8,009.8 ns를 가중 평균과 횟수 합계(1,000회) 두 방법으로 다시 계산할 수 있다.
- 8 ms = 8,000,000 ns, 8 μs = 8,000 ns를 헷갈리지 않는다.
- Q2에서 20과 4의 단위가 각각 무엇인지, 그리고 4회 I/O가 어떤 가정에서만 성립하는지 말할 수 있다.
-
192.0.2.130/26의 네트워크·브로드캐스트·사용 가능 범위를 백지에서 구할 수 있다. - 서버 인증서, 사용자 인증(MFA), 인가가 각각 무엇을 확인하는지 한 문장씩 말할 수 있다.
- Q4의 0.997002와 0.997999002를 다시 계산하고, 상한이 0.998인 이유를 말할 수 있다.
- Q5의 응답 유실 시나리오를 단계별로 추적하고, 테스트 매트릭스 4행을 외워서 쓸 수 있다.
맞춤 복습 계획(발행 일정과 별개):
- 당일: 틀렸거나 이유가 틀린 문항의 선택지 해설 링크 회차를 하나만 골라 그 회차의 예제를 다시 푼다.
- 1일 후: 9절 표에서 표시한 오류 패턴의 “점검 습관”만 보고, 같은 문항을 수치를 바꿔 다시 푼다(예: Q1의 페이지 폴트율을 0.01%로, Q4의 전원 가동률을 0.9995로).
- 3일 후: 풀이 예제의 두 습관(단위 통일, 의존 경계)을 다른 시나리오에 적용해 본다.
- 7일 후: 5문항을 처음부터 다시 풀고, 이번에는 선택지마다 틀린 이유를 먼저 적은 뒤 해설과 대조한다.
11. 공식 출처와 개정 이력
출제 범위의 근거는 아래 IPA 자료다. 본문의 시나리오, 수치, 풀이 절차는 Motitory가 만든 학습용 예이며 IPA 실라버스의 문구나 공식 기준값이 아니다.
- IPA 시험 요강·실라버스 개요 — 각 시험 구분의 실라버스를 학습 지침으로 공개하는 IPA 페이지(최종 갱신 2026-07-10). 応用情報技術者試験(レベル3)シラバス(Ver.7.2)가 게시되어 있음을 확인했다. 2026-10-22 확인.
- IPA 응용정보기술자시험 Syllabus Ver.7.2(PDF) — 2절 범위 지도의 근거. 대분류 1–4와 6의 해당 중분류(데이터베이스 인쇄 p.37, 트랜잭션 처리 p.40, 시스템 개발 기술의 요구사항 정의 p.58·통합과 테스트 p.68, 퍼실리티 매니지먼트 p.92 등)를 대조했다. 2026-10-22 확인.
- IPA 실라버스 변경 정보 — 실라버스 개정 이력과 변경점을 확인하는 페이지. 2026-10-22 확인.
- IPA 2026년도 시험 정보 — 令和8年度 시험 실시 안내 페이지. 출제 범위가 아니라 시험 실시 정보를 확인하는 용도다. 2026-10-22 확인.
개정 이력:
- 2026-10-22: 첫 공개. 위 공식 자료를 같은 날 확인했다.
- 2026-10-28: 9절 문항 횡단 오류 패턴 표에서 Q4 C를 “공유 의존 누락”에서 분리해 “직렬·병렬 오분류”로 정정했다. Q4의 문제, 선택지, 정답(B), 선택지별 해설은 바뀌지 않았다.
12. AP33–38 안에서의 위치
이 글은 고정된 마무리 계획 AP33–38의 다섯 번째 회차(AP37, 진단편)다. 시리즈의 마지막 회차는 관리·전략 분야 혼합 진단인 AP38이며, AP38 이후에는 회차를 추가하지 않는다. 전체 목록은 시리즈 허브에 있다.