SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Django in Enterprise World

            PyCon4
          9 May, 2010

        Simone Federici
       s.federici@gmail.com
Obiettivo

Django è sulla bocca di tutti, è un full stack framework che ha
  messo una pietra di storia nel mondo python, e non solo. 

Ma perchè, in Italia, le grandi aziende per il web non riescono
 a uscire dal tunnel J2EE/JSF o, peggio, Struts?

In questo talk porto alla luce differenze sostanziali di
   approccio alle problematiche comuni di applicazioni web, e
   ad architetture più complesse Enterprise. Ma cosa significa
   Enterprise? Tutto ciò che i clienti definiscono Enterprise lo è
   veramente?

Come javista che pythonista, parlerò di cosa il mondo java
  rimprovera al mondo python e come ho scoperto che le
  accuse fanno acqua...
Agenda

• Mini Django Overview (ma dovreste già conoscerlo)

• Enterprise World
   o Multi Tiers (client, web, business, EIS)
   o Conteiners, WebServices (SOA)
   o Transactions


• Development
• Deployments
• Scalability, Accessibility, and Manageability

• Q?
Django mini overview (1)
class Reporter(models.Model):
  full_name = models.CharField(max_length=70)
  def __unicode__(self):
     return self.full_name

class Article(models.Model):
  pub_date = models.DateTimeField()
  headline = models.CharField(max_length=200)
  content = models.TextField()
  reporter = odels.ForeignKey(Reporter)

  def __unicode__(self):
    return self.headline


manage.py syncdb


from django.conf.urls.defaults import *
urlpatterns = patterns('',
   (r'^articles/(d{4})/$', 'mysite.views.year_archive'),
   (r'^articles/(d{4})/(d{2})/$', 'mysite.views.month_archive'),
   (r'^articles/(d{4})/(d{2})/(d+)/$', 'mysite.views.article_detail'), )

import models from django.contrib import admin
admin.site.register(models.Article)
Django mini overview (2)

def year_archive(request, year):
  a_list = Article.objects.filter(pub_date__year=year)
  return render_to_response('news/year_archive.html', {'year': year, 'article_list': a_list})




   {% extends "base.html" %}
{% block title %}Articles for {{ year }}{% endblock %}
{% block content %}
  <h1>Articles for {{ year }}</h1>
  {% for article in article_list %}
    <p>{{ article.headline }}</p>
    <p>By {{ article.reporter.full_name }}</p>
    <p>Published {{ article.pub_date|date:"F j, Y" }}</p>
  {% endfor %}
{% endblock %}
Django mini overview (4)

from django.forms import ModelForm
   class ArticleForm(ModelForm):
  class Meta:
    model = Article
    exclude = ('title',)

ArticleForm(request.POST).save()
ArticleForm(instance=Article.objects.get(pk=1)).save()
ArticleForm(request.POST, instance=Article.objects.get(pk=pk)).save()

<form action="/form/" method="post">
   {{ form.as_p }}
   <input type="submit" value="Submit" />
</form>
Django mini overview (4)

Authentication backends      Managing files
Middleware                   Testing Django applications
Validators                   Django’s cache framework
Commands                     Conditional View Processing
Custom model fields          Sending e-mail
Custom template tags         Internationalization and localization
Custom template filters      Pagination
Custom storage system        Serializing Django objects
PDF, CVS, JSON, XML          Django settings
Jython                       Signals
Deploying
Legacy database
Error reporting via e-mail   A lot of pluggable applications...
Initial data
                             South (Data and DDL migrations)
New Django 1.2 Features

• Model Validation

• Multi Database
Enterprise World
Defines an architecture for implementing services as
  multitier applications that deliver the scalability,
  accessibility, and manageability needed by enterprise-
  level applications.

         Distributed multitiered application model
• Web       • Presentation-oriented   • Persistence     •   DB
   o browser   o GET,                   Entities        •   Legacy
   o ajax      o HEAD,                • Session Beans   •   NO SQL
   o flash     o POST,                • Message-        •   FTP
   o flex      o PUT,                   Driven Beans    •   Remote
• GUI          o DELETE                                 •   JMS!
• Batch
            • Service-oriented (WS)
               o XML-RPC
               o SOA
               o REST
               o JSON
EE Containers
     Centralized Configuration
