마 젠토 업그레이드에 대한 견적은 어떻게 제공합니까?


63

개요 :

이 질문은 원래 요청되었으며 나중에 StackOverflow에서 닫혔습니다 . 이 질문에 대한 올바른 장소는 meta로 언급 했습니다.

이 질문은 많은 사람들이 마 젠토 업그레이드를 추정 할 수있는 적절한 방법을 찾는 데 도움이됩니다.

질문:

Magento 업그레이드에 필요한 시간을 어떻게 측정하는지 알고 싶습니다. "고객이 Magento 상점을 업그레이드하는 데 시간이 얼마나 걸립니까?"

일반적으로 고객은 다음과 같은 숫자 만 들으면됩니다. "X 시간이 걸리고 Y 비용이 든다."

이 질문의 주요 아이디어는 기술적 인 측면과 개발자로 Magento 업그레이드에 대한 자체 계산을 수행하기 위해 확인해야 할 사항에 관한 것입니다.

내 계산을 위해 다음 검사 목록을 만들었습니다.

  • 마 젠토 코어가 닿았습니까?
  • Magento DB 스키마가 터치 되었습니까?
  • DB에 데이터가 일치하지 않습니까?
  • 로컬 및 커뮤니티 코드 풀에는 몇 개의 사용자 정의 확장이 설치되어 있습니까?
  • 사용자 정의 확장 프로그램이 최신 버전의 Magento와 호환됩니까?
  • 테마 개발자가 레이아웃 지시문에 local.xml 파일을 사용했거나 xml 파일을 base / default / layout에서 사용자 정의 테마의 레이아웃 디렉토리로 복사 했습니까?
  • 레이아웃 xml 파일에서 레이아웃 지시문 / 블록 메소드가 더 이상 사용되지 않습니까?
  • 이 Magento 상점을 개발 했습니까?

당신은 내가 뭔가를 놓치고 있다고 생각합니까? 그렇다면, 당신은 체크리스트에 대한 추가 포인트를 나와 커뮤니티에 공유하고 싶습니까?


연간 매출의 상대적으로 단순한 ~ 0.875 ~ 1.75 %, 연간 매출의 1.75 % ~ 3.5 %, 연 매출의 2.625 % ~ 5.25 %.

답변:


100

Magento 업그레이드 예상은 최신 설치에 적용된 수정 사항에 대한 정보를 수집하여 해당 수정 사항으로 인해 문제가 발생할 수 있는지 확인한 후 문제 해결에 소요되는 시간을 평가하는 프로세스입니다.

모든 수정은 그대로로 나눌 수 있습니다 오프 코어의 코어 .

오프 코어 수정은 업그레이드로 덮어 쓰지 않는 수정입니다. 이들은 타사 확장 , 로컬 범위 (app / code / local / Mage)에 배치 된 핵심 파일사용자 정의 테마 입니다.

에서 코어 수정 젠토에 직접 적용되는 핵심 파일 (응용 프로그램 / 코드 / 코어), 현지화 파일 (응용 프로그램 / 로케일 / ko 페이지), 핵심 템플릿 과 같은 몇 가지 자바 스크립트 , 외부 라이브러리 고려되어야 거의가 그럼에도 불구하고 정의되지 않습니다 .

오프 코어 수정

타사 확장

업그레이드 중에 타사 확장이 문제의 주요 원인입니다. 이는 더 많은 확장 프로그램을 분석 할 때 더 많은 시간이 필요함을 의미합니다.

가장 먼저 확인해야 할 것은 확장에서 제공하는 기능이 업그레이드하려는 Magento 버전에서 아직 구현되지 않았는지입니다. 예를 들어 Yoast_CanonicalUrl, Mxperts_CustomerAddress또는 일부 확장 Fontis_Wysiwyg은 Magento 1.3.xx 이하에서 널리 사용되었지만 이제는 핵심 Magento 기능의 일부이므로 더 이상 필요하지 않습니다.

그런 다음 확장 프로그램이 모두 필요한지 확인 (고객에게 문의)하는 것이 좋습니다. 설치 한 확장이있을 수 있지만 실제로 사용되지는 않습니다. 따라서이 시점에서 일종의 정리를하는 것이 좋습니다.

