Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ Π΄Π»Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ². ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ API CF SL ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡ, Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ . ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΡΠ°ΡΡΠΎ ΠΏΡΡΠ°ΡΡ ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΠ°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΡΠΈΠ·Π²Π°Π½Π° Π²Π½Π΅ΡΡΠΈ ΡΡΠ½ΠΎΡΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΡ ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Cloud Foundry ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΠ»ΠΎΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ. ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΈΠΏΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π·Π΄Π΅ΡΡ ΠΈΠ³ΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΡ ΡΠΎΠ»Ρ. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠΏ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ. ΠΡΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ².
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. API (Application Programming Interface) Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ. ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ CF, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΡΡΠ΅Π΄Π° Cloud Foundry, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ (PaaS) Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° SL ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΠΊΡΠΎΠ²Π°ΡΡΡΡ Π΄Π²ΠΎΡΠΊΠΎ: ΠΊΠ°ΠΊ Service Layer (ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Service Level (ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ SLA). Π ΡΠ°ΠΌΠΊΠ°Ρ Π½Π°ΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»ΡΠ·Ρ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ API CF SL Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΄Π΅ΡΡ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½, Π»Π΅ΠΆΠ°ΡΠΈΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠΉ ΡΠ²ΡΠ·ΠΊΠΈ, Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ REST ΠΈ gRPC. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΡΡΠΎΠ³ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
- πΉ Cloud Foundry API ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- πΉ Service Layer ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
- πΉ Gateway Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- πΉ Registry Ρ ΡΠ°Π½ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ΠΈ ΠΈΡ Π²Π΅ΡΡΠΈΡΡ .
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΠ²Π½ΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ, Π½Π΅ Π·Π°ΡΡΠ°Π³uiing ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ Π² ΠΈΠΌΠ΅Π½Π°Ρ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, /cf/v1/ ΠΈ /sl/internal/.
Π’ΠΈΠΏΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ
ΠΠ΅ΡΠ²Π°Ρ Π³ΡΡΠΏΠΏΠ° Π² Π½Π°ΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. Cloud Controller API ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π·Π΄Π΅ΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Diego β ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² ΠΌΠΎΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ β Π² runtime ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π·Π΄Π΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Π½Ρ OAuth2, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΄Π°ΡΡΡΡ ΡΠ΅Π½ΡΡΠΎΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ UAA (User Account and Authentication). ΠΠ΅Π· Π²Π°Π»ΠΈΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π»ΠΈΠΌΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (rate limiting), ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π»ΠΈΠΌΠΈΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ CI/CD.
| Π’ΠΈΠΏ API | ΠΡΠΎΡΠΎΠΊΠΎΠ» | ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ | Π§Π°ΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ |
|---|---|---|---|
| Cloud Controller | REST (JSON) | Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ | ΠΠΈΠ·ΠΊΠ°Ρ (Π΄Π΅ΠΏΠ»ΠΎΠΉ) |
| UAA | REST/OAuth2 | ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ | Π‘ΡΠ΅Π΄Π½ΡΡ |
| Diego BBS | gRPC | ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² | ΠΡΡΠΎΠΊΠ°Ρ (runtime) |
| Loggregator | gRPC/HTTPS | Π‘Π±ΠΎΡ Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΌΠ΅ΡΡΠΈΠΊ | ΠΠΎΡΡΠΎΡΠ½Π½Π°Ρ |
ΠΠ»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ CLI-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ cf cli. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ HTTP-ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°ΠΌ.
- REST
- gRPC
- GraphQL
- SOAP
Π‘Π΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ°
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΊ ΡΡΠΎΠ²Π½Ρ SL (Service Layer), ΠΌΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² Π·ΠΎΠ½Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΄Π΅ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΡΠΎΠΈΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΡΠΈΠΏΠ° ΡΠ΅ΡΠ°Π΅ΠΌΡΡ Π·Π°Π΄Π°Ρ: CRUD-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°, ΡΠΎΠ½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠ°ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΎΠ±ΡΠ°ΡΡΠΈΡ ΡΡ ΡΠ΅ΡΠ΅Π· Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ.
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ, ΠΏΠΎΠ²ΡΠΎΡΠ½Π°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ². Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠΆΠΈΡΡΡ Π½Π° ΠΏΠ»Π΅ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΠ½ΡΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Circuit Breaker. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ±ΠΎΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°, ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° gracefully degrade, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ, ΠΏΡΡΡΡ ΠΈ Π½Π΅ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
- π Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°.
- π ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ.
- π‘οΈ ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ.
- π ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΠ°ΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ API. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenAPI Specification (ΡΠ°Π½Π΅Π΅ Swagger) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ "ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠΎΠ²" ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ API-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ.
ΠΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ SAGA. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ.
ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΎΡΠΌΠ°ΡΡ
ΠΡΠ±ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ CF SL Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡ HTTP/2 ΠΈ gRPC. gRPC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Protobuf, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ JSON ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ API, ΠΎΠ±ΡΠ°ΡΠ΅Π½Π½ΡΡ ΠΊ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, ΡΠ°ΡΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ JSON over HTTP. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠΈΡΠΎΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΠΏΡΠΎΡΡΠΎΡΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΠ½ΡΡΡΠΈ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π΄Π°Π΅Ρ ΠΎΡΡΡΠΈΠΌΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ API Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ (payload). ΠΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, S3),θδΈζ― ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΡ ΡΠ΅Π»ΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ΅.
// ΠΡΠΈΠΌΠ΅Ρ gRPC ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
rpc StreamUsers (Empty) returns (stream UserResponse);
}
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎ ΡΠΎΡΠΌΠ°ΡΠ΅ CloudEvents. ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
Π‘Π΅ΠΊΡΠ΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Protobuf
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ»Ρ Ρ small tag numbers Π΄Π»Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π²Π°ΡΠΈΠ½ΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π³Π°.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π² ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ API CF SL Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ OAuth 2.0 Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ OpenID Connect. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π΅ Π²Π»Π°Π΄Π΅Ρ Π΅Π³ΠΎ ΡΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
ΠΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Authorization Ρ bearer-ΡΠΎΠΊΠ΅Π½ΠΎΠΌ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Cloud Foundry Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΡ ΡΠΎΠΊΠ΅Π½Π° ΡΠ΅ΡΠ΅Π· UAA. ΠΡΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ ΠΈΡΡΠ΅ΠΊ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
ΡΠΊΠΎΡΠΏΠΎΠ² (scopes), Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ³Π½ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 401 ΠΈΠ»ΠΈ 403.
ΠΠ»Ρ ΡΠ΅ΡΠ²ΠΈΡ-ΡΡ-ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ (machine-to-machine) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ client credentials grant. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΉ ID ΠΈ ΡΠ΅ΠΊΡΠ΅Ρ. ΠΠ°ΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΡΠΈ ΡΠ΅ΠΊΡΠ΅ΡΡ Π² Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ CredHub, ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΡΡ ΠΈΡ Π² ΠΊΠΎΠ΄Π΅.
- π ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ HTTPS Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Π²ΡΠ΅Ρ ΡΡΠΎΠ²Π½ΡΡ .
- π Π ΠΎΡΠ°ΡΠΈΡ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ² ΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ.
- ποΈ ΠΡΠ΄ΠΈΡ Π²ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
- π« ΠΠ»ΠΎΡΠΎΠ²ΠΊΠ° IP-Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (Least Privilege) ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°. Π‘Π΅ΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅. ΠΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΠ΅ΡΠ± Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² URL-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ . ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π² Π»ΠΎΠ³ΠΈ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΡ ΠΈΡΡΠΎΡΠΈΡ.
βοΈ ΠΡΠ΄ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ API
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ²ΠΎΠ»ΡΡΠΈΠΈ
ΠΡΠ±ΠΎΠΉ API ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ Π»ΠΎΠΌΠ°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (SemVer), Π³Π΄Π΅ Π²Π΅ΡΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠΈΡΠ΅Π»: MAJOR.MINOR.PATCH.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ MAJOR Π²Π΅ΡΡΠΈΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ breaking changes. MINOR Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π±Π΅Π· Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π° PATCH ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ. Π URL ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ /v1/resource ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Accept-Version.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π΄Π΅ΠΏΡΠ΅ΠΊΠ°ΡΠΈΠΈ (ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ) Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°. ΠΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ sufficient notice (ΠΎΠ±ΡΡΠ½ΠΎ 3-6 ΠΌΠ΅ΡΡΡΠ΅Π²) ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ API. Π ΡΡΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ² Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ Π²Π»ΠΈΡΠ½ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Feature Flags ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ API ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ, Π±Π΅Π· ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ ΠΎΡΠΊΠ°ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π² Java ΠΈΠ»ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π² Python) ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ.
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ β ΡΡΠΎ ΡΠ²ΡΡΠ΅Π½Π½ΡΠΉ Π³ΡΠ°Π°Π»Ρ API. ΠΠ°ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π±Π΅Π· ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π°.
FAQ: Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
Π ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ CF API ΠΈ SL API?
CF API (Cloud Foundry) ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ: Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. SL API (Service Layer) β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ REST ΠΈ gRPC Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°?
ΠΡΠ»ΠΈ Π²Π°ΠΆΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° β Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ gRPC. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½Π° ΠΏΡΠΎΡΡΠΎΡΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΊΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ° β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ REST/JSON.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ UAA ΠΈΡΡΠ΅ΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ?
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ (retry logic). ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ 401 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Π½ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ refresh token ΠΈΠ»ΠΈ client credentials) ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠ΅Π΄ (dev, prod)?
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Ρ. Π’ΠΎΠΊΠ΅Π½Ρ ΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΠΊΠ΅Π½Π° ΠΈΠ· dev-ΡΡΠ΅Π΄Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π°Π²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ production-Π΄Π°Π½Π½ΡΠΌ.