คุณให้การประมาณการสำหรับการอัพเกรด Magento อย่างไร


63

ข้อมูลทั่วไป:

คำถามนี้ถูกถามเดิมและต่อมาปิดใน StackOverflow เราระบุไว้ในเมตาว่านี่คือสถานที่ที่เหมาะสมสำหรับคำถามนี้

คำถามนี้เป็นประโยชน์ต่อผู้คนมากมายในการหาวิธีที่เหมาะสมในการประเมินการอัพเกรด Magento

คำถาม:

ฉันสนใจที่จะรู้ว่าคุณวัดเวลาที่จำเป็นสำหรับการอัพเกรด Magento ได้อย่างไร? ฉันเดาว่าส่วนใหญ่ของคุณมีเวลายากที่จะตอบคำถามของลูกค้า: "ใช้เวลานานแค่ไหนในการอัพเกรด Magento store ของฉัน"

โดยปกติแล้วลูกค้าจำเป็นต้องได้ยินตัวเลขเช่น: "มันจะใช้เวลา X ชั่วโมงและมันจะมีค่าใช้จ่าย Y bucks"

แนวคิดหลักที่อยู่เบื้องหลังคำถามคือเกี่ยวกับด้านเทคนิคและสิ่งใดที่คุณตรวจสอบในฐานะนักพัฒนาเพื่อทำการคำนวณของคุณเองสำหรับการอัพเกรด Magento

ฉันสร้างรายการตรวจสอบถัดไปเพียงเพื่อการคำนวณของฉันเอง:

  • แกนกลางของวีโอไอพีนั้นถูกจับไหม?
  • Magento DB schema มีการสัมผัสหรือไม่?
  • เรามีข้อมูลที่ไม่สอดคล้องกันในฐานข้อมูลหรือไม่?
  • มีการติดตั้งส่วนขยายที่กำหนดเองจำนวนเท่าใดในกลุ่มรหัสท้องถิ่นและชุมชน
  • ส่วนขยายที่กำหนดเองเข้ากันได้กับ Magento รุ่นล่าสุดหรือไม่
  • ผู้พัฒนาธีมใช้ไฟล์ local.xml สำหรับคำสั่งโครงร่างหรือเพียงแค่คัดลอกไฟล์ xml จากฐาน / ค่าเริ่มต้น / โครงร่างไปยังไดเรกทอรีโครงร่างของธีมที่กำหนดเองหรือไม่
  • เรามีวิธีไดเร็กตอรี่สั่ง / บล็อกแบบเลย์เอาต์ในไฟล์เลย์เอาต์ xml หรือไม่?
  • ฉันได้พัฒนาร้านวีโอไอพีนี้หรือไม่?

คุณคิดว่าฉันขาดอะไรไปบ้างหรือไม่และถ้าใช่คุณต้องการแบ่งปันกับฉันและชุมชนเพื่อรับคะแนนเพิ่มเติมสำหรับรายการตรวจสอบหรือไม่


สำหรับค่อนข้างง่าย ~ 0.875-1.5% ของรายได้ต่อปีสำหรับปานกลาง 1.75% ถึง 3.5% ของรายได้ต่อปีสำหรับ 2.625% เป็น 5.25% ของรายได้ต่อปีที่ยาก

คำตอบ:


100

การประมาณการอัปเกรดวีโอไอพีเป็นกระบวนการรวบรวมข้อมูลเกี่ยวกับการดัดแปลงที่ใช้กับการติดตั้งที่คุณกำลังจะทำให้ทันสมัยตรวจสอบว่าการแก้ไขเหล่านั้นอาจทำให้เกิดปัญหาและประเมินว่าต้องใช้เวลานานแค่ไหนในการแก้ไข

การดัดแปลงทั้งหมดสามารถแบ่งออกเป็นoff-coreและin-coreได้อย่างแท้จริง

การดัดแปลงแบบ Off-Core คือสิ่งที่จะไม่ถูกเขียนทับด้วยการอัพเกรด เหล่านั้นส่วนขยายของบุคคลที่ 3 , ไฟล์หลักใส่ลงไปในขอบเขตท้องถิ่น (app / รหัส / ท้องถิ่น / ผู้วิเศษ) และธีมที่กำหนดเอง