그런 다음 확인해야 할 중요한 사항은 나머지 각 확장명과 업그레이드하려는 Magento 버전의 호환성입니다. 일부 확장이 호환되지 않고 사용 가능한 유사한 확장이없는 경우 일부 기능을 잃어 버리거나 기존 확장을 수정하여 호환되도록 어려운 선택을 할 수 있습니다.

참고 : 타사 확장을 직접 수정하지 말고 오래된 확장을 확장 한 새 확장을 만든 다음 새 확장의 부트 스트랩 XML에 종속성을 설정하십시오.

모든 작업이 완료된 후 나머지 각 확장에 대한 실제 분석을 제공 할 수 있습니다. 항상 etc/config.xml파일 검사로 시작해야 합니다. 찾아야 할 3 가지가 있습니다.

  • 클래스 재 작성 은 그 자체로는 깨끗한 기술이 아니지만 어떤 경우에는 다른 방법이 없습니다. 따라서 새 버전의 Magento에서 클래스를 다시 작성하면 잠재적 인 문제가 될 수 있습니다.
  • 레이아웃 업데이트 는 업그레이드에 문제를 일으키지 않지만 확장 프로그램이 최신 Magento 버전에서 더 이상 사용되지 않는 블록을 참조하는 경우이 문제를 해결해야합니다.
  • SQL 업데이트 는 업그레이드 과정에서 과소 평가 된 문제의 원인입니다. 타사 확장 프로그램이 기본 Magento 테이블의 일부 필드를 참조하는 외래 키를 만들 때 문제가 발생합니다. 결과적으로이 필드는 수정되지 않습니다. 그런 다음 기본 설치 스크립트가이 필드를 업데이트하려고하면 자동으로 실패합니다. 그 후에이 필드를 참조하는 모든 다음 설치 스크립트가 업그레이드를 중단시킵니다.

앱 / 코드 / 로컬 / 마법사

확장 프로그램을 완료 한 후에는 app/code/local/Mage디렉토리를 살펴볼 차례 입니다. 여기에서 수정 된 코어 파일이 local범위 로 이동되었습니다 . 그들 각각은 당신이 흰 머리카락을 고를 것입니다. 왜냐하면 당신이 거기에 수정 된 것이 무엇인지, 왜 그런지 알 수 없기 때문입니다. 따라서 각각을 원점과 비교하고 추가 된 기능을 새 버전의 해당 파일로 마이그레이션해야합니다.

커스텀 테마

마지막 번 오프 오프 코어 수정은 사용자 정의 테마입니다. 이것은 큰 문제는 아니지만 실제로는 회색 영역입니다. Magento 기본 테마는 버전마다 수정되고 있으며 각 사용자 지정 테마는 이러한 수정 중 일부를 모방해야합니다. 불행히도 찾아야 할 것과 마이그레이션해야 할 것을 결정하는 은색 총알은 없습니다. 따라서 업그레이드 후 몇 가지 중요한 놀라움과 작은 nitpicking을 준비하십시오.

핵심 수정

완벽한 세상에는 아무도 없습니다. 그러나 Magento 설치를 써드 파티 개발자가 악용 한 후 저렴한 가격으로 많은 것을 제공하면 무엇이든 기대할 수 있습니다. 따라서 코어 내 수정은 업그레이드 프로세스 중에 덮어 쓰게 됩니다. 대부분의 경우 오류가 발생하지 않지만 결과적으로 이러한 잔인한 방식으로 추가 된 기능은 손실됩니다.

코어 내 수정을 감지하는 유일한 방법은 Magento 설치의 모든 파일을 동일한 버전의 클린 파일과 비교하는 것입니다. git으로하는 것이 좋습니다. 왜? 모든 줄 바꿈과 공백을 잘 처리하기 때문에 간단합니다.

Magento 설치가 git에없는 경우에도 파일을 별도의 디렉토리에 복사 한 다음 git init를 실행할 수 있습니다. 그런 다음 초기 커밋을 수행하고 "깨끗한"Magento 파일을 복사 한 후 실행하십시오 git status. 다음과 같은 것을 얻을 것입니다 :

