Hoy escribiré sobre Django, un framework que me ha servido fielmente durante los últimos cinco años. Me ayudó a tener éxito en el desarrollo de soluciones de alta carga utilizadas por millones de usuarios en la actualidad.
De hecho, Python no es un lenguaje de programación muy "rápido", pero es simple, conveniente y a la gente le encanta. Desde el punto de vista del rendimiento, puede que no sea tan rápido como Go o Node.js, pero se vuelve irrelevante cuando se consideran los marcos modernos y el desarrollo modular.
Desde que he estado en esta "olla de desarrollo de Django" durante varios años, he llegado a algunas ideas valiosas que voy a compartir con ustedes.
1. La infraestructura decide
Aparte del rendimiento de la aplicación, lo primero que necesita es un marco que le permita escalar cuando la aplicación alcanza su límite, y Django puede escalar fácilmente si sigue estas pautas:
- Divida su aplicación en microservicios, pero tenga en cuenta la cantidad de datos transferidos entre ellos, especialmente porque la redundancia de datos y la sincronización frecuente provocan un aumento en los recursos del servidor y las comunicaciones y, en consecuencia, mayores costos;
- Utilice contenedores Docker para enviar su código a producción (aprox. Per: a producción);
- Docker , , Kubernetes, ;
- : / ;
- : - , (. .: — Kubernetes), Kubernetes, , . — .
2. —
, . , , , , :
- . PostgreSQL, , , , ;
- . - (IOPS) ;
- , ;
- , — , : ( SELECT), ( INSERT, UPDATE). Django , , .
3. Django ORM
, ORM, . , , 100 — 20 .
, , settings.py:
LOGGING = {
'version': 1,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
},
},
'root': {
'handlers': ['console'],
}
}
:
— PostgreSQL, pghero.
4.
, . Django , - .
CONN_MAX_AGE — , . . 5 . , , , , 100 , .
, 0 300 . AWS Aurora db.r5.8xlarge, db.r5.4xlarge, , , , .
5. (middlewares)
, , Django REST API. (sessions) (messages) — . , .
6. bulk-
bulk-, . Django ORM SQL-.
5000 , batch_size (. .: ). Python, , , .
bulk- Django
7. select_related
, JOIN.
, 11 :
, , :
select_related , ORM SQL- JOIN. , WHERE .
8.
. , .
Django ORM QuerySet .only() , .defer(), Django , :
9. API
, API. JSON , , .
: 1 , 1 , 1 , 30 — (. .: ) .
, Django Python, , : « — ».
Django . , , (. .: «») , «» .
, , . , .
Instagram, Pinterest Disqus — Django « », . , , , , , , .
, bulk-, , . .