Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

6 Years with Django at Prezi

@ SF Django Meetup, June 25, 2014
by

Szilveszter Farkas

on 26 June 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 6 Years with Django at Prezi

6 Years with
Continuous Deployment
Feature flags
Future of Django/Python at Prezi
Moving towards FP/reactive programming
Other interesting problems
Deprecate APIs
Continuous Integration (automated tests)
Jenkins
Build for scale from the start*
Run on multiple application servers
PRIO1, critical path
What is a PRIO1?
SOA in the web tier
SOA (Service Oriented Architecture)
Communication protocol between services: Thrift
Local vs staging/production environment
Szilveszter Farkas
@szilveszter
PAST
PRESENT
FUTURE
* “Premature optimization is the root of all evil.” (Donald Knuth)
Use external services (Heroku, Amazon Web Services, Google Cloud Platform)
Twist
Django unit tests disguised as integration tests
Monitoring, dashboards
Alerting
What's the critical path?
Our answer: dynapps
django-thriftify*
Conway's law (1968)
http://en.wikipedia.org/wiki/Conway's_law
“organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”
Snakebasket
Simply*
Please*
https://github.com/prezi/snakebasket
Code review
Netflix OSS stack, Akka
Acceptance/integration tests
http://prezi.com/az1jfe5n0vpt/moving-from-twist-to-cucumber/
Cache
Signed cookie-based session storage
Save Django/Python?
Igor* & Sergei*
at
http://carljm.github.io/django-testing-slides/
Avoid Django's test client
Avoid the ORM/database access
-> Cucumber
http://prezi.com/z2wn9csadcss/continuous-delivery-prezi/
Gargoyle/gutter
https://github.com/disqus/gutter
PagerDuty
Due to a malfunction a user can ruin their prezi accidentally
User’s content is lost or can be lost
User’s prezi is changed without their intention
User can’t access, download and/or present their prezi or any part of it (desktop, iPad, zip, online, landing)
If one of these happens to at least three people:
http://prezi.com/
already logged in
direct to editor
log in
"landing page"
Django project container for 3 apps
website-cover
website-your
website-prezicontainer
website-landing-django
disclaimer*
generates Thrift interface definition based on Django models
generated client libraries
Java & Python
client libraries
actually used by clients
Examples
Storage Team: presentation, media
Backend-API: authservice
Online Marketing: mailroom
Website Team: monolith
Tooling is very important
recursively install dependencies from requirements files
manage local development environment (setup/update)
run all the services locally (using HAProxy)
infrastructure for microservices (bootstrap AWS config, Chef, Jenkins)
provides CRUDS interface (not identical to ORM, but similar)
catch bugs early
distribute knowledge
“quality through social accountability”
Lots of old APIs in the monolith
There are clients out there using them (not up-to-date desktop, mobile apps)
Currently no policy in place for these
Solution: proxy services that bridge old and new APIs
(we should have come up with something early)
Nagios/StatsD/Logster
Graphite
Dashboard
fallback to ORM
http://prezi.com/
already logged in
direct to editor
"landing page"
signup
app
smart
router
prezi.com/signup/.*
auth
service
payment
service
mail
room
data
storage
EDU (domains, schools, tokens)
RDS
logging
(scribe)
hadoop
(etl)
GoodData
(reports)
dashboard
(graphite)
alerting
(pagerduty)
Thrift
REST
Thrift
send welcome email
create subscription
create user
Vagrant
Docker
Full transcript