Preskoči na sadržaj

IX. Jednokratna upotreba

Info

Sadržaj u nastavku je prijevod stranice IX. Disposability na web sjedištu The Twelve-Factor App.

IX. Jednokratna upotreba

Maksimalno povećajte robusnost uz brzo pokretanje i dobrohotno isključivanje

Procesi dvanaestofaktorske aplikacije su jednokratni, što znači da se mogu pokrenuti ili zaustaviti u trenutku. To olakšava brzo elastično skaliranje, brzu implementaciju promjena kôda ili konfiguracije i robusnost implementacija u produkciji.

Procesi bi trebali težiti minimiziranju vremena pokretanja. U idealnom slučaju, procesu treba nekoliko sekundi od trenutka kada se izvrši naredba za pokretanje dok proces nije pokrenut i spreman za primanje zahtjeva ili poslova. Kratko vrijeme pokretanja pruža veću agilnost za proces izdanja i skaliranje; i pomaže robusnosti, jer upravitelj procesa može lakše premjestiti procese na nove fizičke strojeve kada je to opravdano.

Procesi se dobrohotno isključuju kada prime signal SIGTERM od upravitelja procesa. Za web proces, dobrohotno isključivanje se postiže prestankom slušanja na vratima usluge (čime se odbijaju svi novi zahtjevi), dopuštajući svim trenutnim zahtjevima da se završe, a zatim se izlazi. Implicitno u ovom modelu je da su HTTP zahtjevi kratki (ne više od nekoliko sekundi), ili u slučaju dugog prozivanja, klijent bi se trebao besprijekorno pokušati ponovno povezati kada se veza izgubi.

Za radni proces, dobrohotno iksljučivanje se postiže vraćanjem trenutnog posla u radni red. Na primjer, na RabbitMQ-u radnik može poslati NACK; na Beanstalkdu, posao se automatski vraća u red kad god se radnik prekine. Sustavi koji se temelje na zaključavanju kao što je Delayed Job moraju biti sigurni da su otpustili svoje zaključavanje zapisa posla. Implicitno u ovom modelu je da svi poslovi omogućuju višestruku ulaznost, što se obično postiže umotavanjem rezultata u transakciju ili pravljenjem idempotentne operacije.

Procesi bi također trebali biti otporni na iznenadnu smrt, u slučaju kvara na temeljnom hardveru. Iako je ovo mnogo rjeđa pojava od dobrohotnog isključivanja sa SIGTERM-om, ipak se može dogoditi. Preporučeni pristup je korištenje robusnog pozadinskog dijela reda čekanja, kao što je Beanstalkd, koji vraća poslove u red kada se klijenti odvoje ili im istekne vrijeme čekanja. U svakom slučaju, dvanaestofaktorska aplikacija dizajnirana je za rukovanje neočekivanim, nedobrohotnim prekidima. Dizajn samo za rušenje dovodi ovaj koncept do svog logičnog zaključka.

Author: Adam Wiggins