top of page

Create Your First Project

Start adding your projects to your portfolio. Click on "Manage Projects" to get started

자동차진단보증협회 자격검정 플랫폼 개발 및 홈페이지 리뉴얼

프로젝트 유형

웹솔루션 개발 및 홈페이지 리뉴얼

날짜

2021~23년

기술스택

PHP, CodeIgniter

한국자동차진단보증협회 자격검정 플랫폼 전산시스템 개발/관리.
홈페이지를 통해 자격증 안내, 접수. 자격증 발급 기능 제공. 전산 관리 시스템을 통해 시험 일정, 시험장, 원서접수, 수험자 관리, 결재관리, 자격증 발급 관리등 수험 관리 업무 프로세스 전산 구현, 홈페이지 리뉴얼

한국자동차진단보증협회 자격검정 플랫폼 기술 소개서


1. 프로젝트 개요

한국자동차진단보증협회 자격검정 플랫폼은 국가공인 자동차진단평가사 자격시험의 전 과정을
온라인으로 관리하는 통합 시스템이다. 회원가입부터 원서접수, 결제, 시험 관리, 합격자 발표,
자격증 발급에 이르기까지 자격검정의 전체 라이프사이클을 지원한다.

본 플랫폼은 응시자에게 편리한 온라인 접수 환경을 제공하고, 관리자에게는 검정 운영에
필요한 종합적인 관리 도구를 제공하는 것을 핵심 가치로 삼고 있다. 본인인증, 온라인 결제,
얼굴 인식 사진 검증 등 신뢰성 높은 기술을 활용하여 자격검정의 공정성과 효율성을
확보하였다.


2. 시스템 구성

본 플랫폼은 두 개의 독립적인 웹 애플리케이션으로 구성된다.

1) 사용자 웹사이트
응시자 및 일반 회원을 위한 서비스 시스템이다. 회원가입, 시험 일정 조회, 원서접수,
결제, 자격증 발급 신청, 마이페이지 등 응시자 대상의 전체 기능을 제공한다.
컨트롤러 21개, 모델 12개로 구성되어 있다.

2) 관리자 시스템
협회 운영진을 위한 백오피스 시스템이다. 검정 일정 관리, 접수 현황, 응시자 관리,
시험장 배치, 결과 처리, 자격증 발급, 결제 관리, 회원 관리, 고객 문의 응대 등
운영에 필요한 전반적인 관리 기능을 제공한다.
메인 컨트롤러 6개, 검정 관리 컨트롤러 14개, 모델 16개로 구성되어 있다.


3. 핵심 기술 스택

1) 백엔드
PHP - 서버 사이드 프로그래밍 언어
CodeIgniter - 경량 MVC 웹 프레임워크
Active Record - 데이터베이스 쿼리 빌더
Composer - PHP 의존성 관리 도구

2) 프론트엔드
jQuery - DOM 조작 및 AJAX 통신
jQuery Validate - 클라이언트 측 폼 유효성 검증
jQuery InputMask - 입력 필드 마스킹 처리
jQuery File Upload - 비동기 파일 업로드 인터페이스
Underscore.js - 클라이언트 측 템플릿 엔진
Smart Editor 2 - WYSIWYG 웹 에디터
BX Slider - 이미지 슬라이더
Font Awesome - 아이콘 라이브러리

3) 외부 서비스 연동
KCP - 온라인 결제 게이트웨이 (카드결제, 무통장입금)
IPIN/PCC - 본인인증 서비스 (아이핀, 휴대폰 본인확인)
Google Cloud Vision API - 이미지 분석 및 얼굴 인식
카카오 알림톡 - 알림 메시지 발송

4) 서버 및 인프라
MySQL - 관계형 데이터베이스
Memcached - 메모리 기반 캐싱 시스템
FTP - 원격 파일 전송

5) 데이터 처리 라이브러리
Box Spout - 엑셀 파일 읽기/쓰기
GuzzleHTTP - HTTP 클라이언트
Firebase PHP-JWT - JSON Web Token 처리
Monolog - 로깅 프레임워크
gRPC - 원격 프로시저 호출
Google Protocol Buffers - 직렬화 프로토콜


4. 핵심 기능

