migros.ch - modularizing magnolia for switzerland's largest retailer

50
Migros.ch Modularizing Magnolia for Switzerland's Largest Retailer Jan Reise, aperto Berlin, Daniel Özbek, Migros CWI @Magnolia Conference Basel, 4.9.2012

Upload: boris-kraft

Post on 29-Nov-2014

959 views

Category:

Technology


1 download

DESCRIPTION

Switzerland's leading retailer, Migros, has a Magnolia website with - A high volume of change requests - Several internal stakeholders with their own project teams, budgets, and timelines - Several contractors providing software and content for the website. This led to complex dependencies requiring exceedingly long and costly testing. Using Magnolia's module architecture, we have disassembled the project into smaller components with independent software lifecycles and separate deployment capabilities. This way, we have been able to minimize dependencies and to establish a tight release schedule, shipping a bundle of 15-20 change requests, including third party components, every 5 weeks.

TRANSCRIPT

Page 1: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Migros.ch

ModularizingMagnolia for

Switzerland'sLargestRetailer

Jan Reise, aperto Berlin, Daniel Özbek, Migros CWI@Magnolia Conference Basel, 4.9.2012

Page 2: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

2

If you thought ...

… that this is what a typical

Magnolia website looks like …

Page 3: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

3

Think again.

Page 4: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

4

migros.ch stats

• Over 11,000 content pages

• Over 14,000 teasers

• Over 80 page templates

• Over 250 paragraph templates

• Over 1300 Java classes

Page 5: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularizing migros.ch

01 Magnolia relaunch

02 Growing into a portal

03 Modularization

04 Modularization part II

05 Summary

5

Page 6: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Magnolia relaunch

Page 7: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

7

2010: Relaunch of existing site

• Old system

• MS Sharepoint based

• slow to use

• difficult to extend

• expensive to maintain

• Plan:

• keep the contents

• keep the workflow

• fix the problems

Page 8: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

8

Requirements for new system

• easy to use for editors

• live preview

• easy to connect to other systems

• central content repository (for other systems)

• save costs

• Migros chose Magnolia ☺

Page 9: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

9

Results

• Migration in 6 months

• System very stable

• Workflow “not changed but improved”

• Return on investment already after a few months

Page 10: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Some features

Page 11: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

11

Data hub: import and improvement

Weekly import from ERP systems & editorial improvement in Magnolia

Page 12: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

12

Data hub: exportDelivery of processed data

to other systems, eg. mobile apps

Page 13: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

13

Teaser management

Common teaser pool for site

Time based display on pages

Page 14: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularizing migros.ch

01 Magnolia relaunch

02 Growing into a portal

03 Modularization

04 Modularization part II

05 Summary

14

Page 15: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Growing into a portal

Page 16: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Rapid growthNew sub-projects built in a short time frame (1.5 years)

16

aus-der regionmigros.ch relaunch cumulus generation-m

Page 17: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

A portal with sub-sitesSeparate themes and templates

1 Magnolia webapp, 1 content repository

17

Page 18: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

18

Development driven by change requests

• Over 250 change requests per year

• Different stakeholders (marketing, corporate communication,

regional cooperatives, …)

• Budgets only for visible features, not for improving or refactoring the

overall project

Page 19: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Feature releases 20113 simultaneous sub-projects

19

January February March April May June July

R 4.2

R 4.3

R 4.5 (migros.ch)

R 5.0 (aus der region)