การปรับเปลี่ยนในแกนจะนำไปใช้โดยตรงกับไฟล์หลักของ Magento (แอพ / รหัส / แกนหลัก), ไฟล์การโลคัลไลเซชั่น (app / locale / en_US), เทมเพลตหลักและบางอย่างเช่นjavascripts , ไลบรารีภายนอกซึ่งไม่ค่อยกำหนดเอง .

การปรับเปลี่ยน Off-Core

ส่วนขยายของบุคคลที่สาม

ในระหว่างการอัพเกรดส่วนขยายของบุคคลที่สามเป็นแหล่งที่มาหลักของปัญหา ซึ่งหมายความว่าส่วนขยายเพิ่มเติมที่คุณมีเวลามากขึ้นคุณจะต้องวิเคราะห์พวกเขา

สิ่งแรกที่ต้องตรวจสอบคือถ้าฟังก์ชั่นที่มีให้โดยส่วนขยายนั้นยังไม่ได้ใช้งานในเวอร์ชันของ Magento ที่คุณกำลังอัพเกรด ยกตัวอย่างเช่นส่วนขยายบางอย่างเช่นYoast_CanonicalUrl, Mxperts_CustomerAddressหรือFontis_Wysiwygถูกนำมาใช้กันอย่างแพร่หลายในวีโอไอพี 1.3.xx และมากกว่า แต่ตอนนี้เป็นส่วนหนึ่งของการทำงานหลักวีโอไอพีและไม่จำเป็นต้อง

ดังนั้นควรตรวจสอบ (ถามลูกค้าของคุณ) ว่าคุณต้องการส่วนขยายทั้งหมดที่คุณมีหรือไม่ อาจมีนามสกุลที่คุณติดตั้ง แต่ไม่เคยใช้จริง ๆ ดังนั้น ณ จุดนี้มันเป็นการดีที่จะทำความสะอาด

จากนั้นสิ่งสำคัญในการตรวจสอบคือความเข้ากันได้ของส่วนขยายที่เหลือแต่ละส่วนด้วย Magento รุ่นที่คุณกำลังอัปเกรด ในกรณีที่ส่วนขยายบางส่วนไม่สามารถใช้งานร่วมกันได้และไม่มีส่วนขยายที่คล้ายกันคุณจะมีตัวเลือกที่ยากในการสูญเสียฟังก์ชันการทำงานบางอย่างหรือแก้ไขส่วนขยายที่มีอยู่เพื่อให้เข้ากันได้

หมายเหตุ: อย่าแก้ไขส่วนขยายของบุคคลที่สามโดยตรง แต่สร้างส่วนขยายใหม่ซึ่งจะขยายส่วนที่ล้าสมัยแล้วตั้งค่าการพึ่งพาใน bootstrap XML ของส่วนขยายใหม่

หลังจากเสร็จสิ้นการวิเคราะห์ที่แท้จริงของแต่ละส่วนขยายที่เหลือสามารถให้ มันจะเริ่มต้นด้วยการตรวจสอบetc/config.xmlไฟล์เสมอ มี 3 สิ่งที่ต้องพิจารณาคือ:

  • การเขียนคลาสใหม่ไม่ใช่เทคนิคที่สะอาดด้วยตัวเอง แต่ในบางกรณีก็ไม่มีวิธีอื่น ดังนั้นหากมีการเปลี่ยนคลาสที่เขียนใหม่ใน Magento เวอร์ชันใหม่อาจเป็นปัญหาที่อาจเกิดขึ้นได้
  • การอัปเดตเลย์เอาต์จะทำให้เกิดปัญหากับการอัปเกรดของคุณน้อยลง แต่ถ้าหากส่วนขยายอ้างอิงบล็อกซึ่งเลิกใช้ในเวอร์ชันวีโอไอพีที่ใหม่กว่าคุณจะต้องแก้ไขปัญหานี้
  • การอัปเดตของ SQLเป็นแหล่งของปัญหาอย่างมากในระหว่างการอัพเกรด ปัญหานี้เกิดขึ้นเมื่อส่วนขยายของบุคคลที่สามกำลังสร้างคีย์ต่างประเทศที่อ้างอิงถึงบางฟิลด์ในตาราง Magento ที่เป็นค่าเริ่มต้น เป็นผลให้ฟิลด์นี้ถูกล็อคจากการดัดแปลง และถ้าสคริปต์การติดตั้งดั้งเดิมจะพยายามอัปเดตฟิลด์นี้มันจะล้มเหลวอย่างเงียบ ๆ หลังจากนั้นทุกสคริปต์การติดตั้งถัดไปที่อ้างอิงถึงฟิลด์นี้จะทำให้การอัปเกรดของคุณล้มเหลว

