SlideShare une entreprise Scribd logo
1  sur  24
Building a custom CMS

Process to build a CMS with django
                   Brian Luft <brian@lincolnloop.com>
                  Yann Malet <yann@gwadeloop.com>


pycon.fr – 27 aout 2010 – Paris
Agenda for the presentation

1. Planning and Methodology
2. Dealing With Legacy Data Stores
3. Building it
Planning and Methodology

        Digesting, Evaluating, and
       Structuring the Work Ahead
1.Planning and Methodology
2.Dealing With Legacy Data Stores
3.Building it
Migrating existing content
vs building the new CMS
These 2 tasks are antagonist and you will need to constantly
context switch to make progress on both front
Migrating existing content:
 • Helps you understand the goal of your customer
 • Gives you "real data" to evaluate your development
 • Most precious asset of your customer
 • Hard and time consuming

Building the new CMS
 • You are evaluated and paid for this
 • Fun and creative part of the job
 • Opportunity to improve content work flows
Methodology

Prototype driven development based on a succession of 2
weeks long sprint

Typical project phases:
 • Create a prototype as fast as possible
 • Populate it with "real data" as soon as you can
 • Load test your prototype to find the bottlenecks
 • ...and iterate until you are done
Methodology
Iterate on this virtuous cycle:
 • develop
 • QA
 • demo

Developing in iterations helps keep project metrics in check
(you know, the things that always get abandoned):
 • Code quality
 • Documentation
 • Unit tests and test coverage

At the conclusion of each phase you should have new working
features and code you're proud of.
Team Communication

Keep stakeholders involved and aware as much as possible.
Enforce regular meetings
PM should make sure tickets, questions get answered.

Tools :
 • IRC room per project
 • Sprint Demo
 • Integration server (WIP)
 • Backlog monitoring (Redmine & co)
 • Forget Wikis, Maintain good project (Sphinx) docs
Key success factors

• First you build a raw estimate
   o Experience helps
   o Even still, things always take longer. Pad, pad, pad.
• Continuously refine your estimate
• Demo finished features on a fix schedule
   o Keep your build working
   o Keep stakeholders in the loop
   o Define an escalation process
• Pin down early on what the most complex aspects will be.
  Make sure you are chipping away at them rather than
  pushing everything back until the end.
Dealing With the Legacy
       Systems
1.Planning and Methodology
2.Dealing With Legacy Data Stores
3.Building it
Migrating Legacy Data

Two opposing factors to consider:

1. The "real" migration will only ever happen one time.
– The data is the business - it has to be handled properly.

Plan ahead:
 • How are you going to keep migration plan in sync with
   changes in your new application?
 • Don't underestimate the work required to have a workable
   process
 • The modify-migrate-test cycle is slow.
Migrating the Data

A convenient way to migrate your data is very important
because you will need to run it often. No matter how much time
you spend to optimize this.
 • it will always not be fast enough

Optimize the ease of run rather than the speed...
• put it in the cloud
• or another computer

... because your new data model will evolve and you will need
to run this often
Migration Pitfalls

You'll probably encounter many of these problems:

• Other frameworks and databases use different conventions
  or even other data types for FK then standard Django
• Mapping to Django User is problematic
• Any large dataset is inconsistent
• Fix the integrity at the source when possible
• Naive migration strategy will leave you a process that takes
  many hours or even days.
Migration Pitfalls         continued



• Your new models will go through many evolutions as you
  continually adapt various pieces of complex logic (and
  hacks) into a more elegant schema.
• Gracefully handling stuff in legacy content fields (HTML
  tags/snippets, entities, encoded chars)
Migration Tips

• Dataset
  o Visual inspection of the dataset
  o Gather as much legacy app logic and SQL as you can up
    front. Working backwards through relationships is tedious
• Django specific
  o Use inspectdb to navigate the original dataset
  o Use multidb to move the data from the old schema
  o Don't burn time fighting the ORM. Use the cursor with raw
    SQL or reach for other Python tools.
Features for your migration tool set

Sanity must haves for your tool(s):

•   Pause / Clean break
•   Resume
•   Progress meter
•   Logging
•   Profiling
•   Partial / Range
•   Graceful Error Handling
Building It

   How to Decide What to Use
      and What to Create