1) 회원 관리
가) 회원가입 프로세스
약관 동의, 본인인증(IPIN 또는 휴대폰), 회원정보 입력의 단계별 가입 절차를
제공한다. 아이디 중복 검증, 비밀번호 강도 검증, 이메일 및 연락처 형식 검증 등
실시간 유효성 검사를 수행한다.
나) 로그인 및 인증
아이디/비밀번호 기반 로그인을 지원하며, 자동 로그인 기능을 제공한다.
계정 보안이 필요한 작업 시 본인인증 재확인 절차를 거친다.
다) 회원정보 관리
개인정보 수정, 비밀번호 변경, 프로필 사진 업로드, 소속기관 및 학력 정보 관리,
회원 탈퇴 기능을 제공한다. 원서접수 또는 자격증 신청 이력이 있는 경우
탈퇴를 제한하여 데이터 무결성을 보장한다.
라) 계정 찾기
본인인증을 통한 아이디 찾기와 비밀번호 재설정 기능을 제공한다.

2) 시험(검정) 관리
가) 검정 일정 관리
연도별, 회차별 검정 일정을 등록하고 관리한다. 필기시험과 실기시험을 구분하며,
급수별(1급, 2급) 시험 정보를 체계적으로 관리한다.
나) 시험장 관리
시험장 정보 등록, 지역별 시험장 분류, 검정별 시험장 배정, 좌석 배치도 관리,
응시자 명부 출력 기능을 제공한다.
다) 시험 일정 조회
응시자에게 현재 연도 검정 일정, 접수 기간, 시험 일시, 시험 장소 등의 정보를
제공한다.

3) 원서접수
가) 다단계 접수 프로세스
시험 선택, 응시자 정보 입력, 서류 제출, 결제의 4단계 접수 절차를 제공한다.
각 단계별 입력 데이터를 세션에 임시 저장하여 중간 이탈 시에도 데이터를
보존한다.
나) 접수 자격 검증
중복 접수 방지, 부정행위자 2년 응시 제한, 필기시험 면제 기간(26개월) 자동
확인, 접수 기간 검증 등 다양한 자격 조건을 자동으로 검증한다.
다) 사진 업로드 및 검증
응시자 사진 업로드 시 Google Cloud Vision API를 활용하여 얼굴 인식 검증을
수행한다. 썸네일 자동 생성 기능을 포함한다.
라) 서류 제출
1급 실기 응시자를 위한 자격 증빙 서류 제출 기능을 제공하며, 관리자가
서류를 확인하고 승인/반려 처리할 수 있다.

4) 결제
가) 온라인 결제
KCP 결제 게이트웨이를 통한 신용카드 결제와 무통장 입금을 지원한다.
SOAP 기반 결제 승인 요청을 처리한다.
나) 결제 관리
결제 상태 추적(입금대기, 결제완료, 취소요청, 결제취소), 영수증 조회,
환불 처리 기능을 제공한다.

5) 시험 결과 및 자격증
가) 시험 결과 관리
관리자가 시험 결과를 등록하고, 합격 여부, 점수, 등급, 순위 정보를
관리한다. 결과 데이터의 엑셀 다운로드를 지원한다.
나) 자격증 발급
합격자의 자격증 발급 신청을 5단계(본인인증, 신청, 정보입력, 결제, 완료)로
처리한다. 자격증 번호 발급, 유효기간 관리, 배송지 정보 관리 기능을 포함한다.

6) 마이페이지
접수 현황(접수완료, 미결제, 입금대기 등), 결제 내역(최근 6개월), 자격증 신청
현황을 제공한다. 시험일까지의 D-day 계산 표시, 원서 수정 및 취소(시험 7일 전까지)
기능을 포함한다.

7) 문서 출력
수험표, 결제 영수증, 합격확인서를 온라인에서 출력할 수 있다.

8) 고객 지원
공지사항 관리(팝업 공지, 우선순위 설정), 협회 소식 관리, 고객 문의 접수 및
답변 처리 기능을 제공한다.

9) 교육훈련 관리
교육 이수자 정보를 엑셀 일괄 업로드로 등록하고, 회원별 누적 교육 시간을
추적 관리한다.

10) 응시자 일괄 등록
관리자가 엑셀 파일을 통해 응시자 정보를 일괄 등록할 수 있다.
Box Spout 라이브러리를 활용하여 대용량 엑셀 파일을 효율적으로 처리한다.


5. 아키텍처 설계

