윈도우 10 지원, 애플리케이션 현대화 등의 이유로 많은 곳에서 이미 마이그레이션을 완료했습니다.

하지만 아직 마이그레이션을 완료하지 못해 효과적인 마이그레이션 방안을 문의하는 곳이 있습니다. 

 

이글에서는 그동안 다양한 마이그레이션 컨설팅을 통해 경험한 효과적인 마이그레이션 프로세스를 공유합니다.

 

마이그레이션을 진행해야하는 이유와 마이그레이션으로 얻을 수 있는 것들은 다음과 같습니다.

  • 윈도우 10 등의 최신 운영체제를 공식지원합니다.
  • 마이그레이션 이후 멀티티어 아키텍처, 멀티 플랫폼 지원등으로 전환이 용이합니다.
  • 델파이 내장 라이브러리, 컴포넌트, 써드파티 컴포넌트 등 교체를 통해 전반적인 성능 및 호환성을 업그레이드 할 수 있습니다.
  • 현대식 문법(제네릭, 익명 메소드, 타입 헬퍼, 인라인 변수, 타입 유추 등)을 통해 코드를 더 짧고 명확하게 유지할 수 있습니다.
  • 최신버전까지 라이브러리와 플랫폼에 적용된 패치를 적용할 수 있습니다.

의외로 마이그레이션에 대한 막연한 두려움을 갖고 쉽게 시도하지 못하는 경우도 있습니다.

하지만, 제가 진행한 대부분의 프로젝트들은 1~2주만에 마이그레이션을 완료했습니다.

(간단한 DB 연동 프로젝트의 경우, 500본의 소스를 5일간의 마이그레이션 워크샵 과정을 통해 완성한 경우도 있습니다.)

마이그레이션 작업도 결국은 컴포넌트 변경과 소스코드 일부를 수정하는 작업이 대부분입니다.

 

여러분들도 아래에 소개하는 내용을 참고해 마이그레이션을 계획하고 성공적으로 마이그레이션을 수행하시기 바랍니다.

 

바로 지금이 마이그레이션을 진행하고 애플리케이션을 현대화할 시간입니다.

마이그레이션 작업 절차

migration_step.png

마이그레이션 작업은 준비 단계와 수행 단계로 나눌 수 있습니다.

 

마이그레이션 준비 단계는 본격적인 마이그레이션 작업 전 마이그레이션을 준비하는 단계입니다.

1) 현황분석 - 프로젝트, 소스파일 등을 정리하며 프로젝트와 소스파일 수를 파악합니다.

2) 위험요소 식별 - 마이그레이션 작업이 필요한 대상을 산출합니다. 사용 중인 써드파티 컴포넌트 목록을 수집하고 어떻게 대응할지 정하고, 유니코드, DB 연결 컴포넌트, 기타 위험요소등을 정리하고 대응방안을 계획합니다.

3) 일정계획 수립 - 앞의 위험요소를 어떻게 처리할지 정리하고, 파일럿 형태로 작은 규모로 마이그레이션 진행 후 일정을 수립하니다.

 

이 과정은 데브기어 마이그레이션 체크리스트 문서 등에 기록합니다. 해당 체크리스트를 데브기어 측으로 보내주시면 무상 컨설팅(유선 또는 방문 상담)을 받을 수 있습니다.

 

마이그레이션 수행 단계에서는 "일관된 방식으로 마이그레이션 진행"하는 것이 가장 중요합니다. 마이그레이션도 개발과 마찬가지로 일관된 방식으로 처리해야만 버그 또는 이슈 발생 시 대응이 용이합니다.

최대한 작업을 자동화하고, 문서화하며 진행해야 합니다.

1) 전환체계 구축 - 준비과정을 통해 작업할 내용이 정해졌다면, 반복되는 작업을 자동화 할 수 있는 방안을 찾습니다. 자동화는 시간을 절약해 주는 동시에 동일한 방식으로 진행하게 됩니다. 일관된 작업을 위한 문서화 포맷을 정하고 작업자간 공유방안을 정합니다.

2) 소스코드 전환 - 일관된 방식으로 진행할 수 있도록, 자동화 또는 문서화하며 진행합니다. 이슈 발생 시 먼저 문서에서 해결 기록하고 해결 후 해결방법을 다시기록하고 공유합니다.

3) 통합 테스트 - 테스트에서 발생한 이슈를 기록하고, 일관된 방식으로 처리합니다.

 

마이그레이션 수행 프로세스

migration_process.png

 

 

계획

마이그레이션 과정을 계획합니다.(마이그레이션 준비 단계에서 진행한 내용을 참고합니다.)