1.Planning and Methodology
2.Dealing With Legacy Data Stores
3.Building it
Pitfalls -- Create your own wonderland

It is easy to create a system that is completely undjango-ish
due to external constraints and influence from legacy system.

• There is often a temptation for developers new to Django to
  structure code or use idioms from other
  frameworks/languages.
• Trying to "clone" a large legacy system might lead you
  astray of commonly accepted Django best practices.
• Possible consequences:
   o Reusable apps won't plug in well
   o Updates to Django trunk might not work
   o New/external developers might be lost / need training
   o Integrating existing Django project is HARD
Customize or Build Your Own?

You'll have to evaluate on many levels whether using 3rd party
code is a good idea:
 • Starting with application templates as your foundation
    o django-startproject
    o pinax
 • Using 3rd party apps for pieces of your site
    o django-cms
    o satchmo
    o ...
 • http://djangosnippets.org/
Customize or Build Your Own?
continued
Our philosophy is to favor 3rd party components but not be
afraid to fork early. Pick out the best parts and use those.
 • use your network of trust to evaluate an app
 • check up the code quality metrics
    o test coverage
    o complexity
    o documentation
    o author / number of followers


Shoehorn "out-of-the-box" on large project might cause you
more hassle than good
 • customized
 • extend
Engage the 3rd party app community

This community is composed of the most knowledgeable
people in this realm.

A good connection will enable you to :

• Fix bugs: get patches in trunk / master
• influence the evolution by suggesting
   o new feature
   o enhancement of the existing code base
• understand existing design decisions
• get free, instant, expert advice
How to effectively contribute to a
project
Embrace the project
• communication channel (IRC, Bug tracker, ...)
• infrastructure (dvcs, test suite, ...)

Run the extra miles that will make the difference
• When you report a bug
   o create a test that illustrate it
• if you provide a patch
   o Make sure you provide it in the most adequate format for
      the core developer

Help them to help you...
Get your contribution "IN"

You have worked on :
 • a bug report
 • attach a test
 • provided a patch that fixes the issue
 • written the documentation

Which key action is missing to get it in ?
• Engage the core developers in a continuous exchange
   o This issue must be on their radar and they should be
     aware of your progress
Conclusion

•   These are very exiting projects
•   django with its ecosystem is well suited for the job
•   Get help from external an external company
•    Fixed price contract is almost impossible because nobody
    knows the exact scope
Time for questions ...

          Thank
      Yann Malet <yann@gwadeloop.com>

Contenu connexe

Tendances

Agile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily UseAgile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily UseHristo Iliev
 
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearBHOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearBDevOpsDays Tel Aviv
 
Test Automation Research... Is That Really Needed in 2018?
Test Automation Research... Is That Really Needed in 2018?Test Automation Research... Is That Really Needed in 2018?
Test Automation Research... Is That Really Needed in 2018?Markus Borg
 
Practical Methods for Adopting DevOps - Michael Stahnke
Practical Methods for Adopting DevOps - Michael StahnkePractical Methods for Adopting DevOps - Michael Stahnke
Practical Methods for Adopting DevOps - Michael StahnkePuppet
 
Verification Bug Metrics: A Different Approach
Verification Bug Metrics: A Different ApproachVerification Bug Metrics: A Different Approach
Verification Bug Metrics: A Different ApproachDVClub
 
JUG Bonn June 2021 - The DevOps disaster
JUG Bonn June 2021 - The DevOps disasterJUG Bonn June 2021 - The DevOps disaster
JUG Bonn June 2021 - The DevOps disasterBert Jan Schrijver
 
How to Test the Internet of Everything
How to Test the Internet of EverythingHow to Test the Internet of Everything
How to Test the Internet of EverythingSQALab
 
Injecting Threat Modeling into the SDLC by Susan Bradley
Injecting Threat Modeling into the SDLC by Susan BradleyInjecting Threat Modeling into the SDLC by Susan Bradley
Injecting Threat Modeling into the SDLC by Susan BradleyQA or the Highway
 
DevOps: A Practical Guide
DevOps: A Practical GuideDevOps: A Practical Guide
DevOps: A Practical GuideVictorOps
 