1) 백엔드 구조
가) MVC 패턴
CodeIgniter 프레임워크의 MVC(Model-View-Controller) 아키텍처를 기반으로
설계되었다. 컨트롤러가 요청을 수신하고, 모델을 통해 데이터를 처리한 후,
뷰를 통해 응답을 생성하는 명확한 계층 분리가 이루어져 있다.
나) 컨트롤러 계층
사용자 웹사이트는 기능별로 21개의 컨트롤러를 구성하여 단일 책임 원칙을
준수한다. 관리자 시스템은 공통 관리, 검정 관리(kaiwa/), 사용자 센터(ucp/)로
디렉토리를 분리하여 도메인별 관심사를 구분하였다.
다) 모델 계층
각 비즈니스 도메인별로 독립된 모델을 구성하여 데이터 접근 로직을 캡슐화하였다.
모든 데이터베이스 작업은 모델 계층을 통해서만 수행된다.
라) 뷰 계층
공통 템플릿(헤더, 푸터)과 기능별 뷰 폴더로 구성된다. Parser 라이브러리를
활용한 템플릿 렌더링을 지원한다.

2) 프론트엔드 구조
가) 반응형 디자인
PC, 태블릿, 모바일 세 가지 해상도에 대응하는 반응형 CSS를 적용하였다.
메인 페이지와 서브 페이지를 분리하여 디바이스별 최적화된 스타일을 제공한다.
나) 페이지별 스크립트 분리
회원관리, 원서접수, 자격증, 마이페이지, 결제, 로그인 등 기능별로 독립된
JavaScript 파일을 구성하여 유지보수성을 확보하였다.
다) 공통 스크립트 계층
공통 함수, 폼 처리, 페이지 초기화 등 공유 로직을 별도의 공통 스크립트로
분리하였다.

3) 라우팅 설계
CodeIgniter의 라우팅 시스템을 활용하여 RESTful 스타일의 URL 구조를 구현하였다.
원서접수(4단계), 자격증 발급(5단계) 등 다단계 프로세스에 대해 단계별 URL
매핑을 적용하였다. 파일 다운로드와 썸네일 이미지에 대한 별도의 라우팅 규칙을
설정하여 리소스 접근을 체계화하였다.

4) 데이터 접근 계층
CodeIgniter의 Active Record 패턴(Query Builder)을 사용하여 데이터베이스에
접근한다. SQL 인젝션 방지를 위해 파라미터 바인딩을 활용하며, 복잡한 조회는
다중 테이블 조인으로 처리한다. 데이터 변경 작업에는 트랜잭션을 적용하여
원자성을 보장한다.

5) 다중 데이터베이스 구성
관리자 시스템은 다중 데이터베이스 연결을 지원한다. 관리자 전용 데이터베이스,
서비스 메인 데이터베이스, 알림톡 로그 데이터베이스를 분리하여 운영하며,
각 모델에서 필요한 데이터베이스 연결을 선택적으로 사용한다.

6) 상태 관리
서버 측 세션을 활용하여 사용자 인증 상태, 원서접수 임시 데이터, 자격증 신청
임시 데이터를 관리한다. Tempdata(유효기간이 있는 임시 데이터)와
Flashdata(일회성 메시지)를 활용하여 프로세스 간 데이터를 안전하게 전달한다.


6. 인증 및 보안 아키텍처

1) 사용자 인증
가) 비밀번호 보안
비밀번호는 SHA-256 해시 알고리즘과 동적 Salt를 조합하여 암호화한다.
Salt는 회원가입 시 무작위로 생성되어 사용자별로 고유하게 적용된다.
나) 세션 기반 인증
로그인 성공 시 서버 측 세션에 사용자 식별 정보를 저장하여 인증 상태를
유지한다. 자동 로그인은 암호화된 쿠키를 통해 구현된다.
다) 본인인증 연동
회원가입, 아이디 찾기, 비밀번호 찾기, 자격증 신청, 계정 재인증 등
주요 절차에서 외부 본인인증 서비스(아이핀, 휴대폰 인증)를 통한 실명 확인을
수행한다. 각 용도별로 인증 설정이 분리되어 있다.

2) 관리자 인증
가) 이중 검증
아이디/비밀번호 인증에 추가하여 IP 주소 기반 접근 제어를 수행한다.
CIDR 방식의 IP 범위 지정을 지원하여 허가된 네트워크에서만 접속이 가능하다.
나) 비밀번호 암호화
관리자 비밀번호는 이중 SHA-1 해시를 적용하여 저장한다.

