Magento 2로 최대 효율성을 얻는 방법. Max Pronko와의 인터뷰
게시 됨: 2017-01-17Max Pronko는 초보자가 따라야 하는 Magento 전문가 중 한 명입니다. 그는 Magento 전문가이자 대중 연설가이며 Magento 인증 개발자이자 인기 있는 Magento 2 블로거입니다.
Magento에서 10년 간의 소프트웨어 개발 및 컨설팅 경험을 바탕으로 Max는 중대형 규모의 고품질 제품을 성공적으로 설계하고 구현했습니다.
트위터에서 Max를 팔로우하세요.
최근 Max는 Magento 헝가리를 만나 Magento 2 기조연설 에서 성능 최적화의 실제 사용 사례를 발표했습니다. 이와 관련하여 이 프레젠테이션과 직접적으로 관련된 몇 가지 질문으로 인터뷰를 시작하고자 합니다.
1부: 일반적인 Magento 확장 과제
거의 모든 Magento 2 판매자는 한편으로는 기본 플랫폼 기능을 크게 향상시키지만 다른 한편으로는 성능 워크플로에 부정적인 영향을 미치는 3D 파티 확장을 사용합니다.
Natalie: 전반적으로 3D 파티 확장의 코드 품질과 서버 로드에 영향을 미칠 수 있는 방식을 어떻게 평가할 수 있습니까?
Max: 나탈리, Magento 2에 대해 이야기할 기회를 주셔서 감사합니다. 저는 1년 이상 귀하의 블로그를 팔로우하고 있으며 방문할 때마다 흥미로운 기사를 발견합니다. 감사합니다.
아시다시피 저는 다음과 같은 이유로 코드를 검토하는 것을 좋아합니다.
- 첫째, 비즈니스 요구 사항을 완전한 기능의 고품질 기능으로 변환하는 방법에 대한 경험을 쌓고 흥미로운 기술을 관찰합니다. 특히 Magento 2의 경우.
- 둘째, Magento 생태계에서 지식 공유가 얼마나 좋은지 이해하는 데 도움이 됩니다.
타사 확장의 95%는 코드 개선에 대한 광범위한 코드 검토 및 지침이 필요합니다.
저는 현재 약 2년 동안 타사 확장 코드 검토를 수행해 왔습니다. 불행히도 내가 얻은 결과에 만족한다고 말할 수는 없습니다. 타사 확장의 95%에는 광범위한 코드 검토와 개선 지침이 필요합니다. 코딩 표준에 대해 아주 조용히 말씀드리겠습니다.
확장 프로그램이 특정 기능이 있는 일부 페이지만 만들고 다루는 경우에도 모든 웹 사이트 페이지의 성능 문제가 발생합니다. 예를 들어 기본 레이아웃 구성 파일에 캐시할 수 없는 블록을 포함합니다. Magento는 모든 페이지에 대해 페이지 캐시를 자동으로 비활성화합니다.
또 다른 예는 실행 결과를 클래스 변수에 저장하지 않고 시간이 많이 걸리는 백엔드 작업을 사용하는 것입니다. 첫 페이지 로드를 크게 줄일 수 있습니다.
유료 및 무료 확장을 포함하여 약 60개의 확장을 검토할 기회가 있었으므로 내 평가는 이 숫자를 기반으로 합니다. 확실히, 내가 사용하도록 추천할 수 있는 확장이 있습니다.
Natalie: 가장 자주 발생하는 코드 최적화 문제는 무엇이라고 생각하십니까?
타사 확장에서 프록시 클래스 를 사용하는 것을 본 적이 없습니다 . 그러나 재귀 객체 초기화 시간을 줄일 수 있습니다.
Max: 일반적으로 확장은 "구현 및 제공"이라고 부를 수 있는 성능 최적화 없이 한 라운드에서 생성됩니다. 두 번째 라운드는 거의 오지 않으며 코드는 최적화되지 않은 상태로 남아 있습니다. 예를 들어, 타사 확장에서 Proxy 클래스 를 사용하는 것을 본 적이 없습니다 . 그러나 재귀 객체 초기화 시간을 줄일 수 있습니다.
Natalie: Magento 2에 대한 첫 번째 확장을 작성하는 초보 개발자에게 어떤 최적화 조언을 줄 수 있습니까?
Max: 로컬 환경 외부, 가급적이면 클라우드 어딘가에서 Magento 2로 확장을 테스트하는 것이 좋습니다. 요즘 은 DigitalOcean이나 AWS의 가상 서버를 5~10달러에 보유하고 기본적인 종단 간 사용자 테스트를 실행하는 것이 그리 비싸지 않습니다. 최소한, 기본 제공되는 Magento 2.x 버전과 비교하여 꽤 좋은 성능 차이를 보일 수 있습니다.
2부: M2 성능 최적화
Natalie: 블록 캐시 특성(캐시 키에서 사용/피하는 것이 더 나은 점)에 대해 무엇을 말할 수 있습니까?
Max: Magento 2 Community Edition은 Varnish 프록시 서버 지원과 함께 제공됩니다. 캐시가 준비되지 않은 상태에서 처음 방문자를 걱정하지 않는 모든 상인에게 좋습니다. 블록 캐시는 Varnish에 저장되지 않은 페이지에 적용됩니다. 고객 계정, 카탈로그 검색, 장바구니와 같은 페이지에는 바니시가 없을 것으로 예상할 수 있습니다.
블록당 적절한 캐시 키는 적절한 캐시 항목을 구축하고 Redis와 같은 백엔드 스토리지에 대한 캐시 적중을 늘리는 데 매우 중요합니다. 이상적으로는 프론트 엔드 렌더링에 관련된 모든 엔터티가 getIdentities() 메서드 와 함께 제공되는 Magento\Framework\DataObject\IdentityInterface 인터페이스를 구현해야 합니다. 이 방법은 블록 캐시에 대해 적절한 캐시 키를 컴파일해야 하는 경우 매우 유용합니다.
Natalie: SQL 쿼리 최적화에 대한 정보가 있습니까?
Max: SQL 최적화의 경우 일반적으로 테이블에서 선택한 가능한 모든 데이터 변형을 나열하려고 합니다. 이상적으로는 모든 쿼리가 더 나은 성능을 위해 MySQL 인덱스에 도달해야 합니다. 이상적인 경우라는 것을 알고 있지만 테이블에 있는 많은 수의 레코드에 대한 쿼리 속도를 높이는 데 실제로 도움이 될 수 있습니다. 물론 SQL 쿼리 최적화는 큰 주제이므로 몇 시간 동안 이야기할 수 있습니다.
3부: Magento 2 검색
Magento 2는 M1보다 뛰어난 기본 검색 기능을 자랑할 수 있지만 여전히 복합 쿼리, 오타, 자동 고침, 동의어는 지원되지 않습니다. 또한 M2 검색은 카테고리 및 CMS 페이지를 검색하지 않습니다.
Natalie: CE 에디션에서 검색을 개선하는 가장 좋은 방법은 무엇입니까? 확장 또는 외부 검색 엔진은 무엇입니까?
Max: Magento 2 Community Edition용 Elasticsearch 사용을 고려하고 있습니다. 물론 사내에서든 타사 확장을 사용하든 개발이 필요합니다. Magento 2 프로젝트 중 하나의 경우 동의어와 같은 추가 구성이 포함된 기본 제공 검색을 사용했으며 일반적인 검색 쿼리에 대한 방문 페이지로 리디렉션했습니다. 그러나 이것은 단기적인 해결책이므로 외부 서비스를 이용하겠습니다.
Natalie: 외부 검색 엔진에 대해 말하자면, Solr, Sphinx 또는 Elasticsearch(또는 기타) 중 어느 것이 소규모/중형/빅 데이터 웹사이트에 더 낫습니까?
Max: 소규모 웹사이트의 경우 기본 Magento 2 검색을 고려하겠습니다. 다른 솔루션의 경우 자체 솔루션을 구축하려는 경우 확장 및 문서화가 얼마나 좋은지에 관한 것입니다. Elasticsearch는 내가 선호하는 옵션으로 제공됩니다.
Natalie: 기본 기능을 향상시킬 수 있는 검색 확장 프로그램을 추천할 수 있습니까?
Max: MageWorx에서 만든 Magento 2용 AutoComplete 모듈을 검토한 경험이 있습니다. 기본 Magento 2 Community Edition 자동 제안 기능에 비해 사용자 경험이 크게 향상되었습니다. MageWorx AutoComplete 모듈은 판매자에게 더 많은 전환과 판매를 유도합니다. 코드 구현과 관련하여 제 점수는 5점 만점에 4.5점입니다. 전반적인 개발자 경험을 향상시키기 위해 수행할 수 있는 몇 가지 사소한 개선 사항이 있습니다. AutoComplete 모듈의 좋은 점 중 하나는 무료로 다운로드할 수 있다는 것입니다. Magento 2 판매자에게 이 모듈을 사용하는 것을 고려하고 권장합니다.
그 외에도 Magento 2의 검색 관련 모듈을 계속 검토하고 코드 품질에 대한 피드백을 제공할 것입니다.
파트 4: Magento 2 챌린지
Natalie: 수년간 Magento와 함께 일한 후 전투 테스트를 거친 Magento 개발자입니다. 플랫폼의 두 번째 버전이 가져오는 가장 어려운 문제는 무엇입니까?
예를 들어, 내가 알고 있는 것처럼 M2의 약간의 코드 변경은 많은 작업(예: bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile 등)으로 이어집니다. )
Max: 개발자가 PHPStorm 앞에 앉아서 코드를 작성할 때 대부분의 경우 Magento 2 아키텍처를 깊이 파고들 시간이 없다고 생각합니다. 예를 들어, UI 구성 요소에 대해 불평하고 사용에 대한 실제 예제가 부족한 훌륭한 개발자 몇 명을 알고 있습니다. 새로운 Magento DevDocs는 UI 구성 요소에 대한 좋은 개요를 제공합니다.
Magento 1에 대한 좋은 경험이 있는 개발자는 Magento 2가 복잡하고 때로는 도전적이라고 생각합니다. 새로운 기술은 항상 새로운 것을 배울 수 있는 새로운 기회를 제공합니다.
그것에 대한 그림도 있습니다.
Natalie: 그리고 마침내 2015년 11월에 Magento 2가 출시되었습니다. 전 세계의 상인들이 마이그레이션을 시작할 준비가 완전히 되었다고 생각하십니까?
맥스: 당연히 그렇습니다. 소프트웨어로서의 Magento 2는 GitHub의 몇 가지 미해결 문제보다 더 많은 이점이 있습니다. 잘 계획된 마이그레이션 및 마케팅 전략의 경우 Magento 1에 비해 분명히 더 많은 수익을 가져올 수 있습니다. 2015년 8월에 Magento 2 프로젝트 중 하나가 베타 릴리스였을 때 '예'라고 말한 것을 기억합니다. 이제 우리는 Magento 2를 기반으로 하는 전자상거래 웹사이트를 사용하고 구축하게 된 것을 기쁘게 생각합니다.
Pronko Consulting 의 저희 팀은 기꺼이 새로운 비전을 실현하고 새로운 Magento 2 웹사이트를 출시할 것입니다.
*****
이 인터뷰에 대해 Max에게 감사를 표하고 그와 그의 팀이 생산적이고 성공적인 한 해가 되기를 바랍니다.