•   JNDI
•   Datasource e Connection Pool (DB tuning)
•   Mail Server (SMTP configuration)
•   Enterprise JavaBeans (EJB) container
•   Web container
•   Application client container
•   Applet container
Web Tier

Web Applications    Web Services
• Servlet            • XML
• Filters            • SOAPTransport
• Session Listner      Protocol
• CustomTag          • WSDL Standard
• Locale               Format
                     • UDDI and XML
• JSF (why?)           Standard Formats
                     • Attachments
                     • Authentication
Business Tier
                Local and Remote
Enterprise bean is a server-side component that encapsulates the business logic of
   an application. For several reasons, enterprise beans simplify the development
   of large, distributed applications.
 • the bean developer can concentrate on solving business problems because the
    container is responsible for system-level services such as transaction
    management and security authorization.
 • the client developer can focus on the presentation of the client. The client
    developer does not have to code the routines that implement business rules or
    access databases.
 • because enterprise beans are portable components, the application assembler
    can build new applications from existing beans.

When
• The application must be scalable
• Transactions must ensure data integrity
• The application will have a variety of clients

Type
 • Session (stateful/stateless)
 • Message-Driven
 • Asyncronous
Persistence
                  ORM
• provides an object/relational mapping
  facility to developers for managing
  relational data in applications.
  o The   query language
     Finding Entities
     Persisting Entity Instances
  o Object/relational   mapping metadata
     Entities, Multiplicity, One-to-one, One-to-many,
      Many-to-one, Many-to-many
     Cascade Deletes
Services
                Authentication
• Sucurity
  o   Initial Authentication
  o   URL Authorization
  o   Invoking Business Methods (remotly)
• Realms,Users,Groups, and Roles
  o   LDAP or DB
• SSL and Certificates
JMS
      Asynchronous Messagges
 •   Allows applications to create, send, receive, and read messages using reliable,
     asynchronous, loosely coupled communication.
 •   Messaging is a method of communication between software components or
     applications. A messaging system is a peer-to-peer facility: A messaging client
     can send messages to, and receive messages from, any other client. Each client
     connects to a messaging agent that provides facilities for creating, sending,
     receiving, and reading messages.
 •   Messaging enables distributed communication that is loosely coupled. A
     component sends a message to a destination, and the recipient can retrieve the
     message from the destination.

 • Asynchronous:
provider can deliver messages to a client as they arrive; a client does not have to
   request messages in order to receive them.
 • Reliable:
can ensure that a message is delivered once and only once. Lower levels of
   reliability are available for applications that can afford to miss messages or to
   receive duplicate messages.
Transactions
• A typical enterprise application accesses
  and stores information in one or more
  databases.
  o TransactionTimeouts
  o Updating Multiple Databases
Reset Enterprise (DEVEL)

•   Web
•   WebServices
•   Remote Invocation
•   Distribuite Task
•   Messaging
•   Pooling
•   Transaction
•   Security
Reset Enterprise (DEVEL)
          Keep It Simple Stupid
•   Web                 •   django / web2py / ecc..
•   WebServices         •   SOAPpy / jsonrcp
•   Remote Invocation   •   PyRo / RPyC
•   Distribuite Task    •   Celery / wh y prefer?
•   Messaging           •   Stomp / JMS Bridge
•   Pooling             •   What's you need?
•   Transaction         •   PEP: 249
•   Security            •   django / pattern / mind
It's python!
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Why people ask for Struts or JSF
        Programmers?
• Because they want:
    • XML programming
    • No simple URL mappings (is XML not RE)
    • @nnotations with no logic inside
    • S****d Beans with getter and setter
    • the validation written in XML
    • Some complex container to inject A->B
    • An enterprise language...
    • Easy deploy: any fool can do this!
Packaging, Distributions,
             Deployments
• egg
• setuptools
• easy_install
• mod_wsgi
• mod_python
• apache restart
Interview
    When develop an enterprise
          application?
• High number of users
• Distribuite Applications
• Transactional
• Clustering
   o High Reliability
   o Faul Tolerance
• Load Balancing (plugin)
   o Stiky sessions
Scalability, Accessibility, and
       Manageability
Scalability, Accessibility, and
       Manageability
Scalability, Accessibility, and
       Manageability
Enterprise Performance
           Management
Just an open point....

monitoring applications
in production...


  Java                    Python
     • Wily Introscope
     • Dynatrace
     • JXInsight           ?
