Our #RoadToDevParadise started at Saturday evening, the 24th of April. After a six hours ride and around 20 thousand toll gates we saw all kinds of weather and finally arrived at midnight in Opatija. First it was time for a freezing beer (Tomislav beer with 7.3% alcohol and also the name of the event’s host: @tomislavbilic). We were excited for the next day’s hackathon!
Although the event should start at 6.30pm on the next day the hackathon before was completely full. There were lot of sandwiches and waiters satisfied all our wishes. It was the best possibility to dive into Magento 2 and to get in touch with the new architecture. It was a perfect preparation for the upcoming talks. All hackathon’s extensions are hosted on Github.
It seemed like that we had a perfect team match with @_justus, @sippsolutions, @tomas_marcik, @filipkrejci and @paulgrigoruta as we had the only working live demo ready for the welcome presentation in the evening. Furthermore Tomáš has talked to some Magento developers and said that it is possible that some of these extensions can be integrated in Magento 2.3 if they will be finished. Of course @benmarks has to be on the event and he did his job good in order to cheer up the crowd.
The first party was in the basement of the hotel which still had a nice view over the sea as the hotel is on a little hill. Many thanks to @inchoo who provided us with many drink coupons. Furthermore Inchoo’s CEO Tomislav showed us his singing talents that night which was a lot of fun
The next day started early in the morning and we got some useful best practices how to develop M2:
- Be familiar with M2 before the first project and do not just get in touch with it during the first project
- Forget everything you know about M1
- Do not copy much of the Magento 2 core as the only well written module is the customer module
- For writing tests only use TDD
- No time pressure or deadlines during the first project
- The first project should be a small one
- „You don’t need your products ASAP, you need to gain experience ASAP!“
- Good PHP developers learn Magento 2 faster than Magento 1 pros
- For the first M2 project a well chosen team consisting of good developers should be used
- As M2 is moving on fast you should always use the latest beta
- Useful tools: Fabric, PHPcs, PHPmd, Satis / Toran Proxy, Firegento Packagist, Phing / Cappistrano
- Redis does not deliver many advantages with many data sets
- Database replication does not bring many advantages
- HHVM does not bring many advantages
- MariaDB is better on category pages
- PHP 7 + ZendOPcache + Nginx + PHP-FPM + HTTP/2 is the future and doubles the rendering performance
Further points to increase the performance:
- MySQL 5.6 Tuning (Query Cache, InnoDB buffers)
- Keep modules up to date via Composer / Magerun 2
- Use Varnish
- Use MySQL Master / Slave clustering
- Use Solr or Elasticsearch instead of the standard search
- Optimize PHP 7 – OPcache (opcache.validate_timestamps=1)
- Set huge_code_pages to 2m
- Deactivate PHP extensions like ionCube, Xdebug, NewRelic, Zend Z-Ray, Blackfire
- Use appserver.io (PHP 7 release in June 2016)
- Use interceptors instead of events
We found out that Magento 2 is still missing some SEO tools like HREFLANG module, local SEO integration (organization schema / local business) or sitelinks search box.
At the end we also could get some points for deploying M2:
- No code generation on the live server
- No Composer updates on the live server (deliver composer.lock)
- Use Satis / Toran Proxy
- Optimize autoload file (–optimize-autoloader)
- Use Grunt / Gulp for static files
And that’s a wrap
Most of the folks at the event already got in touch with Magento 2 and only a few already deployed Magento 2 to production. We definitely feeled that the Magento 2 universe is moving on fast and if you didn’t already get in touch with it you should definitely do it now. There are already some very useful modules on the market, most of them for free. There is no argument anymore to say you can’t use Magento 2 because of missing important modules.
It’s the community that makes it a paradise.
In a team there is not any role more important than another.
Teams are people that understand everybody’s role and help each other all the time.