고객들의 PC환경과 요구사항이 아주 빠르게 변화하고 있습니다. 최신 PC환경과 새로운 요구사항에 대응하기 위해서는 RAD Studio(델파이, C++빌더)에서 제공하는 최신 기능을 활용하도록 마이그레이션이 필요합니다.
저도 마이그레이션 컨설팅과 마이그레이션 워크샵을 통해 마이그레이션이 필요한 프로젝트나 기업을 지원하고 있습니다.
마이그레이션을 계획하거나 진행하고 계시는 분들에게 도움되도록 과정을 간단히 정리해 공유합니다.
에스엔유프리시전 - 마이그레이션 워크샵
- 일시 : 2016년 4월 5일 ~ 8일(4일간)
- 지원방법 : 마이그레이션 워크샵
- 버전 : 델파이 7 -> 델파이 XE5
지난 4월 5일~9일간 델파이 마이그레이션 워크샵 과정을 진행했습니다. 이번 워크샵 과정에 에스엔유프리시전에서 참석해 마이그레이션을 지원했습니다.
에스엔유프리시전은 OLED 장비 제조업체로 OLED 장비를 운영/제어하는 소프트웨어를 델파이7에서 델파이 XE5로 마이그레이션 진행했습니다.
사실 공장자동화와 설비 분야는 제가 익숙치 않아서 도움을 많이 못드릴까 내심 걱정했는데요. 소스가 클래스 기반으로 화면과 로직이 분리되어 있어 큰 어려움 없이 진행했습니다.
마이그레이션 과제
에스엔유프리시전의 마이그레이션 과제는 크게 2가지로 다음과 같이 해결했습니다.
1, 써드파티 컴포넌트 통합
오래된 코드들의 특징처럼 다양한 종류의 써드파티 컴포넌트를 사용중이어서, 대부분을 걷어내고 TMS 컴포넌트 셋과 기본 컴포넌트로 통합했습니다.
단순히 컴포넌트를 변경하는 작업이라면 reFind를 통해 자동화 했을텐데, 컴포넌트 변경과 함께 여러가지 속성을 추가로 설정, 변경해야 했기 때문에 컴포넌트 전환 도구(글추가)를 별도로 만들어 제공했습니다.
그리고, 단순 컴포넌트 전환은 GExpert의 Replace Components 기능을 이용해 바로바로 변환하며 작업했습니다.
UI 전환작업은 손은 많이 가지만, 난이도가 높은 작업이 아니어서 부분적으로 진행하고 다른 작업을 먼저 진행했습니다.
2, 유니코드 기반에서 통신 프로토콜의 문자 처리
시리얼통신(RS232 등)과 TCP/IP로 통신 시 문자열 처리하는 부분과 DLL 인터페이스에 대해 유니코드 적용을 검토했습니다.
유니코드 검토 도구 미리 준비해 오셔서 바로 검토 진행했습니다.
유니코드 적용의 규칙은 간단합니다. 대상이 문자열을 AnsiString으로 받으면 AnsiString으로 넘겨주면 되고, UnicodeString으로 받으면 UnicodeString으로 넘겨주면 됩니다.
이때 대상은 윈도우API일 수도 있고, TCP/IP 서버, 장비일 수 있습니다. 코드를 살펴 대상을 확인 후 장비 등이라면 기존 델파이7에서와 마찮가지로 AnsiString으로 전달하고, 윈도우API라면 파라메터의 데이터타입을 확인해 Char를 AnsiChar로 string을 AnsiString으로 변경해주면 됩니다.
의심이 가는 코드들은 반드시 테스트 코드를 작성해 검증하고 적용해야 합니다.
추가 지원 정보 및 시스템 확장
마이그레이션 과제로 가져온 내용 외에 필요한 마이그레이션 대상과 시스템을 확장할 수 있는 방안을 소개해드렸습니다.
1, 데이터베이스 전환
BDE를 FireDAC으로 전환했는데, DB 접근하는 곳을 하나의 클래스로 모아놔서 별도의 자동화 도구 없이 손쉽게 적용했습니다. 대신 DB 프로그래밍이 익숙치 않으셔서 간단히 사용법을 안내드렸습니다.
그리고, 라이선스가 있는 MS Access를 대신할 수 있는 IBLite와 SQLite를 소개하고 연결하는 과정을 진행했습니다.
2, 델파이7 이후 새로운 기능 소개
오랫동안 델파이7으로 개발한 경우 IDE 사용법이 낮설고, 추가된 기능들을 잘활용하지 못하는 경우가 많습니다. 마침 제가 정리해 놓은 델파이7 이후의 새로운 기능 페이지를 통해 IDE 그리고 새로운 기능, 컴포넌트 등을 소개했습니다.
3, OOP 소개
소스가 OOP 기반으로 견고히 구축되어 있고, OOP와 설계에 관심이 많으셔서 제가 이전에 사용했던 패턴(옵저버 + 커맨드 패턴)을 소개해 드리고, 인터페이스 개념과 사용법을 안내해 드렸습니다. 워낙 도움이 많이 되셨다고 칭찬해 주셔서 특강이나 별도의 글로 작성해야 겠다는 욕심이 들었네요.(생각보다 OOP에 대한 관심이 많은 것 같습니다. 혹시 OOP 특강이 필요하시면 저에게 요청해주세요.^^)
4, 현대식 문법 소개
타입 헬퍼, 제너릭, 익명메소드등 코드를 더 간격하게 작성할 수 있는 델파이 현대식 문법의 사용법을 소스코드 기반으로 소개
5, 모바일과 사물인터넷으로 확장
최신 버전으로 마이그레이션 했다는 것은 모바일, 사물인터넷 기능을 이용해 기능을 확장할 수 있도록 준비되었다는 의미입니다. 설비등 공장의 장비를 제어하는 경우 외부에서 모바일로 장비를 모니터링하고, 긴급상황에 대한 알림을 제공한다면, 기존 시스템을 한단계 업그레이드해 경쟁의 우위를 갖을 수 있습니다. 이 기능을 멀티-디바이스 프레임워크인 파이어몽키 프레임워크와 앱테더링 을 통해 모니터링 및 제어할 수 있는 모바일 앱을, 긴급상황 알림 등은 비콘, 블루투스 등으로 사물인터넷으로 확장하는 방안을 작은 규모로 컨설팅(?) 해 드렸습니다.
총 평
아직 많은 분들이 마이그레이션을 준비하고, 계획하고 있는것으로 압니다.
사신 마이그레이션 자체는 기술적으로 크게 어렵지 않습니다. 대부분 어려워하는 부분이 수많은 코드를 어떻게(언제) 작업 할지에 대한 고민입니다.그런 고민이 있다면 최대한 자동화하는 방법을 찾아보시기 바랍니다. 컴포넌트 전환을 자동화 하는 도구 들을 이용하고, 필요하다면 자동화 도구를 직접 만드시기 바랍니다. 마이그레이션을 자동화하면 작업 일정을 대폭 줄이고, 소스코드 품질 향상과 안정성을 확보할 수 있는 테스트에 더 많은 시간을 할애할 수 있습니다.
이번 마이그레이션 작업도 마이그레이션 작업보다, UI 개선(써드파티 컴포넌트 통합, TMS 컨트롤 적용), 소스코드 품질향상(현대식 문법, OOP 적용 등), 안정성/성능향상(BDE > FireDAC), 그리고 시스템 확장(모바일, 사물인터넷)하는 부분에 더 많은 시간을 투자했습니다.
마지막으로 마이그레이션을 진행한 담당자가 이야기해준 마이그레이션 워크샵의 좋은 점과 아쉬운점을 남기고 마무리합니다.
워크샵에 참석해 좋은 점은
- 작업하며 막히는 부분을 바로바로 풀어줘서 빠르게 막힘없이 빠르게 진행해 좋았다.
- 새로운 개발환경이 부담 되었는데 함께 작업하며 새 버전의 IDE에 익숙해 져서 좋았다.
- 현대식 문법과 OOP 등 평상시 궁금했던 내용을 자유롭게 이야기하고 들을 수 있어서 좋았다.
- 시스템 확장할 수 있는 아이디어와 방법, 기술을 알게되어 좋았다.
아쉬운 점은
- 실 장비와 떨어진 환경에서 제한적으로 테스트해서 북귀 후 추가작업을 진행해서 아쉬웠다.
마이그레이션이 부담되거나, 어떻게 시작할지 어려움이 있다면 마이그레이션 워크샵과정에 참석하세요.
마이그레이션 자동화 도구로 수작업을 줄여 기간을 단축해주고, 어려운 부분은 멘토링으로 해결해 드립니다.
(마이그레이션 컨설팅(1~2 주 이상 방문해 진행)이 필요한 경우 데브기어(ask@embarcadero.kr)로 별도로 연락주세요.)