The Holy Trinity of UI Testing by Diego Molina
The Holy Trinity of UI Testing by Diego MolinaThe Holy Trinity of UI Testing by Diego Molina
The Holy Trinity of UI Testing by Diego MolinaSauce Labs
 
JavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps worldJavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps worldBert Jan Schrijver
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanQA or the Highway
 
Avoiding Performance Problems: When and How to Debug Production
Avoiding Performance Problems: When and How to Debug ProductionAvoiding Performance Problems: When and How to Debug Production
Avoiding Performance Problems: When and How to Debug ProductionAppNeta
 
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald BelchamGetting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham.NET Conf UY
 
Ken Johnston - Big Bugs That Got Away - EuroSTAR 2010
Ken Johnston - Big Bugs That Got Away -  EuroSTAR 2010Ken Johnston - Big Bugs That Got Away -  EuroSTAR 2010
Ken Johnston - Big Bugs That Got Away - EuroSTAR 2010TEST Huddle
 
DevOps Roadtrip Final Speaking Deck
DevOps Roadtrip Final Speaking Deck DevOps Roadtrip Final Speaking Deck
DevOps Roadtrip Final Speaking Deck VictorOps
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Lars Thorup
 
Inspection used in various ways
Inspection used in various waysInspection used in various ways
Inspection used in various waysSQALab
 

Tendances (20)

Agile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily UseAgile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily Use
 
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearBHOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
 
A taste of Exploratory Testing
A taste of Exploratory TestingA taste of Exploratory Testing
A taste of Exploratory Testing
 
Test Automation Research... Is That Really Needed in 2018?
Test Automation Research... Is That Really Needed in 2018?Test Automation Research... Is That Really Needed in 2018?
Test Automation Research... Is That Really Needed in 2018?
 
Practical Methods for Adopting DevOps - Michael Stahnke
Practical Methods for Adopting DevOps - Michael StahnkePractical Methods for Adopting DevOps - Michael Stahnke
Practical Methods for Adopting DevOps - Michael Stahnke
 
Verification Bug Metrics: A Different Approach
Verification Bug Metrics: A Different ApproachVerification Bug Metrics: A Different Approach
Verification Bug Metrics: A Different Approach
 
JUG Bonn June 2021 - The DevOps disaster
JUG Bonn June 2021 - The DevOps disasterJUG Bonn June 2021 - The DevOps disaster
JUG Bonn June 2021 - The DevOps disaster
 
CNUG TDD June 2014
CNUG TDD June 2014CNUG TDD June 2014
CNUG TDD June 2014
 
How to Test the Internet of Everything
How to Test the Internet of EverythingHow to Test the Internet of Everything
How to Test the Internet of Everything
 
Injecting Threat Modeling into the SDLC by Susan Bradley
Injecting Threat Modeling into the SDLC by Susan BradleyInjecting Threat Modeling into the SDLC by Susan Bradley
Injecting Threat Modeling into the SDLC by Susan Bradley
 
DevOps: A Practical Guide
DevOps: A Practical GuideDevOps: A Practical Guide
DevOps: A Practical Guide
 
The Holy Trinity of UI Testing by Diego Molina
The Holy Trinity of UI Testing by Diego MolinaThe Holy Trinity of UI Testing by Diego Molina
The Holy Trinity of UI Testing by Diego Molina
 
JavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps worldJavaLand 2022 - Software architecture in a DevOps world
JavaLand 2022 - Software architecture in a DevOps world
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
Avoiding Performance Problems: When and How to Debug Production
Avoiding Performance Problems: When and How to Debug ProductionAvoiding Performance Problems: When and How to Debug Production
Avoiding Performance Problems: When and How to Debug Production
 
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald BelchamGetting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
 
Ken Johnston - Big Bugs That Got Away - EuroSTAR 2010
Ken Johnston - Big Bugs That Got Away -  EuroSTAR 2010Ken Johnston - Big Bugs That Got Away -  EuroSTAR 2010
Ken Johnston - Big Bugs That Got Away - EuroSTAR 2010
 
