Delphi 2010과 Entera 개발

Entera라는 미들웨어 서버가 있습니다. 요즘은 뭐 그닥 대세는 아닙니다만, 90년대 말부터 2000년대 초까지 전세계 미들웨어 서버 시장에서 한 칼(?) 했었던 주요 솔루션들 중 하나였죠. 국내에서도, 관공서와 병원 등에서 아주 많이 사용되었고요. 지금도 행정안전부와 서울시청 등의 기관들과 꽤 여러 병원들에서 사용중입니다.

1025441374

엔테라는 특히 델파이 개발자들에게는 더욱 친숙한데… 물론 파워빌더 등의 다른 툴과도 연동해서 개발하기도 했지만, 델파이로 연동 개발한 경우가 가장 많았습니다. 지금은 아니지만 한때 볼랜드의 제품이었고, 또 델파이에서 개발을 지원하는 전용 컴포넌트가 번들되어 있기도 해서, 델파이에서 엔테라 개발이 가장 편하고 빨랐기 때문입니다.

작년 11월이었던가에 행안부의 민원행정시스템이 V3의 오진으로 뻗었던 사건이 바로 이 엔테라와 관련이 있는데요, 엔테라에서 클라이언트쪽 배포 파일로 midas.dll을 필요로 하는데, V3가 이 midas.dll 파일을 악성코드로 오진해서 일괄 삭제해버렸었죠. 그래서 전국 시군구 행정기관의 민원 시스템이 하루 아침에 몽땅 중지되기도 했었습니다.

제가 현재 컨설팅을 진행중인 건들 중의 하나가 바로 이 엔테라 관련 건인데요. 엔테라 컴포넌트는 델파이 5 부터는 제외되었기 때문에 당연히 최근의 델파이 버전에서는 엔테라 컴포넌트들이 없습니다. 그런데 엔테라와 델파이를 아직 사용하는 모 관공서에서, 델파이 최신 버전으로 업그레이드하기 위해 델파이 2010에서 엔테라 컴포넌트가 지원되도록 해달라는 요청이 들어왔습니다.

Entera 지원 컴포넌트가 번들되어 있었던 것은 아주 제한적인 버전에 제한적인 에디션이었는데, 정확히 말해서 델파이 3, 4 버전의 Enterprise 에디션에서만 지원되었었습니다. 여기서 Enterprise 에디션은 지금의 Enterprise 에디션과는 다른 것이었는데, 델파이 3, 4, 버전 당시의 프로페셔널 상위 에디션은 클라이언트/서버 에디션이었고, 이것이 지금의 엔터프라이즈 에디션에 해당합니다. 그리고 이 클라이언트/서버 에디션보다 더 높은 에디션이 엔터프라이즈 에디션이었고, 따라서 당시의 엔터프라이즈 에디션은 지금으로 치면 아키텍트 에디션에 해당하는 거죠.

어쨌든 이 최상위 에디션에만 엔테라 지원 컴포넌트가 있었기 때문에, 당시에 델파이를 사용하셨던 분이라도 클라이언트/서버 에디션이나 프로페셔널 에디션만 사용해보셨던 분들은 엔테라 지원에 대해 전혀 알지 못하실 겁니다.

이 엔테라 지원 컴포넌트는 TEnteraConnection과 TEnteraProvider 두개로 되어 있었고, 몇개의 델파이 pas 유닛에 포함되어 있습니다. 그리고 디자인타임 지원을 위해 몇개의 파일들이 더 필요하구요. 이 컴포넌트들의 역할은 엔테라 액세스를 TDataSet 방식으로 할 수 있도록 중간에 처리를 해주는 것입니다. 델파이가 아닌 파워빌더나 C++ 등의 다른 언어를 사용할 경우 엔테라와 연동하는 모든 개발 작업을 로우 레벨에서 코딩 삽질을 해야 하는데, 델파이에서 이들 컴포넌트들을 이용하면 데이터셋 방식인 만큼 당연히 코딩 양은 최소화되고 개발 부하가 확 줄어듭니다.

어쨌든, 이 컴포넌트들을 델파이 2010 버전으로 마이그레이션을 진행해왔는데요.

