Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[아티클][DelphiCon 요약] 델파이 7에서 벗어나기 - 마이그레이션 프로젝트 사례


Recommended Posts

<< DelphiCon 2021 목록으로 이동

원본 비디오(YouTube) 보기 (30 min)

DelphiCon 의 2021 시리즈 중, Leaving Delphi 7 - A Success Migration Case - Dion Carlos Mai & Rafael Pereira (30 min) 의 한글 요약본입니다.  

  • 20년이 넘었고, 델파이 7로 운영하던 대형 시스템을 델파이 10으로 마이그레이션한 프로젝트를 정리한 내용을 공유합니다.
  • 발표자 Rafael은 이 소매점 시스템 제공자인 Stone Co의 개발자입니다.

목차


 

회사 및 프로젝트 소개

회사 소개: Stone Co 

  • Linx: 뉴욕 증시에 상장된 브라질의 소프트웨어 기업. 브라질의 소매점 소프트웨어 시장에서 점유율 45.6%
  • Stone: 뉴욕 증시에 상장된 브라질의 Stone Co.의 핀테크 기업.  지불 관리 도구와 유연한 금융 상품을 제공
  • Stone Co: 2012년에 시작하여 브라질 전역을 커버하고 있다.
  • 2020년 11월, Stone Co는 Linx를 인수

대상 시스템 소개: Linx Big 

  • 20년이 넘은 소매점 소프트웨어. 약국에서 주로 사용
  • 현재 3,000개가 넘는 고객사와, 5,000개가 넘는 소매점에서 사용 중
  • (2개 이상을 사용하는 점포가 많으므로, 배포된 소프트웨어는 훨씬 더 많음)

현대화 마이그레이션을 계획하게 된 동기와 결과

윈도우10은 2021년 10월 현재 전세계 데스크탑 점유율의 80%이상을 차지하고 있고 계속 증가하는 추세임 (관련 통계 보기)

  • 윈도우 10에 집중해야 하는 상황
  • 윈도우 10의 새 운영체제 기능을 충분히 지원하는 IDE 기능이 필요
  • 윈도우 10에 맞는 더 좋은 시각적인 UI가 필요 (그림 참조: 예전 화면과 새 화면 비교)
    • 스타일, 대시보드, 그래프, 메뉴 등 더 풍부한 화면을 제공하여 외관상 완전히 다른 새 소프트웨어로 보임 (그림 참조: 새 화면)
      • 델파이 10에 내장된 컴포넌트와 스타일만 사용하여 화면 개발
      • 새 UI를 구현하기 위한 코드는 새로 작성
      • 하지만, 모든 클래스와 소스 코드는 예전 델파이 7과 거의 같음

스레드가 필요

  • 요즘 소프트웨어는 API 통합이 많다.
  • 델파이 7에서도 스레드를 구현할 수 있다. 하지만,
    • 델파이 7은 소프트웨어를 개발하기에 여전히 매우 훌륭한 도구이지만, 20년 전에 나온 오래된 버전이다.
    • 델파이 최신 버전을 사용하지 않으면, API 통합을 모두 지원하거나 JSON 직렬화하기 등 새 기술을 반영하기가 어렵다.

기타 개선

  • 델파이 10의 장점을 가질 수 있게 됨: 64비트 지원, 윈도우 10 지원, FireDAC으로 데이터 연결, 다른 운영체제에서 접근 등등

델파이 10 시애틀을 선택한 이유

  • 당시 우리 개발자 대부분이 사용할 수 있는 라이선스를 이미 가지고 있었기 때문

마이그레이션 프로젝트의 개요

목표

  • 델파이 7에서 델파이 10 시애틀로 이전
  • 마리아DB 10.4.13과 MySQL 8.0.21 지원

개요

  • 기간: 총 7 개월
  • 투입 인원
    • 외부: 3명 (아쿠아소프트 개발자, 마이그레이션에만 집중)
    • 내부: 22명 (개발자, QA, 델파이 프로젝트 별 책임자)
  • 마이그레이션 대상 (소매점 관리 시스템)의 규모
    • 델파이 프로젝트: 65개
    • 모듈: 194개
    • .PAS 파일: 6,000개
    • .DFM 파일: 2,000개
    • 코드 줄 수: 2백만줄
    • 써드 파티 컴포넌트 세트: 23가지

