A megosztott vagy specializált szolgáltatásműködést kiszervezheti egy átjáró proxyra. Ez a minta leegyszerűsítheti az alkalmazásfejlesztést a megosztott szolgáltatásfunkciók, például az SSL-tanúsítványok használatának az átjáróba való áthelyezésével.
Kontextus és probléma
Bizonyos funkciókat több szolgáltatás is használ, és ezek a funkciók beállítást, felügyeletet és karbantartást igényelnek. A minden alkalmazástelepítéskor elosztott megosztott vagy speciális szolgáltatások növelik az adminisztrációs terhelést és a telepítési hibák esélyét. A megosztott funkciók frissítéseit a funkciót használó összes szolgáltatásban telepíteni kell.
A biztonsági problémák megfelelő kezelése (tokenérvényesítés, titkosítás, SSL-tanúsítványkezelés) és egyéb összetett feladatok elvégzése speciális szaktudást kívánhat meg. Például az egy alkalmazás számára szükséges tanúsítványt konfigurálni és telepíteni kell az alkalmazás összes példányán. Minden új telepítés esetében szükség van a tanúsítvány kezelésére, hogy az ne járjon le. Ha közeledik egy közös tanúsítvány lejárati ideje, akkor frissíteni, majd tesztelni és ellenőrizni kell azt minden alkalmazástelepítésen.
Más közös szolgáltatásokat, például a hitelesítést, az engedélyezést, a naplózást, a monitorozást vagy a szabályozást nehéz implementálni és felügyelni nagy számú telepítés esetén. Érdemes lehet konszolidálni az ilyen típusú funkciókat a terhelés és a hibák esélyének csökkentése érdekében.
Megoldás
Egyes funkciók kiszervezése az átjárókba, különösen az olyan átfogó szempontok, mint a tanúsítványkezelés, a hitelesítés, az SSL-leállítás, a monitorozás, a protokollfordítás vagy a szabályozás.
Az alábbi ábrán egy átjáró látható, amely megszakítja a bejövő SSL-kapcsolatokat. Adatokat kér le az eredeti kérelmező nevében az átjáró bármely HTTP-kiszolgálójáról.
A minta használata többek között a következő előnyökkel jár:
Egyszerűsíti a szolgáltatások fejlesztését, mivel nincs szükség a támogató erőforrások (például a webkiszolgáló-tanúsítványok és a biztonságos webhelyek konfigurációja) elosztására és karbantartására. Az egyszerűbb konfigurálás könnyebb felügyeletet és skálázhatóságot jelent, és így könnyebb a szolgáltatásfrissítés is.
A speciális szakértelmet igénylő funkciók implementálását (például biztonság) bízza külön erre a célra létrehozott csapatokra. Így a központi csapat az alkalmazás működésére koncentrálhat, és a több szolgáltatást érintő, de speciális kérdések megoldását a szakértőkre hagyhatja.
Egységesítse a kérések és válaszok naplózását és monitorozását. Beállíthatja, hogy az átjáró akkor is végezzen minimális monitorozási és naplózási tevékenységet, ha a szolgáltatás nem lett megfelelően kialakítva.
Problémák és megfontolandó szempontok
- Győződjön meg arról, hogy az átjáró magas rendelkezésre állású, és ellenáll a hibáknak. Az átjáró több példányának futtatásával elkerülheti az egyetlen meghibásodási pontot.
- Gondoskodjon arról, hogy az átjáró megfelel az alkalmazás és a végpontok kapacitási és skálázási követelményeinek. Gondoskodjon arról, hogy az átjáró ne váljon szűk keresztmetszetté az alkalmazás számára, és megfelelően skálázható legyen.
- Csak olyan funkciókat szervezzen ki, amelyeket a teljes alkalmazás használ, például a biztonsági és az adatátviteli funkciókat.
- Az üzleti logikát soha nem szabad kipakolva az átjáróba.
- Ha nyomon kell követnie a tranzakciókat, érdemes korrelációs azonosítókat létrehozni a naplózáshoz.
Mikor érdemes ezt a mintát használni?
Használja ezt a mintát, ha:
- Az alkalmazástelepítésben vannak közös feladatok, például az SSL-tanúsítványok vagy a titkosítás.
- Közös funkciója van több alkalmazástelepítésnek, amelyek erőforrásigényei eltérőek (például memória-erőforrások, tárterület vagy hálózati kapcsolatok).
- Bizonyos feladatokat egy speciális csapatra szeretne átruházni (például hálózati biztonság, szabályozás, hálózathatárokkal kapcsolatos kérdések).
Nem érdemes ezt a mintát használni, ha összekapcsol egyes szolgáltatásokat.
Számítási feladatok tervezése
Az tervezőknek értékelniük kell, hogyan használható az átjáró-kiszervezési minta a számítási feladat kialakításában az Azure Well-Architected Framework pilléreiben foglalt célok és alapelvek kezelésére. Példa:
Pillér | Hogyan támogatja ez a minta a pillércélokat? |
---|---|
A megbízhatósági tervezési döntések segítenek a számítási feladatnak ellenállóvá válni a hibás működéssel szemben, és biztosítani, hogy a hiba bekövetkezése után teljesen működőképes állapotba kerüljön. | Ennek a felelősségnek az átjáróra való kiszervezése csökkenti az alkalmazáskód összetettségét a háttércsomópontokon. Bizonyos esetekben a kiszervezés teljesen lecseréli a funkciókat egy megbízható platform által biztosított funkcióra. - RE:01 Egyszerűség és hatékonyság |
A biztonsági tervezési döntések segítenek biztosítani a számítási feladatok adatainak és rendszereinek titkosságát, integritását és rendelkezésre állását. | Az átjáró kérési folyamatba való felvételével központosíthatja a biztonsági funkciókat, például a webalkalmazási tűzfalakat és az ügyfelekkel létesített TLS-kapcsolatokat. A platform által biztosított kiszervezett funkciók már nagyobb biztonságot nyújtanak. - SE:06 Hálózati vezérlők - SE:08 Erőforrások keményítése |
A költségoptimalizálás a számítási feladatok megtérülésének fenntartására és javítására összpontosít. | Ez a minta lehetővé teszi, hogy a csomópontonként elköltendő erőforrások költségeit átirányítsa az átjáró implementációjába. A központosított feldolgozási modell költségei gyakran alacsonyabbak, mint az elosztott modellé. - CO:14 Konszolidáció |
Az operatív kiválóság szabványosított folyamatok és a csapat kohéziója révén segít a számítási feladatok minőségének biztosításában. | Ebben a mintában a kiszervezett funkciók konfigurációja és felügyelete egyetlen pontból történik, nem pedig több csomópontról történő kezelés helyett. - OE:04 Eszközök és folyamatok |
A teljesítményhatékonyság a skálázás, az adatok és a kód optimalizálásával segíti a számítási feladatok hatékony kielégítését . | Ha kiszervezési átjárót ad hozzá a kérési folyamathoz, az lehetővé teszi, hogy csomópontonként kevesebb erőforrást használjon, mert a funkciók központosítva lesznek az átjárón. A kiszervezett funkciók implementációját az alkalmazáskódtól függetlenül optimalizálhatja. A kiszervezett platform által biztosított funkciók már valószínűleg nagy teljesítményűek. - PE:03 Szolgáltatások kiválasztása |
Mint minden tervezési döntésnél, fontolja meg az ezzel a mintával bevezethető többi pillér céljaival szembeni kompromisszumokat.
Példa
Ha az Nginxet használja SSL-kiszervezési berendezésként, a következő konfiguráció leállítja az összes beérkező SSL-kapcsolatot, és elosztja azt három felső rétegbeli HTTP-kiszolgáló között.
upstream iis {
server 10.3.0.10 max_fails=3 fail_timeout=15s;
server 10.3.0.20 max_fails=3 fail_timeout=15s;
server 10.3.0.30 max_fails=3 fail_timeout=15s;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/domain.cer;
ssl_certificate_key /etc/nginx/ssl/domain.key;
location / {
set $targ iis;
proxy_pass http://$targ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
Ez az Azure-ban az SSL-leállítás beállításával érhető el az Application Gatewayen.