3) 권한 관리
가) 사용자 측 접근 제어
공통 라이브러리의 초기화 함수를 통해 페이지별 로그인 필수 여부를 설정한다.
데이터 접근 시 세션의 사용자 식별자와 데이터 소유자를 비교하여
본인 데이터만 조회할 수 있도록 제한한다.
나) 관리자 측 권한 체계
관리자 계정별 권한과 관리자 그룹별 권한의 이중 권한 구조를 운영한다.
메뉴 단위로 접근 권한을 설정하며, 시스템 관리자, 일반 관리자, 정산 관리자
등 역할별 권한 등급을 구분한다.
다) AJAX 요청 검증
관리자 시스템의 데이터 처리 요청에 대해 AJAX 요청 여부를 검증하여
직접 URL 접근을 차단한다.

4) 활동 로그
관리자 시스템의 주요 작업(회원 등록, 정보 수정, 검정 관리 등)에 대해
수행자, 작업 경로, 작업 내용, 시각을 기록하여 감사 추적을 지원한다.


7. 데이터 관리

1) 데이터베이스 구조
회원(user), 시험(test), 원서접수(application), 주문(order), 결제(payment),
시험결과(test_result), 자격증(certificate), 공지사항(notice), 고객문의(inquiry),
교육이력(training), 시험장배치(test_site_assign), 파일(files) 등의 핵심
테이블로 구성된다. 테이블 간 외래키 관계를 통해 데이터 정합성을 유지한다.

2) 트랜잭션 처리
회원가입, 원서접수, 결제 처리, 자격증 발급 등 데이터 무결성이 중요한 작업에
데이터베이스 트랜잭션을 적용한다. 작업 실패 시 자동 롤백하여 부분 저장을
방지한다.

3) 캐싱 전략
Memcached를 활용한 메모리 기반 캐싱을 지원한다. 세션 데이터 캐싱과
쿼리 결과 캐싱을 통해 반복적인 데이터베이스 접근을 줄이고 응답 속도를
향상시킨다.

4) 파일 관리
업로드 파일은 용도별로 분류하여 저장한다. 사용자 사진, 원서 사진, 원서 서류,
자격증 사진, 문의 첨부파일, 공지사항 첨부파일, 협회소식 파일 등 컨테이너
타입별로 디렉토리를 분리하여 관리한다. 파일 메타데이터(파일명, 디스크 파일명,
크기, 콘텐츠 타입)를 데이터베이스에 저장하여 체계적으로 관리하며, FTP를 통한
원격 파일 저장을 지원한다.

5) 코드 체계
시험과목, 학력, 상태값, 분류 등 시스템 전반에서 사용되는 코드를 별도의
코드 테이블과 코드 모델로 중앙 관리한다. 코드 정의서를 통해 모든 코드값의
의미를 문서화하여 일관성을 유지한다.


8. 테스트 전략

1) 폼 유효성 검증
서버 측에서 CodeIgniter의 Form Validation 라이브러리를 확장하여 아이디 형식,
비밀번호 강도, 이메일 형식, 전화번호 형식, 비밀번호 확인 일치 등 커스텀
검증 규칙을 적용한다. 클라이언트 측에서는 jQuery Validate를 통해 사용자
입력을 실시간으로 검증하여 서버 요청 전 오류를 방지한다.

2) 데이터 무결성 검증
원서접수 시 중복 등록 검증, 부정행위자 응시 자격 검증, 필기시험 면제 기간
검증, 접수 기간 검증 등 비즈니스 규칙에 따른 데이터 검증을 수행한다.
트랜잭션 상태 확인을 통해 데이터 저장의 성공 여부를 검증한다.

3) 환경 분리
개발(development), 테스트(testing), 운영(production) 환경을 분리하여
각 환경에 적합한 설정을 적용한다. 환경별 데이터베이스 연결, 오류 표시 수준,
디버그 모드 등을 독립적으로 관리한다.


9. 배포 환경

1) 웹 서버 구성
Apache 웹 서버에서 .htaccess를 통한 URL 리라이팅을 적용하여 검색 엔진
친화적인 URL 구조를 구현한다. 관리자 시스템은 별도의 서브도메인으로
분리하여 운영한다.

2) 환경 분리
환경 변수를 통해 개발, 테스트, 운영 환경을 구분하며, 각 환경별로 독립된
데이터베이스 연결 설정과 사이트 설정을 적용한다.