1) 프로젝트와 소스코드를 정리해 작업할 프로젝트 수와 소스파일의 수록 파악합니다.

2) 마이그레이션 수행 시 위험요소, 즉 작업해야할 대상을 파악합니다.

 

개발하는 것과 마찬가지로, 마이그레이션 작업도 일관된 방식으로 진행해야 합니다.

마이그레이션 시 코드 변경을 일관되게 하기 위한  문서화 작업이 필요합니다.

다음 2가지 문서는 마이그레이션 작업 시 꼭 필요합니다.

1) 마이그레이션 이슈 공유 - 마이그레이션 작업 시 발생하는 이슈와 원인, 해결방안를 기록합니다.

2) 마이그레이션 가이드 - 수작업으로 진행해야 하는 작업의 절차를 상세히 기록합니다.

 

또한, 여러명이 공동 작업하는 경우 위 문서를 공유할 수 있는 환경이 필요합니다.

마이그레이션 작업은 일반적으로 한시적이고 독립된 작업이므로, 공유 문서(클라우드 기반의 문서 시스템)를 이용하거나, 운영 중인 이슈 트래커 시스템을 이용할 수 있습니다.

 

다음은 데브기어에서 제공하는 마이그레이션 관련 문서입니다. 양식을 복사해 사용하거나 참고하시기 바랍니다.

 

산출물

  • 마이그레이션 체크리스트(프로젝트 범위, 위험요소/대응방안 목록)
  • 마이그레이션 이슈 공유 문서 양식
  • 마이그레이션 가이드 문서 양식

 

분석

앞에서 파악된 위험요소를 분석하고, 구체적인 대응방안을 찾습니다.

방안을 예상하기 보다는 소스코드 단위로 직접 구현해 보며 정확한 대응방안을 찾고 이슈 공유 문서에 기록합니다.

  • 써드파티 컴포넌트 전환은 방안에 따라 아래와 같이 진행합니다.
    • 업그레이드된 컴포넌트를 설치를 확인하고, 사용중인 컴포넌트 지원여부와 기능을 확인합니다.
    • 대체 컴포넌로 전환 시 새로운 컴포넌트가 기존 기능을 제공하는지 점검합니다. 샘플 프로젝트를 생성해 주요기능 몇가지를 온전히 구현해 보는 것을 추천합니다.
    • 컴포넌트를 마이그레이션 해야 하는 경우 최신버전의 델파이에서 컴포넌트를 마이그레이션하고 설치하도록 진행합니다.
  • 유니코드 검토 대상 목록을 확인 후 기존 소스코드가 새로운 버전에서 정상동작함을 확인합니다. 샘플 프로젝트로 기능을 구현하면 확인하면 더욱 좋습니다.
  • DB 연결 컴포넌트로 DBMS와 연결을 시도해 확인하고, 주요 기능을 구현해봅니다. 연결 및 사용에 이슈가 있는지 성능 이슈가 있는지 확인합니다.
  • 기타 개발 담당자가 생각하는 이슈를 최신버전에서 어떻게 진행할지 검토합니다.

산출물

  • 샘플 코드
  • 변경할 내역

자동화

앞에서 분석한 내용을 기반으로 자동화 방안을 찾습니다.

자동화 처리는 반복 작업의 시간을 줄여주는 동시에 일관된 방식으로 처리한다는 장점이 있습니다.

 

자동화 작업은 전체적인 소스코드를 변경하는 작업이므로 반드시 소스코드를 백업하고 진행합니다.

일부 코드를 복사해 그 코드를 대상으로 자동화 처리 방안을 찾고 완료된 이후 전체적으로 적용하는 것이 좋습니다.

 

자동화하는 방안은 다음과 같으며 필요에 따라 병행 사용할 수 있습니다.

  • reFind - 정규표현식 패턴을 이용해 텍스트파일의 문자열을 찾아 바꿔주는 커맨드라인 도구. 마이그레이션 자동화에 활용
  • 데브기어 컴포넌트 컨버터 - 델파이 컴포넌트 및 소스코드 전환 자동화 도구. 자신의 환경에 맞춘 커스터마이징 작업 필요
  • Delphi Parser - 소프트웨어 기반 자동 코드 빌더. 코드 업그레이드 및 마이그레이션 제공
  • Mida Converter - 델파이 및 C++빌더 용 파이어몽키, 데이터베이스, 레포트 컨버터 애플리케이션

모든 작업을 자동화할수 없습니다. 최대한 자동화 후 수작업은 문서와 함께 진행하는 것을 권장합니다.

 

