전자정부 표준 프레임워크란?

전자정부 표준 프레임워크는 쉽게 말해 정부기관에서 관리하는 Java 기반 오픈 소스 프레임워크이다.

행정안전부 산하 한국정보화진흥원에서 만든 웹 기반 어플리케이션 프레임워크로서 Java, Spring 프레임워크, 대표 Java 라이브러리(iBatis/MyBatis, Jackson, Apache Commons)등으로 구성되어있다.

그때그때 조건에 따라 발주가 가능하기에 최초 개발사가 유지보수를 하지 않더라도 다른 개발사에서 이어받아서 유지보수가 가능하게 된다.

개인이나 개발사에서 중구난방으로 플러그인을 적용하는 것을 방지하고 공통적인 체계를 구축함으로써 공공, 민간 기업 SW의 안정성을 유지한다.

좀 옛날 겁니다.

좀 옛날 겁니다.

5년 사이에 만들어진 건 대부분 3.9 이상일 겁니다.

5년 사이에 만들어진 건 대부분 3.9 이상일 겁니다.


실전에서 본 결과, 국밥 같은 존재임..

몇 년 전 전자정부 표준 프레임워크를 처음 접했을 땐 솔직히 "정말 이걸 써야만 하나?"라는 의문이 들었다. 특히나 MyBatis와 XML 기반 SQL 작성 방식은 익숙해지기 전까진 뭔가 구식처럼 느껴졌던 게 사실이다. 하지만 eGov를 적용하지 않은 프로젝트들을 몇몇 진행하다보니, 공공 프로젝트에서의 일관성과 안정성이라는 강점이 확실히 다가왔다.

최근에 공공 프로젝트를 하면서 JPA(Entity 기반 데이터 처리)와 MyBatis를 비교할 기회가 있었다. 간단한 CRUD 작업에서는 JPA가 훨씬 편리하고, 코드도 깔끔했다. 하지만 JPA를 사용하는 과정에서 복잡한 연관 관계 매핑이나 Lazy, Eager 로딩 문제를 다룰 때는 예상보다 어렵게 느껴졌다.

특히, 성능 최적화가 필요한 경우엔 MyBatis처럼 SQL을 직접 제어할 수 있는 방식이 훨씬 직관적이었다.

"JPA는 유지보수가 더 쉽다"는 의견이 많지만, 실제로는 프로젝트 상황과 팀원의 숙련도에 따라 다를 수 있다는 점을 실감했다. 복잡한 요구사항을 다루는 공공 프로젝트에서는 MyBatis의 단순하고 명확한 방식이 더 적합한 경우도 많았다.

eGov 적용 전 후 차이

eGov 적용 전 후 차이

Spring 기반, 대규모 데이터 처리와 복잡한 쿼리 거뜬히 지원 👍

프레임워크의 기반은 Spring Framework. 덕분에 기본적인 DI(Dependency Injection)나 AOP 같은 개념은 그대로 가져갈 수 있어서 익숙했다. 그런데 기본적으로 얹혀진 템플릿과 구조가 다소 무겁게 느껴졌다. 특히, MyBatis 중심의 XML SQL 작성은 처음엔 답답했지만, 대규모 데이터 처리나 복잡한 쿼리를 짤 땐 의외로 강력했다. 특히, XML로 쿼리를 작성하면 데이터베이스의 세부적인 동작을 완전히 통제할 수 있었고, 이는 공공 프로젝트에서 큰 장점으로 다가왔다.

단점은 없냐고? 단점도 분명히 존재한다

전자정부 표준 프레임워크는 안정성과 표준화를 위한 도구로 설계되었지만, 그로 인해 몇 가지 단점도 있다.

  1. 경직된 구조: 공공 프로젝트에 초점을 맞추다 보니 최신 기술을 반영하기 어려운 경향이 있다. 이는 Java와 Spring으로 지나치게 획일화된 환경을 초래하기도 한다.
  2. 한국 SW 시장의 SI 편중: 국내 소프트웨어 시장은 SI(시스템 통합) 위주로 돌아가고 있어, 전자정부 프레임워크를 중심으로 한 기술 다양성이 부족하다. 이는 장기적으로 기술 발전을 저해할 수 있다.
  3. Java 의존성: 오라클의 Java 라이선스 정책 변화로 인해 Java에서 이탈하는 기업이 늘어나고 있다. 전자정부 표준 프레임워크가 Java에 의존하는 만큼, 이 문제는 장기적인 과제로 남아 있다.

그럼에도 불구하고, 현 상황에서 대안이 마땅하지 않아 앞으로도 한국 기업에서는 전자정부 표준 프레임워크가 계속 사용될 가능성이 높다. 결국, 익숙해지는 것 외엔 방법이 없다는 점에서 아쉬움이 남는다.

현실적인 고민: 유연성 vs 표준성

eGov는 표준성이 뛰어난 대신 유연성은 좀 떨어지는 건 사실이다. "표준"이라는 단어에 걸맞게 이 프레임워크를 쓰면 일정한 구조를 따라야 하고, 내가 원하는 최신 기술을 바로 적용할 수 없다는 한계는 있었다. 하지만 시간이 지나면서 느낀 건, 체계적이고 직관적인 구조 덕분에 개발 속도가 빨라지고, 유지보수가 쉬워졌다는 점이다. 특히 초급 개발자라면 이 구조가 길잡이 역할을 해주기 때문에 더 유용할 것 같다.(중,고급개발자에게도 이 체계성이 이점임)

한 줄 결론