처음 작업을 시작할 때는 이 컴포넌트들의 소스를 구하는데에도 별 어려움이 있을 거라고 생각하지 못했고, 또 기술적으로도 유니코드 지원으로 인한 변경 부분 이외에 큰 작업은 없을 거라고 짐작하고 시작했는데… 델파이 3, 4 시절에도 엔테라 컴포넌트의 소스는 제공되지 않았었다는 것을 뒤늦게 알았습니다. 그래서 저희 엠바카데로 본사로도 수십 차례 문의하고(땡깡을 쓰다시피) 현재의 엔테라 벤더인 eCube Systems로도 여러차례 연락을 했죠. 본사에서도, 워낙 오래전의 파일들이라 당시의 담당자도 불명확하고(12년 정도 되었죠), 하필이면 최근에 본사가 볼랜드 창사 이래 처음으로 이사까지 하는 바람에 오래전 아카이브들을 찾지 못해 진행에 큰 어려움을 겪었습니다.

뭐 여러 번의 우여곡절 끝에 본사로부터 델파이 3 당시의 소스 파일을 받는 데에는 성공했는데, 작어을 시작해보니 예상보다 델파이의 구버전들 사이에서 Provider의 기반 구조가 너무 크게 바뀌었더군요. 그래서, 길어도 1~2주 정도의 작업을 예상했던 것이 결국 거의 두달을 채우고야 마무리하게 되었습니다.

어쨌든, 이게 최근에야 거의 마무리되었고요. 어제 오후에 방문해서 최종 테스트까지 마쳤습니다. 이 일을 의뢰받은 관공서 이외에도 아직 엔테라를 사용하는 곳이 적지 않은 것으로 알고 있는데, 본사와 협의해서 지금까지 작업한 엔테라 지원 컴포넌트들을 배포할지 어떨지 고려하려고 합니다. 주위에 델파이와 엔테라를 사용하는 곳을 아시는 분은 제게 좀 알려주세요~

8 comments for “Delphi 2010과 Entera 개발

  1. 예전에 진행했던 프로젝트중 행안부의 시군구 주민등록시스템이 Delphi6 에 Entera 였습니다. 말씀하신 행안부의 민원행정시스템이 주민시스템인지는 모르겠지만 ㅋ_ㅋ

    • 저는 같은 시스템인 것으로 알고 있는데.. 혹시 다를 수도 있다는 생각도 드네요. ^^
      그런데… 진행하셨던 프로젝트도 EnteraProvider를 사용한 거였는지요, 아니면 스텁을 이용한 방법이었는지요.

    • 스텁을 이용한 방법이 어떤건진 자세히 모르겠으나

      개별 화면마다 TEnteraConnection – TEnteraProvider – TClientDataSet – TDataSource – TXDBGrid 형식으로 컴포넌트가 올려져있었구요.

      TEnteraConnection 의 ConfigFile 에 XXXXX.env 파일이 연결되고 ServerName 설정하고 SQLFile 에 XXXXX.sql 이 연결되었던것 같습니다.

      당시 Stub 이라는 폴더가 있었는데 폴더내에 ServerName 과 동일한 명의 pas 파일과 SQLFile 에 연결된 sql 파일들이 있었습니다. 이 Stub 이 말씀하신 스텁인지는 모르겠지만…

      이게 EnteraProvider 를 사용한건지 스텁을 이용한 방법인지는 모르겠네요. ㅋ_ㅋ

    • 아… 그렇다면 EnteraProvider를 쓴 것이 맞는 것 같습니다. 스텁을 쓰는 방법은 SQL에서 자동으로 생성된 pas 파일을 쓰는 것 같더라구요. 알려주셔서 감사합니다~

  2. 델파이를 10년넘게 쓰면서도 저런건 몰랏네요 =_=;;;

    그런데 3버전 시절의 소스를 마이그레이션이라… 끔찍하네요 ;;

  3. 병원 OCS 프로그램에도 사용되죠. 델6를 사용합니다만 엔테라 컴포넌트를 씁니다.

답글 남기기

이메일 주소는 공개되지 않습니다.