30.01.2017

Unter die Haube geschaut

PHP oder Python? Wir vergleichen!

Warum setzt Blueshoe auf Django und Python, wenn doch PHP viel verbreiteter ist? Wir haben unsere Gründe und halten diese auch sicher nicht geheim.

In diesem Artikel vergleichen wir Python und Django mit PHP.

luca-bravo

WARUM SETZT BLUESHOE AUF DJANGO?

In vielen unserer Projekte setzen wir Django ein. Insbesondere, wenn wir uns einem neuen, potentiellen Kunden vorstellen, fragt dieser: „Warum setzt Blueshoe auf Django? Ihre Mitbewerber setzen vorrangig auf PHP Systeme wie Wordpress, Drupal bzw. Magento, Shopware oder WooCommerce.“

An dieser Stelle muss ich sagen, dass der Vergleich zwischen PHP-Systemen, wie den oben genannten, und Django nicht ganz fair ist.

PHP ist eine Programmiersprache, Django ein Web Framework, Wordpress und Drupal sind CMS Systeme, Magento und WooCommerce sind E-Commerce-Systeme.

PHP IST EINE KRUX

PHP ist eine Programmiersprache mit weiter Verbreitung. Es gibt viele Quellen und viele Projekte. Jedoch entfernt sich die moderne Welt der Webentwicklung langsam aber sicher von PHP:

Suchanfragen für PHP:

php_blog_graph

Suchanfragen für das weit verbreitete Zend Framework (PHP basiert):

zend

Jeff Atwood beschreibt PHP in seinem Artikel „The PHP Singularity“[1]: „PHP isn't so much a language as a random collection of arbitrary stuff, a virtual explosion at the keyword and function factory.“

Folgt man Jeff Atwood’s Artikel, wird schnell klar: PHP ist eine schrecklich schlecht designte Programmiersprache. Warum gibt es dann so viele Projekte, welche auf PHP basieren? Dafür könnte es folgende Gründe geben:

  • PHP war frühzeitig (PHP 1 erschien 1995)[2] eine Möglichkeit serverseitige Logik zu implementieren.
  • PHP ist billig. Nahezu jeder Webspace-Anbieter erlaubt es PHP auszuführen. Das Deployment ist simpel, simpler geht es nicht. Einfach die Dateien auf den Server laden und schon läuft’s.
  • Aufgrund der früh wachsenden Nachfrage sind natürlich viele Jobs im PHP Umfeld entstanden, was zur Folge hat, dass auch mehr Projekte in PHP umgesetzt werden

Systeme, die auf dieser Basis aufsetzen, sind auf den ersten Blick billig und einfach zu handhaben. Genauso einfach läuft aber auch das Boot aus dem Ruder: Sicherheitslücken, schlechte Wartbarkeit, schlechte Code Qualität[3]. Schlechte Wartbarkeit ist bekanntlich teuer, da die Einarbeitungszeit in vorhandenen Code für Entwickler in der Regel höher ist oder weil der Entwickler eine so spezielle Kenntnis von dem System hat, dass er mit der Zeit immer mehr Geld verlangen kann. Eine Abhängigkeit des Auftraggebers, ein „Vendor lock-in“, entsteht.

PYTHON ALS FUNDAMENT

Saubere Strukturen, eine gute Code-Qualität sowie eine entsprechend leichtgewichtige Wartbarkeit liegen in der Natur von Python. Im Gegensatz zu anderen Programmiersprachen bildet Python seine Struktur durch Einrückung ab. Dies zwingt den Entwickler nicht nur, eine konstante Struktur bei der Einrückung und Strukturierung seines Codes zu verwenden, sondern macht es wesentlich einfacher für andere Entwickler, sich in ein Projekt einzulesen.

Ein kurzes Beispiel:

PHP

for ($i = 1; $i < 10; $i++) {
  if $($i % 2 == 0) {
    echo $I;
  }
}

Python

for i in range(0, 10, 2):
   print i

Natürlich repräsentiert dieses Beispiel keinen umfassenden Vergleich beider Sprachen. Es soll lediglich eine grobe Vorstellung über die Lesbarkeit beider Sprachen vermitteln.