마이그레이션 프로젝트의 진행 단계

총 4단계로 나누고, 앞 단계 완료 시 다음 단계를 진행: 분석, 실행, 검증, 배포

1단계 (분석 단계)

개요

  • 기간: 3.5개월
  • 투입 인원 
    • 외부: 3명 (아쿠아소프트 개발자)
    • 내부: 2명 (개발자 1명, QA 1명)

목표

  • 측정 / 식별 / 문서화
    • 델파이 10으로 마이그레이션이 끼칠 영향
    • 새 데이터베이스와의 호환성
    • 프로젝트로 인해 달라지는 점과 문제점
  • 변경으로 인해 발생될 것으로 예상되는 문제 해소
  • 자동 변환 도구 개발

작업 내용

  • 외부 인력 (아쿠아소프트) 합류
  • 전환할 컴포넌트를 3가지로 나누어 분석하고 대비
    • 버전의 수명이 다한 컴포넌트
      • 마이그레이션 시 문제가 많고, 작업도 많이 해야 하는 것들임
    • 이 프로젝트에서 많이 사용될 컴포넌트
      • 프로젝트에서 사용되는 비중이 크기 때문에, 그 만큼 프로젝트에 끼치는 영향도 큰 것들임
    • 소스코드가 없는 컴포넌트
      • 매우 이상하게 작동할 수 있고 마이그레이션 작업을 까다롭게 만들기 때문에 주의해야 할 것들임 
        • 예: Zeos (2003년부터 사용한 오픈 소스 데이터베이스 컴포넌트)
        • [에러가 발생되는 코드] QPrincipal.FieldByName('datapre').AsDateTime :=now; 
          짐작하겠지만, 상업용 시스템에서 매우 많이 사용되는 코드이며, 모두 수정해야 하므로, 에러 해소 작업이 많다.
  • 델파이 버전 간의 차이와 충돌을 식별하고 해소
    • 유니코드 (영향 받는 dll이 있는 지까지도 파악할 필요가 있음)
  • 자동 변환 도구 개발 ("마이그레이션 찾아 바꾸기"라고 이름 지음)
    • 소스 변환 자동화 도구 개발을 이 분석 단계 안에서 완성 (그림 참조: 소스 변환 자동화 도구변환 결과)
      • Zeos에서 UniDAC으로 마이그레이션하는 도구 마법사가 발생시키는 버그 수정 자동화
      • 사용되는 모든 컴포넌트 마이그레이션 자동화 (많은 컴포넌트에서 일부 프로퍼티가 변경되었기 때문)
      • 델파이 10과 델파이 7과의 차이로 인해 필요한 코드 변환 자동화
      • "모든" 소스를 변환할 수 있는 "맞춤" 도구 완성 
  • 소스 코드 동기화
    • 소스 코드 동기화는 매우 중요! 
    • 마이그레이션 프로젝트 진행 중에도 전체 배포까지 완료되기 전까지는 전환해야 할 코드가 계속 변하기 때문이다.
      • 분석 단계가 진행되는 중에도 내부 개발자 20명은 여전히 기존 코드나 화면을 변경하고 새 기능을 추가한다.
      • 즉, 마이그레이션 대상인 델파이 7 소스 코드가 계속 변한다.

2단계 (실행 단계)

모든 코드를 변경하는 단계

개요

  • 기간: 2일 (사전 준비가 완료되었으므로 가능)
  • 참여 인원 
    • 외부: 1명 (아쿠아소프트 개발자)
    • 내부: 1명 (개발자)

목표

  • 코드 "전체"를 자동 변환 도구를 사용하여 델파이 7에서 델파이 10으로 변경

작업 내용

  • 진행 전
    • 실행 단계 직전에 기존 프로그램 변경을 금지
  • 1일차
    • 자동 변환 도구를 사용하여 변환
    • 개발자 2명이 6시간 만에 완료
    • 총 4,678개 소스 파일을 변경
  • 2일차
    • 컴포넌트 적합성, 데이터베이스 적합성이 파악된다.
    • 모든 변경이 계획대로 되었는 지를 검증 

