Tradeoffs of replacing core components

Post on 14-May-2015

533 views 1 download

Tags:

transcript

Tradeoffs of Replacing Core Components

Andy Dai andy@dorm7.com

Django Workshop 2014/1/21

SHOULD I SWAP OUT DJANGO TEMPLATE/ORM?

DON’T DO IT!

WAIT! NOT REALLY! IT’S WORTH IF…

YOU ARE OKAY WITH SACRIFICING ABILITY TO USE THIRD-PARTY DJANGO PACKAGES

YOU HAVE NO PROBLEM GIVING UP THE POWERFUL DJANGO ADMIN

YOU HAVE ALREADY ANALYZED YOUR OWN CODE TO FIND AND FIX THE ROOT CAUSES OF YOUR PROBLEMS

YOU’VE EXPLORED ALL OTHER OPTIONS INCLUDING CACHING AND DENORMALIZATION

YOU’RE VERY SURE THAT YOU’RE NOT OPTIMIZING PREMATURELY

YOU’RE WILLING TO ACCEPT THE FACT THAT UPGRADING DJANGO WILL BE EXTREMELY PAINFUL

THINK AGAIN!

OK. SO YOU WANT TO USE DJANGO WITHOUT…

“Django Admin”

“Django Template”

“Django ORM”

“Django Third-Party Packages”

AND YOU ADD SOME PACKAGES…

“MongoEngine”

“SQLAlchemy”

“WTForms”

“Jinja2”

CONGRATULATION! YOU GOT FLASK!

BUT ORM/TEMPLATE SUCKS…

REPLACE ORM WITH NOSQL

DO NOT DO THISGUESSWEBSITE WILL GROW RAPIDLY

IT’S OK IF…

YOU HAVE TRIED CACHING, INDEX, QUERY OPTIMIZATION..

YOU KNOW WHAT YOU ARE DOING

REPLACE DJANGO TEMPLATE WITH JINJA2/MAKO

DO NOT DO THISLOGIC IN YOUR TEMPLATE

IT’S OK IF THERE ARE SOME PAGES

THAT

ASK YOURSELF BEFORE REPLACING DJANGO TEMPLATE

“Why you want to do this?”

“Where’s the bottleneck?”

“Cache?”

DO IT ONLY WHEN YOU KNOW WHAT YOU ARE DOING

ALWAYS USE THE RIGHT TOOL FOR THE RIGHT JOB

– Donald Knuth

“Premature optimization is the root of all evil”

Django/Jinja2 Integration

• Jingo - https://github.com/jbalogh/jingo

• coffin - https://github.com/coffin/coffin/

• django-jinja - https://github.com/niwibe/django-jinja

Replace Django ORM

• SQLAlchemy - http://www.sqlalchemy.org/

• MongoEngine - http://mongoengine.org/

THANKS!