산출물

  • 자동화 방안

소스 전환

새로운 버전에서 프로젝트를 열거나, 컴파일 시 다양한 이슈가 발생합니다. 일관된 방법으로 이슈해결을 위해 다음 절차대로 진행하는 것이 좋습니다.

1) 이슈 공유 문서에서 찾아 적용. 등록된 이슈가 없다면 이슈 등록

2) 이슈 해결방안을 찾아 이슈 해결

3) 이슈 공유 문서에 이슈 해결 과정 등록

4) 자동화 처리 방안을 찾고, 결과를 문서에 기록

5) 수작업 필요 시 가이드 문서에 절차를 상세하게 기록

 

산출물

  • 이슈 공유 문서 업데이트
  • 자동화 처리 업데이트
  • 가이드 문서

 

참고 자료

위 과정을 통해  대부분의 마이그레이션 작업을 어렵지 않게 진행할 수 있을 것입니다.

 

만약 다음과 같은 프로젝트의 경우 전문가의 도움을 받는것을 고려해 보시기 바랍니다.

  • 프로젝트 규모가 커 많은 인력과 시간이 필요하지만 인력과 비용을 절감하고 싶은 경우
  • 대규모 컴포넌트 변경(그리드 변경 등)등 수작업 진행이 어려운(불가능한) 프로젝트
  • 마이그레이션과 함께 아키텍처 전환을 고려하는 프로젝트
  • 짧은 기간 마이그레이션을 완료해야 하는 프로젝트
  • 기타 효과적인 마이그레이션 방향을 지원받고 싶은 프로젝트

위와 같은 프로젝트의 경우 데브기어 지원을 받아 효과적인 방향을 정하고 진행하시기 바랍니다.

다음 프로그램을 통해 마이그레이션을 지원합니다.

업그레이드 마이그레이션에 대한 추가 정보와 자료는 다음 링크를 통해 확인할 수 있습니다.

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 24819
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 23111
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 25118
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 31001
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 32037
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 27428
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 48483
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 185437
1123 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 3장(실습).사원 정보 프로토타입 앱 관리자 2020.02.04 454
1122 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 2장. 첫번째 모바일 앱 만들기 관리자 2020.02.04 564
1121 n [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 1장. 델파이 개발환경 둘러보기 관리자 2020.02.04 595
1120 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 3장. 파이어몽키 이해하기 [2] 관리자 2020.02.04 542
1119 [고객사례-유틸리티, 델파이] SyncBackPro - 데이터 백업/동기화 솔루션 관리자 2020.02.04 452
1118 델파이 개발자를 위한 이더리움(Ethereum)! 관리자 2020.02.04 475
1117 윈도우10에서 활용 가능한 델파이만의 5가지 기능들 관리자 2020.02.04 1086
1116 [업데이트][패치][10.3.3] C++빌더 10.3.3 스레딩 및 TLS 패치 험프리 2020.02.03 331
1115 Delphi / C ++ Builder를 사용하여 Azure에서 MSSQL 데이터베이스 만들기 및 연결 험프리 2020.02.03 281
1114 이 달의 기술자료 - 2020년 02월 험프리 2020.01.31 316
1113 [고객사례-유틸리티, 델파이] ALLMediaServer - 미디어 컨텐츠 플레이 프로그램 관리자 2020.01.31 355
1112 [발표자료] 20200130 실제 사례로 살펴보는 소프트웨어 현대화 방안 file 관리자 2020.01.31 311
1111 [코드레이지2019] VCL 현대화: WinAPI, COM & Shell 인터페이스, WinRT 통합하기 김원경 2020.01.30 225
1110 TJumpList 컴포넌트 사용하기 file 김원경 2020.01.30 334
1109 데브기어 컴포넌트 컨버터 소개(마이그레이션 자동화 도구) 험프리 2020.01.29 604
1108 [코드레이지2019] 파이어몽키에서 사용자 정의 Message Box 디자인하기 김원경 2020.01.23 317
1107 파이어몽키에서 Message 대화상자 사용하기/Message 대화상자와 유사하게 폼 사용하기 file 김원경 2020.01.23 2445
1106 [업데이트][패치][10.3.3] RAD 스튜디오 10.3.3 아이폰 XS와 XR 디버깅 패치 험프리 2020.01.23 308
1105 [코드레이지 2019] 웹소켓(WebSocket)과 델파이 험프리 2020.01.22 1380
» 프로젝트 경험을 통해 터득한 효과적인 마이그레이션 프로세스 file 험프리 2020.01.22 722