Šajā grāmatā jūs dosieties ceļojumā no pamatu apgūšanas līdz praktiskai pilnvērtīgu serveru lietojumprogrammu īstenošanai Python valodā: no zema līmeņa soketiem un protokoliem līdz arhitektūrai un ražošanas palaišanai. Grāmata atšķiras ar to, ka tā piedāvā ne tikai vienu «pareizo» ceļu, bet salīdzina trīs nobriedušus stekus — Flask, Django un FastAPI — reālos projektos, parādot, kur ir piemērota vienkāršība, kur nepieciešama pilnība no kastes, un kur ir kritiska ātrums un asinkronība.
Grāmatas struktūra ir secīga: no serveru programmēšanas pamatiem (klienta-servera arhitektūra, datu pārsūtīšanas protokoli HTTP, HTTPS un WebSocket, zema līmeņa darbs ar soketiem Python) līdz vairāku reālu projektu izveidei, tostarp CRM sistēmai uz Django, Telegram botam ar pilnvērtīgu servera loģiku, REST API mobilajai lietojumprogrammai un interaktīvam čatam ar WebSocket.
Mēs izpētīsim galvenos aspektus, strādājot ar datu bāzēm serveru lietojumprogrammās: krātuves veida izvēle atbilstoši slodzes profilam un datu struktūrai; trīs populāru ORM izmantošanas paņēmieni; saprotams process izmaiņu veikšanai shēmā bez dīkstāves; gatavi savienojuma veidnes PostgreSQL/MySQL/SQLite/MongoDB un daudz kas cits.
Mēs izskatīsim galvenos principus serveru lietojumprogrammu mērogošanā un optimizācijā: jūs iemācīsieties izmantot slodzes balansētājus ar Nginx un Gunicorn, piemērot efektīvas kešatmiņas stratēģijas ar Redis un Memcached, īstenot fona uzdevumus ar Celery un RabbitMQ, kā arī izvērst konteinerus, izmantojot Docker un Kubernetes. Īpaša uzmanība tiks pievērsta drošības jautājumiem un dažādām datu un lietojumprogrammu aizsardzības metodēm: TLS/SSL izmantošana savienojumu šifrēšanai, JWT žetonu un OAuth 2.0 ieviešana lietotāju autentifikācijai, aizsardzība pret visbiežāk sastopamajām uzbrukumu metodēm (QL injekcijām, starpdomēnu skriptingu (XSS) un starpdomēnu pieprasījumu viltošanu (CSRF)).
Tāpat mēs apskatīsim mūsdienīgus pieejas lietojumprogrammu izvietošanai, izpētot serveru infrastruktūras iestatīšanu AWS, Heroku, DigitalOcean, kā arī Nginx tīmekļa servera un Gunicorn servera procesu pārvaldnieka konfigurāciju ražošanai.