공공 디지털서비스 전환
새봄시는 강좌 신청을 온라인으로 바꾸려 한다. 신청자는 버튼을 눌렀지만 성공 안내를 받지 못해 다시 누른다. 창구 담당자는 같은 사람의 신청을 별도 장부에 적고, 담당 부서는 이미 자리가 찼다는 이유로 한 건을 취소한다. 이용자에게는 어떤 신청이 유효한지, 왜 순서가 바뀌었는지 설명되지 않는다.
공공 디지털서비스 전환
화면을 온라인으로 옮긴 뒤에도 이용자는 왜 전화를 할까
새봄시는 강좌 신청을 온라인으로 바꾸려 한다. 신청자는 버튼을 눌렀지만 성공 안내를 받지 못해 다시 누른다. 창구 담당자는 같은 사람의 신청을 별도 장부에 적고, 담당 부서는 이미 자리가 찼다는 이유로 한 건을 취소한다. 이용자에게는 어떤 신청이 유효한지, 왜 순서가 바뀌었는지 설명되지 않는다.
문제는 화면 하나의 오류가 아니다. 채널·상태·기준 원장·동시처리·정보 이용·통지·이의가 같은 사건을 서로 다르게 다룬다. 이 절은 새 이론을 늘리는 대신 이미 배운 원리로 하나의 작동 가능한 전환안을 완성한다.
앞서 배운 전자정부의 업무와 책임, 개인정보의 처리별 판단, 트랜잭션의 경계, 모바일의 동기화를 적용한다. 필요한 개념을 기억하지 못하면 해당 설명으로 돌아간 뒤 아래 사례를 다시 푼다. 아래 공공사업·규모·정원·예산은 모두 가상이며 실제 법적 자격·행정처분·기관 시스템을 설계 또는 승인한 기록이 아니다.
읽는 순서: 업무 상태와 통지 상태에서 조건을 확인하고 마지막 자리의 불변조건을 지켜야 하는 이유를 따라간다. 자체 문제는 먼저 답한 뒤 풀이를 펼친다. 조건 변경에서는 결과와 유지되는 원리를 함께 적고 오답 교정으로 돌아간다.
앞선 전사 아키텍처와 연결
전사 아키텍처는 업무·데이터·응용·기술의 관계와 전환 순서를 전체 관점에서 정리했다. 이 절에서는 그 관계를 주민의 신청 한 건이 접수·판정·통지·정정되는 실제 경로에 적용하여 법·보안·운영 책임과 함께 판단한다.
분야 간 통합 판단
분야 간 통합 판단은 전략·기술·보안·법·운영의 상충 요구를 하나의 시나리오에서 상태·순서·책임·검증 근거로 연결하여 실행 가능한 결정을 만드는 능력이다. 각 분야의 기존 정의를 다시 나열하기보다, 같은 사건에서 무엇을 먼저 확정하고 무엇을 보류할지를 근거로 종합한다.
1. 주어진 사실과 설계자가 정할 조건
통합 사례 PS-1의 업무는 강좌 신청 접수와 자격 확인, 좌석 배정, 결과 안내, 취소·정정이다. 각 강좌의 자격과 배정 기준은 별도의 적법한 업무 근거에서 정해진 것으로 가정한다. 기술 담당자가 편의상 임의의 주민 자격을 만들거나 조회 실패를 부적격 사유로 만들지 않는다.
| 구분 | 이 사례의 조건 |
|---|---|
| 채널 | 주민의 웹·모바일 직접 신청과 직원의 창구 보조 신청 |
| 공통 원장 | 모든 채널이 같은 신청·배정 상태를 조회·갱신 |
| 권한 | 주민은 자기 신청, 직원은 승인된 담당업무 범위만 처리 |
| 보조 경로 | 온라인 사용이 어려운 사람도 같은 업무 절차로 접수 가능 |
| 사례 제약 | 외부 통지 장애가 좌석을 중복 배정하게 해서는 안 됨 |
| 초기 범위 | 접수·조회·담당 판정·안내·취소/정정, AI 자동 자격판정은 제외 |
| 완료 의미 | 접수 완료·자격 확인·좌석 확정·통지 전달을 각각 기록 |
주민의 목적은 앱을 설치하는 것이 아니라 신청의 실제 상태를 알고 서비스를 이용하는 것이다. 설치 수·버튼 클릭 수·API 응답 수를 최종 편익으로 세지 않는다. 기존 업무 중 불필요한 재입력과 확인을 줄일 수 있는지부터 살피고 화면만 디지털화하지 않는다.
2. 상태표를 먼저 채우면 화면과 데이터가 연결된다
| 상태 | 무엇이 확인됐는가 | 다음 행동·책임 |
|---|---|---|
| 작성 중 | 단말에 임시 입력만 있음 | 주민 수정, 접수 완료라고 표시하지 않음 |
| 전송 대기·결과 미확인 | 서버 확정을 아직 확인하지 못함 | 같은 요청 ID로 전송 또는 상태 조회 |
| 접수 완료 | 서버가 접수번호·내용을 저장 | 접수 시각·진행 안내, 담당 확인 |
| 확인 대기·보완 | 자격 사실 또는 자료가 부족 | 원천 확인·보완 안내, 자동 탈락 금지 |
| 배정 확정·대기·비대상 | 정한 기준과 사실에 따른 결정 | 이유·근거·시각·결정자 기록 |
| 통지 대기·전달·실패 | 결정 안내의 별도 전달 상태 | 반송·미확인 대상 후속 처리 |
| 취소·정정 | 허용된 조건에서 기존 결정을 변경 | 좌석·이력·후속 안내를 함께 대사 |
이 표는 하나의 상태값을 위에서 아래로 덮어쓰라는 뜻이 아니다. 업무 상태와 통지 상태를 별도로 관리해야 ‘배정 확정·통지 실패’와 ‘배정 취소·취소 안내 대기’를 함께 표현할 수 있다. 통지 실패를 업무 상태에 덮어쓰면 이미 배정한 좌석의 존재를 잃을 수 있다.
단말이 ‘전송함’이라고 기록해도 서버가 저장했는지 모르면 결과 미확인이다. 반대로 서버가 저장한 뒤 응답만 소실됐을 수 있다. 이때 새 신청을 만들기 전에 기존 요청을 조회하면 불필요한 중복을 줄일 수 있다. 오프라인에서 만든 임시 요청 ID와 서버가 확정한 접수번호도 구별하고 둘의 관계를 저장한다.
취소도 ‘삭제 버튼’으로 끝내지 않는다. 이미 확정한 배정을 취소하는지, 작성 중 입력을 버리는지, 잘못된 개인정보를 정정하는지는 효과가 다르다. 필요한 이력과 보존 근거를 확인하고 사용자의 권리 요청을 무조건 영구 삭제나 무조건 보관으로 처리하지 않는다.
3. 필요한 최소 참조구조
상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.
웹·모바일과 승인된 직원 보조가 같은 신청·배정 서비스로 들어간다. 필요한 사실 조회·보완·담당 판정의 근거를 준비하고 배정 시점의 현재 조건을 다시 확인한다. 아래 DB 경계는 함께 반영하거나 취소하는 데이터 변경이며 외부 조회·사람 판단·외부 발송은 같은 원자적 동작이 아니다.
상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.
위 구조의 같은 DB 변경 묶음을 출발점으로 확대해 그린다. 상태 조회·정정·이의는 현재 원장을 따른다. 별도 통지 처리자는 저장된 알릴 작업을 읽어 외부 발송을 수행하며 실제 결과·결정판본·미확인·정정을 대사한다. DB 커밋은 외부 전달과 같은 원자적 효과가 아니고, 늦게 도착한 옛 안내 때문에 현재 원장을 되돌리지 않는다.
네모는 서로 다른 서버의 이름이 아니라 함께 반영하거나 취소할 데이터 변경의 경계다. 외부 사실 조회·사람의 판단·외부 발송은 이 DB의 커밋과 같은 원자적 동작이 아니다. 오랫동안 기다리는 조회나 사람의 응답을 좌석 잠금을 잡은 채 기다리지 않는다. 필요한 판단 근거를 준비한 뒤 배정 시점에 바뀔 수 있는 정원·권한·현재 신청 상태를 다시 확인한다.
한빛포장의 실적과 달리 여기서는 주민의 권리·기회가 직접 걸려 있다. 사실 조회를 위한 법적 근거·대상·필요 항목·동의 또는 적용 예외는 앞의 윤리·법규·정책 분야에서 설명한 방법으로 확인한다. 공공업무라는 이름만으로 모든 기관의 개인정보를 자유롭게 조회하거나 외부 운영업체에 자체 활용권을 주지 않는다.
처음부터 신청·배정·알림을 각각 독립된 여러 데이터베이스로 쪼개지 않는다. 현재 요구에서는 함께 지켜야 할 상태를 한 트랜잭션으로 묶을 수 있는 단순한 서비스가 우선 대안이다. 규모·책임·운영 제약이 실제로 분리를 요구하면 경계 밖의 상태·중복·복구를 추가 설계한다. 구조의 복잡함을 성숙도의 표시로 쓰지 않는다.
4. 마지막 한 자리: 초과 배정과 중복 신청은 다른 문제다
PS-T1은 한 강좌의 마지막 자리 하나를 두 적격 신청자가 동시에 요청하는 상황이다. 두 처리가 각각 남은 수 1을 읽고 모두 0을 저장하면 음수는 없어도 배정이 2개 생길 수 있다. 남은 수 ≥ 0 하나만 보고 정합성을 확인하면 실패다.
정원을 C, 확정 배정 수를 A, 남은 자리를 R로 표시하자. 취소·별도 보류가 없는 이 계산 구간에서는 A + R = C, 0 ≤ A ≤ C, R ≥ 0을 함께 지켜야 한다. 배정 성공에는 실제 조건부 갱신이 한 행을 바꿨다는 확인과 신청·배정 기록이 필요하다.
하나의 DB 트랜잭션
1. 요청자·업무 범위·요청 ID의 고유성을 DB에서 확보
기존 요청이면 내용·기록된 결과를 대조하고 좌석을 다시 차감하지 않음
2. 현재 자격·신청 상태와 사람·강좌의 중복 배정 조건 확인
3. 해당 강좌의 잔여 > 0일 때만 잔여 1 감소
한 행 변경: 배정 확정
영 행 변경: 자리 부족 여부를 확인하고 대기 등 정한 업무 결과 기록
4. 배정 또는 대기 결과·요청 결과·통지할 작업을 함께 저장
5. 모두 성공하면 커밋; 오류·고유성 충돌이면 미확정 변경 전체 롤백변경된 행이 없다는 사실은 그 자체로 통신 장애나 DB 고장이 아니다. 이 예처럼 대상 강좌가 존재하고 현재 상태를 확인한 조건에서는 잔여가 없어 배정하지 못한 업무 결과일 수 있다. 접수·대기 결과는 일관되게 남겨야 한다. 반대로 대상 강좌가 없거나 권한이 바뀌었다면 그 원인을 자리 부족으로 숨기지 않는다.
조건부 갱신의 실제 동작은 DBMS·격리수준·갱신 범위와 함께 검증해야 한다. PostgreSQL의 Read Committed 설명은 같은 행의 동시 갱신 대기 후 조건 재평가를 구별한다.1 이 조건에서는 첫 처리가 잔여를 1에서 0으로 바꾸어 커밋한 뒤, 두 번째 처리는 갱신된 행의 잔여 > 0을 다시 검사하여 추가 배정을 하지 않는다. 첫 처리가 롤백하면 다른 결과가 가능하다. 여러 행에 걸친 복잡한 규칙까지 이 예 하나로 증명한 것은 아니다.
같은 요청을 둘이 동시에 처리하면
중복 신청 방지는 같은 요청의 재전송과 같은 사람의 다른 요청을 따로 다룬다. 단순히 ‘같은 요청이 있는지 조회한 뒤 없으면 삽입’하면 두 처리가 동시에 없음을 보고 각각 삽입할 수 있다. 요청 고유성과 사람·강좌의 업무 고유성은 DB의 고유 제약·적절한 잠금 등 실제 동시성 통제로 집행해야 한다. PostgreSQL의 고유 제약은 지정한 열 조합의 중복을 제한하는 수단이며, 애플리케이션의 사전 조회를 대신해 최종 경계를 지킬 수 있다.2
자체 PS-T2에서 동일한 요청 ID K를 두 처리자가 동시에 받았다고 하자. K에 대한 처리권을 고유한 기록으로 먼저 확보한 쪽만 새 배정을 진행한다. 다른 쪽은 기존 결과가 확정됐는지 확인하거나 아직 처리 중임을 알린다. 두 처리자가 모두 좌석을 먼저 차감한 뒤 나중에 K를 저장하는 안은 피한다. 뒤에서 충돌을 발견한 경우에도 같은 트랜잭션의 차감을 함께 롤백해야 한다.
요청 ID는 요청자·업무 범위와 묶고, 같은 ID에 다른 내용을 보내면 충돌로 처리한다. 이미 완료한 요청은 그 요청에 기록된 결과를 반환하되 현재 신청 상태도 별도로 제공한다. 과거의 배정 성공 요청을 재시도했다고 이미 취소한 신청을 다시 확정하지 않는다. 같은 사람이 새 ID로 재신청한 경우는 정한 사람·강좌의 업무 조건으로 다시 판단한다.
취소를 두 번 요청했을 때도 좌석을 두 번 반환하면 안 된다. 확정 상태에서 취소로 실제 전이한 한 번에만 배정·자리·이력을 함께 변경한다. 누가 취소할 수 있는지와 취소 기한·대기자 처리 기준은 업무 규칙으로 따로 확인한다.
5. 통지 서비스가 멈춰도 원장의 사실을 잃지 않는다
배정 기록만 저장하고 통지할 작업을 남기기 전에 프로그램이 꺼지면 주민에게 알릴 일이 사라질 수 있다. 따라서 배정과 ‘알릴 작업’을 같은 DB 경계에 남기고, 별도 처리자가 저장된 일을 읽어 통지하도록 설계한다. DB의 커밋과 실제 외부 발송은 하나의 원자적 동작이 아니므로 구별한다.
외부 발송이 성공했으나 응답이 소실되면 중복 가능성이 생긴다. 통지 ID와 공급자의 실제 결과 조회·중복 방지 지원을 확인한다. 확인할 수 없는 상태는 미확인으로 남겨 대사하고, 무조건 재발송하거나 무조건 성공으로 바꾸지 않는다. 발송·전달·주민이 읽음도 다른 상태다.
배정이 취소된 뒤 옛 통지 작업이 남아 있을 수도 있다. 통지 전에 현재 사건·결정판본을 대조하여 이미 낡은 작업은 실행하지 않고 취소·정정 안내와 연결한다. 다만 이 조회와 외부 전달 사이에도 취소가 일어날 수 있다. 발송 직전 확인 한 번으로 과거 안내의 도착을 완전히 막았다고 보장하지 않는다.
예를 들어 처리자가 배정판본 7의 유효성을 확인한 직후 취소판본 8이 커밋되고, 이미 전송 중인 판본 7의 안내가 나중에 도착할 수 있다. 이때 판본 7이 도착했다는 이유로 원장을 과거 상태로 되돌리지 않는다. 발송·취소의 실제 기록을 보존하고 판본 8의 정정 안내와 최신 상태 조회를 제공한다. 취소 가능한 외부 작업은 실제 취소 결과까지 확인하며, 이미 전달된 메시지를 지웠다고 가정하지 않는다.
이 설계가 보장하려는 것은 ‘어떤 과거 안내도 절대 도착하지 않는다’가 아니라, 원장의 사실을 잃지 않고 통지의 지연·중복·역전·미확인을 추적하여 바로잡는 것이다. 더 강한 전달 순서가 필요한 업무라면 공급자와 소비자의 지원 범위, 확인 기준과 추가 비용을 별도로 검토한다.
6. 접근성과 개인정보를 별도 부가기능으로 밀지 않는다
화면은 키보드 사용, 명확한 항목 이름, 오류의 위치와 수정 방법, 처리상태 안내를 제공해야 한다. 색만으로 오류·성공을 구별하거나 제한시간이 지나면 이유 없이 모든 입력을 버리는 방식은 검토 대상이다. WCAG 2.2의 키보드·레이블·오류·상태 메시지 항목을 설계 확인에 참고하되, 이것만으로 특정 서비스의 전 항목 적합성을 인증하지 않는다.3
창구 보조는 공유 계정으로 주민인 척 접속하는 방식이 아니다. 직원의 권한과 대리 처리 근거를 남기고, 주민의 선택·확인과 사건을 연결한다. 온라인 화면과 별도의 비공식 장부로 배정을 확정하면 순서와 정합성이 깨지므로 공통 원장과 기준을 사용한다.
신청에 필요한 최소 항목·보유 근거·권리·제공/위탁과 외부 처리 경계를 확인한다. 디버깅을 위해 전체 주민정보를 모든 로그에 넣지 않는다. 운영 분석에는 목적에 맞는 집계와 필요한 증거만 사용하며, 기술적으로 편리하다는 이유로 새 분석 목적을 자동 승인하지 않는다.
7. PS-E1: 전체 완료율의 개선이 특정 채널의 악화를 숨긴다
두 기간의 비교 집단은 각각 200명이며 직접 온라인 120명, 도움 채널 80명이라고 가정한다. 여기서 ‘완료’는 접수 완료이고 최종 배정·참여 효과가 아니다. 같은 사람을 추적한 자료나 무작위 실험이라고 가정하지 않으므로 인과효과를 확정하지 않는다.
| 채널 | 전 기간 접수 완료 | 후 기간 접수 완료 |
|---|---|---|
| 온라인 120명 | 90명, 75% | 102명, 85% |
| 도움 80명 | 56명, 70% | 48명, 60% |
| 전체 200명 | 146명, 73% | 150명, 75% |
전체는 2%포인트 높아졌지만 도움 채널은 10%포인트 낮아졌다. 후 기간의 미완료는 온라인 18명과 도움 32명, 합계 50명이다. 상대 변화율과 %포인트도 구별한다. 전체 73→75%는 2%포인트 상승이며 상대 증가는 2/73 ≈ 2.74%다.
이 값만으로 원인이 새 화면인지, 지원 인력인지, 비교집단의 요구 차이인지 알 수 없다. 미완료 이유·상태별 대기·재신청·정정·접근성·담당 공수를 조사한다. 정책 목표가 도움 채널의 배제를 줄이는 것이라면 전체 평균만으로 확대를 승인할 수 없다.
8. 완성 전환안 PS-G1
PS-G1은 한 강좌군의 접수·배정·안내·정정을 먼저 통합한다.
최신기술 후보는 최신기술의 평가 원칙에 따라 AI·영상/그래픽·IoT·모바일·클라우드·스마트팩토리를 같은 기준으로 비교한다. PS-G1은 주민 채널과 공통 원장에 직접 필요한 모바일·클라우드 구조만 우선 검토하고, 영상/그래픽·IoT·스마트팩토리는 현재 업무효과와 도입 근거가 부족해 초기 범위에서 채택하지 않는다. AI 자동 자격판정도 권리·설명·근거 조건이 확보되지 않아 제외한다. 업무 책임자가 정원·기준·이의와 공통 원장을 승인하고, 법규·개인정보 담당은 처리·조회·위탁의 근거를, 데이터 담당은 상태·판본·대사를, 개발·운영 담당은 거래·전달·장애를 맡는다. 사용자 지원 담당은 도움 채널·접근성과 미완료 원인을 확인한다.
전환 전에는 기준 데이터와 현재 신청·대기·취소를 대사한다. 새 환경을 비교 관찰한 뒤 승인된 시점에 기준 쓰기를 옮기며, 같은 사건을 두 원장이 독립 확정하지 않게 한다. 새 경로가 승인되면 폐기할 옛 쓰기·권한·외부 전송을 실제로 종료한다. 서비스 중단 시 단말의 임시 요청 ID와 전송대기를 보존하고, 서버 접수번호를 이미 받은 경우에는 그 관계도 유지한다. 아직 서버가 받지 않은 신청에 접수 완료를 약속하지 않는다.
확인할 시나리오는 마지막 자리 동시 요청, 같은 요청의 동시 재전송·내용 변경, 새 요청 ID의 중복 배정, 취소 재전송, 권한 없는 조회, 외부 사실 조회 장애, 통지 응답 소실, 확인 직후의 취소와 통지 역전, 오프라인 보조 입력, 데이터 이관 누락이다. 산출물은 업무·상태표, 거래·권한 설계, 처리근거표, 실제 검증 결과, 전환·복구·이의 절차다. 이 원고의 시나리오 작성과 실제 시스템 시험 통과는 다른 상태다.
PS-E1의 평균 개선만으로 확대하지 않고 도움 채널의 미완료 32명부터 원인을 좁힌다. 초과 배정·권한 위반·취소 불일치가 발생하면 문제가 있는 경로의 추가 처리를 제한하고 원장과 증거를 대사한다. 이미 확정된 주민의 권리를 근거 없이 일괄 취소하지 않으며, 필요한 업무·권리 판단과 정정 절차를 거친다. 필요한 기능과 책임이 확보된 뒤 다음 강좌군으로 확장한다.
9. 자체 10점 문제와 완성 답안
공공 신청 서비스에서 접수·배정·통지를 구별하고 PS-T1의 마지막 자리 동시 요청을 처리하는 원리를 설명하시오.
요구 해석: ACID 네 글자 나열이 아니라 어떤 업무 사실을 어느 경계에서 확정하는지를 묻는다.
10점 문제의 작성 과정과 완성 답안 보기
목차: 업무 사실 구분 → 동시성 불변조건 → 요청 고유성 → 외부 통지 경계
공통 원장과 외부 효과의 경계를 함께 따른다. 접수·자격 확인 뒤 배정 원장과 통지 작업을 같은 DB 경계에 저장하되, 요청·업무 고유성과 현재 조건은 실제 동시성 통제로 집행한다. 외부 전달·판본·미확인·정정은 원장 확정과 별도로 관리한다.
완성 답안
접수는 서버가 신청을 저장한 상태, 배정은 기준에 따라 좌석을 확정한 상태, 통지는 그 결과를 외부로 전달한 상태다. 업무와 통지의 상태를 분리하여 배정 확정과 통지 실패를 함께 표현한다. 단말의 전송 표시나 외부 메시지의 응답을 원장 확정과 동일시하지 않으며 요청 ID와 상태 조회로 결과 미확인을 처리한다.
PS-T1에서는 두 요청이 잔여 1을 읽고 각각 0을 저장해도 배정 2개가 생길 수 있다. 정원 C에 대해 배정 A와 잔여 R의 합이 C이고 A가 C를 넘지 않도록, 잔여가 양수일 때 조건부 차감한 한 행을 확인한다. 배정·요청 결과·통지할 작업을 같은 트랜잭션에 저장하고 오류 시 미확정 변경을 함께 롤백한다. 자리 부족이라는 정상 업무 결과와 DB 오류도 구별한다.
동일 요청과 사람·강좌의 중복은 사전 조회만이 아니라 고유성·동시성 통제로 집행한다. 취소는 실제 한 번의 상태 전이에만 좌석을 반환한다. 외부 통지는 별도 전달·판본·미확인·정정으로 관리하며, DBMS·격리수준·동시성·장애 시험으로 해당 설계를 확인한다.
10. 자체 25점 문제와 완성 설계 답안
새봄시의 공공 강좌 신청 전환안 PS-G1을 설계하시오. 업무·데이터 정합성·개인정보·접근성·전환·성과를 포함하시오.
구성 과정: 요구를 분야 이름으로 나열하지 말고 한 신청이 생성·판정·전달·변경되는 경로에 각 통제를 놓는다.
25점 문제의 도식·선택 이유·완성 답안 보기
목차: 업무·상태 → 거래·권한 → 개인정보·접근성 → 기술선택 → 전환·성과
| 실제 경로 | 같이 확인할 통제·근거 | 전환·성과·확대 판단에 연결할 결과 |
|---|---|---|
| 주민·직원 채널 | 접근성·주민 권리·승인된 보조 권한 | 채널별 완료·미완료와 지원 부담 |
| 공통 원장·권한 | 정합성·감사·요청 고유성·거래 경계 | 이관 대사·옛 쓰기와 권한 종료 |
| 배정·외부 통지 | 실제 전달·판본·미확인 대사·정정 | 배정·참여·편익과 통지 결과를 구별 |
세 경로의 결과를 함께 대조하여 전환·성과·확대를 판단한다. 자료 변경 경계와 PS-G1 운영안을 연결하고, 평균 접수 완료만으로 채널별 권리·정합성·정정의 미완료를 지우지 않는다.
완성 설계 답안
PS-G1은 한 강좌군의 웹·모바일·창구 보조 신청을 공통 원장에 연결하고 접수·자격 확인·배정·통지·정정을 추적한다. 정원·배정 기준·대리 처리·이의는 업무 근거에 따라 정하며 조회 장애를 자동 탈락으로 바꾸지 않는다. AI 자동 자격판정과 불필요한 기관정보 수집은 초기 범위에서 제외한다.
원장은 요청자·요청 ID·신청·강좌·결정판본을 연결하고 업무 상태와 통지 상태를 분리한다. 요청 고유성과 사람·강좌의 업무 고유성은 DB의 실제 동시성 통제로 집행한다. 마지막 자리에는 조건부 차감과 영향 행 확인을 사용하고 배정·요청 결과·알릴 작업을 하나의 트랜잭션으로 묶는다. 충돌한 처리가 좌석 차감만 남기지 않도록 롤백하며, 취소도 허용된 상태 전이와 좌석 반환을 같은 경계에 넣는다.
외부 발송은 통지 ID·공급자 결과·결정판본을 대사해 완료와 미확인을 구별한다. 발송 직전 확인 이후에도 취소될 수 있으므로 과거 안내가 뒤늦게 도착하는 경우를 포함한다. 현재 원장은 되돌리지 않고 실제 발송 이력·정정 안내·최신 상태 조회로 해소한다. 공급자가 보장하지 않는 전달 순서나 중복 방지를 가정하지 않는다.
역할별 권한을 서버에서 검증하고 자기 신청 조회·담당 업무·보조 처리를 분리한다. 처리근거·필요 항목·보유·위탁·외부 조회 조건은 앞의 법적 판단 방법으로 대조하며 로그의 과도한 원문 복사를 피한다. 화면에는 키보드·레이블·오류 수정·상태 안내를 제공하고 도움 채널도 같은 원장과 기준으로 운영한다. 도움 경로를 열어 둔 것과 실제로 신청을 마칠 수 있는지는 따로 확인한다.
업무·법규·데이터·개발/운영·지원 담당은 각 기준과 증거를 책임진다. 동시 신청·중복·취소·권한 오류·외부 조회 실패·발송 응답 소실과 역전·이관 누락을 승인된 시험에서 확인한다. 비교 관찰 후 기준 쓰기를 이관하고 폐기할 옛 경로·계정을 종료한다. 장애 때는 임시 요청과 서버 접수를 구별해 보존하고 대체 안내를 제공한다.
PS-E1의 전체 접수 완료율 73→75%만으로 확대하지 않는다. 도움 채널의 70→60% 하락과 미완료 32명의 이유·지원 부담을 확인한다. 접수 완료·최종 배정·실제 참여와 편익을 다른 지표로 두고, 오류 발생 시 추가 영향의 제한·원장 대사·적법한 정정과 이의를 연결한다. 작동하는 한 묶음에서 결과를 확인한 뒤 범위를 넓힌다.
11. 자기교정과 면접 연결
| 오답 | 부족한 이유 | 수정 예 | 복습 |
|---|---|---|---|
| 접수 버튼 응답이 없으니 무조건 새 신청 | 서버 저장과 응답 소실을 혼동 | 같은 요청 ID로 상태 확인 | 상태 |
| 잔여가 음수만 아니면 초과 배정이 없다 | 갱신 분실로 배정 2·잔여 0 가능 | 정원·배정·잔여 불변조건과 조건부 갱신 | 거래 |
| 요청 ID를 먼저 조회하면 모든 중복을 막는다 | 동시 조회와 새 ID의 같은 업무는 별도 | DB 고유성·요청 내용·업무 조건을 함께 집행 | 거래 |
| DB 커밋이면 문자도 현재 상태대로 전달된다 | 외부 효과·취소·전달 순서는 다른 경계 | 알릴 작업 저장·판본·외부 결과·정정 대사 | 통지 |
| 조회 실패는 자격 미충족이다 | 정보 미확인을 불리한 판정으로 전환 | 확인 대기·보완과 원천 확인 | 구조 |
| 창구는 공유 계정과 별도 엑셀로 배정한다 | 책임·원장·순서가 분리됨 | 승인된 보조 권한·공통 원장 | 접근성 |
| 전체 75%이므로 모든 채널이 개선됐다 | 도움 채널의 60%를 숨김 | 채널별 분모·미완료 원인 확인 | 평가 |
| 전환은 새 화면 공개로 완료된다 | 이관·권한·옛 쓰기·운영 누락 | 실제 정합성·복구·종료 대사 | 전환안 |
조건 1 — 도움 채널 완료가 64명으로 바뀌면: 도움 채널과 전체 완료율을 구하고 무엇까지 결론 낼 수 있는지 설명한다.
조건 1의 풀이와 판단 이유 보기
도움 채널은 80%, 전체는 (102+64)/200=83%다. 이 자료에서는 완료율이 개선됐지만 동일 집단의 인과효과나 실제 참여 편익을 확인한 것은 아니다.
조건 2 — 배정 커밋 뒤 통지 서비스만 중단되면: 배정 원장과 통지 작업의 상태 및 금지할 재배정을 설명한다.
조건 2의 풀이와 판단 이유 보기
배정은 유지하고 통지할 작업을 처리 대기로 남긴다. 문자 실패를 이유로 다른 사람에게 같은 좌석을 다시 주지 않는다. 이후 취소가 발생하면 현재 결정판본과 남은 통지·정정 작업을 연결한다. 이미 전송 중인 과거 안내의 도착까지 막았다고 보장하지 않는다.
조건 3 — 취소 응답이 소실되어 재전송되면: 요청 결과와 현재 취소 상태를 구별하고 좌석 반환 횟수를 설명한다.
조건 3의 풀이와 판단 이유 보기
기존 취소 결과와 현재 상태를 조회한다. 이미 취소한 배정의 좌석을 다시 반환하지 않으며 현재 결정판본의 안내와 연결한다. 과거 배정 요청의 재전송도 그 요청의 기록을 되돌려 줄 뿐 취소 상태를 다시 배정으로 바꾸지 않는다.
면접 질문: “왜 처음부터 마이크로서비스로 나누지 않았습니까?”
면접 응답 예와 근거 보기
설명 예: “현재 핵심은 같은 신청과 좌석의 정합성입니다. 한 원장 안에서 함께 확정할 수 있는 경계를 유지하고 외부 통지는 별도 결과로 관리했습니다. 독립 배포·규모·조직 책임이 실제로 분리를 요구하면 그 이익과 분산 상태·운영 부담을 비교하겠습니다.”
후속 질문: “그러면 규모가 커져도 그대로입니까?”
면접 응답 예와 근거 보기
대응 예: “아닙니다. 사용량과 병목·격리 요구를 측정해 변경합니다. 다만 사용량 증가 자체와 서비스 분리의 필요는 다르며, 불변조건·소유권·재시도·복구가 유지되는지 먼저 확인합니다.”
근거와 범위
법규와 공공업무의 판단 범위는 전자정부의 원칙·업무·서비스·개인정보 처리근거와 권리의 원고와 그 공식 근거를 연결한다. 새로운 법정 자격·예외·기한을 만들지 않았다. PS-1/T1/T2/E1/G1·도식·표·문제·답안·면접은 자체 교육 자료이며 공식 기출·채점표·실제 경험·독립 검수로 표시하지 않는다. 수정은 원고의 설명·논리 대조이며 실제 DB·외부 발송·장애 시험을 수행한 것이 아니다.
회독의 핵심
통합 설계는 여러 기술명을 모으는 일이 아니다. 한 사람의 신청이 어디에서 어떤 근거로 확정되고, 실패·정정·권리·실제 전달을 누가 책임지는지 연결하는 일이다. 업무 상태와 통지 상태, 사전 조회와 동시성 통제, 현재 원장과 늦게 도착한 안내를 나누어 다룬다. 평균 성과와 실제 불이익을 함께 보고 동작하는 작은 범위부터 확대한다.
조건을 바꾸어 풀기: 같은 숫자와 같은 요청이 같은 사실을 뜻하지 않는다.
아래 PS-X는 취소·별도 보류 좌석이 없는 계산 구간에서 A+R=C를 유지하는 별도 자체 사례다. 요청 결과의 이력, 현재 업무 상태, 외부 통지의 관찰, 비교집단의 구성을 나누어 풀어 본다.
- PS-C. 정원 C=3, 기존 확정 배정 A=2, 잔여 R=1이다. P의 트랜잭션은 잔여를 먼저 0으로 바꿨지만 알릴 작업 저장 중 오류가 나서 전체 롤백했다. 그 뒤 Q가 마지막 자리를 정상 확정했다. 각 단계의 A·R은 무엇인가? Q의 취소가 한 번 확정됐으나 응답이 소실되어 같은 취소 요청을 다시 보내면 잔여를 몇 번 반환하는가? 이후 Q의 옛 배정 요청을 재전송하면 현재 신청을 다시 배정해야 하는가? 같은 요청 ID에 다른 강좌 내용을 보내는 경우도 구별하라.
- PS-V. 처리자는 배정판본 3이 현재임을 확인하고 통지 N3을 전송했다. 그 직후 취소판본 4가 커밋됐고 N3이 늦게 전달됐다. 외부 업체의 ‘전달됨’ 기록만 보고 배정판본 3을 원장에 다시 기록해도 되는가? N3의 발송·전달·주민 열람을 모두 완료로 바꿀 수 있는가? 취소 안내 N4의 요청을 업체가 받았지만 전달 결과는 미확인일 때 주민에게 어떤 현재 상태와 후속 조치를 제공해야 하는가?
- PS-M. 서로 다른 두 기간의 전체 신청자는 각각 200명이다. 전 기간 온라인 80명 중 64명, 도움 120명 중 72명이 접수 완료했다. 후 기간 온라인 160명 중 128명, 도움 40명 중 24명이 완료했다. 채널별·전체 완료율과 전체 변화의 %포인트를 구하라. 두 기간 모두 전 기간의 채널 구성비 40%·60%로 맞춘 가중 완료율도 계산하라. 도움 채널 미완료가 48명에서 16명으로 줄었으므로 도움 서비스가 개선됐다고 단정할 수 있는가?
전체 롤백·취소 재전송·통지 판본·비교집단 구성의 풀이
1. PS-C — 미확정 중간값을 좌석의 사실로 남기지 않는다. 시작은 (A,R)=(2,1)이다. P의 중간 잔여 0은 커밋되지 않았고, 전체 롤백 뒤에는 (2,1)로 돌아간다. 배정·요청 성공 결과·알릴 작업 중 일부만 확정해 남기지 않는다. Q가 조건부 차감과 관련 저장을 모두 마쳐 커밋하면 (3,0)이 된다. P가 잠시 잔여를 차감했다는 이유로 Q를 자리 부족으로 확정하지 않는다. 실제 동시 대기·조건 재평가는 DBMS와 격리수준의 동작을 확인해야 한다.
Q가 확정→취소로 실제 전이한 한 번에만 A를 1 줄이고 R을 1 늘려 (2,1)이 된다. 같은 취소 요청을 재전송해도 (2,1)이며 좌석 반환은 총 1번이다. 과거 배정 요청의 기록된 성공 결과와 현재 취소 상태를 함께 구별해 알려 주고, 재전송을 새 배정 명령으로 실행하지 않는다. 요청 ID가 같아도 내용이 바뀌었다면 기존 결과를 다른 내용의 성공으로 돌려주지 않고 충돌로 처리한다. 요청자·업무 범위와 사람·강좌의 고유 조건도 함께 집행한다.
2. PS-V — 오래된 통지가 도착해도 현재 업무 상태는 취소다. 현재 원장은 판본 4의 취소를 유지한다. N3이 늦게 전달됐다는 사실은 외부 전달 이력이며 원장을 판본 3으로 되돌릴 근거가 아니다. 주민에게는 ‘판본3 안내는 현재 취소 전에 생성된 과거 안내이고 현재 상태는 취소’라는 설명과 최신 상태 조회·문의 경로를 제공한다. 발송·전달·열람은 서로 다른 관찰이므로 업체의 전달 기록만으로 주민 열람까지 확정하지 않는다.
N4의 접수 성공도 전달 완료가 아니다. N4의 통지 ID·현재 판본·업체가 확인한 단계와 미확인 전달을 남겨 조회·대사하고, 확인된 권한·지원 범위에 따라 후속 안내를 처리한다. 취소된 자리를 다시 배정하거나 실제 전달 증거 없이 성공으로 바꾸지 않는다. N3을 외부에서 취소할 수 있다면 실제 취소 결과를 확인하되 이미 전달된 메시지가 모든 단말에서 지워졌다고 가정하지 않는다.
3. PS-M — 구성 변화가 전체 평균을 올릴 수 있다. 온라인은 전 64/80=80%, 후 128/160=80%이며 도움은 전 72/120=60%, 후 24/40=60%로 둘 다 같다. 전체는 전 136/200=68%, 후 152/200=76%로 8%포인트 높아졌다. 완료율이 높은 온라인의 비중이 40%에서 80%로 늘었기 때문이다. 두 기간을 모두 전 기간의 구성으로 계산하면 0.4×0.8+0.6×0.6=0.68, 즉 68%로 같다.
가중 계산은 채널 구성의 영향을 드러내는 비교이지 같은 사람·요구·지원 수준을 맞춘 실험이 아니다. 도움 미완료 48명과 16명의 감소도 대상 수가 120명에서 40명으로 줄었기 때문에 생길 수 있다. 도움 채널 미완료율은 두 기간 모두 40%다. 지원의 접근 가능성·필요한 사람의 분포·미완료 이유를 추가 확인하고, 채널별 접수 완료를 실제 배정·참여 편익이나 인과효과로 확대하지 않는다.
Footnotes
-
PostgreSQL 18 문서 §13.2.1, Transaction Isolation. https://www.postgresql.org/docs/18/transaction-iso.html . 2026-09-20 같은 행의 동시 UPDATE 대기·조건 재평가와 복잡한 검색 조건의 한계를 대조했다. 다른 격리수준과 모든 DBMS에 동일한 보장을 부여하지 않는다. ↩
-
PostgreSQL 18 문서 §5.5.3, Unique Constraints. https://www.postgresql.org/docs/18/ddl-constraints.html . 고유 제약이 열 또는 열 조합의 중복을 제한한다는 범위를 사용했다. PS-T2의 요청 처리·충돌·업무 상태는 자체 설계이며 특정 SQL을 실행해 검증한 결과가 아니다. ↩
-
W3C, WCAG 2.2, §2.1 Keyboard Accessible, §3.3 Input Assistance, §4.1.3 Status Messages. https://www.w3.org/TR/WCAG22/ . 필요한 검토 관점을 참고했으며 전 항목 적합성 평가나 국내 법률 적용 판정을 수행하지 않았다. ↩