app / รหัส / ท้องถิ่น / Mage

หลังจากเสร็จสิ้นส่วนขยายแล้วก็ถึงเวลาดูที่app/code/local/Mageไดเรกทอรีของคุณ ที่นี่คุณจะพบไฟล์แกนที่ถูกแก้ไขถูกย้ายเข้าไปในlocalขอบเขต พวกเขาแต่ละคนจะเสียค่าใช้จ่ายให้คุณผมสีเทาเพราะคุณไม่เคยรู้ (ถ้าไม่ใช่คุณที่ใส่ไว้ที่นั่น) สิ่งที่ได้รับการแก้ไขและเหตุผลอะไร ดังนั้นคุณต้องเปรียบเทียบแต่ละรายการกับจุดเริ่มต้นและโอนย้ายฟังก์ชันการทำงานเพิ่มเติมไปยังไฟล์ที่สอดคล้องของเวอร์ชันใหม่

ธีมที่กำหนดเอง

การปรับเปลี่ยน off-core มัดล่าสุดเป็นธีมที่กำหนดเอง นี่อาจดูเหมือนไม่ใช่เรื่องใหญ่ แต่อันที่จริงนี่เป็นพื้นที่สีเทา ธีมพื้นฐานของวีโอไอพีกำลังได้รับการแก้ไขจากรุ่นเป็นรุ่นและแต่ละชุดรูปแบบที่กำหนดเองจะต้องเลียนแบบการปรับเปลี่ยนบางส่วน น่าเสียดายที่ไม่มี bullet เงินเพื่อพิจารณาว่าควรมองหาอะไรและต้องย้ายอะไร ดังนั้นเพียงเตรียมพร้อมสำหรับความประหลาดใจที่สำคัญและ nitpicking เล็กน้อยหลังจากการอัปเกรดของคุณ

การปรับเปลี่ยนแบบ In-Core

ในโลกที่สมบูรณ์แบบไม่มี แต่เมื่อคุณได้รับการติดตั้ง Magento หลังจากถูกทารุณกรรมโดยผู้พัฒนาบุคคลที่สามผู้เสนอราคาถูกมากคุณสามารถคาดหวังได้ทุกอย่าง ดังนั้นการแก้ไข in-core คือสิ่งที่จะถูกเขียนทับในระหว่างกระบวนการอัพเกรด ในกรณีส่วนใหญ่มันจะไม่เกิดข้อผิดพลาดใด ๆ แต่เป็นผลให้คุณจะสูญเสียฟังก์ชันการทำงานที่เพิ่มเข้ามาในลักษณะที่โหดร้าย

วิธีเดียวที่จะตรวจจับการดัดแปลงแบบ in-core คือการเปรียบเทียบไฟล์ทั้งหมดของการติดตั้ง Magento ของคุณกับไฟล์ที่สะอาดในเวอร์ชั่นเดียวกัน ฉันแนะนำให้ทำกับคอมไพล์ ทำไม? เพียงเพราะมันจะจัดการกับบรรทัดใหม่และช่องว่างทั้งหมดอย่างดี

แม้ว่าการติดตั้ง Magento ของคุณไม่ได้อยู่ภายใต้ git คุณยังสามารถคัดลอกไฟล์ของคุณไปยังไดเรกทอรีอื่นแล้วเรียกใช้ git init จากนั้นให้เริ่มต้นกระทำการคัดลอก“สะอาด” git statusวีโอไอพีไฟล์ผ่านและเรียกใช้ คุณจะได้รับสิ่งนี้:

ตอนนี้ขึ้นอยู่กับจำนวนไฟล์ที่ถูกแก้ไขที่คุณสามารถเรียกใช้git diffในแต่ละไฟล์หรือในแบทช์ทั้งหมดในครั้งเดียว สิ่งนี้จะให้ข้อมูลอ้างอิงที่ครอบคลุมเกี่ยวกับการดัดแปลงในแกนทั้งหมดที่ทำ หากคุณมีการสร้างภาพข้อมูลคอมไพล์เช่น phpStorm ชีวิตเป็นวิธีที่ง่ายขึ้นสำหรับคุณ:

ฉันแนะนำให้ทำเช่นgit diff > changes.txtนั้นคุณจะมีรายการการแก้ไขด้วยตัวเองเสมอ

มีรายการของการแก้ไขหลักที่คุณสามารถประเมินสิ่งที่จะต้องถูกโอนไปยังรุ่นใหม่และระยะเวลาที่จะต้องทำเช่นนั้น

ตอนนี้ฉันอยากจะให้คำแนะนำสำหรับการอัพเกรดจริง กระบวนการนี้ได้รับการบันทึกไว้อย่างดีดังนั้นฉันจะไม่เขียนคำสั่งที่จะเรียกใช้และตำแหน่งที่จะคลิก อย่างไรก็ตามฉันต้องการเน้นในสิ่งสำคัญหลายประการ:

  • เรากำลังสมมติว่าคุณกำลังอัพเกรดในสภาพแวดล้อมการพัฒนาของคุณ การรันการอัปเกรดที่เซิร์ฟเวอร์การผลิตของคุณเป็นการฆ่าตัวตาย
  • อย่าปล่อยให้พวกเขาเปลี่ยนแปลงอะไรในการผลิตในขณะที่คุณกำลังอัพเกรด ทำให้ Magento ของคุณอยู่ภายใต้การควบคุมเวอร์ชันหรือแม้แต่ล็อกไฟล์ชั่วคราวจากการเขียน
  • ปิดใช้งานส่วนขยายของบุคคลที่สามทั้งหมด แต่โปรดทราบว่าส่วนขยายใดที่ถูกปิดใช้งานในตอนแรกดังนั้นคุณจะไม่เปิดใช้งานในภายหลัง
  • ตรวจสอบว่ามีสคริปต์การล้างข้อมูล Magento ทำงานบนเซิร์ฟเวอร์หรือไม่ มิฉะนั้นตัดตารางทั้งหมดที่เริ่มต้นด้วยdataflow_*, ,log_*report_*
  • เปลี่ยนกลับเป็นธีมเริ่มต้นในเวลาอัพเกรด

หลังจากอัปเกรดสคริปต์เสร็จสมบูรณ์:

  • การอ้างอิงที่changes.txtคุณทำก่อนที่จะโอนย้ายการแก้ไขแบบ in-core ทั้งหมดซึ่งเป็นการย้ายที่คุ้มค่าจริงๆ
  • โอนย้ายapp/code/local/Mageการดัดแปลงที่พบก่อนการอัพเกรด
  • หนึ่งต่อหนึ่งเปิดใช้งานส่วนขยายของบุคคลที่สาม
  • นำธีมของคุณกลับมาและเปรียบเทียบผลลัพธ์กับเซิร์ฟเวอร์ที่ใช้งานจริงอย่างละเอียด
  • ปรับใช้กับการผลิตเมื่อคุณพอใจกับผลลัพธ์

ข้อสรุป

ฉันรู้ว่าทั้งหมดนี้ฟังดูน่ากลัว แต่ถ้าคุณอัปเกรดเป็นประจำรักษาความสะอาดหลักของคุณและติดตั้งส่วนขยายเฉพาะจากผู้ขายที่คุณไว้วางใจจริงๆและเฉพาะเมื่อคุณต้องการจริงๆคุณจะไม่เผชิญกับความยากลำบากส่วนใหญ่ที่อธิบายไว้ในบทความนี้ รักษา Magento EcoSystem ของคุณให้แข็งแรงและคุณจะได้รับรางวัล

โพสต์ Scriptum

