Load In The Loop: Episode 20 – 1st In Coffee
Load In the Loop: Episode 20 is here! Join Eric Hileman and Ivan Chepurnyi as they identify and fix some performance issues for 1st In Coffee, an online coffee superstore. What will they find? Can they fix it?
Disclaimer: There were some tech issues with the screen recording software which resulted in lots of clipping. This has been solved and will not be present in the next episode!
Sponsored by blackfire: https://blackfire.io/
Follow us on Twitter! https://twitter.com/loadintheloop
Ivan: email@example.com, @IvanChepurnyi
Eric: firstname.lastname@example.org, @ericvhileman
Table of Contents
(00:00:00) Opening Chat
(00:9:52:00) Coffee Chat
(00:12:00) Profiling Begins
(00:16:00) Brand Extension Looks Great (Nice Work Laura Folco)
(00:22:00) Separate Footer/Header Caching
(00:24:00) Bread Financing Block
(00:29:30) Redirect to Shopping Cart After Adding to Cart
(00:37:00) Checkout Loading Individual Pages
(00:39:00) MagePack Optimize Checkout
(00:51:30) Switch from FPC to Varnish
(00:54:00) Summary and Wrap Up
Ivan’s Sync Magento 2 Migration: https://github.com/EcomDev/sync-magento-2-migration
Ivan Chepurnyi: [00:00:00] Hey, Eric, how are you doing? How’s it going?
Eric Hileman: [00:00:03] Good, good.
Ivan Chepurnyi: [00:00:05] We didn’t record for a while. Right? So like almost couple of, I think like at least a month or something like that?
Eric Hileman: [00:00:12] It feels like it’s been forever at times. Just completely slowed down right now.
Ivan Chepurnyi: [00:00:17] yeah. Is there is, there is so many things actually changed during that time, you know, like, I got some interesting projects released.
I don’t know. Have you seen it or not?
Eric Hileman: [00:00:28] Which one? You’ve got quite a few.
Ivan Chepurnyi: [00:00:31] Yeah. Yeah. Definitely. I have got quite a few, but, one of the terms that, I think everyone anticipated as a tool to import quickly products into Magento.
Eric Hileman: [00:00:41] I did see that one. Yeah, that’s great.
Ivan Chepurnyi: [00:00:44] This is unfortunately not what I wanted to release originally because, and then I released an asynchronous tool because it took too much time to build an assistant coordinator Swan.
So I decided better to give people something right now before, you know, like I, finish the asynchronous tool.
Eric Hileman: [00:01:01] what’s the name of the project for people watching?
Ivan Chepurnyi: [00:01:04] Oh, it’s a, we actually going to put it in a, show notes. it’s called a sync Magento migration. So basically what this tool does:
you can install it on Magento one store and you can export data from it. You can also install it in Magento to store and expert data for. Oh, cool. So it’s kind of smart solution that actually works with both that’s the basis. So it doesn’t care is it Magento one or Magento two? that the way structure is almost similar, like there is some differences, but in general, like in any community edition or even, I think it was working with Magento one enterprise.
So you can get, get a dump of the data from Magento 1 enterprise and made it in, import it into Magento 2 commerce, but it doesn’t support a catalog staging. Because the customer for which we should build it as the first things that we did for their Magento 2 commerce was disable to pull the stage in modules.
So it works with the standard community structure of the database and it exports all the data in the CSV files. And when you export the data into CSV files, you actually can apply mappings and transform the data while you export it. So you can and decide, Hey, I don’t want to use those attributes anymore that I was using in Magento one.
But I want to start fresh. I want to know, like have much more cleaner data. I won’t maybe reorganized the structure of the price increases for that customer that they will do the originally, they had the very interesting thing. Like they had this global price for the product and then they had the currency conversion for each store.
And with Magento 2 they decided to go, Hey, we actually want to manage our prices on our own in different sales channels because our company has been acquired and we are now actually having two warehouses, one in the United States and one in Europe. And then yeah, when we need to have something around, surprising to work differently.
So and then we created for them a very simple converter. And it was taking the price of the product and it was creating a new feed of the data into Magento 2, as it was actually creating records for the websites was adjusted prices.
Eric Hileman: [00:03:25] There’s still what, almost a hundred thousand Magento one stores out there? I think they said something like 80,000
Ivan Chepurnyi: [00:03:35] I like this tool a lot because like, it, it gives you possibility. It was in 10 minutes. The expert data from Magento one store and import it into vanilla Magento two. So like you don’t need to do anything like you can just export the data, import the data back and you can test, Hey, how my store will look like under default Magento 2.
Like, you don’t need to set up a lot of things. Like you don’t need to install in any modules in Magento two to make it work. So this has completely standalone tools that you can just, Grab specified database credentials. It will take the database credentials from one Magento and import it into another.
So that’s kind of cool.
Eric Hileman: [00:04:16] Yeah, it’s really cool. Hopefully it’ll help a lot of people make the leap over to M2.
Ivan Chepurnyi: [00:04:24] Yeah. Is there is, there is, there is a lot of struggles in Magento 2 ititself, but in general, like I like the product. but I, I don’t see, you know, like, Is that a huge, issue itself, you know, like, Oh wait, do I actually share this screen with zoom?
Okay. So I’m still sharing the screen with zoom.
Eric Hileman: [00:04:49] Yeah. Yeah. I see the website we’re going to work on today.
Ivan Chepurnyi: [00:04:56] Yeah. Oh my goodness. Yeah, it is. It’s a little bit pity, is that the idea is this way, but I wanted to actually to share as a different screen, but now that’s
Eric Hileman: [00:05:06] what I was like, Hey, tell the viewers the name name.
Ivan Chepurnyi: [00:05:10] Yeah. But, I think we anyway have different recordings, so we will respond.
See, no, 98,
Eric Hileman: [00:05:16] 98,000 is my last count of M1 stores still out there according to MageIntel from San SAC.
Ivan Chepurnyi: [00:05:25] And
Eric Hileman: [00:05:25] 38,000, almost 39,000 M2 stores. So quite a lot of M1 stores that are having to figure out what they’re going to do next. So hopefully this encourages more people to go to M2 and make it easier.
I think the more tools, the easier is is
Ivan Chepurnyi: [00:05:41] I feel like a lot of companies actually,are using merchants from different platforms. Like, you saw those, tweets from William, and he pointed out that, commerce cloud, right from… from Salesforce, they were sending very fishy. You know, like weird marketing emails telling, Hey, you seen what was happening with Magento and how about we blend a transition plan to commerce cloud?
Eric Hileman: [00:06:13] Yeah, that’s ridiculous, man. That was downloader like downloader was the key in that exploit. It’s always been. Like, that’s nothing new. Like you should have had downloader disabled from the beginning. Like,
Ivan Chepurnyi: [00:06:28] yeah. And in general, like downloader has no value since Magento one went out of life because there’s no more end points from which you can actually download.
Eric Hileman: [00:06:35] Yeah. Without Magento connect, it’s useless. We went through and, and because we have a partnership with Willem over there, so he learned it as early and we went through and blocked, globally, downloader for all of our among customers.
Ivan Chepurnyi: [00:06:48] Now, I don’t know like why people, like, if you have a Magento project being ever developed by an agency, usually you don’t have downloader because like, it was a good practice always to remove download directory from repository, even because like, you don’t need it at all.
Downloader is used only for people who actually install was installed in extensions, you know, like indoor, actually doing Magento stores themselves. So I can understand like, Why is this as a problem, but generally like, this is a problem of the people who were using Magento behind the old date, and even didn’t consult anyone, you know, like in order to start thinking, Hey, how can I secure my Magento instance?
Because usually people who install it themselves, don’t install it on Magento hostings. they probably just use some shared hosting or something, you know, like this completely unconfigured for Magento.
Eric Hileman: [00:07:49] Willem posted some data to show that one of the other really well known and popular hosting providers had, I think a hundred or some compromised stores, even though they’re selling an M1 security product and charging people extra for it.
So. Host with us. That’s all I can say.
Ivan Chepurnyi: [00:08:12] Yeah, you guys definitely have a better response. And so you have 24 seven support for, for it. So yeah, it should be. Quite clear. So, what do we have? well, Oh yeah. So, so yeah, let’s do is our intro, right?
Eric Hileman: [00:08:32] Yeah, let’s do it. Load In The Loop is sponsored by blackfire.io.
I’m Eric Hileman, CEO, and co founder of MageMojo Magento hosting out of New York city and the purpose of this program is to take some of what we’ve learned from over 10 years of Magento specific hosting and share that with you when we evaluate one of our customers stores. We hope that it will improve your Magento skills and the performance of your Magent o stores.
It’s been a while since we recorded an intro a lot with me on this trip is my cohost Ivan.
Ivan Chepurnyi: [00:09:04] Hello, my name is . I am a Magento performance consultant out of the Netherlands. I work with Magento since 2007, and I’m kind of lucky to have a nice cohost like Eric here. And we’re really gonna rock this store today and see what kind of performance bottlenecks it has.
So, Eric, tell us a little bit more about the customer.
Eric Hileman: [00:09:30] First thing, coffee, everybody loves coffee.
Ivan Chepurnyi: [00:09:34] Oh, I’m actually having coffee. Right.
Eric Hileman: [00:09:37] I quit drinking coffee. I had to the caffeine. it’s just too much, but I drink a little bit of tea, but man, I was, I still love coffee. I wish I could drink it. But. Yeah, I had to, I had to back off of it, but this is, they sell some really cool, like higher end machines.
So if you’re really into it, like, they’ve got some cool stuff
Ivan Chepurnyi: [00:09:59] I have, I’m kind of lazy coffee drinker. Like I really like my Nespresso machine at home, so I just then, but also we have, Not, it filtered coffee machine, but more kind of just a device from the glass where he can put coffee filters.
And if you want to make a cold brew, we sometimes do that as well. So this is kind of interesting process because you have to put some ice cubes and over the long period of time, just going to drip through the coffee.
Eric Hileman: [00:10:32] Never drank cold brew, cold coffee at all. It just seems like the weirdest thing to me, like, it’d be a hundred degrees outside.
And if I was drinking coffee, I was drinking
Like people love cold cold coffee. That just seems so wrong to me. I don’t. Did you, did you like it? Did you drink it a lot?
Ivan Chepurnyi: [00:10:51] I did drink it, especially in a warm time. It’s, it’s kind of nice experience because the taste is different. So, you can, I think appreciate more as the flavors inside of the coffee comparing to when it’s just, you know, like was.
Washed over a was a hot water, you know, like
Eric Hileman: [00:11:12] yeah, that makes sense. That’s true.
Ivan Chepurnyi: [00:11:15] So is there is an interest in experience, like if you’ve never tried it, you should, you should at least once try.
Eric Hileman: [00:11:24] I’ve tried it. It’s just not my thing.
Ivan Chepurnyi: [00:11:28] I see. Okay. So let’s shall we? Yeah. Okay, well, let’s do a profile or, let’s disable aggregation.
Eric Hileman: [00:11:40] They just launched a SEM two site. So it’s pretty new, probably some things to tweak.
Ivan Chepurnyi: [00:11:48] It looks interesting.
I really liked this photo, you know, like in the cornfield Lauer like me, you know, like, it. You
Eric Hileman: [00:11:59] can smell it. Yeah. I guess, smell that photo and taste it.
Ivan Chepurnyi: [00:12:04] Okay. So they have 65. The way square is, it’s kind of good result in my opinion, like this is quite good.
So nothing extra ordinary. Here. So there is, nothing except that I think like ZOS protests kind of take quite a while, a lot of time, but in general, like all this stuff is whizzing, reasonable amounts and, bros or some overhead of the profiler itself here. Okay. have some kind of caching, right?
So they have fuzzy. Lisa was a brands. Hmm. Hmm. Oh, so it’s a widget and it has a standard block. HTML cash box. Is this one I see here is that, it was a brand repository. I’m getting loaded word. Well, like they don’t have a lot by single brand. Like it’s done all at once. So I really liked that. It’s kind of green.
Let’s say that that way square is just too. They did that. To see if there’s something custom. So I see here some standard Magento stuff like Zillow selects, from block CMS blocks. this is actually some things that they want to build in optimization as a module, as it’s going to be open source for Magento, in general, like.
When you are on a page, you have a lot of small callouts as SIM, as blocks. And each of those blocks, actually introduces that the way squarely define it. It’s, ID and Zanta law, it’s content and check if it’s available in the story of you. So I want to combine a toll, you know, into one single database query, instead of, you know, like when I was at, on the pagers, let’s say certain different blocks.
Right. And the, each of these certain blocks is loaded separately. It’s kind of a hit to the database. So it’s possible to do it without, you know, like I’m doing it by doing some of servers, checking out structure and checking the page, HTML content for possible CMS block insight, and then just pre loading it in advance by you.
Then the collection, the city of, you know, like doing it one by one. but yeah, there is nothing wrong with their, implementation. So this one I kind of flagged, so let’s go into espresso machines. Let’s see,
Eric Hileman: [00:14:44] is that the first brands extension that you’ve liked? Because we usually see what a amnesty shop buy, which is we’re always complaining about.
I just saw a headworks brands, crushing someone’s varnish clearing doing like 15, 20 purge requests a second from a Cron, which was really weird.
Ivan Chepurnyi: [00:15:09] I honestly don’t see brands here, bro. Oh yeah, here it is. So here you see in the bottom of the page, The rest, some brands, URLs. I think this is the blogs that get slowed it, right?
Yeah. So, this one is just a simple collection and it’s as what I, so actually all was there. Oh, I already profiled something, right. Or it was the previous one. No, it was a homepage. So here, as we can see. coffee brand. So there’s definitely a custom module built by developers. So, this is what happens when you build actually a custom functionality for your specific customer.
Like you, you don’t implement the blows and whistles extensions.
Eric Hileman: [00:15:57] Good job, Laura
Ivan Chepurnyi: [00:15:58] Foco. Yeah. this is, I think a prime example of how you need to build a brand extension. Like you need to create a separate functionality for, you know, like different views. Like if you list brands, you have to create a single, you know, like collections that we were turning, use this list of the brands.
If you, have a single brand page he has, and you can access a brand by 80 or something like that, but never use, you know, like bows in the same place. Better to have separate models for separate amount of data. Let’s put it this way. So let’s go to espresso machines and, this is category with some lyric navigation.
Oh, I want to see the 20,000 to nimble. Okay. Wow.
Eric Hileman: [00:16:56] I have no idea what makes the difference between a $23,000 express, a machine or a $2,000, especially a machine or even a $200 espresso machine? Is it the milk frothing? Is that the trick? Like the steam?
Ivan Chepurnyi: [00:17:11] You’ll see as the, how here? if reach for the milk. Okay.
Eric Hileman: [00:17:17] I mean, that thing looks like it’ll do your taxes too.
Ivan Chepurnyi: [00:17:20] looks
Eric Hileman: [00:17:22] like a lot more than a machine, just the machine. So they got the fridge and then, like, some sort of digital control there where you can
Ivan Chepurnyi: [00:17:35] I didn’t know what it does, you know,
Eric Hileman: [00:17:36] commercial level. Maybe, maybe it’s really quick and you can just use it all day and. It won’t be broken in a year.
Yeah. Opposite is hotels, convenience stores.
Ivan Chepurnyi: [00:17:51] What was the prices? Mind-boggling, you know, like I could, you know, like assemble at least 20, nice, PCs, you know, for this money. Yeah. Or I can buy 20 RTX a Saturday too.
Eric Hileman: [00:18:12] Yeah. Buy one on eBay.
Ivan Chepurnyi: [00:18:18] Okay. Is this kind of espresso machine real like, you know, like very rough looking.
Eric Hileman: [00:18:25] Yeah. Yeah. It’s like steam power is like industrial. There they look
Ivan Chepurnyi: [00:18:28] cool. A friend of mine here has a similar machine. And for him it’s like, like a chill, you know, like when he prepares a coffee here, he agreeance, beans himself, you know, and Zen, he puts it inside of the older ones and prepares the coffee.
So kind of pre okay. we went too far away from the topic. let’s profile a category page. Right. Let’s see how it goes and comparing to other category. Pedras I can tell you that the time, when’s the bar, when the green was quite fast, let’s see what kind of data it collects Hoser.
Okay. So. This is sweater, nice number of database queries. So hundred and five. And Adrian’s like, there was quite a lot of work in optimization because Siemens thundered, Magento doesn’t do that. Well, I don’t always, they use MSI or not, but with MSI ASOS, number of other way square is, is usually kind of high.
okay. So what do I see here? I see here some kind of a view configuration gash. this one takes some time and in general, I think there is some price, a retrieval. Yeah. So some price loading. Yeah. Let’s see. Actually it’s about the way square is what actually takes the most amount of that way. Square is product price.
So, this is somethings that the standard commission, the core issue together with is so there is nothing custom, as this is like, depends on like, do they really want to optimize it? Like, does it, war’s the time, you know, like if I was able to really, Went into optimizing your, like every single IOSCO like Xero price, rendering goods dropped a lot in time itself, but generally, yeah, speaking, you need to think about, you know, like investing your time into fixing Magento core box to get better performance or not.
Right. And is this case broadly? It doesn’t make sense for them to do it. because they already have quite nice implementation. I, I don’t see thing, but here, the only things that I would do, In Xero, blase, like not use a standard FPC, but you sworn shift BC and move four footer as he assigned glute and move header as ESI include.
So then you have separate Foodora and Heather been cashable by Magento. So Jose saved some time on rendering, ZOS blocks, but in general, yeah, we seize it mostly. There is some brands. Being loaded. And then there is some, same as blocks as well. So let, let’s see. When we add something to the shopping cart.
Can we add something to the shopping cart? Yes, we can. Okay, great. This was interesting. Okay. Let me. Weekly journal on profile or requests feature, because I think there is some IOC schools happening.
Okay. Let’s check it out,
this one, I don’t understand what it does.
let’s see again, what kind of profiles and those the hell. So, you know, this is a product page and this is, some kind of funny yaks request. For bread checkout configuring the problem is this, this is a small block here, right? I don’t know if it’s bread or not.
Eric Hileman: [00:23:02] Yeah. The financing probably.
Ivan Chepurnyi: [00:23:05] Yeah.
Breadth embedded. So this module is giving, you know, like some kind of funny issues from in my point. Phew. Because you know, like, Every single boiler page, triggers and a yuck skull, two uncashed page, because as far as they see like Xavier have some kind of a configured data, but this is actually not cashable.
Eric Hileman: [00:23:36] so they generate that financing costs like in the store, they’re not calling out to get it.
Ivan Chepurnyi: [00:23:42] Yes. And. What I see here is a problem. Caches is data, but in Zanzie steal, trigger all of Magento bootstrap. So right now I Caesar a single radius, a gas, coal, or sound Fang, you know, like, so Hosea loading, some kind of a well you from a cash.
But, yeah, we don’t see. What is the actual goal of doing this, call does the database? I th I think there is some kind of, an API calls. So at least they, you know, like gash, You know, some kind of minimal let’s do it on a different product. Let’s see if it’s proper cash or it’s global cash. Right.
So let’s turn on, this, profile requests and let’s go into, nice machine Jura and then, okay. Here we have some time to take, to load it. So I think it’s,
it’s kind of interesting. Okay. Let’s see.
so at least. This one we see as a, this is actually the same
so Zen, I don’t get, like, why not to include this data in a page itself? Like if it’s the same itself, maybe as a, like doing coal to serve body, itself, like when you refresh a page and it does some. Call, you know, like, to this Brett server or something like that. Yeah.
So, this is in general, like is a problem for scalability makers. when you already have this page, like you can render this configuration required to load this switch at the end of strong serve body. Like you don’t need to do another call to Magento backend to do it. So whatever’s this extension does it needs Justin.
Lyons’s stop here. Like, what, why do we need to do it for a yak score? It seems quite redundant in my opinion. So, let’s see. what else do we have, here? Like, I don’t remember is there was some other pen profiles, right?
Okay. Okay. Here is just a product page. Let’s see what’s happening on the product page, actually 110 queries. that’s quite a lot for a product page.
Well, let’s see what actually, those greater risks are.
Okay. So it is probably some gentle thing when gentle tries to, Lord for every single product that the chosen the page, he tries to access bunch of CMS walks by the standard one and zero. Is there a slot of unique queries? Hm Hmm
Oh yeah. Seems like there is some configurable products. In a place. However, I don’t see here. Any confusion, maybe from this ones, maybe from recommended, accessories, there is some configurable corals that trigger some additional database operations, but nothing too bad. so let’s see if we gonna profile
other stuff here.
and let’s add to cart. Let’s see how it goes with the shopping cart. Okay. so when was the first suggestions, like why do we need to redirect customer and direct with the shopping cart? Right. Because if you’re really a customer directly to the shopping cards or a slot of performance hit under high load, because.
In that case, the shopping cart might result in some worry, weird, overload of your production server. So let’s see, what kind of requests we have here, right? So when we add product to the shopping cart, brother gets loaded and the customer section load gets triggered in order to receive. As a data from a server about which product has been added to the cart to show in a mini card block.
So you already have this information about it. What was that does a shopping cart and what usually people do in order to know, like he has the same kind of an effect of shoving the shopping cart of thread into cart. Just showing this popup afternoon garden that’s more than enough, especially like basically this mini card is already a copy of the and cart page.
And when you were a direct customer directly to the shopping cart page, you just, may make customer actually frustrated because under high load loading, shopping cart page may be quite a problem.
Eric Hileman: [00:29:06] I wonder if that’s a, I wonder if that’s a
Ivan Chepurnyi: [00:29:09] choice. I think it’s, it’s a Magento configuration option and I’m not sure what kind of a default option maybe as a default option is actually to direct customers to the shopping cart.
Eric Hileman: [00:29:24] they’re, if their customers usually purchase one item, they probably like, okay. Since most of our customers purchase one item, let’s try to get them through the checkout after they add it. And just keep that momentum going.
Ivan Chepurnyi: [00:29:36] Maybe. Yeah. Maybe I’m a little bit too much in the mind, like, Hey, let’s minimize number of several resources in order to be more efficient.
and from point of view, like we already.
Eric Hileman: [00:29:48] Are they upselling grinders or things though? I would think they would like you order machine. They would want to be like, Hey, get this grinder, Hey, add some coffee to go with that. Like,
Ivan Chepurnyi: [00:29:57] and the thing is like, as soon as I’m in shopping cart, I cannot add this things to the cart.
Right. Because I see it on a product page, but I don’t see it in the shopping cart.
Eric Hileman: [00:30:06] The mugs up sell some mugs. The machine probably has a grinder in it, but you got to sell some mugs and stuff.
Ivan Chepurnyi: [00:30:14] You so. You already, kind of when you go to the shopping cart, you, you don’t see any upsell here, at least right now.
I don’t see any, so
Eric Hileman: [00:30:26] yeah. Yeah. Let’s take a look at it. Maybe it was intentional. Maybe, maybe they didn’t think about it.
Ivan Chepurnyi: [00:30:35] okay. So here we are. let’s refresh the page to see how it goes here. So we have here as an API call and yeah. Bunch of other stuff. So is there is no need to go to the shopping cart after you add the cart. So there is at least, I think one, two and three. redundant dynamic calls to the servers that can hurt you a lot.
When you let’s say you are in, black Friday situation, like when you have a lot of shoppers, trying to buy something, and this is actually might be a good option by default. But when you will say, go into sales, Susan, it’s better to disable direct to cart because every single resource, helps you to serve more customers.
Eric Hileman: [00:31:29] Makes sense.
Ivan Chepurnyi: [00:31:30] So let’s, profile checkout page as well. let’s hit this record button, and to record all the requests and let’s go into the, checkout page. So checkout page seems kind of slow.
we’ll try it without profiler as well to see if it’s a profiler or adjust. there’s a number of reasons.
Eric Hileman: [00:31:59] I liked the little coffee animation there, but the steam coming off of it.
Ivan Chepurnyi: [00:32:06] Yeah. Maybe, people who, who are shopping for espresso machines are nods that, You know, eager to seize a page so they can enjoy some nice animation.
but you know, like if they would sell coffee, I would be annoyed. If
Eric Hileman: [00:32:25] wires are all caffeinated, like
Ivan Chepurnyi: [00:32:27] lo I click, click, click, click, click, click. Okay. So, what’s good here. I see, like they have only one call to the API.
No. So they load the initial patients and they have only one call to the eight by through three. yeah, I didn’t see. W w what kind of feedback qualities? The estimate shipping masters. Oh yeah. And because I’m in Vanessa, Lance, like here, it doesn’t detect my, state. Let’s put it this way. please specify zip code.
Any zip code in New York? +1 012-810-1010 one, two eight. Okay. Let’s see. Oh, shoot. I should have run into his profile requests. Okay. Let’s. We’ll do it again. Let’s refresh the page.
There’s this thing is I think too slow. I think there is some issues with standard Magento checkout, and I think I already know the suggestions for them, but let’s just see if it’s a problem or not. Okay. So.
It remember a bunch of stuff, so. Okay, good. Let’s choose it. Free shipping. okay. I call them a name C E
sound, her legs that, and. New York, of course. And five, five, five, four. How, how, what kind of
Eric Hileman: [00:34:32] five? Five, five, five, five, five, five, five. It’s yeah, it’s
Ivan Chepurnyi: [00:34:36] three, three, four for like
I don’t know some,
Eric Hileman: [00:34:44] yeah, sometimes they don’t even try to validate it.
Ivan Chepurnyi: [00:34:47] It’s
Eric Hileman: [00:34:48] going to be tough.
Ivan Chepurnyi: [00:34:51] Okay. How do you in payments? So here I see kind of a lot of Alex goals, but yeah. Okay. great. And here, I think I’m going to stop as a profiling because I’m not going to place an order. okay.
Standard ones. So I don’t see anything out of ordinary. I think this one is estimate shipping methods and this one is shipping information. So this one would transfer back payment information. Yeah. So this kind of good, but, what I think, is a problem. when, you load the page and why it takes so long.
So right now we are running it without profiling now. Right. And you see it kind of slow, right? Yeah. And mostly it’s slow because, you see all those HTML files. Yeah. Y’all are getting loaded. Each of this HTML files, each of them. so all of this stuff is, kind of being, a problem for Magento because it’s not bundled together.
And each of us files is not even using, because each of them is loaded through HTP request. sorry. XHR for box. So each Asian multiplayer Magento is loaded for JAKKS. So, because Magento is using some kind of special required JS load loader for all of this data. I don’t know if this customer already made, made it live or not.
but happy socks. I was simply planting for them. This special, implementation of matchback. And I want to check if it’s already alive. So when I go to the checkout, you see it’s a little bit faster in not like Zella. Just show everything over here, but if you go into the. Network section. I don’t know if it’s there or not, but I expect it should be like that because I, so Zane probably already released it.
Yeah. So you see, like, there is almost no HTML files being loaded through. yaks. So their page has loaded much more faster, and this is a Spanx to a major pack, and especially pull request I for matchback in order to make it, make it possible, to also merge together some HTML files, ALS as a modules.
So what happens behind the sings? I think, we can see. Merged. Oh yeah. Yeah.
Eric Hileman: [00:37:48] And that’s the best, the default checkout with your major pack tweaks is this, is this, this, this why other people install like one step checkout, custom checkout extensions.
Ivan Chepurnyi: [00:38:00] this is not, not something like this is somethings that they build themselves.
Like they build themselves as a custom one page implementation. what there was a half, I only did the optimizational as a lording of those components. So Zahab bunch of other operations. Like they have a lot of feedback calls through three volts is data from IDN and so on. But in general, what I like about major that it’s kind of easy to implement this kind of a thing.
And, now my change of says actually emerged into matchback mainline. So. What they recommend for Zam? Just a add matchback does the deployment of the project. And since like it’s stunned at Magento to checkout, it should work without any issues like. Is AIG just to, again, to rate, image back config, GS has been rated
Eric Hileman: [00:38:58] check out, dude.
That’s really interesting. I’ve I did a Twitter survey, for JS optimization and it was like major pack or what’s Butler, not Butler. What’s the other one,
Ivan Chepurnyi: [00:39:10] Baylor.
Eric Hileman: [00:39:11] Baylor. And everybody was like major pack mates pack, but I’ve never heard anybody say, use major pack in the checkout. So that’s pretty unique.
Pretty cool. Yeah.
Ivan Chepurnyi: [00:39:22] But it’s in general, like the thing is, was HEPA Sox, for instance, as they use custom front end zeros themselves for Magento, but they still use original Magento checkout and the regional Magento checkout was loading for them. Very slow. And mostly it was because of all of those, static files that were loaded for by the standard Magento, Bandler.
and yeah, we needed to fix it for them. So, so
Eric Hileman: [00:39:53] you use major pack if you’re using the
Ivan Chepurnyi: [00:39:55] DSO. So I tried first matchback, but with HEPA socks, it was impossible to use a standard mesh bag because of, the strategy. Of, their static content deployment. So they have, I think like certain different languages.
And it means like if you used the default quick strategy from Magento in order to deploy stuff like you copy for every single language, you copy the wall set of static assets. And to your directory becomes kind of huge and it takes a lot of time to do deployments. So they use as a compact deploy strategy and matchback was incompatible with compact deploy strategy.
So I modified the matchback in order to make it possible, to use as a compact deploy strategy by reading Jason files that are being deployed by Magento and. Yeah,
Eric Hileman: [00:40:52] it seems like major packet is almost becoming a, a standard thing that like, everybody should just be like, Oh, you’re running them too. You should be using MEJ pack.
Like it’s not just for this, but for like Google page speed scores, I’ve seen really good scores from that with match pack as
Ivan Chepurnyi: [00:41:09] well. Yeah. mesh packs have helps a lot like, how it works is actually very interesting. given that I was doing a pull request, I actually dive deep into is the way how it actually works and how it’s implemented.
So it’s kind of sampled. It doesn’t have much of configuration options. Like you cannot configure custom, you know, way to add product to cart. Like it mostly relicense the default Magento because it needs actually to go through the wall versus. Do wizard, the checkout patient needs to have a product in the shopping cart to get all the static assets that you need to bundle together.
So for category, for product, for checkout shopping cart. So man, this is kind of nice thing and, and, and Zen legs, they have also has this modules that you need to install into Magento itself as well. and this module. in the header of the page, it adds a prefetch statement. So it tells browser, Hey, you parse it dome.
Is it at the same time while you press on it? Because we just received information. Hey, can you prefer this file and browser already we’ll download all the static bundles. So before you actually hit a script deck, when the bundles gets required as a bundle, Sarah already deserved. So browser will just access it.
Like it’s a leaded in a local file system.
Eric Hileman: [00:43:24] speaking of checkout, I’ve seen a lot of, like a boat people talking about using boat checkout, and now there’s a new, fast.com that’s writing a new checkout to replace. It seems like there’s a, there’s a lot of attention and focus on companies, building a company just around replacing the checkout in.
Stores. Have you heard, seen that or heard about that? Like, what are the advantages that these companies are providing?
Ivan Chepurnyi: [00:43:55] I don’t think like, it makes sense to add another point of failure into your stack, you know, like yeah. Geerings at all those companies that are startups, you know, like there hypos would be with dessert.
Zero can be some security incidents, you know, with those companies. for instance recently maybe heard it in the news that some of the Shopify employees actually stole customer data.
Eric Hileman: [00:44:24] Yeah, the employees and, extensions, leaking it, extensions, leaking it everywhere.
Ivan Chepurnyi: [00:44:31] So zipping is wet. Like sauce sounds kind of awesome as a concept, but the problem is you are not in control of the data of your customers in that case.
Like someone else as this information. Like we’ll already provide kind of this information to payment providers, right. When we pay with it. But payment providers have to, you know, like have to be, compliant with a lot of regulations. Like they can adjust, you can adjust, start a BSP, you know, like, and collect the data.
But those checkout applications, you know, like they connect to existing PSP. So then they don’t need to in our, like, go through all of this struggle. and yeah, it, it, it’s, it’s nice to have something simplified, but I don’t think like Zare, betters and going to the really nice and good.
Eric Hileman: [00:45:31] I, yeah, I don’t, I don’t understand it.
Maybe someone from an agency could explain it better, but boat just raised like 50, but it is raise 50 million
Eric Hileman: [00:45:41] a total of like 140 million. And then fast dot dotcoms coming out and they just raised like 22.5 million to do this kind of stuff. I don’t, I don’t know. I don’t understand it.
Ivan Chepurnyi: [00:45:56] Yeah. I think it’s important, you know, you know, like I think maybe in the United States is kind of popular.
But here in Europe, I don’t think they will get a lot of traction because of all of their regulations and the data
Eric Hileman: [00:46:14] it’s yeah. Yeah. It’s a, it that’s what they’re saying. So like bolt says its platform uses next generation fraud algorithms. To approve more orders and convert fraudulent chargebacks, did you see NSA?
NSA was doing fraud prevention and they just like laid off everybody. And they’re under sec investigation for fraud. So the front, the anti-fraud company is now under investigation for fraud.
Ivan Chepurnyi: [00:46:42] Is that companies that send the newsletter in Magento, association. Is it that company?
Eric Hileman: [00:46:49] Aye. Yes. That’s them.
Ivan Chepurnyi: [00:46:52] Okay. Not everyone checks out. Do you know? That’s the,
Eric Hileman: [00:46:57] that’s the one you were complaining about? Wasn’t it? You tweeted about yeah. That’s yeah, they are. They just laid off like pretty much everybody and CEO left and they’re under sec fraud investigation.
Ivan Chepurnyi: [00:47:09] Yeah. I think it’s kind of an important thing to know, like, What kind of company you accept as a sponsor for your association?
Because this is kind of a huge issue. I think
Eric Hileman: [00:47:26] they, they, they, you know, full disclosure, they sponsor meet Magento in New York and we even did an event, a pre imagine of that at their headquarters. So, I mean, yeah, we, yeah, but that’s. The Association’s another topic, I think for a whole, how another app full, like I think we could do a full episode on the association.
What I, what I want is I’m waiting for them to release their financials because I think when people see how much money they’ve spent on SmithBucklin service and what they’ve delivered, there’s going to be a lot of really upset people.
Ivan Chepurnyi: [00:48:06] Oh, yeah, I’m looking forward to that, then it should, should be quite kind of interesting to see what what’s going to happen.
so now let’s sum up a little with what we have on this customer website. So as far as I see, like, They have very nice implementation. big shout out to Laura Falco for having, Z’s kind of an amazing implementation of Magento two project. this is a Boldman and beyond what we usually see in our show, so huge kudos to her and, yeah.
Let’s so in general, Zillow is the only point I want to, you know, like. Give to them for improvement is actually switched to Warner’s cash instead of FPC, because it would allow, you know, like better several use H, Z anyway, using, you know, like yaks goals to whole bunch of dynamic data. So there is not big difference from point of view or functionality between Zeus to Cassius, but varnish allows you to also use ESI includes four cashable, small pieces of the page.
In varnish itself. So this is kind of a huge deal. And then another one major back may spark is going to save a lot of time on this checkout, but
Eric Hileman: [00:49:25] that’s probably their biggest pain point in terms of performance was the checkout.
Ivan Chepurnyi: [00:49:29] Yeah. And in generally we just profiled the checkout page and we sell like, Zed dynamic, Bart BHP part.
The part that the rendered by Magento itself doesn’t matter much. The biggest problem is actually this number of small files that gets loaded through IOCs, you know, like Zeus, HTML theme plates that all combined into big Magento checkout from the small UI components as it is built upon. So having matchback actually saves a lot of time over there.
Eric Hileman: [00:50:04] Yeah, that’s cool. I had not, I had not seen anybody mentioned major pack for the checkout, so
Ivan Chepurnyi: [00:50:09] that’s pretty cool. Yeah. I think a lot, a lot of people just take it for granted, you know, like ZZ health bundling enable it. Of course it’s going to be faster, but, I think it’s an unique, standing, from, From matchback itself, comparing to other tools like advanced bundling doesn’t allow this, you know, like it doesn’t merge together as this HTML templates also, I don’t know about Baylor.
but I think it doesn’t because I think one of the reasons why my HVAC was done in order to bundle everything, you know, like it and do it very easily. So. A huge set out, shout out to creative style for building such an amazing tool that everyone now can use. Yeah. Okay. So, Oh, and actually I have a nozzle, interesting lunch recently I had the lunch was a customer, of Xenu tool.
it’s proprietor it’s. Private tool. Okay. And, there’s still a, was very interesting. And customer just recently wrote me a message like, Hey, have unlike, you know, legs built for us. we didn’t receive any, out of stock orders so far within you MSI doctors that you built for us.
Eric Hileman: [00:51:36] Oh, you were complaining about that.
Who was at the Nespresso store, double her double charged you and sent you to the gangs.
Ivan Chepurnyi: [00:51:46] surfing, but I mean like, you know, like w w when you sell something and in MSI, There’s a high probability of overselling. So let’s say you have 10 items in stock and you know, like 10 different customers go and buy a product.
But some of them like buy two or three and MSI can allow you to have all of them actually was successful checkouts and then knew how to deal with, Hey. Or whom I was his customers. They have to refund back who I have to contact and they’ll, Hey, sorry. We cannot deliver you. We don’t have this product anymore.
And sound like it adds a lot of pressure on the customer service and this customer wanted to have absolutely accurate checkout. And they found a couple of bucks even in MSI related to the checkout distribution. So I built for them an application in the rust and this application and Ross is completely responsible for every single deduction.
the stock either it’s API import or either it’s, sorry, is there it’s a source item import or is there it’s, just possessing an order or canceling an order or, reserving an information in order itself. And what’s cool about those features that as application is actually at three old time, can tell you, Hey, this product is already sold out.
So you don’t need to do any database query. And number that we square is of course is getting reduced a lot because this service is talking with database, not Magento. So this is some was a recent project, sent something interesting, like I’ve, I’m building right now for the service and building a lot test.
And as a tool I’ve built for load tests. In order to load the source items into the database, like able to import 17,000 source items into MSI per second. So, so like three millions of, source items we’re in period. Like something like in one minute or something like that. That’s
Eric Hileman: [00:53:52] proprietary.
Ivan Chepurnyi: [00:53:53] Yeah.
Eric Hileman: [00:53:54] Okay.
So don’t expect to see that on your, on your GitHub page anytime soon.
Ivan Chepurnyi: [00:54:00] And that’s when my main may be like in a few years, but I don’t know. We’ll see. but, but in general, it’s, it’s kind of, what’s very nice exercise for me because, like it showed me is that rosters were reliable software. You’re a big fan.
Eric Hileman: [00:54:15] You talk about rust a lot.
Ivan Chepurnyi: [00:54:17] Yeah. Yeah, like a saucer is it can ride with the rust is very reliable and it prevents a lot of issues from happening on a compile step. So like you don’t have this kind of segmentation folds, having, when you work, for instance, we C or C plus, plus like you have to, as a developer, controls is part of your application yourself.
And with rust, it’s much more easier because. Yeah, thread safety is built into the compiler. And we’ll tell you if you do in somethings that is not allowed. So you have it to, dance around in order to built a secure code, was the Ross compiler or the dine complaining if you do something wrong. So that’s kind of what school and in general, like, It almost doesn’t take any CPU, on their production system.
So like it runs in the background and it’s completely, event-based so it only starts doing some CPU cycles only when it receives actually an events on own socket. when the two sieves connection from Magento, Hey, can you please deduct selfing or do something? So it’s kind of really nice microservice and.
I’m, I’m really bridal. Was this customer actually having, you know, it was this one working. What was,
Eric Hileman: [00:55:31] what was the other issue with the Nespresso double
Ivan Chepurnyi: [00:55:34] order? This one is a long story. I don’t know what kind of store on this presser is using
Eric Hileman: [00:55:42] that’s one of the Magento, I thought that was one of their marquee customers that they always promote.
Ivan Chepurnyi: [00:55:48] I don’t see it as a Magento, you know, like I tried to analyze and so on, but you know, like it’s something different and, honestly like,
Eric Hileman: [00:55:58] I searched espresso and Magento and that comes up. I’m pretty sure I’ve seen them promote Nespresso as a Magento, but maybe they left. I don’t know.
Ivan Chepurnyi: [00:56:08] I never seen zits specifically.
I don’t know about other stores, but in the Netherlands is definitely not Magento. So, Hmm. As it is a problem is like when you place an order and Zay double charge me, like, and sensei create two orders. And when I contact them, they cannot cancel one of them. Like they have to deliver both of them to my home.
And they say, Hey, you can tell to delivery guy, Hey, can you just, sent one package back? It wasn’t just, you
Eric Hileman: [00:56:43] it’s happening to other people, but it wasn’t even just you cause other people came on Twitter and were like, no, I haven’t to me too. It’s I love matrix blog, top 15 Magento stores in 2020 from April Nespresso.
Ivan Chepurnyi: [00:56:58] Oh, I don’t think it’s the gentle store. It, it, it has kind of weird system because I have, you know, like exists, terrible experience with their customers or like I was trying to solve something like, and Zen is the delivery guy comes over and tells me, Hey, I can adjust, take back one item. You know, like you have to do you use or refuse both.
So I just said, yeah, just a big, big
Eric Hileman: [00:57:33] I’m the espresso one. That’ll never, don’t just be like, Hey, this is great where our sales are up. We’re doing fantastic.
Ivan Chepurnyi: [00:57:43] Yeah. There’s the thing is it’s, it’s not the first instance of my, problems with Nespresso because I drink coffee a lot.
Eric Hileman: [00:57:51] It’ll never get fixed.
Ivan Chepurnyi: [00:57:54] They order it, you know, like.
well, one of the things was like, I just got word, like they have some specific promotions that they enabled, website wise. And as they said, like, if you order a sample like multiple of 40, you receive some kind of special thing until you order. But I just wanted to order, I think something like a 500 capsules.
I was ordering them and it will tell me I cannot proceed. I have to add more.
Eric Hileman: [00:58:28] 500 is not enough.
Ivan Chepurnyi: [00:58:31] Yeah. Like zero, some kind of campaigns that, you know, like it had to be specific amount dividable, by the way, by something like , you know, like add something to the card, but I didn’t care about the promotion.
I just wanted to buy a coffee as I usually do. And like, Zane kind of forced me to buy more coffee. And I decided to go down to where they just reduced snow melt off my order, but
Eric Hileman: [00:59:01] that’s every day they sold you last, maybe, maybe it’s the way it’s packaged. Maybe it’s packaged in a groups of 40.
Ivan Chepurnyi: [00:59:11] I don’t know.
It already has a stupid rule. Like you have to order in, In batches of, 50. So like, Oh, you, you, you have to, I already ordered like 50 capsules at least, because like they have this packaging where, Oh, I think the minimum order is even like something like 100 capsules or samplings. And so. They have kind of crazy system.
And at the same time, like they, they are telling Xero environment friendly and so on. But at the same time, I see only waste, you know, with the bag adjust. Or you can tell you a story, like once. No, I received an order. Like there was a double order once and I decided, okay, I will return it personally because I, we wanted it to have the item, that already received a neighbor, wanted to return back the other one.
And when I came back to the boutique, it was before all of time when they make happened. And so on, I came back to the boutique and I handed over as a package and Zilly tells me, you know, like we have to froze this thing away. Like, why, why it’s an open package of capsules? Like it’s all vacuum sealed inside and zoned because it’s a food item we can adjust, you know, like resell it later on.
Like, so we have to actually put it directly to the recycler. And like, for me, like, why don’t you then allow people to cancel an order? If there is a double order or Sanford anxiety that, you know, like, because this is completely ridiculous, I to send it and is a huge corporation and they probably don’t care much about, you know, as a customer experience online order.
Eric Hileman: [01:00:56] yeah. In the financials, it’s insignificant. Yeah. It’s cost benefit analysis. Does this, this is going to cost us more to fix this. Then we benefit from them from it. Yeah. Okay. Don’t fix it.
Ivan Chepurnyi: [01:01:11] And, and now I’m thinking like, maybe I should just. Hmm, grind my coffee myself, you know, like don’t buy espresso anymore because this is becomes a problem for me.
Like it’s already happening for me so often is that I think I’m just unlucky random person, but I see like a lot of people have an issue with buying online for an espresso store, because I w
Eric Hileman: [01:01:34] I’m fortunate when I was drinking coffee right up the street. There’s this old roaster man. He’s been roasting beans since the early seventies and he’s continued to do it so I could just get.
Roasted fresh roasted beans up there from him,
Ivan Chepurnyi: [01:01:47] never. And then I just grabbed him
Eric Hileman: [01:01:48] and French press.
Ivan Chepurnyi: [01:01:50] The only things that I like about Nespresso is just adjust. It’s very convenient and it’s very clean when you drink it at home. Because like you just put a capsule, you press a button and you have a cup of coffee and you go and continue work.
And you know, like you don’t have to. Green stuff up.
Eric Hileman: [01:02:07] You can still get the reusable ones. Right. Even when I had a Keurig, I had a reusable K-cup and I would just put my own coffee in it. And so you could still use the machine.
Ivan Chepurnyi: [01:02:21] Yeah. This is kind of crazy, but yeah, in general, like I think they just didn’t test the mobile version because most of the issues I had was when I was doing my order or mobile.
Or mobile. I don’t know how you pronounce it in the United States mobile. Right? So I was in my order on mobile and, on my phone, like I have a banking app and when I pay on line, if it’s recognized as, Hey, this is an ideal payment. So you can do directly in app on the phone, it switches from the browser to my application.
And then when I click confirm it. Opens in Nazar URL, but already in another browser.
Eric Hileman: [01:03:05] Yeah. I think these checkout companies that’s one of the things they might be solving is they’re really focused on payments and making it smooth. So like, you don’t have to reenter your stuff so you can reuse payments across.
I don’t know if you’re Google pay or Apple pay and you have your payments saved and. Amazon Bay, like,
Ivan Chepurnyi: [01:03:27] yeah, this is all, you know, like you can install an extension, but, but in general, like the biggest problem is actually, as an espresso store was done in such a way that as soon as I came back to an espresso store, it tells me, is that, yeah, it seems like.
You need to, again, in order to con to continue your order and you’ll login and everything in your shopping cart, and there is no order. So you as a customer confused, and the things that payment didn’t went through, so you pay again and then you realize, Hey, you have now two charters on your bank account.
You have now two basically orders. And the one I was on was actually invisible because they don’t know about it yet. Like the transaction went through, but because you got switched to another browser, You have to login again because, on Android you can have multiple brothers, you can have, for instance, Chrome, and you can have the standard Samsung browser I use for instance, Chrome, but the applications using the system default Samsung browser.
Eric Hileman: [01:04:23] So it switched. Yeah.
Ivan Chepurnyi: [01:04:26] And it’s easy to cash if you just, you know, like test it on a real device, you know, like if you don’t just do it, you know, like it froze a browser or something like that, like. It’s very easy problem to solve. You just don’t need to ask your customer to rule again, after customer paid for something, you know, like it doesn’t make sense.
Like yeah, if you already receive a notification from a payment provider, Hey, this is a transaction ID here, just a formation page of Zuora process in order don’t request customer to login because you will lose all those parameters. It was sent from PSP. And this is like you, you cannot order was out in account.
It’s one thing. So you have to have an espresso account. And this is just, I don’t like to be a fruit tester, you know, for big
Eric Hileman: [01:05:21] keep drinking it and you’re going to keep buying it.
Ivan Chepurnyi: [01:05:24] Yeah, but no, I’m thinking like I have this kind of ambassador or status or whatever. It is kind of weird labels that they have like big, we go say buy a lot of capsules and I drink a lot of coffee, so I have a, this stopped your settles, but it doesn’t give me anything.
He just tells me I spent too much money. I’m like Coke, you know, in Zendaya thinking like, yeah, it doesn’t make sense. It doesn’t make sense just to waste my time on this is this,
Eric Hileman: [01:05:55] those are the things that are frustrating. All right. Well, anything else before we wrap it up?
Ivan Chepurnyi: [01:06:00] Oh yeah. Everything is great and cool.
And, everyone stays safe home and, you know, we all get through this and, bye everyone. Hope you enjoy this episode and it’s like backfire.
Eric Hileman: [01:06:13] I think he’s a, Blackfire make sure to like subscribe and we’ll link up all the things we mentioned in the show notes. So thanks everyone.
Other Articles You Might Like
MagentoLive Australia 2019 Highlights
Nineteen hours of flying you say? Yes please, especially when that means exchanging the polar vortex and shoveling my driveway for 25C, the beautiful Darling Harbour, and the pleasure of attending Magento Live Australia 2019! What a…
Load In The Loop: Episode 19 – Elegant Beauty
Load In the Loop: Episode 19 is here! Join Eric Hileman and Ivan Chepurnyi as they identify and fix some performance issues for Elegant Beauty, an online beauty supply superstore. What will they find? Can they fix…