Questions?




s.federici@gmail.com

Más contenido relacionado

La actualidad más candente

Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009robinvnxxx
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk UpdateESUG
 
Building Secure Extranets with Claims-Based Authentication #SPEvo13
Building Secure Extranets with Claims-Based Authentication #SPEvo13Building Secure Extranets with Claims-Based Authentication #SPEvo13
Building Secure Extranets with Claims-Based Authentication #SPEvo13Gus Fraser
 
Webinar - Interaction Dialer overview - Outbound dialing made even more power...
Webinar - Interaction Dialer overview - Outbound dialing made even more power...Webinar - Interaction Dialer overview - Outbound dialing made even more power...
Webinar - Interaction Dialer overview - Outbound dialing made even more power...Avtex
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
Amish Umesh - Future Of Web App Testing - ClubHack2007
Amish Umesh - Future Of Web App Testing  - ClubHack2007Amish Umesh - Future Of Web App Testing  - ClubHack2007
Amish Umesh - Future Of Web App Testing - ClubHack2007ClubHack
 
Wave14 - Exchange 2010 Beta Preview by MVP Poo Ching Loong
Wave14 - Exchange 2010 Beta Preview by MVP Poo Ching LoongWave14 - Exchange 2010 Beta Preview by MVP Poo Ching Loong
Wave14 - Exchange 2010 Beta Preview by MVP Poo Ching LoongQuek Lilian
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web appsyoavrubin
 
Xedapp - Overview
Xedapp - OverviewXedapp - Overview
Xedapp - OverviewXedapp
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking TourJoshua Long
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Henry S
 
Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...
Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...
Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...Microsoft Private Cloud
 
Universal Java Beans with DB2 from 1999, early Internet work
Universal Java Beans with DB2 from 1999, early Internet workUniversal Java Beans with DB2 from 1999, early Internet work
Universal Java Beans with DB2 from 1999, early Internet workMatthew Perrins
 
Advanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory EnvironmentsAdvanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory EnvironmentsNovell
 
JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)Graeme_IBM
 

La actualidad más candente (19)

Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009Karwin bill zf-db-zend_con-20071009
Karwin bill zf-db-zend_con-20071009
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
 
Building Secure Extranets with Claims-Based Authentication #SPEvo13
Building Secure Extranets with Claims-Based Authentication #SPEvo13Building Secure Extranets with Claims-Based Authentication #SPEvo13
Building Secure Extranets with Claims-Based Authentication #SPEvo13
 
Webinar - Interaction Dialer overview - Outbound dialing made even more power...
Webinar - Interaction Dialer overview - Outbound dialing made even more power...Webinar - Interaction Dialer overview - Outbound dialing made even more power...
Webinar - Interaction Dialer overview - Outbound dialing made even more power...
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
Wt unit 3 server side technology
Wt unit 3 server side technologyWt unit 3 server side technology
Wt unit 3 server side technology
 
Java EE 7 overview
Java EE 7 overviewJava EE 7 overview
Java EE 7 overview
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Amish Umesh - Future Of Web App Testing - ClubHack2007
Amish Umesh - Future Of Web App Testing  - ClubHack2007Amish Umesh - Future Of Web App Testing  - ClubHack2007
Amish Umesh - Future Of Web App Testing - ClubHack2007
 
Wave14 - Exchange 2010 Beta Preview by MVP Poo Ching Loong
Wave14 - Exchange 2010 Beta Preview by MVP Poo Ching LoongWave14 - Exchange 2010 Beta Preview by MVP Poo Ching Loong
Wave14 - Exchange 2010 Beta Preview by MVP Poo Ching Loong
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web apps
 
Xedapp - Overview
Xedapp - OverviewXedapp - Overview
Xedapp - Overview
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...
Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...
Microsoft Unified Communications - Introduction to Exchange Server 2010 (II) ...
 
Universal Java Beans with DB2 from 1999, early Internet work
Universal Java Beans with DB2 from 1999, early Internet workUniversal Java Beans with DB2 from 1999, early Internet work
Universal Java Beans with DB2 from 1999, early Internet work
 
Advanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory EnvironmentsAdvanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory Environments
 
Net framework
Net frameworkNet framework
Net framework
 
JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)
 

Destacado

socket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in Pythonsocket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in PythonPyCon Italia
 