3단계 (검증 단계)

개요

  • 기간: 2.5 개월
  • 참여 인원
    • 외부: 3명 (아쿠아소프트 개발자)
    • 내부: 22명 (개발자, QA, 델파이 프로젝트 별 책임자)

목표

  • 모든 델파이 프로젝트와 모든 작동을 검증, 버그 파악 및 해소

팀 구성

  • 개발자 (버그 픽스 전담) 그룹
  • 개발자 (일반) 그룹
  • QA 그룹
  • 델파이 프로젝트 별 책임자 그룹

작업 내용

  • 검증 단계 시작 전 (즉, 실행 단계인 2일 간)
    • 델파이 10 사용자 교육
      • 이유: 모든 개발자는 이 검증 단계 시작을 기준으로, 그 이후에는 델파이 10만 사용 (그 이전에는 델파이 7만 사용)
      • 내용: 델파이 10 사용법, 새 기능, 검증 단계 및 이후 유지 보수 시 작업 절차
      • 결과: 개발자 등 모든 참여 인원이 검증 단계에 참여할 준비를 완료
  • 검증 단계 시작 직후
    • 버그가 매우 많이 보고되었고, 버그의 대부분을 신속하게 해소했다.
      • 자동 변환 도구를 이용했기 때문이다.
        • 버그 발생: 변환 도구에 버그가 있으면, 변환된 시스템에도 버그가 생긴다.
        • 버그 해소: 변환 도구의 버그를 수정하면, 변환된 시스템의 해당 버그도 해소된다.
    • 앞 단계에서 접근할 수 없었던 것들에서 발생되는 버그를 QA들이 찾아냈는데, 이런 검증은 도움이 되었다.
  • 검증 결과
    • 모든 기능 중 97% 검증 완료
    • 나머지 3%는 외부 API라서 내부 테스트 불가
      • 이유: 실제 운영 환경에서 테스트할 수 밖에 없는 외부 데이터)
      • 대책: 외부 API 목록 작성과 운영 환경에서 완벽한 테스트를 할 수 있도록 미리 준비 (매우 중요)
    • 이 단계에서는 버그 해소 작업에 큰 수고가 들지 않았다.
    • 버그 등록이 지속적으로 줄어듬
    • 종료 시점에 모두 해소  

4단계 (배포 단계)

RC (Release Candidate, 출시 후보) 버전 배포, 합격 판정 후 전체 배포

개요

  • 기간: 5주
  • 참여인원
    • 내부: 2명 (QA 1명, 개발자 1명)
    • 고객: 선정된 고객사 104곳 (사용 점포 브라질 18개 주에 있는 소매점에 총 184개 배포)
      • 브라질 소매점 특성 상, "모든 지역"에서 문제가 없는 지 검증해야 함
        (브라질은 각 주마다 세금과 규제가 다름)

작업 내용

4-1 단계: RC(Release Candidate, 출시 후보) 버전 배포 준비

  • RC (Release Candidate, 출시 후보) 버전 합격 기준 설정
    • 중요도 0 (우회 해소 방법이 없는) 버그: 최대 5개 이내
    • 중요도 1 (우회 해소 방법이 1가지인) 버그: 최대 20개 이내
    • 위 기준 중 하나라도 통과하지 못하면 이 RC 버전은 불합격으로 판정하고 즉시 배포를 중단하기로 함
  • RC 버전
    • 최대한 완벽한 버전을 준비
  • RC 버전을 배포 고객
    • "모든" 기능이 검증될 수 있도록 "세심하게" 고객을 선정 (고객마다 사용하는 기능, 방식, 환경이 제각각일 수 있다)

4-2 단계: RC 버전 배포 및 판정

  • 배포 후 보고된 버그의 갯수 (모두 14개, 그림 참조: 버그 발견 및 해소 추이)
    • 중요도 0: 1개 (기준치인 5개 이내, 통과)
    • 중요도 1: 4개 (기준치인 20개 이내, 통과)
    • 중요도 2: 7개 
    • 중요도 3: 2개 
  • 기준에 의거 성공 판정

