Magento 2.0 is out!
Here at FarShore, we have been waiting for this major new release of Magento for quite a while and the changes and improvements look exciting. This post will explore major changes compared to previous versions plus a list of major improvements (and potential pitfalls) especially in cases where upgrading Magento from an earlier version is considered.
Increased scalability and performance are accomplished through a major overhaul of how the system is built.
What’s new in Magento 2.0?
Big Changes to Folder Structure
The first and most obvious difference that will be spotted by developers is a different folder structure. Media folder, errors folder, get.php, cron.php and index.php files are all moved to a pub folder. Skin and js folders are also moved to a pub/static folder. This makes it easier to manage static content with CDN. The database connection string is now defined in app/etc/config.php instead of the local.xml where it was previously located.
Theme folder organization is also different now. All themes are grouped by vendor now and path naming convention is app/design/frontend/vendorName/themeName.
Changes to modules have been made in a similar fashion. Paths to modules now contain both vendors name(namespace) and module name.
These are the most obvious changes and this article will not go into more esoteric details, but suffice it to say, the folder structure now makes more sense, has been cleaned up and re-organized, and will provide developers with a more streamlined approach to customization.
Pervasive Performance Upgrades
The Magento team has focused a lot of their efforts in making Magento 2.0 perform much better than the older version, in almost every measurable aspect.
Here are some of the most important upgrades:
Full page caching
Full page caching is now a part of both Community and Enterprise editions of Magento. This means that Magento will cache category and product pages, as well as CMS pages, serving them as if they were static HTML pages. Performance boosts for page load-times is significant since the Magento doesn’t need to make database queries to present the page to the user. The cached version of all pages are located in /var/page_cache folder and are automatically updated when a product is added, edited or other changes are applied.
Optimized code base
Advanced code design patterns were used when creating Magento. This will naturally guide developers into using those patterns and producing their own code in accordance with best practices. A lot of documentation exists on the topic of using design patterns when developing software, and wide spread acceptance of these practices is something the Magento team counts on with this new release. The end result will be better quality code, which is easier to maintain and upgrade.
Separating databases (Enterprise edition only)
Magento 2.0 Enterprise comes with an exciting new feature that allows separate databases to be used by the same Magento instance. One database could hold all the product, CMS and category info while another database handles the checkout process. The third instance could be used to take care of order management. Each of the three databases can also be configured to have one or more ‘slave’ databases that serve as load balancers and backups. Scalability potential is enormous.
Magento has started implementing a much more strict review of all extensions that are submitted to the official extension marketplace (Magento Connect). All extensions will have to be submitted with a number of test cases and Magento will perform full regression testing, to ensure none of the core functionality is broken by the extension.
Integration with PayPal, Braintree, and Authorize.net payment gateways is now a part of Magento – no extensions required. Magento Enterprise Edition 2.0 also integrates with WorldPay and CyberSource
Magento 2.0 ships with inbuilt CSS preprocessor – LESS. Any frontend developer can testify that managing CSS in complex projects can be a daunting task. LESS extends CSS with variables, mixins, operations and nested rules — making life a lot easier for frontend developers.
Magento 1.x on a site with high traffic suffered periodically from performance issues related to table locking in the database. Some user actions require that some of the tables in the database be locked for other users. In a high volume situation, this can result in system crashes and performance issues for the end user. Magento 2.0 brings database optimizations that address with this problem and significantly reduce occurrences.
Should I Upgrade to Magento 2.0?
If you are starting a new site, I would say, go for it! Definitely! New optimized code base, performance upgrades and streamlined customization is something to embrace wholeheartedly.
The decision gets a bit more difficult if you are looking at the possibility of upgrading an existing site.
Magento 2 includes a data migration tool for existing Magento 1 sites, but all extensions, customization, and theming will need to be rewritten. This can be a massive undertaking if your website has a lot of customization.
Major vendors responsible for the most popular Magento extension have already released some of the extension upgrades that now support Magento 2.0, but it will take some time for the very large body of existing extensions to be updated.
As of this blog post’s publishing date, Magento’s official position is that they will support older versions of Magento for three years after the release of Magento 2.0. This means that security patches will be available for older sites up to the end of 2018. This may be subject to change. Companies prolong their support, only if they assess that it is in their best interest to do so.
At this point there is no urgency in upgrading existing Magento 1.x sites to 2.0 but long-term architectural plans need to include this upgrade when creating the road map.
We can help you make the right decision!
Whether you are planning a completely new Magento project or looking to upgrade an existing one, our team can help you make the right decision. With years of experience in managing Magento projects in all stages of development, we can identify potential problems and work around them, provide you with a cost benefit analysis, recommend the architecture best suited for your project and support your idea from start to finish. Contact us today!