ในกรณีที่ซับซ้อนมากคุณควรเริ่มต้นใหม่ด้วยการติดตั้ง Magento ใหม่ล่าสุดและโยกย้ายธีมของร้านค้าและการใช้งานทีละขั้นตอน สิ่งนี้จะต้องใช้เวลาแน่นอน แต่ในที่สุดคุณจะมีระบบ Magento ที่มีสุขภาพดีพร้อมกับการรับรู้อย่างเต็มที่ถึงสิ่งที่เกิดขึ้น


วิธีการตรวจสอบการเปลี่ยนแปลงในหลักก็คือการใช้ปลั๊กอิน N98-magerun ของเครื่องตรวจจับ Mess วีโอไอพีโครงการ
Julien Loizelet

15

โดยทั่วไปการพูดรหัสแกนไม่ควรสัมผัสขณะพัฒนา วีโอไอพีมีกลไกมากมายที่จะช่วยให้คุณสามารถแก้ไขปัญหาต่าง ๆ แม้แต่ในบั๊กภายใน ที่ถูกกล่าวว่ามีปัญหาอื่น ๆ ที่ต้องระวังเช่นกัน

  1. ทำชุมชนใด ๆ หรือโมดูลท้องถิ่นแทนที่รหัสหลัก (สามารถค้นหาในโฟลเดอร์โมดูลสำหรับ<rewrite>และมันเป็นวิธีปฏิบัติที่ไม่ดีเพราะพวกเขาควรใช้รหัสที่ไม่ล่วงล้ำเช่นเหตุการณ์)
  2. Magento พยายามที่จะรักษารหัสไว้ข้างหลัง แต่บางครั้งรหัสก็เปลี่ยนไปอย่างมีนัยสำคัญ ( สามารถพบได้ที่นี่ ) หากการเปลี่ยนแปลงที่เข้ากันไม่ได้ของย้อนหลังนั้นมีมากมายซึ่งอาจเพิ่มไปยังกระบวนการ
  3. ง่ายหรือเป็นไปได้ในการทำซ้ำรหัสในสภาพแวดล้อมการพัฒนา ถ้าเป็นเช่นนั้นเพียงแค่เรียกใช้การอัพเกรดและการทดสอบอาจเป็นสิ่งที่จำเป็น
  4. จำเป็นต้องมีการอัพเกรดหรือไม่? มีฟีเจอร์ในเวอร์ชั่นใหม่ที่ลูกค้าไม่สามารถออกได้หรือไม่? ปัญหาด้านความปลอดภัยใด ๆ (หลาย ๆ ครั้งที่วีโอไอพีจัดหาแผ่นแปะปะหลัง)

เท่าที่เทมเพลตเกี่ยวข้องจากประสบการณ์ที่ผ่านมาฉันสามารถบอกคุณได้ว่ามันแทบจะไม่แตกยกเว้นว่าผู้พัฒนาบ้าคลั่งในการเขียนโค้ดเทมเพลต (ซึ่งควรจะเป็นบล็อกต่อไป)


10

นี่คือสิ่งที่คุณควรคำนึงถึง:

  • ตรวจสอบว่าชุดรูปแบบเข้ากันได้หรือไม่ (ตรวจสอบว่ามีการเข้ารหัสมากมายในไฟล์แม่แบบหรือไม่ - บางครั้งผู้พัฒนารุ่นน้องจะทำสิ่งนี้หรือไม่)
  • ตรวจสอบวิธีการจัดเก็บสื่อ (พวกเขาใช้ ฯลฯ ของ CDN)
  • ตรวจสอบว่ามีวิธีการแคชพิเศษอยู่หรือไม่ (APC Memcached ฯลฯ )

วิธีหนึ่งในการจัดการคำขอของลูกค้าประเภทนี้คือการตรวจสอบประมาณการ

นี่เป็นการบอกลูกค้าว่าคุณจะใช้เวลา (เรียกเก็บเงิน) ดูและจะให้เวลา / ค่าใช้จ่ายที่ถูกต้องมากขึ้นสำหรับการทำโครงการ

การทำเส้นทางนี้ให้เกิดประโยชน์ทั้งคุณและลูกค้า

ลูกค้ามักจะรู้สึกมั่นใจมากขึ้นในการประเมินของคุณและจะเคารพคำแนะนำของคุณซึ่งจะเป็นประโยชน์ต่อคุณโดยการลดความเครียดที่เป็นไปได้

