성용의 테크 & 사역 노트
BLOG
blog.dreamsoft21.kr · 드림소프트 공식 기술·에세이 블로그
전체 글
9
웹·아키텍처
모바일 앱
AI·보안·인프라
사역·칼럼
방명록
글쓰기
드림소프트 홈 ↗
TISTORY-STYLE SMART EDITOR
포스트 수정 (#2)
← 목록으로 돌아가기
카테고리 분류
[테크 · 구축기 (Engineering)] 웹 플랫폼 · 아키텍처
[테크 · 구축기 (Engineering)] 모바일 앱 · 스토어 출시
[테크 · 구축기 (Engineering)] AI · 보안 · 인프라
[일상 · 사역 · 칼럼 (Essay)] 생각 노트 · 사역 칼럼
발행일 (YYYY-MM-DD)
읽는 시간(분) / 고유 슬러그(선택)
H2 대제목
H3 소제목
|
B
굵게
`코드`
|
“ 인용구
💡 콜아웃 박스
</> 코드블록
• 목록
## 입력 시 본문 상단 목차(TOC)가 자동 생성됩니다
> **“한국에서는 0.2초 만에 열리는 웹페이지가, 인도 람강가(Ramganga) 강의실에서는 왜 30초 넘게 멈춰 있을까?”** > 2025년 개교한 드림인도신학교(DITS) 학사관리시스템(LMS)을 설계하며 가장 먼저 마주한 질문이었습니다. ## 1. 외부 CDN 0건(Zero-CDN) 원칙과 523KB 자체 폰트 서브셋 일반적인 웹사이트는 Google Fonts, 외부 CSS 프레임워크 CDN, 분석 스크립트 등 수십 개의 외부 도메인에 연결합니다. 하지만 인도 외곽 지역의 불안정한 회선에서는 외부 DNS 조회와 TLS 핸드셰이크 하나하나가 치명적인 병목이 됩니다. 게다가 개인정보처리방침상 제3자 국외 이전이나 추적 쿠키를 원천 배제해야 했습니다. 그래서 DITS LMS는 **외부 네트워크 호출을 단 1건도 허용하지 않는 Zero-CDN 아키텍처**로 설계되었습니다. - **로컬 서브셋 폰트 3종 (합계 523KB)**: `Noto Sans Bengali DITS`, `Noto Serif KR DITS`, `Newsreader DITS`를 자체 서브셋팅하여 서버에서 직접 서빙 - **로컬 이진 탐색 GeoIP (`geo_ranges.php`)**: 외부 IP 조회 API 없이 한국(`KR` → 한국어)과 인도(`IN` → 벵골어) IP 대역을 로컬에서 즉시 판별 - **인라인 SVG 학교 문장(`crest()`)**: 고해상도 이미지 다운로드 없이 벡터 그래픽으로 즉시 렌더링 ## 2. 한·영·벵골(`ko`·`en`·`bn`) 출력 가로채기 번역 파이프라인 한국 파송 교수진은 한국어로 강의와 문제를 출제하고, 인도 현지 행정처와 신학생들은 영어와 벵골어(Bengali)로 학사 시스템을 이용합니다. 템플릿을 3벌로 나누면 유지보수 중 반드시 학사 로직이 어긋나게 됩니다. ``` [단일 PHP 학사 뷰 렌더링] ──► ob_start() 출력 버퍼 캡처 │ ├──► <x-nt> 보호 영역 (학생·교수 이름, 시험 답안, Q&A 원문) 분리 보존 ├──► inc/i18n.php 사전 (문자열 길이 내림차순 정렬) 일괄 치환 └──► 최종 ko / en / bn HTML 응답 반환 ``` 특히 배포 전 Git `pre-receive` 관문에서 `i18n_guard.php`가 자동 실행되어, 사전에 등록되지 않은 신규 문구가 있거나 정의서(`spec_guard.py`)와 어긋나면 배포 자체를 차단하도록 이중 안전장치를 두었습니다. ## 3. 아에타(AETA) 인준 기준 준수와 3겹 출석·하트비트 검증 2025년 12월 아에타(AETA) 정식 인준 학위과정(`DIPLOMA`, `B.Th`, `M.Div`) 운영을 위해 학사 데이터의 무결성을 서버가 직접 보장합니다. - **출석 3겹 원칙**: ① 종이 자필 서명부 스캔본 보존 → ② 강의실 화면의 **30초 회전 6자리 입·퇴실 코드** 체크 → ③ 교수의 최종 확정(`prof.php`)이 있어야만 출석으로 인정됩니다. - **서버 시계 기반 하트비트 측정**: 클라이언트 타이머 조작을 막기 위해 30초 간격 하트비트를 오직 서버 시각으로만 계산하며, 10분 이상 무응답 시 자리비움으로 간주합니다. - **HMAC-SHA256 서명 미디어 게이트**: 강의 영상 원본은 웹루트 밖에 격리하고, 서명 및 저작권 상태 검증을 통과한 요청만 Nginx `X-Accel-Redirect`로 안전하게 스트리밍합니다. !> **엔지니어링 요약**: 가장 앞선 기술은 화려한 프레임워크가 아니라, 현장의 가장 열악한 네트워크 환경에서도 학생이 배움을 멈추지 않게 만드는 단단한 기본기입니다.
대표 썸네일 프리셋 선택
신차사자 (SINSA) (/assets/ref/sinsa.jpeg)
키즈스텝 (KidsStep) (/assets/ref/kidstep.jpeg)
드림인도신학교 (DITS) (/assets/ref/dits.jpeg)
아하수학 (AhaMath) (/assets/ref/ahamath.jpeg)
밥친구 (BobChingu) (/assets/ref/bobchingu.jpeg)
런닝친구 (RunningChingu) (/assets/ref/runchingu.jpeg)
공부친구 (StudyChingu) (/assets/ref/studychingu.jpeg)
냉장고 파먹기 (FridgeCook) (/assets/ref/fridgecook.jpeg)
위시팟 (WishSpot) (/assets/ref/wishspot.jpeg)
LS Inside 3D AIOps (/assets/ref/lsinside.jpeg)
DreamSOC 5-Layer 보안 (/assets/ref/dreamsoc.jpeg)
꿈이있는교회 (/assets/ref/dream21.jpeg)
예장합동 의산노회 (/assets/ref/euisan.jpeg)
에이스정보통신연구원 (AIIS) (/assets/ref/aiis.jpeg)
굿컴 (GoodCom) (/assets/ref/goodcom.jpeg)
SMI 사역연구소 (/assets/ref/smi.jpeg)
빛다은 (BitDaeun) (/assets/ref/bitdaeun.jpeg)
태그 입력 (쉼표 `,`로 구분)
목록 요약문 (비워두면 본문에서 자동 추출)
공개 발행
블로그 상단 대표글(Featured) 지정
수정 완료