3) 파일 배포
FTP 기반의 파일 전송을 통해 사용자가 업로드한 파일을 운영 서버에 배포한다.
업로드 파일 저장소와 웹 애플리케이션 서버를 분리하여 운영할 수 있는
구조를 갖추고 있다.

4) 의존성 관리
Composer를 통해 PHP 라이브러리 의존성을 관리하며, vendor 디렉토리에
외부 라이브러리를 포함하여 배포한다.


10. 기술적 우수성

1) 아키텍처 측면
가) 명확한 계층 분리
MVC 패턴에 기반한 컨트롤러, 모델, 뷰의 역할 분리가 명확하게 이루어져
있으며, 비즈니스 로직과 데이터 접근 로직의 관심사가 분리되어 있다.
나) 모듈화된 구성
기능별로 독립된 컨트롤러와 모델을 구성하여 단일 책임 원칙을 준수하고,
코드의 재사용성과 유지보수성을 확보하였다.
다) 공통 라이브러리 활용
인증 검증, 메뉴 관리, 로깅, 파일 업로드 등 공통 기능을 라이브러리로
추출하여 코드 중복을 최소화하고 일관된 동작을 보장한다.

2) 신뢰성 측면
가) 데이터 무결성 보장
핵심 업무 처리에 데이터베이스 트랜잭션을 적용하여 데이터의 원자성,
일관성, 격리성, 지속성을 보장한다.
나) 본인인증 기반 신원 확인
자격검정의 공정성을 위해 회원가입, 원서접수, 자격증 발급 등 주요 절차에
공인 본인인증 서비스를 연동하여 실명 확인을 수행한다.
다) 부정행위 방지 체계
부정행위자에 대한 자동 응시 제한(2년), 사진 얼굴 인식 검증 등 자격검정의
신뢰성을 확보하기 위한 기술적 장치를 구현하였다.

3) 사용자 경험 측면
가) 반응형 웹 디자인
PC, 태블릿, 모바일 환경에 최적화된 반응형 레이아웃을 제공하여 다양한
디바이스에서 일관된 사용 경험을 보장한다.
나) 다단계 폼 프로세스
원서접수(4단계)와 자격증 발급(5단계) 등 복잡한 절차를 단계별로 분리하고
중간 데이터를 세션에 보존하여 사용자의 입력 부담을 줄이고 이탈 시
데이터 손실을 방지한다.
다) 실시간 유효성 검증
클라이언트 측 폼 검증을 통해 입력 오류를 즉시 안내하며, AJAX 기반의
비동기 처리로 페이지 새로고침 없이 데이터를 처리한다.
라) 문서 출력 지원
수험표, 영수증, 합격확인서 등 필수 문서를 인쇄 전용 스타일로 출력할 수
있도록 별도의 인쇄 CSS를 적용하였다.

4) 확장성 측면
가) 외부 서비스 연동 구조
결제(KCP), 본인인증(IPIN/PCC), 이미지 분석(Google Cloud Vision),
메시지 발송(카카오 알림톡) 등 외부 서비스를 독립된 라이브러리로 캡슐화하여
서비스 교체나 추가가 용이한 구조를 갖추고 있다.
나) 설정 기반 운영
사이트 설정, 결제 설정, 본인인증 설정, 페이지네이션 설정 등을 독립된
설정 파일로 관리하여 코드 수정 없이 운영 환경을 조정할 수 있다.
다) 다중 데이터베이스 지원
서비스 데이터베이스와 관리자 데이터베이스를 분리하고, 필요에 따라
데이터베이스 연결을 추가할 수 있는 구조를 갖추고 있다.

5) 관리 효율성 측면
가) 엑셀 기반 일괄 처리
응시자 등록, 교육 이수자 등록, 시험 결과 다운로드 등 대량 데이터 처리를
엑셀 파일 업로드/다운로드로 지원하여 관리 업무의 효율성을 높였다.
나) 활동 로그 기반 감사 체계
관리자의 주요 활동을 자동으로 기록하여 운영 이력을 추적하고
책임 소재를 명확히 할 수 있다.
다) 이중 권한 관리
관리자 개인별 권한과 그룹별 권한을 조합하는 유연한 권한 체계를 통해
세밀한 접근 제어가 가능하다.

(주)한국스마트솔루션 | 안성호 대표 | 서울특별시 마곡중앙6로 63 6F

사업자등록번호 161-81-02563

© 2025 Korea Smart Solution co.ltd. All rights reserved.

bottom of page