Weiterhin gibt es mit PEP8[4] eine klare Richtlinie, wie Python Code zu formatieren ist. Unsere Entwicklungsumgebungen bei Blueshoe sind so konfiguriert, dass diese auf Konformität zu PEP8 prüfen.

Schön und gut, wir haben nun gezeigt, dass Python seinen Entwickler zu einer gewissen Strukturierung „erzieht“. Aber können professionelle PHP Entwickler dies nicht auch?

Natürlich gibt es auch PHP Entwickler, welche es schaffen, ihren Code sauber zu strukturieren und lesbar zu halten. In der Praxis sieht man heute leider noch viel zu oft sogenannten Spaghetti Code, wenn man durch PHP Projekte schaut. Python sollte somit auf langfristige Sicht nicht teurer als PHP sein, da die Wartungskosten in der Regel gering gehalten werden können.

DJANGO – DAS GERÜST UNSERER WEBANWENDUNG

Warum genau setzt Blueshoe nun auf Django und was genau ist Django eigentlich?

Django ist ein Framework zur Entwicklung von Webanwendungen. Damit gibt Django einen gewissen Workflow vor – eine Struktur in der Entwicklung von Webanwendungen. Hält man diese ein, fällt es wiederum neuen Entwicklern leicht, sich in den Code eines neuen Projektes einzulesen. Dies hat nicht nur zur Folge, dass das Projekt besser strukturiert und organisiert ist, sondern auch Zeit eingespart wird, was sich sich wiederum in den Kosten widerspiegelt.

Django bringt von Haus aus verschiedene Sicherheitsmechanismen mit, welche standardmäßig Pflicht bei der Implementierung sind. Beispielsweise Cross-Site Request Forgery (CSRF) wird durch den Einsatz von CSRF-Token unterbunden. Cross-Site Scripting wird ebenfalls von Haus aus von der Django-Template Engine unterbunden. Ein Entwickler muss sich aktiv gegen diesen Schutz für eine Variable entscheiden, um diesen Schutz zu deaktivieren. Unter anderen Angriffsvektoren, welche Django so klein wie nur möglich hält, ist auch SQL Injection. Das Open Web Application Security Project (OWASP) kategorisierte SQL Injection 2013 als Nummer 1 Schwachstelle oder auch den potenziell größten Angriffsvektor.[5]

Django bezeichnet sich selbst als „The web framework for perfectionists with deadlines“[6]. Das Entwicklungs-Team um Django hat sich grundlegende Philosophien für die Entwicklung des Frameworks festgelegt[7]. Diese sind natürlich keine Neuerfindung in der IT-Welt, sondern gelten auch für andere Projekte und Softwaresysteme. Es ist jedoch bemerkenswert, wie strikt diese im Django-Projekt verfolgt und eingehalten werden. Dies wird von der Community sehr gut angenommen und liegt uns bei Blueshoe sehr am Herzen. Die Folgen sind der Traum eines jeden Auftraggebers (von Software):

  • Wiederverwendbare Komponenten = weniger Zeit, geringere Kosten
  • Einfache Erweiterbarkeit des Systems = Projekt als Grundlage für Weiterentwicklung
  • Einfachheit, Lesbarkeit = Keine Abhängigkeit vom Auftragnehmer
  • Up to date Sicherheitsmechanismen (für Webanwendungen)

Gut, Django ist sicher, es ist sehr strukturiert, hat eine sehr gute Wartbarkeit und erlaubt es, in kurzer Zeit viel Funktionalität umzusetzen. Aber wer setzt auf Django? Gibt es Beispiele bekannter Webseiten, welche auf Python/Django setzen?

Wer setzt sonst noch auf Python/Django?

Es gibt zahlreiche, darunter sehr bekannte, Webseiten die Python/Django einsetzen. Ein paar hier:

platforms

Dropbox:

Viele Instanzen in der Dropbox-Infrastruktur führen Python-Code aus. Der hauptsächliche Grund für Dropbox war die schnelle Entwicklung ihrer Features, welche Python ermöglichte.

YouTube[8]:

2009 sprengte YouTube die Grenze von einer Milliarde Views pro Tag. YouTube setzt auf einen Application Server, welcher in Python geschrieben wurde. Um verschiedenen Auslastungen gerecht zu werden, kann YouTube einfach Maschinen hinzu- bzw. abschalten. Python ist bei hoher Auslastung der YouTube-Infrastruktur in der Regel nicht das Bottleneck. YouTube setzt Python außerdem vor allem wegen seiner Möglichkeiten zur schnellen und flexiblen Entwicklung ein.

Pinterest[9]:

Pinterest zahlt in Hochzeiten 52$ pro Stunde für ihre Server. Der meiste Traffic kommt dabei nachmittags und abends. Über Nacht kann die Gesamtanzahl der Instanzen auf 40% reduziert werden, was in einer Kostenreduktion bis auf 15$ pro Stunde resultieren kann. Hauptsächlich werden zum Ausliefern der Inhalte Django und Tornado (ein Python-Web-Framework und Asynchronous Network Library)[10] eingesetzt.

Spotify[11]:

Spotifys Backend besteht aus vielen unterschiedlichen Services. 80% dieser Dienste sind in Python geschrieben. Einer der wesentlichen Gründe für Spotify ist die schnelle Entwicklung, die Python mit sich bringt. Für die Abarbeitung asynchroner Tasks sowie (ca. 90% der) Map-Reduce Tasks in Spotify’s Hadoop Cluster wird Python hergenommen.

Instagram[12]:

Mit mehreren Millionen Requests pro Sekunde zeigt Instagram erfolgreich, wie perfekt Django zum Bauen von Web-Applications ist. Die Gesamtarchitektur ist natürlich komplex, Kern der Instagram Server ist jedoch Django als Application Server.

Disqus[13]:

Disqus wird auf zahlreichen Webseiten als Kommentar-Plugin verwendet. Mit (Stand 2013) 45.000 Anfragen pro Sekunde ist Disqus eine Webanwendung, welche extrem skaliert. Django wird fast ausschließlich für die Bearbeitung aller Anfragen auf Disqus verwendet. Natürlich kommen hier Technologien zum Einsatz, welche „Django das Leben erleichtern“ (z.B. Caches). Trotzdem gilt auch hier: Ein solides Fundament (wie beispielsweise Django) wird gebraucht, um stabile, sichere und skalierbare Webanwendungen zu entwickeln.

BLUESHOE <3 PYTHON/DJANGO

Python und Django haben aktive Communities, sie werden ständig weiterentwickelt und erlauben es uns, in kurzer Zeit hochqualitative Software zu schreiben. Deshalb lieben wir Python und Django. Kürzere Umsetzungszeiten bei Change Requests , hohe Sicherheitsstandards und geringe Kosten bei der Wartung/Pflege, diese Dinge lieben unsere Kunden. Es ist uns bei Blueshoe wichtig, dass unsere Kunden und Partner verstehen, warum wir diese Technologie als Grundlage vieler Projekte für uns gewählt haben.

Lange Rede, kurzer Sinn: Python/Django sind grandiose Fundamente für unterschiedlichste Projekte. Wir setzen darauf und unsere Erfahrungen sprechen für sich. Täglich erwarten uns neue Herausforderungen und wir wurden niemals von Django enttäuscht. Es trifft einfach den Kern unserer Mentalität: Auch wir sind Perfektionisten mit Deadlines.

Es gibt übrigens auch ein wundervolles Content Management System, dass auf Django basiert:


[1]http://blog.codinghorror.com/the-php-singularity/
[2]http://php.net/manual/de/history.php.php
[3]https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#stance
[4]https://www.python.org/dev/peps/pep-0008
[5]https://www.owasp.org/index.php/Top_10_2013-Top_10
[6]https://www.djangoproject.com/
[7]https://docs.djangoproject.com/en/stable/misc/design-philosophies/
[8]http://highscalability.com/youtube-architecture
[9]http://highscalability.com/blog/2012/5/21/pinterest-architecture-update-18-million-visitors-10x-growth.html
[10]http://www.tornadoweb.org/en/stable/
[11]https://labs.spotify.com/2013/03/20/how-we-use-python-at-spotify/
[12]http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances
[13]http://blog.disqus.com/post/62187806135/scaling-django-to-8-billion-page-views

BLUESHOE GmbH
© 2024 BLUESHOE GmbH