"컴퓨터실 40대 PC를 관리하는 교사나 정보 담당관에게 가장 고통스러운 작업은 학기 초마다 40대의 모니터 앞을 일일이 돌아다니며 필수 수업 탭을 열고, 도구 모음을 배치하는 수작업입니다. ZeliConfig는 단 2개의 선언적 XML 파일과 LINQ to XML 메타데이터 검증 파이프라인을 통해, 중앙 마스터 이미지나 USB 배포 한 번으로 40대 전 단말기의 초기 워크스페이스를 0초 만에 완벽 동기화하는 제로터치 거버넌스를 실현합니다."
1. 컴퓨터실과 전산실의 배포 악몽: 40대 PC의 파편화된 환경 설정과 교사의 끝없는 수작업
초·중·고등학교 컴퓨터실, AI 디지털교과서(AIDT) 전용 실습실, 대학 소프트웨어 실습실, 그리고 군 전산 교육장은 수십 대에서 수백 대의 PC가 동일한 수업 목표를 위해 동시에 운용되는 집단 실습 환경입니다. 그러나 실제 현장에서는 다음과 같은 심각한 환경 파편화 문제가 반복됩니다:
- 끝없는 수동 클릭과 시간 낭비: 수업에 필요한 AI 도구(ZeliAI, ChatGPT, Claude 등)와 학내 LMS 주소를 40대 PC의 브라우저 북마크에 등록하기 위해 교사가 방과 후에 수시간 동안 개별 PC를 직접 조작해야 합니다.
- 학생들의 임의 조작으로 인한 환경 붕괴: 이전 수업 시간에 학생들이 필수 탭을 닫아버리거나 즐겨찾기 순서를 어지럽혀 놓으면, 다음 수업 시작 시 교사는 "선생님, 화면에 아무것도 없어요"라는 학생들의 문의에 시달리며 수업 시작 10분 이상을 허비하게 됩니다.
- 복잡한 중앙 관리 솔루션의 높은 비용과 무거움: 상용 MDM(모바일 기기 관리)이나 엔터프라이즈 AD(Active Directory) 그룹 정책(GPO)은 설정이 매우 복잡하고 고가의 라이선스가 필요하며, 학교 폐쇄망이나 망분리 환경에서는 정상 작동하지 않는 경우가 많습니다.
- 비전문가를 배려하지 못한 설정 포맷: JSON이나 레지스트리 바이너리는 괄호 하나나 쉼표 오타만으로도 전체 구문 에러를 유발하여, 코딩에 익숙하지 않은 교사들이 직접 설정을 커스터마이징하기 어렵습니다.
| 비교 항목 | 상용 엔터프라이즈 MDM / GPO | 수동 브라우저 북마크 설정 | ZeliDesk ZeliConfig 선언적 아키텍처 |
|---|---|---|---|
| 배포 방식 | 도메인 서버 구축, 에이전트 설치 필수 | 40대 PC 개별 방문 수동 클릭 | XML 파일 2개 복사 / 마스터 이미지 0초 반영 |
| 오타 및 손상 방어 | 정책 배포 실패 시 침묵 또는 오류 로그 | 관리 체계 없음 | HasToolMeta 교차 검증 & 하드코딩 폴백 100% 기동 |
| 편집 용이성 | 전용 콘솔 및 관리자 권한 필수 | 개별 브라우저 GUI | 메모장으로 1분 만에 태그 수정 가능한 직관적 XML |
| 폐쇄망(Air-Gap) 호환 | 중앙 서버 통신 불능 시 오작동 | 로컬 한정 | 완전 오프라인 온디바이스 동작, 외부 텔레메트리 0회 |
2. 2대 핵심 선언적 스키마: HJHinit_BrowserTab & HJHinit_UtilList
ZeliConfig는 애플리케이션의 핵심 작업 영역을 두 가지 선언적 XML 스키마로 분리하여 관리합니다.
이 파일들은 AppContext.BaseDirectory/ZeliConfig/ 하위에 위치하여 인스톨러나 파일 복사만으로 즉시 교체할 수 있습니다.
① HJHinit_BrowserTab.xml: 상단 브라우저 탭 및 서랍(Drawer) 초기 구성
앱 최초 실행 시 브라우저 탭 바에 표시될 서비스 목록과 닫기 금지 플래그, 오로라 글로우 효과, 햄버거 메뉴(서랍) 카테고리의 초기 접힘(collapsed) 상태를 선언합니다.
<?xml version="1.0" encoding="utf-8"?>
<ZeliConfig>
<BrowserTabs>
<!-- 기본 필수 탭: closable="false"로 학생들의 임의 종료 방지, glow="true"로 오로라 효과 -->
<Tab name="ZeliAI" url="https://zeliai.com"
icon="Z" color="#00D2FF" glow="true" closable="false" />
</BrowserTabs>
<DrawerDefaults>
<!-- 학생들의 인지 부하 감소를 위해 고급 도구는 초기에 접힌 상태로 제공 -->
<Category name="AI 서비스" collapsed="true" />
<Category name="시스템 도구" collapsed="false" />
<Category name="개발자 도구" collapsed="false" />
<Category name="네트워크 도구" collapsed="false" />
<Category name="하드웨어 설정" collapsed="false" />
</DrawerDefaults>
</ZeliConfig>
② HJHinit_UtilList.xml: 상단 퀵런치 바 고정 유틸리티 우선순위
72종의 방대한 ZeliDesk 유틸리티 중 수업 현장에서 가장 자주 쓰이는 핵심 도구 8~10종을 상단 퀵런치 바에 왼쪽부터 순서대로 고정 배치합니다.
<?xml version="1.0" encoding="utf-8"?>
<ZeliConfig>
<QuickLaunchDefaults>
<!-- 왼쪽에서 오른쪽 순으로 배치되는 유틸리티 식별 태그 -->
<Util tag="zeligen" />
<Util tag="zelioffice" />
<Util tag="zelifolder" />
<Util tag="zelinote" />
<Util tag="zelifind" />
<Util tag="zeliclip" />
<Util tag="zeliping" />
<Util tag="zelissh" />
<Util tag="zelisnap" />
</QuickLaunchDefaults>
</ZeliConfig>
3. 메타데이터 교차 검증: LINQ to XML과 HasToolMeta 무결성 안전망
현장 교사가 XML 파일을 직접 메모장으로 수정하다가 존재하지 않는 태그(예: 오타 <Util tag="zelinotee" />)를 적거나 중복 태그를 넣는 실수를 범할 수 있습니다.
ZeliConfig 로더는 LINQ to XML (XDocument) 파이프라인 상에서 실시간 메타데이터 필터링을 집행합니다.
private List<string> LoadDefaultPinsFromXml()
{
try
{
string xmlPath = System.IO.Path.Combine(
AppContext.BaseDirectory, "ZeliConfig", "HJHinit_UtilList.xml");
if (System.IO.File.Exists(xmlPath))
{
var doc = XDocument.Load(xmlPath);
// 1. tag 추출
// 2. null/빈문자열 제거
// 3. HasToolMeta(t) 사전 검증으로 미지원 태그 원천 탈락
// 4. Distinct() 중복 제거
var tags = doc.Descendants("Util")
.Select(el => el.Attribute("tag")?.Value)
.Where(t => !string.IsNullOrEmpty(t) && HasToolMeta(t))
.Distinct()
.ToList();
if (tags.Count > 0)
{
System.Diagnostics.Debug.WriteLine(
$"[ZeliConfig] HJHinit_UtilList.xml 로드 완료: {string.Join(", ", tags)}");
return tags;
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(
$"[ZeliConfig] HJHinit_UtilList.xml 로드 실패 → 폴백 사용: {ex.Message}");
}
// 파일이 깨졌거나 삭제되었을 때의 절대 안전망: 하드코딩 기본값 0초 Fallback
return _defaultPinsFallback.Split('|').ToList();
}
위 파이프라인의 핵심은 HasToolMeta(t)입니다. 내부 딕셔너리에 등록되지 않은 유효하지 않은 식별자는 UI 바인딩 전에 완벽히 제거되므로, UI 상에 빈 아이콘이나 깨진 버튼이 노출되는 렌더링 결함을 0%로 방지합니다.
4. 동적 UI 주입: 닫기 금지(closable=false)와 ZeliAI 오로라 글로우 렌더링
HJHinit_BrowserTab.xml을 파싱할 때 ZeliDesk는 단순히 URL을 로딩하는 것을 넘어, 수업 환경 통제를 위한 고급 UI 속성을 인스턴스화합니다:
private void LoadBrowserTabsFromXml()
{
try
{
string xmlPath = System.IO.Path.Combine(
AppContext.BaseDirectory, "ZeliConfig", "HJHinit_BrowserTab.xml");
if (!System.IO.File.Exists(xmlPath)) return;
var doc = XDocument.Load(xmlPath);
var tabs = doc.Descendants("Tab").ToList();
if (tabs.Count == 0) return;
foreach (var tabEl in tabs)
{
string name = tabEl.Attribute("name")?.Value;
string url = tabEl.Attribute("url")?.Value;
string icon = tabEl.Attribute("icon")?.Value ?? "🌐";
string color = tabEl.Attribute("color")?.Value ?? "#808080";
bool isGlow = tabEl.Attribute("glow")?.Value == "true";
bool isClosable = tabEl.Attribute("closable")?.Value != "false";
if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(url)) continue;
// closable=false ➔ TabViewItem.IsClosable = false 바인딩 (수업 탭 보호)
// glow=true ➔ Aurora Gradient Brush 배경 합성
var tabItem = CreateBrowserTab(name, url, icon, color, isGlow, isClosable);
TabViewControl.TabItems.Add(tabItem);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"[ZeliConfig] 탭 로드 실패: {ex.Message}");
}
}
closable="false" 속성이 지정된 탭은 TabViewItem 헤더의 우측 [X] 닫기 버튼 자체가 생성되지 않습니다.
이를 통해 학생들이 수업 도중 실수로 실습용 AI 탭을 닫아버려 수업 진도를 놓치는 사고를 하드웨어/OS 수준에서 원천 차단합니다.
5. 2단계 계층형 영속성 (Two-Tier State Hierarchy): 초기 템플릿과 로컬 커스텀의 조화
선언적 설정이 너무 강력하여 사용자가 직접 바꾼 설정을 매번 덮어써 버린다면 개인화의 이점이 사라집니다. ZeliDesk는 선언적 템플릿(XML) ➔ 런타임 로컬 영속화(LocalSettings)의 정교한 2단계 계층 구조를 채택했습니다:
[최초 설치 / 초기화 실행]
│
▼
ZeliConfig/*.xml 로드 ──▶ HasToolMeta 무결성 검증 ──▶ 초기 UI 렌더링
│
▼
사용자 커스텀 (드래그앤드롭 퀵런치 순서 변경, 새 탭 추가)
│
▼
ApplicationData.Current.LocalSettings에 원자적 저장
│
▼
[이후 일상 기동] ──▶ LocalSettings 우선 로드 (개인화 유지)
[초기화 버튼 클릭] ──▶ LocalSettings 클리어 ➔ XML 템플릿으로 0초 복구
이 아키텍처 덕분에 평소에는 사용자가 편의에 맞게 퀵런치 아이콘을 재배치하며 자유롭게 사용하다가도, 새 학기가 시작되거나 컴퓨터실 실습 환경을 원래 상태로 되돌리고 싶을 때는 '설정 초기화' 클릭 한 번으로 XML 원본 상태로 즉각 롤백(Rollback)할 수 있습니다.
6. 공교육 AIDT & 국방 전산실 B2B/B2G 도입 효과 및 향후 로드맵
ZeliConfig의 제로터치 선언적 아키텍처는 공공 교육망 및 국방 전산 환경에서 막대한 운영 효율성을 입증하고 있습니다:
- 컴퓨터실 세팅 시간 99% 단축: 40대 PC의 브라우저 및 유틸리티 세팅에 소요되던 3시간 이상의 작업을, XML 파일이 포함된 패키지 원클릭 배포로 단 10초 만에 완료합니다.
- 인프라 종속성 0개: 무거운 중앙 도메인 서버나 외부 SaaS 관리 도구 없이, 로컬 XML 파일 단 2개만으로 폐쇄망(Air-Gap) 군부대 및 학교 전산실에 즉시 적용 가능합니다.
- 장애 없는 100% 가용성: 교사가 XML에 오타를 내거나 태그를 지우더라도 하드코딩 폴백 메커니즘이 작동하여 프로그램 실행 불가(크래시) 사태가 발생하지 않습니다.
- ZeliDesk.Server와의 정책 동기화 확장: 로컬 XML뿐만 아니라 학내 로컬 캐시 서버(`ZeliDesk.Server`)에서 최신 정책 XML을 서명 검증 후 자동 다운로드하는 옵션 제공.
- 교과목별 템플릿 프로파일러 탑재: '정보 과목 실습 모드', '인공지능 실습 모드', '교무행정 모드' 등 교과별 맞춤형 XML 프리셋 원클릭 전환 파이프라인 구축.
- JSON-Schema 및 XSD 실시간 유효성 감사기 연동: ZeliYaml(#930) 및 ZeliJson(#937) 엔진과 연계하여 설정 파일 변경 시 문법 오류를 사전에 하이라이트하는 GUI 에디터 제공 예정.
단순한 환경 설정을 넘어, 대규모 디지털 교육 현장의 수업 준비 시간을 제로(0)로 수렴시키는 선언적 워크스페이스 오케스트레이션—ZeliDesk가 온디바이스 유틸리티 공학으로 실현하는 공교육 관리의 표준입니다.