4-3 단계: 전체 배포

  • 100% 델파이 10으로 전환 완료
  • 해소해야 할 마이그레이션 관련 버그가 없음
  • 처음 계획한 데이터베이스를 지원 확인
  • 현재, 99% 고객이 업데이트된 시스템을 사용

프로젝트를 통해 배운 점

  • 분석 단계 (자동 변환 도구 개발 포함)에서 QA는 한두명만 참여하면 된다.
    • 이 단계에서 QA가 많고, 버그를 많이 찾아낸다고 해서 무조건 좋은 것은 아니다.
    • QA는 자동 변환 도구의 결과를 테스트
    • 주의! 이 단계에 QA를 많이 투입할 것인지 아닌 지에 대한 결정은 프로젝트에 따라 다를 수 있으므로 매우 조심해야 한다.
  • 써드-파티 컴포넌트는 분석이 매우 잘 되어야 한다.
    • 심지어 프로젝트 전부터 미리 충분히 파악해야 한다. 
    • 마이그레이션 프로젝트가 시작되면 써드-파티 컴포넌트에 대한 작업과 부담이 많기 때문이다.
  • 마이그레이션을 자동화하는 "맞춤" 변환 도구를 개발한다.
    • 프로젝트가 많고 규모가 커도 처리할 수 있다.
  • 검증 단계는 매우 중요하다. 충분한 테스트 시간이 필요하다.
    • 검증 단계를 거치지 않고 바로 배포로 넘어가면 운영 시 문제가 많을 수 있다.
    • 그러면 경영진은 이 프로젝트가 실패했다고 판정할 수 있다.
      • 그러면, 검증 단계 하나의 실패로 끝나지 않는다. (우리는 검증 단계에 충분한 시간을 계획하였기 때문에 문제가 없었다)
  • 프로젝트 중 소통이 매우 중요하다. 
    • 모든 팀원들이 진행 중인 작업을 항상 업데이트할 수 있는 절차와 환경이 구축되어야 한다.
      • 그래야, 서로 다른 사람의 작업에 어떤 영향을 주거나 받는 지를 미리 파악할 수 있다. 
  • 프로젝트 평가 기준을 구체적이고 명확히 정하고 모니터링해야 한다.
    • 계속 앞으로 갈 것인지 아니면 중단해야 하는 지에 대한 기준을 정하는 것은 매우 중요하다.
  • 마이그레이션 목적이 분명해야 한다.
    • 프로젝트 진행 중에 목적이 변경되면, 3-4개월 이상 지체될 수 있다.
    • 목적과 목표가 분명해야 계획된 일정을 준수할 수 있다.
  • 델파이 7은 매우 훌륭한 도구이지만, 거기에 머물고 있을 수 만은 없다.
    • 머물러 있고 싶어도, 우리가 앞으로 가야할 시간은 언젠가 오게되어 있다.
    • 20년 전에 출시된 델파이 7로는 지금 시점에서 필요한 기술 모두를 지원하지 못한다.
      • 시스템 운영에 크리티컬할 기술에서도 그렇다. 구버전에서 벗어나서 최신 기술에 맞춰가자.

참고 자료

그림 자료

마이그레이션 전과 후의 UI 비교: 로그인 화면
a1.png

 

새 UI에서 사용자 테마 선택 지원: 설정 화면
a2.png

 

새 UI에서 사용자 테마 선택 지원: 다크 테마 적용 시 화면

a3.png

 

마이그레이션 전과 후의 UI 비교: 일반 화면
a4.png

 

새 UI에서 대시보드 구현
a5.png
 

새 UI에서 실시간 그래프 구현1
a6.png

 

새 UI에서 실시간 그래프 구현2
a7.png

 

"맞춤" 자동 변환 도구
a8.png

 

 

예시: 써드 파티 컴포넌트의 경우 프로퍼티 변환이 필요함


a9.png

 

 

3단계 (검증 단계)의 버그 발견 및 해소 추이


a10.png

 


<< DelphiCon 2021 목록으로 이동


View full 엠바카데로 기술자료

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.