Undici anni di lavoro con Python
Undici anni di lavoro con PythonUndici anni di lavoro con Python
Undici anni di lavoro con PythonPyCon Italia
 
Spyppolare o non spyppolare
Spyppolare o non spyppolareSpyppolare o non spyppolare
Spyppolare o non spyppolarePyCon Italia
 
Qt mobile PySide bindings
Qt mobile PySide bindingsQt mobile PySide bindings
Qt mobile PySide bindingsPyCon Italia
 
Feed back report 2010
Feed back report 2010Feed back report 2010
Feed back report 2010PyCon Italia
 
OpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonOpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonPyCon Italia
 
Foxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoFoxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoPyCon Italia
 

Destacado (8)

Effective EC2
Effective EC2Effective EC2
Effective EC2
 
socket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in Pythonsocket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in Python
 
Undici anni di lavoro con Python
Undici anni di lavoro con PythonUndici anni di lavoro con Python
Undici anni di lavoro con Python
 
Spyppolare o non spyppolare
Spyppolare o non spyppolareSpyppolare o non spyppolare
Spyppolare o non spyppolare
 
Qt mobile PySide bindings
Qt mobile PySide bindingsQt mobile PySide bindings
Qt mobile PySide bindings
 
Feed back report 2010
Feed back report 2010Feed back report 2010
Feed back report 2010
 
OpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonOpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con Python
 
Foxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoFoxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automatico
 

Similar a Django è pronto per l'Enterprise

Django in enterprise world
Django in enterprise worldDjango in enterprise world
Django in enterprise worldSimone Federici
 
Building multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickBuilding multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickuEngine Solutions
 
Contract-Based Web Services API Deep Dive
Contract-Based Web Services API Deep DiveContract-Based Web Services API Deep Dive
Contract-Based Web Services API Deep DiveGabriel Michaud
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
Service Oriented Architecture
Service Oriented Architecture Service Oriented Architecture
Service Oriented Architecture Prabhat gangwar
 
GateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsGateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsWesley Hales
 
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...Amazon Web Services
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithMarkus Eisele
 
Convertigo Mobile Application Development platform for Enterprises
Convertigo Mobile Application Development platform for EnterprisesConvertigo Mobile Application Development platform for Enterprises
Convertigo Mobile Application Development platform for EnterprisesConvertigo | MADP & MBaaS
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...Serdar Basegmez
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...WSO2
 
An Azure of Things, a developer’s perspective
An Azure of Things, a developer’s perspectiveAn Azure of Things, a developer’s perspective
An Azure of Things, a developer’s perspectiveBizTalk360
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS BackendLaurent Cerveau
 
Jesy George_CV_LATEST
Jesy George_CV_LATESTJesy George_CV_LATEST
Jesy George_CV_LATESTJesy George
 
SpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithMarkus Eisele
 
Portets to composite applications
Portets to composite applicationsPortets to composite applications
Portets to composite applicationsSerge Huber
 

Similar a Django è pronto per l'Enterprise (20)

Django in enterprise world
Django in enterprise worldDjango in enterprise world
Django in enterprise world
 
Hybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbaiHybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbai
 
Building multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickBuilding multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quick
 
Contract-Based Web Services API Deep Dive
Contract-Based Web Services API Deep DiveContract-Based Web Services API Deep Dive
Contract-Based Web Services API Deep Dive
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Service Oriented Architecture
Service Oriented Architecture Service Oriented Architecture
Service Oriented Architecture
 
GateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsGateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web Apps
 
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 
Convertigo Mobile Application Development platform for Enterprises
Convertigo Mobile Application Development platform for EnterprisesConvertigo Mobile Application Development platform for Enterprises
Convertigo Mobile Application Development platform for Enterprises
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
 
An Azure of Things, a developer’s perspective
An Azure of Things, a developer’s perspectiveAn Azure of Things, a developer’s perspective
An Azure of Things, a developer’s perspective
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
Spring
SpringSpring
Spring
 
piyush_
piyush_piyush_
piyush_
 
Jesy George_CV_LATEST
Jesy George_CV_LATESTJesy George_CV_LATEST
Jesy George_CV_LATEST
 
SpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud Computing
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Portets to composite applications
Portets to composite applicationsPortets to composite applications
Portets to composite applications
 

Más de PyCon Italia

zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"PyCon Italia
 
Python: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi geneticiPython: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi geneticiPyCon Italia
 
Python in the browser
Python in the browserPython in the browser
Python in the browserPyCon Italia
 
PyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyCon Italia
 
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCon Italia
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest modulePyCon Italia
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopPyCon Italia
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validationPyCon Italia
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.PyCon Italia
 
Comet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedComet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedPyCon Italia
 
Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1PyCon Italia
 

Más de PyCon Italia (12)

zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
 
Python: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi geneticiPython: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi genetici
 
Python idiomatico
Python idiomaticoPython idiomatico
Python idiomatico
 
Python in the browser
Python in the browserPython in the browser
Python in the browser
 
PyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fast
 
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest module
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntop
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validation
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.
 
Comet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedComet web applications with Python, Django & Orbited
Comet web applications with Python, Django & Orbited
 
Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1
 

Último

UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxYounusS2
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServiceRenan Moreira de Oliveira
 

Último (20)

UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptx
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
 

Django è pronto per l'Enterprise

  • 1. Django in Enterprise World PyCon4 9 May, 2010 Simone Federici s.federici@gmail.com
  • 2. Obiettivo Django è sulla bocca di tutti, è un full stack framework che ha messo una pietra di storia nel mondo python, e non solo.  Ma perchè, in Italia, le grandi aziende per il web non riescono a uscire dal tunnel J2EE/JSF o, peggio, Struts? In questo talk porto alla luce differenze sostanziali di approccio alle problematiche comuni di applicazioni web, e ad architetture più complesse Enterprise. Ma cosa significa Enterprise? Tutto ciò che i clienti definiscono Enterprise lo è veramente? Come javista che pythonista, parlerò di cosa il mondo java rimprovera al mondo python e come ho scoperto che le accuse fanno acqua...
  • 3. Agenda • Mini Django Overview (ma dovreste già conoscerlo) • Enterprise World o Multi Tiers (client, web, business, EIS) o Conteiners, WebServices (SOA) o Transactions • Development • Deployments • Scalability, Accessibility, and Manageability • Q?
  • 4. Django mini overview (1) class Reporter(models.Model): full_name = models.CharField(max_length=70) def __unicode__(self): return self.full_name class Article(models.Model): pub_date = models.DateTimeField() headline = models.CharField(max_length=200) content = models.TextField() reporter = odels.ForeignKey(Reporter) def __unicode__(self): return self.headline manage.py syncdb from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^articles/(d{4})/$', 'mysite.views.year_archive'), (r'^articles/(d{4})/(d{2})/$', 'mysite.views.month_archive'), (r'^articles/(d{4})/(d{2})/(d+)/$', 'mysite.views.article_detail'), ) import models from django.contrib import admin admin.site.register(models.Article)
  • 5. Django mini overview (2) def year_archive(request, year): a_list = Article.objects.filter(pub_date__year=year) return render_to_response('news/year_archive.html', {'year': year, 'article_list': a_list}) {% extends "base.html" %} {% block title %}Articles for {{ year }}{% endblock %} {% block content %} <h1>Articles for {{ year }}</h1> {% for article in article_list %} <p>{{ article.headline }}</p> <p>By {{ article.reporter.full_name }}</p> <p>Published {{ article.pub_date|date:"F j, Y" }}</p> {% endfor %} {% endblock %}
  • 6. Django mini overview (4) from django.forms import ModelForm class ArticleForm(ModelForm): class Meta: model = Article exclude = ('title',) ArticleForm(request.POST).save() ArticleForm(instance=Article.objects.get(pk=1)).save() ArticleForm(request.POST, instance=Article.objects.get(pk=pk)).save() <form action="/form/" method="post"> {{ form.as_p }} <input type="submit" value="Submit" /> </form>
  • 7. Django mini overview (4) Authentication backends Managing files Middleware Testing Django applications Validators Django’s cache framework Commands Conditional View Processing Custom model fields Sending e-mail Custom template tags Internationalization and localization Custom template filters Pagination Custom storage system Serializing Django objects PDF, CVS, JSON, XML Django settings Jython Signals Deploying Legacy database Error reporting via e-mail A lot of pluggable applications... Initial data South (Data and DDL migrations)
  • 8. New Django 1.2 Features • Model Validation • Multi Database
  • 9. Enterprise World Defines an architecture for implementing services as multitier applications that deliver the scalability, accessibility, and manageability needed by enterprise- level applications. Distributed multitiered application model
  • 10. • Web • Presentation-oriented • Persistence • DB o browser o GET, Entities • Legacy o ajax o HEAD, • Session Beans • NO SQL o flash o POST, • Message- • FTP o flex o PUT, Driven Beans • Remote • GUI o DELETE • JMS! • Batch • Service-oriented (WS) o XML-RPC o SOA o REST o JSON
  • 11. EE Containers Centralized Configuration • JNDI • Datasource e Connection Pool (DB tuning) • Mail Server (SMTP configuration) • Enterprise JavaBeans (EJB) container • Web container • Application client container • Applet container
  • 12. Web Tier Web Applications Web Services • Servlet • XML • Filters • SOAPTransport • Session Listner Protocol • CustomTag • WSDL Standard • Locale Format • UDDI and XML • JSF (why?) Standard Formats • Attachments • Authentication
  • 13. Business Tier Local and Remote Enterprise bean is a server-side component that encapsulates the business logic of an application. For several reasons, enterprise beans simplify the development of large, distributed applications. • the bean developer can concentrate on solving business problems because the container is responsible for system-level services such as transaction management and security authorization. • the client developer can focus on the presentation of the client. The client developer does not have to code the routines that implement business rules or access databases. • because enterprise beans are portable components, the application assembler can build new applications from existing beans. When • The application must be scalable • Transactions must ensure data integrity • The application will have a variety of clients Type • Session (stateful/stateless) • Message-Driven • Asyncronous
  • 14. Persistence ORM • provides an object/relational mapping facility to developers for managing relational data in applications. o The query language  Finding Entities  Persisting Entity Instances o Object/relational mapping metadata  Entities, Multiplicity, One-to-one, One-to-many, Many-to-one, Many-to-many  Cascade Deletes
  • 15. Services Authentication • Sucurity o Initial Authentication o URL Authorization o Invoking Business Methods (remotly) • Realms,Users,Groups, and Roles o LDAP or DB • SSL and Certificates
  • 16. JMS Asynchronous Messagges • Allows applications to create, send, receive, and read messages using reliable, asynchronous, loosely coupled communication. • Messaging is a method of communication between software components or applications. A messaging system is a peer-to-peer facility: A messaging client can send messages to, and receive messages from, any other client. Each client connects to a messaging agent that provides facilities for creating, sending, receiving, and reading messages. • Messaging enables distributed communication that is loosely coupled. A component sends a message to a destination, and the recipient can retrieve the message from the destination. • Asynchronous: provider can deliver messages to a client as they arrive; a client does not have to request messages in order to receive them. • Reliable: can ensure that a message is delivered once and only once. Lower levels of reliability are available for applications that can afford to miss messages or to receive duplicate messages.
  • 17. Transactions • A typical enterprise application accesses and stores information in one or more databases. o TransactionTimeouts o Updating Multiple Databases
  • 18. Reset Enterprise (DEVEL) • Web • WebServices • Remote Invocation • Distribuite Task • Messaging • Pooling • Transaction • Security
  • 19. Reset Enterprise (DEVEL) Keep It Simple Stupid • Web • django / web2py / ecc.. • WebServices • SOAPpy / jsonrcp • Remote Invocation • PyRo / RPyC • Distribuite Task • Celery / wh y prefer? • Messaging • Stomp / JMS Bridge • Pooling • What's you need? • Transaction • PEP: 249 • Security • django / pattern / mind
  • 20. It's python! >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
  • 21. Why people ask for Struts or JSF Programmers? • Because they want: • XML programming • No simple URL mappings (is XML not RE) • @nnotations with no logic inside • S****d Beans with getter and setter • the validation written in XML • Some complex container to inject A->B • An enterprise language... • Easy deploy: any fool can do this!
  • 22. Packaging, Distributions, Deployments • egg • setuptools • easy_install • mod_wsgi • mod_python • apache restart
  • 23. Interview When develop an enterprise application? • High number of users • Distribuite Applications • Transactional • Clustering o High Reliability o Faul Tolerance • Load Balancing (plugin) o Stiky sessions
  • 27. Enterprise Performance Management Just an open point.... monitoring applications in production... Java Python • Wily Introscope • Dynatrace • JXInsight ?