Ibiza June 4 7 2011

internalchildlikeInternet και Εφαρμογές Web

12 Νοε 2013 (πριν από 3 χρόνια και 8 μήνες)

85 εμφανίσεις

Ibiza June 4
th



7
th

2011

Magento
Developers Paradise

Magento 2

Project Plans, Ideas and State

Dmitriy Soroka

System Architect

Talk Structure


Dates, Scope

Ambiguity


Main directions

Goals


What will be added

New Functionality


Research results

R&D


Where we are

State

AMBIGUITY AROUND THE PROJECT

Release Date, Framework, Rewrite or Refactoring, JavaScript …

Technology Changes


PHP 5.3


ZF 1.x

PHP


MySQL


Oracle


MSSQL

RDBMS


JQuery

JavaScript

Complete Rewrite or Refactoring?

Rewrite

Better architecture

Latest technologies

Experience

Refactoring

Process improvements

Improvements of existing functionality

Developing new features

Release Date and Scope


Magento 2 will have almost all features of
Magento 1.x


Release scheduled from the middle to the
end of 2012

PROJECT GOALS

Quality, Performance, Scalability, Security, Modularity, WEB API, RDBMS’s

Clear Process and Transparency


A clear roadmap


Publicly available development

and collaboration tools


A public code repository

Improved product quality


Automated testing


Unit, Integration, Functional, Performance etc.


Continuous integration


Stable upgrade

Improved product performance and scalability


Optimization of page load time


Optimization of page

generation time


Vertical and horizontal

scalability


Automated performance

tests


Improved product security


Server side validation for all data input


Development process should prevent

any vulnerability from OWASP

top 10 vulnerabilities list

Truly Modular Product


Loose coupling principles


Module enabling/disabling


Modularity on view level


Improved backend modularity

Improved WEB API


SOAP


XML
-
RPC


JSON
-
RPC


REST


Support of multiple RDBMS's


MySQL


Oracle


MSSQL


PostgreSQL

Simplified Customization Process


Development of a new functionality


Customization of the existing functionality


Replacing and disabling

of the existing functionality

Improved Multiple Languages support


Data entry per language


Separation of frontend and backend
translations



Decreased Learning Curve


Code documentation


Documentation integrated with
development process

NEW FUNCTIONALITY

GUI Design Editor, Templates Editor, Upgrade Preview


Managing page types


Managing page
layouts


Positioning page
blocks


Customizing the
blocks look and feel


GUI Design Editor



Templates Editor

one_template.phtml

abc.html

footer.phtml

header.phtml

Safe upgrade between versions


Upgrade in preview mode


Separate DB for upgrade preview


Dedicated code base


Upgrade confirmation step


Latest version backup option


RESEARCH & DEVELOPMENT

Models, EAV, Modularity, Themes fallbacks, View …

Models architecture


Encapsulation


Relations between objects



Modularity

Module Part

Location

Definition file

app/etc/modules/<module>.xml

Classes,

configuration

app/code/<pool>/<space>/<module>/*

Translations

app/locale/<code>/<module>.
csv

Templates and layouts

app/design/<area>/<interface>/<theme>/*

Skins

skin/<area>/<interface>/<theme>/*

app/code/<pool>/<space>/<module>/



Component

-

group of modules with
high code coupling.


Conditional dependency outside of
component will allow to use just
particular components


Modules coupling

Catalog

Bundle

Rule

Search

Review

CMS

Page

Widget

Block

Customer

Account

Segment

Balance

Sales

Payment

Order

Report

Checkout

Cart

Shipping

PriceRule

Tax

View Architecture


Templates standardization


Themes modularity


Communication with models



Themes Fallback

My Store
Theme

Summer
Theme

Independence
Day

Customization
for the theme

Special Day

Winter Theme

New Year
Theme

One more
theme

Conflicts Between Modules


Multiple extends of one class


Unknown potential conflicts


Database schema modification


And more


Routing


Controllers level


Caching


Translations


Product prices


HTML page semantic






MAGENTO 2 STATE


Scrum


Acceptance criteria


Tests


Documentation


Code review


Agile Software Development

Atlassian

Software Development Tools

JIRA


issues tracker

Confluence

documentation

Crucible

code review

Fisheye


repository
browser

Bamboo


continuous
integration


Unit testing


Integration testing


Functional testing


Performance testing

Automated Testing


Unit tests


Integration tests on


MySQL


Oracle


MSSQL


Code inspection

Continuous Integration


Tracking calls stack
(tree)


Various output
formats:


HTML


CSV


Firebug


Output filtering


Magento_Profiler


Module as last level

of fallback


Module “view” folder


Skin files in module


Theme structure


Themes Modularity

Magento 1.x


app


errors


js


lib


media


skin


tests


tools


var


Magento 2


app


dev




tests




tools


lib


pub




error




jslib




media




skins


var

Changes in File System Structure

Changes in Configuration


Class path declaration

config
/global/[
models|resources|blocks|helpers
]



Table names declaration

config
/models/[code]/ entities



<
fieldset
> node

config
/[area]/
fieldsets



entity data migrations rules



Autoload


Classes map (
http://bit.ly/cYYFWX
):


Absolute path to the file


No overhead of code pools


No needs in
Mage_Compiler


Performance Improvements (~20% already)

1 rps
10 rps
30 rps
Magento 1
Magento 2
Summary


Goals


Transparency, modularity, quality, performance,
WEB API, documentation


Research


Models, EAV, components, view


State


Process, tools, tests, base theme modularity,
performance


Q&A

dmitriy@magento.com