전자정부 프레임워크

"대한민국 공공부문 정보화 사업 시 플랫폼의 표준화와 중복 투자 방지를 목적으로 구축된 표준 프레임워크."

— 행정안전부 표준 규격서 첫 페이지에 위엄 있게 명시된 공식적인 제정 의도.

경험 필수라는 채용 공고 하나로 수십만 대한민국 SI 개발자들을 Spring 3.x/4.x 버전의 레거시 감옥에 평생 가두고 고혈을 짜내는 국내 자바 시장의 절대 규칙. 이 프레임워크의 XML 환경 설정 파일을 열어보고 있으면 21세기 대한민국 한복판에서 조선시대 유교 경전을 해독하는 기괴한 감각에 사로잡힌다(...)

1. 개요

전자정부 프레임워크(eGovFrame)는 대한민국 행정안전부 주도로 개발된 자바([Java]) 기반 표준 개발 프레임워크이다. 공공 정보화 사업을 발주할 때 대기업과 중소 SI 업체들이 매번 중복으로 아키텍처를 개발하는 낭비를 줄이고, 중소기업 위주의 하도급 생태계를 보호하며 시스템 상호 호환성을 유지하겠다는 취지로 화려하게 도입되었다.

기술적으로는 글로벌 표준인 스프링 프레임워크를 한국 공공 사업 구격에 맞춰 커스텀 래핑한 솔루션이다. 대한민국 정보화 사업 제안 요청서(RFP)에 반드시 이 프레임워크를 사용해야 한다는 조항이 기본 탑재되기 때문에, 대한민국 IT 바닥에서 일하는 백엔드 개발자라면 싫든 좋든 반드시 마주칠 수밖에 없는 운명의 연결고리다.(...)

2. 한국 SI 생태계의 기둥이자 족쇄

2.1. 스프링을 묶은 거대한 공공 패키지

전자정부 프레임워크는 단순히 스프링 코어만 제공하는 것이 아니라, 공공 웹 서비스에 필수적인 회원 가입, 로그인, 게시판, 권한 관리 등 수십 가지의 공통 컴포넌트를 미리 구현해 무상 탑재했다. 개발자는 그저 다운로드 받아서 비즈니스 로직만 채워 넣으면 그만이기에 생산성 측면에서는 확실한 규격의 효과를 보았다.

그러나 문제는 이 공통 컴포넌트가 급변하는 현대 웹 기술 트렌드를 전혀 쫓아가지 못하고 유구한 자바 스프링 구버전에 머물러 있었다는 점이다. 스프링 부트(Spring Boot)와 어노테이션 기반 설정이 대세가 된 시대에도 여전히 XML 파일 수십 개에 빈(Bean) 설정을 구구절절 기재해야 하는 '옛날 코딩 스타일'을 오랫동안 강요당했다.1

2.2. HWP 산출물 지옥과 폭포수 모델

공공 사업의 본질은 코딩 자체보다 발주처 공무원과 감리 위원들을 만족시키기 위한 엄청난 문서 작업이다. 전자정부 프레임워크의 개발 표준 절차를 준수했음을 증명하기 위해 분석, 설계, 구현 단계마다 요구사항 정의서, 클래스 설계서, 테이블 정의서 등 수백 장의 아래한글(.hwp) 문서를 깎아내야 한다. 이 때문에 현직 개발자들은 '내가 코드를 짜는 코더인지 행정 서류를 대행하는 타이피스트인지 회의감이 밀려온다'며 자조 섞인 눈물을 흘린다.

3. 전자정부 프레임워크 관련 대한민국 SI 드립

3.1. SI 3대 보물 (Ctrl + C, Ctrl + V, eGov)

한국 SI 업계에서 촉박한 프로젝트 기한을 맞추기 위해 사용되는 불문율의 개발 기법이다. 이미 구동되는 다른 공공 프로젝트의 전자정부 프레임워크 템플릿 코드를 가져와 복사 붙여넣기 신공으로 눈앞의 컴파일 에러를 수리하는 무서운 행위다. 이 복사 붙여넣기의 파편화 덕분에, 겉으로는 공공기관 사이트가 다 달라 보이지만 백엔드 에러 코드를 까보면 하나같이 동일한 egovframework.com... 패키지 에러를 뿜어내는 통일된 광경을 선사한다.(...)

3.2. 감리님과의 영혼의 티키타카

공공 프로젝트 완료 단계에서 외부 전문가들이 시스템 품질을 검증하는 '감리(Auditing)' 과정에서 흔히 일어나는 갈등 상황이다. 감리 위원이 '표준 프레임워크 가이드를 준수하지 않았다'라며 트집을 잡으면, 개발자는 기능적 무관함을 정중하게 어필하거나 밤을 새워 코드를 공공 가이드 규격으로 롤백해 감리 도구를 통과시키는 눈물겨운 기교를 부린다. 이 대환장 파티 끝에 통과된 코드는 실무적으로 아무도 건드리지 못하는 성역이 된다.

4. 여담

  • 해외 수출의 자랑: 대한민국 정부는 이 전자정부 프레임워크를 개발도상국(동남아, 아프리카 등)의 정부 포털 및 전자행정 시스템 구축 사업에 패키지로 엮어 수출하는 등 쾌거를 이루어냈다. 본토의 자바 개발자들은 '해외 개발자들에게도 우리의 지옥을 맛보여주었다'며 짖궂은 웃음을 터뜨리기도 한다.2
  • 스프링 부트 지원의 전향: 유저들의 끊임없는 민원과 원성에 마침내 굴복한 행안부는 최근 4.x 버전 이후부터 스프링 부트(Spring Boot) 기반의 개발 환경을 공식 지원하기 시작했다. 이 덕분에 마침내 한국 공공 시스템 백엔드 코드에서도 거추장스러운 XML 지옥에서 벗어나 @RestController 같은 우아한 최신 문법을 숨 쉬듯 쓸 수 있게 되었다.
  • 마스코트 부재: 비영리 리눅스나 타 오픈소스 재단과 달리 공무원 주도의 국가 표준 스펙이다 보니 이렇다 할 전용 마스코트나 밈적인 캐릭터가 전무하다. 굳이 꼽자면 국가종합전자조달 시스템인 '나라장터' 사이트 로고나 정부 공식 태극 문양이 마스코트 역할을 대신하고 있어, 보는 것만으로도 개발자들을 긴장하게 만드는 신비한 아우라를 뿜어낸다.

5. 관련 문서

각주

  1. 실제로 최신 프론트엔드 프레임워크(React 등)와 연동해 단지 JSON API만 넘겨주는 단순 백엔드 역할을 짤 때도, 공공 표준이라는 조항 때문에 무거운 스프링 JSP 기반 서버 템플릿을 억지로 올리는 비효율이 오랫동안 이어졌다.

  2. 수출용 문서와 가이드라인은 모두 영문화되어 공개되었으며, 수출 사업을 수주한 중소 SI 개발자들이 현지 아프리카나 남미 출장을 가 밤새 서버를 세팅하는 애환의 스토리가 숨어 있다.