DevOps Roadtrip Final Speaking Deck
DevOps Roadtrip Final Speaking Deck DevOps Roadtrip Final Speaking Deck
DevOps Roadtrip Final Speaking Deck
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
 
Inspection used in various ways
Inspection used in various waysInspection used in various ways
Inspection used in various ways
 

Similaire à Build a custom CMS with Django

Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategyMasas Dani
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptxAmna Ch
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOpsEklove Mohan
 
ProdSec: A Technical Approach
ProdSec: A Technical ApproachProdSec: A Technical Approach
ProdSec: A Technical ApproachJeremy Brown
 
Software Development
Software DevelopmentSoftware Development
Software DevelopmentBasil Bibi
 
Making security-agile matt-tesauro
Making security-agile matt-tesauroMaking security-agile matt-tesauro
Making security-agile matt-tesauroMatt Tesauro
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Bruno Capuano
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptHitesh Kumar
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsShafiul Azam Chowdhury
 
Bridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to ProductionBridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to ProductionFlorian Wilhelm
 

Similaire à Build a custom CMS with Django (20)

Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategy
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptx
 
The Waterfall Model
The Waterfall ModelThe Waterfall Model
The Waterfall Model
 
Software testing
Software testingSoftware testing
Software testing
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOps
 
ProdSec: A Technical Approach
ProdSec: A Technical ApproachProdSec: A Technical Approach
ProdSec: A Technical Approach
 
Case study
Case studyCase study
Case study
 
Software Development
Software DevelopmentSoftware Development
Software Development
 
Making security-agile matt-tesauro
Making security-agile matt-tesauroMaking security-agile matt-tesauro
Making security-agile matt-tesauro
 
SE Unit-1.pptx
SE Unit-1.pptxSE Unit-1.pptx
SE Unit-1.pptx
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_ppt
 
Requirements the Last Bottleneck
Requirements the Last BottleneckRequirements the Last Bottleneck
Requirements the Last Bottleneck
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOps
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development Concepts
 
Bridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to ProductionBridging the Gap: from Data Science to Production
Bridging the Gap: from Data Science to Production
 
Kku2011
Kku2011Kku2011
Kku2011
 