R 6.0 (cumulus

R 6.1

R 5.1

R 6.2

R 6.3 (all in one)

4.1

R 4.4

Page 20: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

20

Where‘s the architecture?

• Fast growing complexity (new modules)

• Fast growing size (permanent development and additions)

• Still using the architecture we started with:

• Magnolia

• Webapp with first project

• Modules for new projects

• But: common functionality still in with the first project

• All new projects depend on the first project

Page 21: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

21

Dependencies: expensive and slow

• Dependencies between projects lead to side effects (bugs)

• Make a change in one project and you have to test all projects

• Testing becomes expensive

• Testing slows down the project

Page 22: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularizing migros.ch

01 Magnolia relaunch

02 Growing into a portal

03 Modularization

04 Modularization part II

05 Summary

22

Page 23: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularization

Page 24: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

24

Why not do it like Magnolia?

• Magnolia itself has a modular

architecture

• Remove dependencies

between projects

• Put common stuff into

modules

Page 25: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Architecture at relaunchLike a simple project: just a webapp, a theme, and magnolia

25

Page 26: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

New projects in new modules, depending on common functionality …

… which is in the webapp with the first project

26

„Organic“ evolution

Page 27: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

27

Common functionality in common modulesNo software dependencies between sub-projects

Page 28: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

28

Even more modulesEach feature in its own module

Page 29: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

29

Over 25 Magnolia modulesEach module has its own independent software lifecycle

Page 30: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

30

The result: better (and less expensive)

software architecture

• less dependencies �less technical complexity

• easier to understand for developers (new and old)

• more re-use by having a set of well-documented basic templates

• easier to test: test only the module that has been changed

Page 31: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

31

Releases are containers for modules… and modules are containers for features

Page 32: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Releases on a steady schedule2012: Feature releases every 5 weeks

32

March April May June July August September

R 7.0

R 7.1

R 7.2

R 7.3

R 7.4

R 8.0

R 8.1

Page 33: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

33

Easy integration of third party modulesThird party modules based on Magnolia or on Migros common stack

Page 34: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Third party modulesEasily integrated as software dependencies

34

Page 35: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Third party stuff put into a moduleMagnolia wrapper for a

Flash / PHP microsite

35

Page 36: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularizing migros.ch

01 Magnolia relaunch

02 Growing into a portal

03 Modularization

04 Modularization part II

05 Summary

36

Page 37: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularization part II

Page 38: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

38

The last dependency: the release cycle

• Good: stable, dependable, predictable like Swiss train system

• Not so good: rigid and potentially slow

• Up to 9 weeks before a new feature goes online

Page 39: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

39

Speeding up feature releases

• Scenario: new features in one sub-project require changes in the

common stack

• What we want: Focus test and release cycle on this sub-project

• Test and release everything else later

Page 40: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

40

Release and deploy separatelyEach project in a separate webapp and in a separate magnolia instance

Even on separate versions of common stack

Page 41: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

41

Handling shared data

• Some data cannot be kept redundantly

• Administer data in “master project webapp”

• Provide data to other project webapps via web services

Page 42: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Modularizing migros.ch

01 Magnolia relaunch

02 Growing into a portal

03 Modularization

04 Modularization part II

05 Summary

42

Page 43: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Summary

Page 44: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

44

What have we gained?

• Fewer dependencies between projects

• Less coordination between projects

• Agile testing

• Free choice of development teams

• More flexibility

• More scaling possibilities

• Better scaling of development resources

Page 45: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

New challenges

Page 46: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

46

Integration challenges

• Coordination necessary between portal owner and project owners

• Coordination necessary between project owners and development

teams, in order to prevent double developments

• Projects have to share information

• Continuous development of the common stack

Page 47: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

47

Management challenges

• which Magnolia instances for which editors?

• access right management

• support of the plattform

• deployments

Page 48: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

48

Cost challenges

• hosting and maintenance of all projects in several environments

• development

• testing

• productive

• who pays for the development of common functionality?

Page 49: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

49

To sum up

• Magnolia is good for large, multi-project, portal-type sites

• Too much complexity makes projects expensive and slow

• A modular architecture helps reduce complexity

• Magnolia offers an excellent foundation for this

• Separate deployment of sub-projects provides even more agility

• But: if you have several platforms you will have to support them!

Page 50: Migros.ch - Modularizing Magnolia for Switzerland's Largest Retailer

Thank you.