이제 수정 된 파일 수에 따라 git diff각 파일 또는 전체 배치에서 한 번에 실행할 수 있습니다 . 이렇게하면 모든 코어 내 수정 사항에 대한 포괄적 인 참조가 제공됩니다. phpStorm과 같은 git 시각화가 있다면 인생이 훨씬 쉽습니다.

git diff > changes.txt항상 손으로 수정 목록을 작성하는 것이 좋습니다 .

핵심 수정 사항 목록이 있으면 새 버전으로 전송해야 할 내용과이를 수행하는 데 얼마나 많은 시간이 필요한지 추정 할 수 있습니다.

이제 실제 업그레이드에 대한 조언을 드리고자합니다. 이 프로세스는 잘 문서화되어 있으므로 실행할 명령과 클릭 위치를 작성하지 않습니다. 그러나 몇 가지 중요한 사항에 악센트를 만들고 싶습니다.

  • 개발 환경에서 업그레이드한다고 가정합니다. 프로덕션 서버에서 업그레이드를 실행하는 것은 자살입니다.
  • 업그레이드하는 동안 프로덕션 환경에서 변경하지 마십시오. Magento를 버전 관리 또는 임시 잠금 파일 쓰기 금지 상태로 두십시오.
  • 타사 확장 프로그램을 모두 사용 중지하지만 초기에 사용하지 않도록 설정 한 확장 프로그램을 확인하여 나중에 사용하지 않도록 설정합니다.
  • 서버에서 Magento 정리 스크립트가 실행 중인지 확인하십시오. 그렇지 않으면로 시작하는 모든 테이블을 절단 dataflow_*, log_*, report_*.
  • 업그레이드시 기본 테마로 되돌립니다.

업그레이드 스크립트가 완료된 후 :

  • changes.txt실제로 마이그레이션 할 가치가있는 모든 코어 내 수정을 마이그레이션하기 전에 수행 한 참조를 참조하십시오 .
  • app/code/local/Mage업그레이드 전에 발견 된 수정 사항을 마이그레이션하십시오 .
  • 하나씩 확장하여 타사 확장을 사용합니다.
  • 테마를 다시 설정하고 결과를 프로덕션 서버와 종합적으로 비교하십시오.
  • 결과에 만족하면 프로덕션에 배포하십시오.

결론

나는 이것이 모두 무서운 것처럼 들리지만 정기적으로 업그레이드하고 핵심을 깨끗하게 유지하고 정말로 신뢰할 수있는 공급 업체의 확장 프로그램을 설치하고 정말로 필요한 경우에만이 기사에서 설명하는 어려움을 겪지 않을 것입니다. Magento EcoSystem을 건강하게 유지하면 보상을받을 수 있습니다.

포스트 스크립트

매우 복잡한 경우 최신 Magento를 새로 설치하여 모든 것을 시작하고 상점 테마와 기능을 단계별로 마이그레이션하는 것이 좋습니다. 이것은 확실히 시간이 걸리지 만 결국 당신은 무슨 일이 일어나고 있는지에 대한 완전한 인식과 함께 건강한 마 젠토 시스템을 갖게 될 것입니다.


코어 내 수정을 감지하는 또 다른 방법은 n98-magerun의 플러그인 Magento Project Mess Detector를 사용하는 것 입니다.
Julien Loizelet

15

일반적으로 개발 중에 코어 코드를 만지지 마십시오. Magento에는 내부 버그를 비롯하여 모든 문제를 해결할 수있는 많은 메커니즘이 있습니다. 그러나 주목해야 할 다른 문제들도 있습니다.

  1. 커뮤니티 또는 로컬 모듈이 코어 코드를 대체합니다 (에 대한 모듈 폴더에서 검색 할 수 있으며 <rewrite>실제로 이벤트와 같이 방해가되지 않는 코드를 사용해야하므로 좋지 않습니다)
  2. Magento는 이전 버전과의 호환성을 유지하려고하지만, 이전 버전과 호환 되지 않는 변경 사항이 많으면 프로세스에 추가 될 수있는 코드가 크게 변경 됩니다 (여기에서 찾을 수 있음 ).
  3. 코드를 개발 환경에 복제하는 것이 쉽고 가능합니까? 그렇다면 업그레이드 및 테스트를 실행하기 만하면됩니다.
  4. 업그레이드가 필요합니까? 클라이언트가 떠날 수없는 새로운 버전의 기능이 있습니까? 모든 보안 문제 (Magento가 백 패치를 제공하는 경우가 많습니다)