Dernier

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Build a custom CMS with Django

  • 1. Building a custom CMS Process to build a CMS with django Brian Luft <brian@lincolnloop.com> Yann Malet <yann@gwadeloop.com> pycon.fr – 27 aout 2010 – Paris
  • 2. Agenda for the presentation 1. Planning and Methodology 2. Dealing With Legacy Data Stores 3. Building it
  • 3. Planning and Methodology Digesting, Evaluating, and Structuring the Work Ahead 1.Planning and Methodology 2.Dealing With Legacy Data Stores 3.Building it
  • 4. Migrating existing content vs building the new CMS These 2 tasks are antagonist and you will need to constantly context switch to make progress on both front Migrating existing content: • Helps you understand the goal of your customer • Gives you "real data" to evaluate your development • Most precious asset of your customer • Hard and time consuming Building the new CMS • You are evaluated and paid for this • Fun and creative part of the job • Opportunity to improve content work flows
  • 5. Methodology Prototype driven development based on a succession of 2 weeks long sprint Typical project phases: • Create a prototype as fast as possible • Populate it with "real data" as soon as you can • Load test your prototype to find the bottlenecks • ...and iterate until you are done
  • 6. Methodology Iterate on this virtuous cycle: • develop • QA • demo Developing in iterations helps keep project metrics in check (you know, the things that always get abandoned): • Code quality • Documentation • Unit tests and test coverage At the conclusion of each phase you should have new working features and code you're proud of.
  • 7. Team Communication Keep stakeholders involved and aware as much as possible. Enforce regular meetings PM should make sure tickets, questions get answered. Tools : • IRC room per project • Sprint Demo • Integration server (WIP) • Backlog monitoring (Redmine & co) • Forget Wikis, Maintain good project (Sphinx) docs
  • 8. Key success factors • First you build a raw estimate o Experience helps o Even still, things always take longer. Pad, pad, pad. • Continuously refine your estimate • Demo finished features on a fix schedule o Keep your build working o Keep stakeholders in the loop o Define an escalation process • Pin down early on what the most complex aspects will be. Make sure you are chipping away at them rather than pushing everything back until the end.
  • 9. Dealing With the Legacy Systems 1.Planning and Methodology 2.Dealing With Legacy Data Stores 3.Building it
  • 10. Migrating Legacy Data Two opposing factors to consider: 1. The "real" migration will only ever happen one time. – The data is the business - it has to be handled properly. Plan ahead: • How are you going to keep migration plan in sync with changes in your new application? • Don't underestimate the work required to have a workable process • The modify-migrate-test cycle is slow.
  • 11. Migrating the Data A convenient way to migrate your data is very important because you will need to run it often. No matter how much time you spend to optimize this. • it will always not be fast enough Optimize the ease of run rather than the speed... • put it in the cloud • or another computer ... because your new data model will evolve and you will need to run this often
  • 12. Migration Pitfalls You'll probably encounter many of these problems: • Other frameworks and databases use different conventions or even other data types for FK then standard Django • Mapping to Django User is problematic • Any large dataset is inconsistent • Fix the integrity at the source when possible • Naive migration strategy will leave you a process that takes many hours or even days.
  • 13. Migration Pitfalls continued • Your new models will go through many evolutions as you continually adapt various pieces of complex logic (and hacks) into a more elegant schema. • Gracefully handling stuff in legacy content fields (HTML tags/snippets, entities, encoded chars)
  • 14. Migration Tips • Dataset o Visual inspection of the dataset o Gather as much legacy app logic and SQL as you can up front. Working backwards through relationships is tedious • Django specific o Use inspectdb to navigate the original dataset o Use multidb to move the data from the old schema o Don't burn time fighting the ORM. Use the cursor with raw SQL or reach for other Python tools.
  • 15. Features for your migration tool set Sanity must haves for your tool(s): • Pause / Clean break • Resume • Progress meter • Logging • Profiling • Partial / Range • Graceful Error Handling
  • 16. Building It How to Decide What to Use and What to Create 1.Planning and Methodology 2.Dealing With Legacy Data Stores 3.Building it
  • 17. Pitfalls -- Create your own wonderland It is easy to create a system that is completely undjango-ish due to external constraints and influence from legacy system. • There is often a temptation for developers new to Django to structure code or use idioms from other frameworks/languages. • Trying to "clone" a large legacy system might lead you astray of commonly accepted Django best practices. • Possible consequences: o Reusable apps won't plug in well o Updates to Django trunk might not work o New/external developers might be lost / need training o Integrating existing Django project is HARD
  • 18. Customize or Build Your Own? You'll have to evaluate on many levels whether using 3rd party code is a good idea: • Starting with application templates as your foundation o django-startproject o pinax • Using 3rd party apps for pieces of your site o django-cms o satchmo o ... • http://djangosnippets.org/
  • 19. Customize or Build Your Own? continued Our philosophy is to favor 3rd party components but not be afraid to fork early. Pick out the best parts and use those. • use your network of trust to evaluate an app • check up the code quality metrics o test coverage o complexity o documentation o author / number of followers Shoehorn "out-of-the-box" on large project might cause you more hassle than good • customized • extend
  • 20. Engage the 3rd party app community This community is composed of the most knowledgeable people in this realm. A good connection will enable you to : • Fix bugs: get patches in trunk / master • influence the evolution by suggesting o new feature o enhancement of the existing code base • understand existing design decisions • get free, instant, expert advice
  • 21. How to effectively contribute to a project Embrace the project • communication channel (IRC, Bug tracker, ...) • infrastructure (dvcs, test suite, ...) Run the extra miles that will make the difference • When you report a bug o create a test that illustrate it • if you provide a patch o Make sure you provide it in the most adequate format for the core developer Help them to help you...
  • 22. Get your contribution "IN" You have worked on : • a bug report • attach a test • provided a patch that fixes the issue • written the documentation Which key action is missing to get it in ? • Engage the core developers in a continuous exchange o This issue must be on their radar and they should be aware of your progress
  • 23. Conclusion • These are very exiting projects • django with its ecosystem is well suited for the job • Get help from external an external company • Fixed price contract is almost impossible because nobody knows the exact scope
  • 24. Time for questions ... Thank Yann Malet <yann@gwadeloop.com>