การประเมินโดยประมาณ:

การตรวจสอบประมาณการที่เกิดขึ้นจริงจะเป็นสิ่งที่ตามสายเหล่านี้:

  • ดัมพ์ฐานข้อมูลสดและอิมพอร์ตบนเครื่องที่กำลังพัฒนา
  • คัดลอกไฟล์ magento จากเครื่องสดไปยังเครื่อง dev ของคุณ
  • ตรวจสอบให้แน่ใจว่าทุกอย่างเรียบร้อยและทำงานได้ดี
  • ลองอัปเกรดและทำการทดสอบเบื้องต้นเพื่อดูว่ามีอะไรผิดปกติ

กระบวนการนี้ควรใช้เวลาเฉลี่ยสองชั่วโมงที่เรียกเก็บเงินได้และจะให้ข้อมูลเชิงลึกที่จำเป็นกับคุณในระบบ


1
"ถ่ายโอนฐานข้อมูลสดและนำเข้าบนเครื่องพัฒนา" - การปฏิบัติตาม PCI ถูกยิงที่หัว ให้แน่ใจว่าจะไม่ส่งออกข้อมูลประจำตัวที่มีชีวิตอยู่ ...
ลุคเอ Leber

10

เราได้ทำการอัพเกรดมากมายบน Magento CE ที่แย่ที่สุดคือ 1.3 ถึง 1.7 ซึ่งใช้เวลาเกือบ 4 วันเต็ม ประมาณการเบื้องต้นคือ 1-2 วัน ฉันเดาว่าการอัปเกรดจาก 1.x เป็น 2.x จะเป็นภารกิจที่คล้ายกันมากและแม้ว่าเครื่องมือหลักในการโยกย้ายจะได้รับจากทีมงานหลัก แต่ก็อาจจะสะอาดกว่าเดิมหากเริ่มต้นใหม่


6

ฉันต้องการเพิ่มสิ่งหนึ่งคำตอบที่ยอดเยี่ยมที่ได้รับด้านบน:

  • ตรวจสอบว่ามี VCS และกระบวนการปรับใช้ที่เหมาะสมหรือไม่

ฉันจะไม่ทำการอัพเกรดหากไม่มีกระบวนการที่เหมาะสมอยู่ด้านหลังและความเป็นไปได้ที่จะถอยหลังเมื่อเกิดปัญหา (ยิ่งถ้าฉันไม่ได้ทำงานในไซต์มาก่อน) ประมาณ 90% ของลูกค้าที่เข้ามาหาเราเพื่ออัพเกรด Magento (ซึ่งไม่เคยเป็นลูกค้าของเรามาก่อน) จะมีสภาพแวดล้อมแบบสดๆโดยไม่ต้องมีการทดสอบ / จัดเตรียม VCS ใด ๆ ก็ตาม


6

การรวมเข้ากับหน่วยงานอื่นเป็นสิ่งสำคัญที่ต้องถาม นี่คือสิ่งที่คุณอาจไม่สามารถมองเห็นได้ด้วยการดูที่เว็บไซต์ - เป็นเรื่องปกติที่ลูกค้าจะมีระบบแบ็คเอนด์เรียกคำสั่งซื้อผ่าน Magento API ตัวอย่างเช่นและถ้าคุณไม่จัดการต่อเนื่องของการรวมนั้นในขณะที่อัพเกรดคุณ สามารถเป็นระเบียบ

เมื่อคุณตรวจสอบส่วนประกอบให้ระวังสิ่งที่พูดคุยกับระบบอื่น ๆ - สิ่งเหล่านี้จะมีขนดกที่จะทดสอบเพราะคุณไม่ต้องการส่งข้อมูลทดสอบไปยังระบบจริงโดยไม่ตั้งใจ บ่อยครั้งที่มีจุดสิ้นสุดการทดสอบที่มีอยู่ซึ่งนักพัฒนาดั้งเดิมใช้ แต่คุณอาจไม่มีข้อมูลนั้นอีกต่อไปเมื่อทำการอัพเกรด


ขอบคุณนั่นคือสิ่งที่ฉันไม่เคยเห็นมาก่อน แต่มันดีที่จะรู้!
ceckoslab
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.