Preskočite na sadržaj

II. Zavisnosti

Note

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

II. Zavisnosti

Eksplicitno deklarirajte i izolirajte zavisnosti

Većina programskih jezika nudi sustav pakiranja za distribuciju potpornih knjižnica, kao što je CPAN za Perl ili Rubygems za Ruby. Knjižnice instalirane putem sustava za pakiranje mogu se instalirati zaa cijeli sustav (poznate kao "paketi sjedišta") ili ograničene na direktorij koji sadrži aplikaciju (poznat kao "dobavljanje" ili "pakiranje").

Dvanaestofaktorska Aplikacija nikada se ne oslanja na implicitno postojanje paketa instaliranih za cijeli sustav. Ona deklarira sve zavisnosti, potpuno i točno, putem manifesta deklaracije zavisnosti. Nadalje, koristi alat za izolaciju zavisnosti tijekom izvođenja kako bi osigurala da nikakve implicitne zavisnosti ne "procure" iz okolnog sustava. Potpuna i eksplicitna specifikacija zavisnosti jednoliko se primjenjuje i na produkciju i na razvoj.

Na primjer, Bundler za Ruby nudi format manifesta Gemfile za deklaraciju zavisnosti i bundle exec za izolaciju zavisnosti. U Pythonu postoje dva odvojena alata za ove korake -- Pip se koristi za deklaraciju i Virtualenv za izolaciju. Čak i C ima Autoconf za deklaraciju zavisnosti, a statičko povezivanje može osigurati izolaciju zavisnosti. Bez obzira na lanac alata, deklaracija zavisnosti i izolacija moraju se uvijek koristiti zajedno -- samo jedno ili drugo nije dovoljno da se zadovolji medologija dvanaest faktora.

Jedna od prednosti eksplicitne deklaracije zavisnosti je da pojednostavljuje postavljanje za razvojne programere koji su novi u aplikaciji. Novi razvojni programer može preuzeti bazu izvornog kôda aplikacije na svom razvojnom stroju, zahtijevajući samo instalirane interpreter i standardnu biblioteku jezika te upravitelj zavisnosti kao preduvjete. Moći će postaviti sve što je potrebno za pokretanje kôda aplikacije pomoću determinističke naredbe izgradnje. Na primjer, naredba build za Ruby/Bundler je bundle install, dok je za Clojure/Leiningen to lein deps.

Dvanaestofaktorske aplikacije također se ne oslanjaju na implicitno postojanje bilo kakvih sustavskih alata. Primjeri uključuju pozivanje ImageMagicka ili curl-a putem ljuske. Iako ovi alati mogu postojati na mnogim ili čak većini sustava, nema jamstva da će postojati na svim sustavima na kojima bi se aplikacija mogla izvoditi u budućnosti ili da li će verzija pronađena na budućem sustavu biti kompatibilna s aplikacijom. Ako aplikacija treba pozvati sustavski alat putem ljuske, taj alat treba isporučiti u aplikaciji.

Author: Adam Wiggins