EuroPython 2011 - How to build complex web applications having fun?

Post on 07-Nov-2014

7.338 views 1 download

Tags:

description

Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite your customer needs is essential. This talk is about successful story using closely together Pyramid and Plone. Basing on these examples you will see the main reasons for using Plone as a CMS only and letting Pyramid do the rest (vertical application).

Transcript of EuroPython 2011 - How to build complex web applications having fun?

How to build complex

web applications having fun?

How to build complex

web applications having fun?

How to build complex

web applications having fun?

Andrew MleczkoSoftware Integrator

Ferrara (Italy)

twitter: amleczko

amleczko@redturtle.it

author

the team

WHY this talk?

My Reasons to be here

★ Building complex web

applications could be fun

★ Architectural decisions are

more important than you

think

★ Promote

and

★ among the top 2% of all open source projects worldwide

★ more than 340 active core developers

★ developed since 2001

★ version 4.1 released 12 days ago

★ available in more than 40 languages

★ the best security track record of any major CMS

powered

the growing community

SMALL “Roughly 5000 lines of code”

SMALL

FAST

“Roughly 5000 lines of code”

SMALL

FAST

STABLE

“Roughly 5000 lines of code”

SMALL

TESTED

FAST

STABLE

“Roughly 5000 lines of code”

“100% statement coverage via unit and

integration tests”

SMALL

DOCUMENTED

TESTED

FAST

STABLE

“Roughly 5000 lines of code”

“100% statement coverage via unit and

integration tests”

“Literally nothingin Pyramid

is undocumented”

The Bad story

The Customer

★ Large public sectore

entity

★ > 1000 employees

★ Needs a complex intranet

★ Deadline: 2 years

The Team

The Team★ Mixed roles:

Tester

Developer

Project manager

Software architect

★ No development philosophy

technology★ Temptation to be on the

technological edge

★ The Learning Curve Effect

everything is a “prototype”

★ Technical design debt is...

... more then average

bad dec i s ions★ Project manager as

Software architect as

Tester

★ Technology didn't

fit in

★ no fun at all

The Good Story

The Customer

★ .

★ Born as a startup

★ Offices in Miami,

New York and Los Angeles

Water today

★ U.S. - the largest consumer market for

bottled water in the world

★ in 2011, the market is forecast to have a

value of $86,421.2 billion

“Bottled water has become the second largest commercial beverage category”

project requirements

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Customer’s management (satisfaction, order status, etc.)

★ Reports (machine statistics, etc.)

★ Campaigns

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Sales network management

★ Invoicing / accountancy

★ Revenue counter

★ Discount management

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Catalog management

★ Warehouse management

★ Logistic tracking

★ Online shop (for beverages and accessories)

★ Machine configurator (interactive wizard)

★ Online payments

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Machine maintenance (filter change)

★ Emergency services

★ Order / installation process

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Machine maintenance (filter change)

★ Emergency services

★ Order / installation process

Support

CRM

Sales

Warehouse

E-commerce

paperless sale

Support

CRM

Sales

Warehouse

E-commerce

Intranet Extranet

paperless sale

Totally paperless ERP

project gotchas

project gotchas

★ Requirements are not rock solid

(it’s a startup) - project will grow with the customer

★ Customer is in U.S. - planning

regular meetings is essential

★ We need to find proper (new?)

framework

★ Only 5 months to delivery

project background

The DEV TEAM★ Software architect

★ database design

★ integration layer (data,

authentication)

★ Developers

★ Plone team

★ Pyramid team

★ Prototyping - the good way

★ Collecting specification and

keeping docs up-to-date

★ Software development having

fun

Arch i tectural dec i s ions

a n d

★ architecture is not so far away

from Zope

★ it supports SQLAlchemy out

of the box

★ great documentation and

active community

★ add’s some fresh air to your

architecture

why ?

★ Pyramid CRUD

★ Multi-upload widget

★ Metric units widget

★ Autocomplete widget

★ Multi-relation widget

★ ... and more

★ 75% jQuery code

why ?

why ?

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Poi

★ Diazo

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ Enterprise ready

★ 1595 addons (and counting...)

on plone.org/products

why ?

Integrat ion

PostgreSQL

aeterna.models

SQ LA l chemy

auth storage

au then t i c a t ion - au thor iza t ionR

eque

st

PostgreSQL

repoze.who

pas.plugins.sa

auth storage

au then t i c a t ion - au thor iza t ion

★ users

★ groups

★ roles

PostgreSQL

single-sign-on

★ plone.session

★ repoze.who.plugins.auth_tkt

mod_auth_tkt

bu i l dout

[intranet-plone]

recipe = plone.recipe.zope2instance

eggs =

${intranet-plone:eggs} aeterna.models

[intranet-pyramid]

recipe = zc.recipe.egg

eggs =

${intranet-pyramid:eggs} aeterna.models

intranetextranet

T he b ig p i c ture

PostgreSQL

ZODB

Apa

che

repoze.who

pas.plugins.sa

beaker

why not other compet i tors?

django: no!★ less code more magic

★ not so flexible

(specification is growing)

★ using SQLAlchemy

could be tricky

drupal : no!★ security problems

(370 CVE entries)

★ integration is more

difficult

(PHP vs. Python)

★ missing features -

workflow, complex ACL, etc.

openerp : hmm★ quite complex: CRM, sales,

accounting and much more

★ not enough time

to fully investigate it

What matters

Proper Tools

Proper ROLES

What's next?

Pyramid CRUD

★ started from Sergey Volobuev

Kelpie (repoze.bfg crud prototype)

★ using SQLAlchemy, Formalchemy

and fa.jquery

★ known as pyramid_formalchemy

★ what is accomplished:

★ events hooks

★ view and action customizations

★ i18n support

★ autocomplete widget

★ paster templates

★ plans:

★ fanstatic integration

Sprint summary

>>> $ pip install pyramid_formalchemy

>>> $ paster create -t pyramid_fa myapp

pa s t er t emp la t e

more details:http://blog.redturtle.it/redturtle-blog/pyramid-crud-sprint-summary

★ sprinters:

★ Gaël Pasgrimaud [gawel]

★ Patrick Gerken [do3cc]

★ Me [amleczko]

★ new version of:

★ pyramid_formalchemy 0.4

★ fa.jquery 0.9.4

Sprint summary

Quest ions?