Magento 2 and avoiding the rabbit hole

TonyBrown44 4,599 views 39 slides Feb 07, 2016
Slide 1
Slide 1 of 39
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39

About This Presentation

Magento 2 has brought the Magento community up to date with modern best practices and technology, which consequently means a learning curve, even for people who are very experienced with Magento 1. In this talk I will walk through some of my experiences so far in working with Magento 2, specifically...


Slide Content

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
MAGENTO 2 AND AVOIDING THE
RABBIT HOLE
Tony Brown

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Imagine…
•You’re on the “learn Magento 2” journey
•You hit a tricky problem which isn’t easy to
diagnose
•What do you do?
•How can you avoid losing time when learning /
fixing problems?

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
•Worked on Magento since 1.2
•Technical Director @ Space 48
•Love learning and collaborating

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Overview
•Magento 1 to Magento 2
•A learning / debugging technique
•Magento 2 development environment
•Problem solving example in M2

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Magento 1 to Magento 2
•Architecture changes
•Makes it easier to write tests
•More isolation of code
•More component friendly
•Mechanisms for more targeted changes
•Test coverage

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
What does this mean?
•Your WTF per minute rate is going to increase for a
while!

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Learning / Debugging Technique
•Debugging and Magento : https://youtu.be/xCjPQfuxxxQ
•Time can run away
•Regularly stepping back
•Pomodoro technique

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Dev Environment / Infrastructure
•VM via Vagrant
•Nginx, PHP-PFM (v7) with Xdebug
•Percona MySql
•Varnish
•SSL

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Varnish
Nginx
8080
HTTP
80
Varnish
Nginx
8080
HTTPS
80
Nginx
443

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Problem Solving Example

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
The problem
Varnish for Full Page Cache
+
SSL for the front-end
=
No navigation menu in Luma

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Research for M2 FPC
•Magento Stackexchange
•Same problem, but no answers! http://goo.gl/xK7VQi
•Alan Kent article
•http://devdocs.magento.com
•Other blog posts inc. Alan Storm: http://goo.gl/o4Z107

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
FPC with Varnish
•Varnish holds content responses for URL requests
•Magento decides if a page should be cached or not
•Ajax is used for private data
•ESI is used for finer control of public cache

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Are there any errors in the Magento Logs?
•Are there any console errors?
•Examine the HTML output?

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Output over HTTPS

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Output over HTTP

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Examine Varnish cache headers

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Find the block definition
/vendor/magento/module-theme/view/frontend/layout/default.xml

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Step through the code:
•/vendor/magento/module-page-cache/Model/
App/FrontController/VarnishPlugin.php

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
HTTPS = Not working
HTTP = working

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Visit the ESI Controller directly

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
HTTPS HTTP
magento2.local/page_cache/block/esi/blocks/[%22catalog.topnav%22]/
handles/…

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Verify the ESI Controller is being called by Varnish

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Looking for Varnish logs?… use varnishlog

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps
•Search for the error
•An old Varnish ticket was found:
By default ignore an <esi:include> with src=" https://..."
Feature +esi_ignore_https treats it as http://... instead.

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Debugging Steps

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
Conclusion
•Magento 2 has a tricky learning curve
•Take regular breaks to avoid wasting time
•The Varnish FPC implementation is pretty cool!

@TONEGOLF71
@SPACE48ERS
#MAGETITANSIT
THANKS!!
Any questions?