템플릿에 관한 한, 이전 경험에서 개발자가 템플릿 코딩에 열중하지 않는 한 거의 깨지지 않는다고 말할 수 있습니다 (어쨌든 블록에 있어야 함).


10

명심해야 할 사항은 다음과 같습니다.

  • 테마가 호환되는지 확인하십시오 (템플릿 파일에 광범위한 코딩이 있는지 확인하십시오)
  • 미디어가 어떻게 저장되는지 확인하십시오 (CDN 등을 사용하고 있습니까).
  • 특별한 캐싱 방법이 있는지 확인하십시오 (APC Memcached 등).

이 유형의 클라이언트 요청을 처리하는 한 가지 방법은 추정 검토를 수행하는 것입니다.

이를 위해서는 고객에게 (청구 가능) 시간을 보내고 프로젝트를 수행하는 데 더 정확한 시간 / 비용을 지불해야한다는 사실을 고객에게 알려 주어야합니다.

이 경로를 사용하면 귀하와 고객 모두에게 이익이됩니다.

고객은 일반적으로 귀하의 추정치에 대해 더 자신감을 갖게되고 가능한 스트레스를 줄임으로써 귀하의 권장 사항을 존중하여 귀하에게 이익이됩니다.

추정 검토 :

실제 견적 검토는 다음과 같은 내용입니다.

  • 라이브 데이터베이스를 덤프하고 개발 머신으로 가져 오기
  • magento 파일을 라이브 머신에서 개발자 머신으로 복사
  • 모든 것이 잘 작동하는지 확인하십시오
  • 업그레이드를 시도하고 초기 테스트를 수행하여 문제가 무엇인지 확인하십시오.

이 프로세스는 평균 2 시간의 청구 가능 시간이 필요하며 현재 시스템에 필요한 정보를 제공합니다.


1
"실시간 데이터베이스를 버리고 개발 머신으로 가져 오기"-PCI 규정 준수가 막 시작되었습니다. 해야 하지 ... 라이브 자격 증명을 수출
누가 복음 A. Leber 씨

10

우리는 Magento CE에서 다양한 업그레이드를 수행했습니다. 최악의 경우 1.3에서 1.7로 거의 하루가 걸렸습니다. 초기 추정치는 1-2 일이었습니다. 1.x에서 2.x로 업그레이드하는 것도 비슷한 작업이며 핵심 팀에서 마이그레이션 도구를 제공하더라도 처음부터 시작하는 것이 더 깨끗할 수 있습니다.


6

위에 주어진 훌륭한 답변에 한 가지를 추가하고 싶습니다.

  • VCS 및 적절한 배치 프로세스가 있는지 확인하십시오.

적절한 프로세스가 없으면 업그레이드를 수행하지 않으며 문제가 발생할 때 뒤로 물러 설 가능성이 있습니다 (이전에 사이트에서 작업하지 않은 경우에도 더 그렇습니다). Magento 업그레이드를 위해 우리에게 접근 한 고객의 약 90 % (이전에는 고객이 아니 었음)는 테스트 / 스테이징이없는 라이브 환경 만 갖추고 있습니다.


6

다른 엔터티와의 통합은 중요한 질문입니다. 예를 들어, 클라이언트가 Magento API를 통해 주문을 가져 오는 백엔드 시스템을 보유하고 있으며 업그레이드하는 동안 해당 통합의 연속성을 처리하지 못하는 경우가 종종 있습니다. 혼란에 빠질 수 있습니다.

구성 요소를 검토 할 때 다른 시스템과 통신하는 구성 요소를 찾으십시오. 실수로 테스트 데이터를 라이브 시스템으로 푸시하고 싶지 않기 때문에 각 구성 요소는 테스트하기에 이상적입니다. 원래 개발자가 사용했던 테스트 엔드 포인트가 존재하지만 업그레이드 할 때 더 이상 해당 정보가 없을 수 있습니다.


고마워요, 그것은 지금까지 본 적이없는 것이지만 알아 두는 것이 좋습니다!
ceckoslab
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.