π Postman Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ²: ΠΎΡΠ½ΠΎΠ²Ρ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
Postman β ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°ΠΌ π ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΡΠ²Π΅ΡΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π² CI/CD. ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ REST, SOAP, GraphQL, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π²ΡΠ΅Ρ ΠΠ‘ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
π ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
β ΠΡΠΏΡΠ°Π²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΎΡΠ²Π΅ΡΠΎΠ²
β ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
β ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Collection Runner
β ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ² ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ β³
β ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD ΡΠ΅ΡΠ΅Π· Newman
π Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²
ΠΠΊΠ»Π°Π΄ΠΊΠ° Tests ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΡΠ²Π΅ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΠΎΡΠ²Π΅ΡΠ°:
ΠΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°:
π ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ π. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ auth-ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ID ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΡΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅, ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² (CSV, JSON) π.
π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Ρ Collection Runner
π ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ.
Postman β ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°ΠΌ π ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΡΠ²Π΅ΡΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π² CI/CD. ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ REST, SOAP, GraphQL, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π²ΡΠ΅Ρ ΠΠ‘ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
π ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
β ΠΡΠΏΡΠ°Π²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΎΡΠ²Π΅ΡΠΎΠ²
β ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
β ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Collection Runner
β ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ² ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ β³
β ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD ΡΠ΅ΡΠ΅Π· Newman
π Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²
ΠΠΊΠ»Π°Π΄ΠΊΠ° Tests ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΡΠ²Π΅ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΠΎΡΠ²Π΅ΡΠ°:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});ΠΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°:
pm.test("Response contains campaign name", function () {
pm.expect(pm.response.text()).to.include("Campaign TEST");
});π ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ π. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ auth-ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
var jsonData = pm.response.json();
pm.environment.set("authToken", jsonData.token);
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ID ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
pm.environment.set("campaignID", jsonData.id);ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΡΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅, ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² (CSV, JSON) π.
π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Ρ Collection Runner
π ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ.
β€6
π€ ChatGPT vs DeepSeek: ΠΠΈΡΠ²Π° AI-ΡΠΈΡΠ°Π½ΠΎΠ² Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ²
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠ°Ρ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΡ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡ Ρ Π²Π°ΡΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ: OpenAI ChatGPT ΠΈΠ»ΠΈ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΠΉ DeepSeek. ΠΡ ΡΡΡΡΠΎΠΈΠ»ΠΈ ΠΈΠΌ ΡΠΊΠ·Π°ΠΌΠ΅Π½ β ΠΎΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ Π΄ΠΎ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ.
π ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
1. DeepSeek-R1
- ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Ollama β ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π΄Π°Π½Π½ΡΠΌΠΈ.
- Π€ΠΈΡΠΊΠΈ: ΠΠΎΠΆΠ΅Ρ Β«ΠΌΡΡΠ»ΠΈΡΡΒ» Π½Π° ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠΌ (Π΄Π°ΠΆΠ΅ Π² ΡΡΡΡΠΊΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Ρ ), Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ ΠΆΠ΅Π»Π΅Π·Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, NVIDIA A100).
- ΠΡΠΈΠΌΠ΅Ρ: ΠΡΡΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠ»Π°ΡΡ Ρ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅Π½Π΅ΡΠΈΠΊΠΎΠΉ: Π΄Π°Π»Π° ΠΎΡΠ²Π΅Ρ 12.5%, Ρ ΠΎΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ β 25%).
2. ChatGPT (4o ΠΈ o1)
- Π‘ΠΊΠΎΡΠΎΡΡΡ: ΠΡΡΡΡΠ΅Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅ΡΡ.
- ΠΡΠ΅Π°ΡΠΈΠ²: Π‘ΠΈΠ»ΡΠ½Π΅Π΅ Π² ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΡ ΠΈ ΠΏΡΠΎ Π’ΠΈΡΠ΅ΠΊΡΠ°).
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ.
π ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ²
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ DeepSeek-R1 (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΠ΅Π· Ollama).
- ΠΠ»Ρ Π±ΡΡΡΡΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΈ ΠΊΡΠ΅Π°ΡΠΈΠ²Π° β ChatGPT 4o.
- ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ, Π½ΠΎ DeepSeek Π»ΡΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ.
π‘ Π’ΠΠ-3 ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ
1. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°:
- ΠΠΎΠΏΡΠΎΡ:
- ChatGPT 4o: 6 (Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ).
- DeepSeek-R1: 6 (Ρ ΡΠΌΠΎΡΠΎΠΌ: Β«ΠΡΠ»ΠΈ Π±Ρ Π½Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π±ΡΠ»ΠΎ Π±Ρ 8Β»).
2. Π₯ΠΈΠΌΠΈΡ:
- ΠΠΎΠΏΡΠΎΡ: ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° Π³ΠΈΠ΄ΡΠΎΠ»ΠΈΠ·Π° NH4NO2.
- ChatGPT o1: 3.9Γ10β»Β² (Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΠΈΡΡΠΈΠ½Π΅).
- DeepSeek-R1: 1.2Γ10β»βΆ (ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ β 1.23Γ10β»βΆ).
3. ΠΡΠ΅Π°ΡΠΈΠ²:
- ΠΠ°Π΄Π°Π½ΠΈΠ΅: Π Π°ΡΡΠΊΠ°Π·-ΡΡΠΎΠΏΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π±ΡΠΊΠ²Ρ Π, Π , Π.
- ChatGPT o1: ΠΠΈΠ½ΠΈ-ΡΠΎΠΌΠ°Π½ ΠΏΡΠΎ ΡΠΊΠΎΠ³ΠΎΡΠΎΠ΄.
- DeepSeek-R1: Β«ΠΠΎΡΠΎΠ΄ Π Π°Π΄ΠΎΡΡΡ. ΠΡΠ°ΠΆΠ΄Π°Π½Π΅ ΡΠ°ΡΡΠΈΠ»ΠΈ ΡΠΎΠ·Ρ...Β» πΉ
π ΠΡΠΎΠ³ΠΈ
- DeepSeek Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ.
- ChatGPT β Π΄Π»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²Π°.
- Π‘ΠΎΠ²Π΅Ρ: Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΎΠ±Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΡΠ²ΠΎΠΈΡ ΠΊΠ΅ΠΉΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ).
#AI
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠ°Ρ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΡ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡ Ρ Π²Π°ΡΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ: OpenAI ChatGPT ΠΈΠ»ΠΈ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΠΉ DeepSeek. ΠΡ ΡΡΡΡΠΎΠΈΠ»ΠΈ ΠΈΠΌ ΡΠΊΠ·Π°ΠΌΠ΅Π½ β ΠΎΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ Π΄ΠΎ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ.
π ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
1. DeepSeek-R1
- ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Ollama β ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π΄Π°Π½Π½ΡΠΌΠΈ.
- Π€ΠΈΡΠΊΠΈ: ΠΠΎΠΆΠ΅Ρ Β«ΠΌΡΡΠ»ΠΈΡΡΒ» Π½Π° ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠΌ (Π΄Π°ΠΆΠ΅ Π² ΡΡΡΡΠΊΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Ρ ), Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ ΠΆΠ΅Π»Π΅Π·Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, NVIDIA A100).
- ΠΡΠΈΠΌΠ΅Ρ: ΠΡΡΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠ»Π°ΡΡ Ρ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅Π½Π΅ΡΠΈΠΊΠΎΠΉ: Π΄Π°Π»Π° ΠΎΡΠ²Π΅Ρ 12.5%, Ρ ΠΎΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ β 25%).
2. ChatGPT (4o ΠΈ o1)
- Π‘ΠΊΠΎΡΠΎΡΡΡ: ΠΡΡΡΡΠ΅Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅ΡΡ.
- ΠΡΠ΅Π°ΡΠΈΠ²: Π‘ΠΈΠ»ΡΠ½Π΅Π΅ Π² ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΡ ΠΈ ΠΏΡΠΎ Π’ΠΈΡΠ΅ΠΊΡΠ°).
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ.
π ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ²
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ DeepSeek-R1 (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΠ΅Π· Ollama).
- ΠΠ»Ρ Π±ΡΡΡΡΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΈ ΠΊΡΠ΅Π°ΡΠΈΠ²Π° β ChatGPT 4o.
- ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ, Π½ΠΎ DeepSeek Π»ΡΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ.
π‘ Π’ΠΠ-3 ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ
1. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°:
- ΠΠΎΠΏΡΠΎΡ:
2 + 2 * 2 = ? - ChatGPT 4o: 6 (Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ).
- DeepSeek-R1: 6 (Ρ ΡΠΌΠΎΡΠΎΠΌ: Β«ΠΡΠ»ΠΈ Π±Ρ Π½Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π±ΡΠ»ΠΎ Π±Ρ 8Β»).
2. Π₯ΠΈΠΌΠΈΡ:
- ΠΠΎΠΏΡΠΎΡ: ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° Π³ΠΈΠ΄ΡΠΎΠ»ΠΈΠ·Π° NH4NO2.
- ChatGPT o1: 3.9Γ10β»Β² (Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΠΈΡΡΠΈΠ½Π΅).
- DeepSeek-R1: 1.2Γ10β»βΆ (ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ β 1.23Γ10β»βΆ).
3. ΠΡΠ΅Π°ΡΠΈΠ²:
- ΠΠ°Π΄Π°Π½ΠΈΠ΅: Π Π°ΡΡΠΊΠ°Π·-ΡΡΠΎΠΏΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π±ΡΠΊΠ²Ρ Π, Π , Π.
- ChatGPT o1: ΠΠΈΠ½ΠΈ-ΡΠΎΠΌΠ°Π½ ΠΏΡΠΎ ΡΠΊΠΎΠ³ΠΎΡΠΎΠ΄.
- DeepSeek-R1: Β«ΠΠΎΡΠΎΠ΄ Π Π°Π΄ΠΎΡΡΡ. ΠΡΠ°ΠΆΠ΄Π°Π½Π΅ ΡΠ°ΡΡΠΈΠ»ΠΈ ΡΠΎΠ·Ρ...Β» πΉ
π ΠΡΠΎΠ³ΠΈ
- DeepSeek Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ.
- ChatGPT β Π΄Π»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²Π°.
- Π‘ΠΎΠ²Π΅Ρ: Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΎΠ±Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΡΠ²ΠΎΠΈΡ ΠΊΠ΅ΠΉΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ).
#AI
π₯4π1
π ΠΡΠ΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΡ?
π‘ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΡΠΈΠΊ β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π±ΠΈΠ·Π½Π΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: ΠΊΡΠ΄Π° Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅? Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΡΠΈ!
π 1. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ β Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡ (Solution Architect)
ΠΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅ Π² ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ Solution Architect. ΠΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅: ΡΠΈΡΡΠ΅Ρ ΡΡ Π΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅.
πΉ ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π½ΡΠΆΠ½Ρ?
β ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ²
β ΠΠ»ΡΠ±ΠΎΠΊΠΈΠ΅ Π·Π½Π°Π½ΠΈΡ API, Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ
β Π£ΠΌΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΌΠ°ΡΡΡΠ°Π±Π΅
β ΠΠ°Π²ΡΠΊΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ
πΉ ΠΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ?
π ΠΠΎΠ»ΡΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠ°ΠΌΠΈ
π ΠΠ·ΡΡΠ°ΡΡ REST, SOAP, GraphQL, Π±ΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
π Π Π°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρless-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅
π ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ: Ρ ΠΎΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
π 2. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ β Product Owner ΠΈΠ»ΠΈ Project Manager
ΠΡΠ»ΠΈ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² PO/PM ΠΈ Π²Π·ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
πΉ ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π½ΡΠΆΠ½Ρ?
β Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΈΡΠΊΠ°ΠΌΠΈ
β ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π±ΡΠ΄ΠΆΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
β Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠ° ΠΈΠ΄Π΅ΠΉ
πΉ ΠΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ?
π ΠΡΠ²ΠΎΠΈΡΡ Agile/Scrum/Kanban
π ΠΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² UX/UI
π Π£ΡΠΈΡΡΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠΎΠ²Π°ΡΡ ΠΈΠ΄Π΅ΠΈ ΠΈ ΡΠ΅ΡΠ°ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°ΡΠΈ
π ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ: Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅ΡΠ΅Π½ΠΈΡ.
π₯ 3. ΠΠΈΠ΄Π΅ΡΡΡΠ²ΠΎ β Head of Analytics / Team Lead
ΠΡΠ»ΠΈ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°ΡΡ ΡΠΈΠΌΠ»ΠΈΠ΄ΠΎΠΌ ΠΈ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ².
πΉ ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π½ΡΠΆΠ½Ρ?
β ΠΠ°ΡΡΠ°Π²Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅Π³
β Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ
β ΠΠ΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
πΉ ΠΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ?
π ΠΠ°ΡΡΠ°Π²Π½ΠΈΡΠ°ΡΡ ΠΈ ΠΎΠ±ΡΡΠ°ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ²
π ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅
π Π£ΡΠΈΡΡΡΡ ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΉ
π ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ: Ρ ΠΎΡΠ΅ΡΡΡ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
π‘ Π§ΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΎΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅Π³Π΄Π°?
π Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅ β Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΡΡ Π΅ΠΌΡ, ΡΠ°Π±Π»ΠΈΡΡ
π ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
π ΠΠ°Π²ΡΠΊΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠΌ
π― ΠΡΠ±ΠΈΡΠ°ΠΉ ΡΠ²ΠΎΠΉ ΠΏΡΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΉΡΡ! Π ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡ Π²ΠΈΠ΄ΠΈΡΡ ΡΠ΅Π±Ρ? ΠΠ΅Π»ΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ! π¬
#OTHER
π‘ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΡΠΈΠΊ β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π±ΠΈΠ·Π½Π΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: ΠΊΡΠ΄Π° Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅? Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΡΠΈ!
π 1. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ β Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡ (Solution Architect)
ΠΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅ Π² ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ Solution Architect. ΠΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅: ΡΠΈΡΡΠ΅Ρ ΡΡ Π΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅.
πΉ ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π½ΡΠΆΠ½Ρ?
β ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ²
β ΠΠ»ΡΠ±ΠΎΠΊΠΈΠ΅ Π·Π½Π°Π½ΠΈΡ API, Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ
β Π£ΠΌΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΌΠ°ΡΡΡΠ°Π±Π΅
β ΠΠ°Π²ΡΠΊΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ
πΉ ΠΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ?
π ΠΠΎΠ»ΡΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠ°ΠΌΠΈ
π ΠΠ·ΡΡΠ°ΡΡ REST, SOAP, GraphQL, Π±ΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
π Π Π°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρless-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅
π ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ: Ρ ΠΎΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
π 2. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ β Product Owner ΠΈΠ»ΠΈ Project Manager
ΠΡΠ»ΠΈ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² PO/PM ΠΈ Π²Π·ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
πΉ ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π½ΡΠΆΠ½Ρ?
β Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΈΡΠΊΠ°ΠΌΠΈ
β ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π±ΡΠ΄ΠΆΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
β Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠ° ΠΈΠ΄Π΅ΠΉ
πΉ ΠΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ?
π ΠΡΠ²ΠΎΠΈΡΡ Agile/Scrum/Kanban
π ΠΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² UX/UI
π Π£ΡΠΈΡΡΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠΎΠ²Π°ΡΡ ΠΈΠ΄Π΅ΠΈ ΠΈ ΡΠ΅ΡΠ°ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°ΡΠΈ
π ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ: Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅ΡΠ΅Π½ΠΈΡ.
π₯ 3. ΠΠΈΠ΄Π΅ΡΡΡΠ²ΠΎ β Head of Analytics / Team Lead
ΠΡΠ»ΠΈ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°ΡΡ ΡΠΈΠΌΠ»ΠΈΠ΄ΠΎΠΌ ΠΈ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ².
πΉ ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π½ΡΠΆΠ½Ρ?
β ΠΠ°ΡΡΠ°Π²Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅Π³
β Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ
β ΠΠ΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
πΉ ΠΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ?
π ΠΠ°ΡΡΠ°Π²Π½ΠΈΡΠ°ΡΡ ΠΈ ΠΎΠ±ΡΡΠ°ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ²
π ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅
π Π£ΡΠΈΡΡΡΡ ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΉ
π ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ: Ρ ΠΎΡΠ΅ΡΡΡ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
π‘ Π§ΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΎΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅Π³Π΄Π°?
π Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅ β Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΡΡ Π΅ΠΌΡ, ΡΠ°Π±Π»ΠΈΡΡ
π ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
π ΠΠ°Π²ΡΠΊΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠΌ
π― ΠΡΠ±ΠΈΡΠ°ΠΉ ΡΠ²ΠΎΠΉ ΠΏΡΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΉΡΡ! Π ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡ Π²ΠΈΠ΄ΠΈΡΡ ΡΠ΅Π±Ρ? ΠΠ΅Π»ΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ! π¬
#OTHER
π9π₯3
This media is not supported in your browser
VIEW IN TELEGRAM
ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠΌΡ-ΡΠΎ?π
π10π₯2π€£2
π ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ JOIN Π² PostgreSQL: ΡΡΠΊΠΎΡΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π² PostgreSQL Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ
π ΠΠΈΠ΄Ρ JOIN ΠΈ ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
πΉ Nested Loop Join β Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ, Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ, Π½ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ .
πΉ Hash Join β ΡΡΡΠΎΠΈΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ, ΡΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
πΉ Merge Join β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΆΠ΅ Π΅ΡΡΡ.
π ΠΠ°ΠΊ PostgreSQL Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ JOIN?
1οΈβ£ ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΡΠ°Π±Π»ΠΈΡ (
2οΈβ£ Π Π°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (
3οΈβ£ ΠΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ
β‘οΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ JOIN Π² PostgreSQL
βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° `work_mem`
- ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΠΈΡΠΊ (spilled to disk) β ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅
- ΠΠ΅ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ `work_mem` ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅Ρ Π²Π°ΡΠΊΠ΅ RAM.
- ΠΡΠΈΠΌΠ΅Ρ:
βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° `random_page_cost`
- ΠΠ»Ρ HDD (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ):
- ΠΠ»Ρ SSD:
- ΠΠ»Ρ NVMe:
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
- Π£ΡΠΊΠΎΡΡΡΡ
- ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°:
βοΈ ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ ΠΎΡΠΈΡΡΠΊΠ° ΡΠ°Π±Π»ΠΈΡ
- `ANALYZE` β ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΡΡΠΈΠΉ
- `VACUUM` β ΡΠ΄Π°Π»ΡΠ΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ.
βοΈ Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ (`Partitioning`)
- Π‘Π½ΠΈΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ range, list ΠΈ hash partitioning.
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ EXPLAIN ANALYZE
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ²ΠΈΡΡ Seq Scan ΠΈ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
β Π§Π΅ΠΊ-Π»ΠΈΡΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JOIN
π² ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π° ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
π² ΠΠ°ΠΏΡΡΡΠΈΡΡ
π² ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
π² ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ
π² ΠΠ°ΡΡΡΠΎΠΈΡΡ
π² ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ (
#DBMS π
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π² PostgreSQL Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ
JOIN ΠΈ ΠΊΠ°ΠΊ ΠΈΡ
ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ²Π°ΡΡ JOIN, ΠΊΠ°ΠΊ ΠΈΡ
Π²ΡΠ±ΠΈΡΠ°Π΅Ρ PostgreSQL ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ. π ΠΠΈΠ΄Ρ JOIN ΠΈ ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
πΉ Nested Loop Join β Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ, Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ, Π½ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ .
πΉ Hash Join β ΡΡΡΠΎΠΈΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ, ΡΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
πΉ Merge Join β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΆΠ΅ Π΅ΡΡΡ.
π ΠΠ°ΠΊ PostgreSQL Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ JOIN?
1οΈβ£ ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΡΠ°Π±Π»ΠΈΡ (
ANALYZE). 2οΈβ£ Π Π°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (
cost). 3οΈβ£ ΠΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅
JOIN, Π½ΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΊΠΎΡΠΈΡ Π·Π°ΠΏΡΠΎΡΡ: SET enable_nestloop TO off;
SET enable_hashjoin TO off;
SET enable_mergejoin TO off;
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ
Nested Loop ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ.β‘οΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ JOIN Π² PostgreSQL
βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° `work_mem`
- ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΠΈΡΠΊ (spilled to disk) β ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅
work_mem. - ΠΠ΅ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ `work_mem` ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅Ρ Π²Π°ΡΠΊΠ΅ RAM.
- ΠΡΠΈΠΌΠ΅Ρ:
SET work_mem = '256MB';
βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° `random_page_cost`
- ΠΠ»Ρ HDD (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ):
random_page_cost = 4.0 - ΠΠ»Ρ SSD:
random_page_cost = 1.1 β 1.5 - ΠΠ»Ρ NVMe:
random_page_cost = 1.0 β 1.1 ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
SET random_page_cost = 1.1;
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
- Π£ΡΠΊΠΎΡΡΡΡ
Nested Loop ΠΈ Merge Join. - ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°:
CREATE INDEX idx_customer_id ON orders(customer_id);
βοΈ ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ ΠΎΡΠΈΡΡΠΊΠ° ΡΠ°Π±Π»ΠΈΡ
- `ANALYZE` β ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΡΡΠΈΠΉ
JOIN. - `VACUUM` β ΡΠ΄Π°Π»ΡΠ΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ.
VACUUM ANALYZE orders;
βοΈ Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ (`Partitioning`)
- Π‘Π½ΠΈΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ range, list ΠΈ hash partitioning.
CREATE TABLE orders_2024 PARTITION OF orders
FOR VALUES FROM ('2024-01-01') TO ('2024-12-31');
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ EXPLAIN ANALYZE
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ²ΠΈΡΡ Seq Scan ΠΈ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
EXPLAIN ANALYZE SELECT * FROM orders JOIN customers USING(customer_id);
β Π§Π΅ΠΊ-Π»ΠΈΡΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JOIN
π² ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π° ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
π² ΠΠ°ΠΏΡΡΡΠΈΡΡ
ANALYZE ΠΈ VACUUM Π΄Π»Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ. π² ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
EXPLAIN ANALYZE Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΠΏΡΠΎΡΠΎΠ². π² ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ
work_mem Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Hash Join. π² ΠΠ°ΡΡΡΠΎΠΈΡΡ
random_page_cost Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Π΄ΠΈΡΠΊΠ°. π² ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ (
Partitioning) Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠ°Π±Π»ΠΈΡΠ°Ρ
. #DBMS π
β€3π3
π Deployment vs StatefulSet: Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ°?
Π Kubernetes Π΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β Deployment ΠΈ StatefulSet. ΠΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ΄Π°ΠΌΠΈ, Π½ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ .
π Deployment β Π΄Π»Ρ stateless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
βοΈ ΠΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ β ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄Π° Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡΡ.
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Rolling Update β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΡ.
βοΈ ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄Ρ β Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ°.
βοΈ ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², API-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ stateless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
πΎ StatefulSet β Π΄Π»Ρ stateful-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
βοΈ Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Persistent Volumes Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
βοΈ Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈ IP β ΠΏΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
βοΈ ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° β ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ, Π±Π΅Π· Ρ Π°ΠΎΡΠ°.
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΠΊΠ΅ΡΠ΅ΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
π ΠΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ?
β ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Deployment.
β ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½Π° ΡΠΎΡ ΡΠ°Π½Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ β Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ StatefulSet.
#ARCHITECTURE
Π Kubernetes Π΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β Deployment ΠΈ StatefulSet. ΠΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ΄Π°ΠΌΠΈ, Π½ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ .
π Deployment β Π΄Π»Ρ stateless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
βοΈ ΠΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ β ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄Π° Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡΡ.
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Rolling Update β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΡ.
βοΈ ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄Ρ β Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ°.
βοΈ ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², API-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ stateless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
πΎ StatefulSet β Π΄Π»Ρ stateful-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
βοΈ Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Persistent Volumes Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
βοΈ Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈ IP β ΠΏΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
βοΈ ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° β ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ, Π±Π΅Π· Ρ Π°ΠΎΡΠ°.
βοΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΠΊΠ΅ΡΠ΅ΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
π ΠΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ?
β ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Deployment.
β ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½Π° ΡΠΎΡ ΡΠ°Π½Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ β Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ StatefulSet.
#ARCHITECTURE
β€3π1
This media is not supported in your browser
VIEW IN TELEGRAM
ΠΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ...π
π₯12π5β€2
π Ingress Π² Kubernetes: ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ²
_ΠΡΠ°ΡΠΊΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅_
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ingress?
Ingress β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ», ΠΊΠΎΡΠΎΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΡΡ Kubernetes, ΠΊΡΠ΄Π° ΠΈ ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ (HTTP/HTTPS) Π²Π½ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΡΠΎ ΠΊΠ°ΠΊ GPS Π΄Π»Ρ Π²Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²:
- Π ΠΎΡΡΠΈΡ ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ:
- Π£ΠΏΡΠ°Π²Π»ΡΠ΅Ρ SSL: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ TLS-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
- ΠΠ°Π»Π°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ: Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄Π°ΠΌΠΈ.
π ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: Ingress β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ: Β«ΠΠ°ΠΏΡΠΎΡΡ Π½Π° /api ΠΎΡΠΏΡΠ°Π²Π»ΡΠΉ Π² backend, Π° Π½Π° / β Π² frontendΒ».
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ?
Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ β ΡΡΠΎ Β«ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΒ» ΠΏΡΠ°Π²ΠΈΠ» Ingress. ΠΠ΅Π· Π½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° β ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΠΊΡΡ. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
1. ΠΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ (Nginx, Traefik ΠΈ Π΄Ρ.) β ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ.
2. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° β ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² Ingress ΡΠ΅ΡΠ΅Π· API Kubernetes.
π§ ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ:
- Nginx Ingress β Π³ΠΈΠ±ΠΊΠΈΠΉ, Ρ ΠΊΡΡΠ΅ΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
- Traefik β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ SSL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ.
- HAProxy β Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
1. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Ρ ΠΎΠ΄ΠΈΡ Π½Π°
2. Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°:
-
-
3. Π’ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π½ΡΠΆΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Ingress
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ?
- ΠΠ΄Π½Π° ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°.
- ΠΠ΅Π³ΠΊΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΌΠ°ΡΡΡΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SSL.
π‘ ΠΠ°ΠΉΡΡ Π°ΠΊ: ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ:
#SYSTEMDESIGN
_ΠΡΠ°ΡΠΊΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅_
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ingress?
Ingress β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ», ΠΊΠΎΡΠΎΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΡΡ Kubernetes, ΠΊΡΠ΄Π° ΠΈ ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ (HTTP/HTTPS) Π²Π½ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΡΠΎ ΠΊΠ°ΠΊ GPS Π΄Π»Ρ Π²Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²:
- Π ΠΎΡΡΠΈΡ ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ:
app.example.com β ΡΠ΅ΡΠ²ΠΈΡ frontend. - Π£ΠΏΡΠ°Π²Π»ΡΠ΅Ρ SSL: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ TLS-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
- ΠΠ°Π»Π°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ: Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄Π°ΠΌΠΈ.
π ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: Ingress β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ: Β«ΠΠ°ΠΏΡΠΎΡΡ Π½Π° /api ΠΎΡΠΏΡΠ°Π²Π»ΡΠΉ Π² backend, Π° Π½Π° / β Π² frontendΒ».
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ?
Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ β ΡΡΠΎ Β«ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΒ» ΠΏΡΠ°Π²ΠΈΠ» Ingress. ΠΠ΅Π· Π½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° β ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΠΊΡΡ. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
1. ΠΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ (Nginx, Traefik ΠΈ Π΄Ρ.) β ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ.
2. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° β ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² Ingress ΡΠ΅ΡΠ΅Π· API Kubernetes.
π§ ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ:
- Nginx Ingress β Π³ΠΈΠ±ΠΊΠΈΠΉ, Ρ ΠΊΡΡΠ΅ΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
- Traefik β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ SSL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ.
- HAProxy β Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
1. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Ρ ΠΎΠ΄ΠΈΡ Π½Π°
shop.example.com. 2. Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°:
-
/orders β ΡΠ΅ΡΠ²ΠΈΡ orders-service. -
/products β ΡΠ΅ΡΠ²ΠΈΡ catalog-service. 3. Π’ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π½ΡΠΆΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: shop-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- shop.example.com
secretName: shop-tls
rules:
- host: shop.example.com
http:
paths:
- path: /orders
backend:
service:
name: orders-service
port: 80
- path: /products
backend:
service:
name: catalog-service
port: 80
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ?
- ΠΠ΄Π½Π° ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°.
- ΠΠ΅Π³ΠΊΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΌΠ°ΡΡΡΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SSL.
π‘ ΠΠ°ΠΉΡΡ Π°ΠΊ: ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ:
kubectl get pods -n ingress-nginx
#SYSTEMDESIGN
β€3
This media is not supported in your browser
VIEW IN TELEGRAM
ΠΡΠ΅ΠΌ Ρ
ΠΎΡΠΎΡΠ΅Π³ΠΎ Π΄Π½Ρπ
π11
π ΠΠ΅ΡΠΊΠΈ (Labels) ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ (Selectors) Π² Kubernetes: ΠΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ
_ΠΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅_
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ΅ΡΠΊΠΈ (Labels)?
ΠΠ΅ΡΠΊΠΈ β ΡΡΠΎ ΠΏΠ°ΡΡ Β«ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β», ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Kubernetes (ΠΏΠΎΠ΄Π°ΠΌ, ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΠΈ Ρ.Π΄.) Π΄Π»Ρ ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
-
-
-
π ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: ΠΠ΅ΡΠΊΠΈ β ΡΡΠΎ Β«ΡΡΠΈΠΊΠ΅ΡΡΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π±ΡΡΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
---
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ (Selectors)?
Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ β ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ»ΡΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΈΡ ΠΌΠ΅ΡΠΊΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠ°ΠΉΡΠΈ Π²ΡΠ΅ ΠΏΠΎΠ΄Ρ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ
- ΠΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ Ρ
π ΠΡΠΎΡΠ΅: Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ β ΡΡΠΎ Β«ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡΒ» ΠΏΠΎ Π²Π°ΡΠΈΠΌ ΡΡΠΈΠΊΠ΅ΡΠ°ΠΌ-ΠΌΠ΅ΡΠΊΠ°ΠΌ.
### ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
1. ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ²:
2. Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· kubectl:
3. Π‘Π²ΡΠ·Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΠΏΠΎΠ΄Π°ΠΌΠΈ:
Π ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Π°ΠΌ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ°ΡΠΈΠΊ:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°Ρ
- Π Π°Π²Π΅Π½ΡΡΠ²ΠΎ:
- ΠΠ΅ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ:
- ΠΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ:
- ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
#SYSTEMDESIGN
_ΠΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅_
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ΅ΡΠΊΠΈ (Labels)?
ΠΠ΅ΡΠΊΠΈ β ΡΡΠΎ ΠΏΠ°ΡΡ Β«ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β», ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Kubernetes (ΠΏΠΎΠ΄Π°ΠΌ, ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΠΈ Ρ.Π΄.) Π΄Π»Ρ ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
-
env: prod β ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½). -
app: frontend β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. -
tier: cache β ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΊΡΡ). π ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: ΠΠ΅ΡΠΊΠΈ β ΡΡΠΎ Β«ΡΡΠΈΠΊΠ΅ΡΡΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π±ΡΡΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
---
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ (Selectors)?
Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ β ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ»ΡΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΈΡ ΠΌΠ΅ΡΠΊΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠ°ΠΉΡΠΈ Π²ΡΠ΅ ΠΏΠΎΠ΄Ρ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ
env=prod. - ΠΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ Ρ
app=legacy. π ΠΡΠΎΡΠ΅: Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ β ΡΡΠΎ Β«ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡΒ» ΠΏΠΎ Π²Π°ΡΠΈΠΌ ΡΡΠΈΠΊΠ΅ΡΠ°ΠΌ-ΠΌΠ΅ΡΠΊΠ°ΠΌ.
### ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
1. ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ²:
metadata:
labels:
app: frontend
env: staging
2. Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· kubectl:
# ΠΡΠ΅ ΠΏΠΎΠ΄Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅
kubectl get pods -l env=prod
# Π‘Π΅ΡΠ²ΠΈΡΡ, ΠΊΡΠΎΠΌΠ΅ Π±ΡΠΊΠ΅Π½Π΄Π°
kubectl get services -l app!=backend
3. Π‘Π²ΡΠ·Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΠΏΠΎΠ΄Π°ΠΌΠΈ:
Π ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Π°ΠΌ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ°ΡΠΈΠΊ:
spec:
selector:
app: frontend
env: prod
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°Ρ
- Π Π°Π²Π΅Π½ΡΡΠ²ΠΎ:
env=prod, app=frontend. - ΠΠ΅ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ:
tier!=cache. - ΠΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ:
env in (prod, staging). - ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
env notin (test).#SYSTEMDESIGN
π2β€1
This media is not supported in your browser
VIEW IN TELEGRAM
π4π€£4π₯1
π ΠΠΎΡΠ΅ΠΌΡ Redis ΡΠ°ΠΊΠΎΠΉ Π±ΡΡΡΡΡΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ? Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ!
Redis β ΡΡΠΎ Π»Π΅Π³Π΅Π½Π΄Π° ΡΡΠ΅Π΄ΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΡΠΏΠΎΡΠΎΠ±Π½Π°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 100 000+ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄Π°ΠΆΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. ΠΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠΈΠΌ Π²ΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΡΠΊΠ°ΠΌ!
π₯ 4 Π³Π»Π°Π²Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ Redis
1. ΠΠ°Π½Π½ΡΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (RAM)
Redis Ρ ΡΠ°Π½ΠΈΡ Π²ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π° Π½Π΅ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΠΎΡΡΡΠΏ ΠΊ RAM Π² 100 000 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΊ HDD/SSD.
β *ΠΡΠΈΠΌΠ΅Ρ:* Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π·Π° 100 Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ (RAM) vs 10 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ (SSD).
2. ΠΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°
Redis ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²ΡΠΎΠ΄Π΅
β *ΠΠ°ΠΊ?* ΠΠΎΡΠΎΠΊ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
3. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
Π‘ΡΡΠΎΠΊΠΈ, Ρ ΡΡΠΈ, ΡΠΏΠΈΡΠΊΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° β Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π° O(1) Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ.
β *ΠΠ΅ΠΉΡ:* Π₯ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΊΠ»ΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
4. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ
- ΠΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
- ΠΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ (Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π°ΡΠΎΠΌΠ°ΡΠ½Ρ).
- ΠΡΠΎΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠ° (Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³ΠΎΠ½ΠΎΠΊ Π΄Π°Π½Π½ΡΡ ).
β‘οΈ Π ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ?
Redis Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ! ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠ½Π΅:
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ (Ρ Redis 4.0+).
- ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° (Ρ Redis 6.0+).
ΠΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² β Π²ΡΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
β οΈ ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ
- ΠΠΎΠ»Π³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
- Π£Π·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ°: ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Β«ΡΡΠΆΠ΅Π»ΡΡ Β» ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ Redis Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π ΠΠ°ΠΊ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Redis?
- ΠΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ: Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Redis.
- Π Π΅ΠΆΠΈΠΌ Sentinel: Π΄Π»Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ.
- Π¨Π°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ.
#SYSTEMDESIGN
Redis β ΡΡΠΎ Π»Π΅Π³Π΅Π½Π΄Π° ΡΡΠ΅Π΄ΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΡΠΏΠΎΡΠΎΠ±Π½Π°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 100 000+ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄Π°ΠΆΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. ΠΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠΈΠΌ Π²ΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΡΠΊΠ°ΠΌ!
π₯ 4 Π³Π»Π°Π²Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ Redis
1. ΠΠ°Π½Π½ΡΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (RAM)
Redis Ρ ΡΠ°Π½ΠΈΡ Π²ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π° Π½Π΅ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΠΎΡΡΡΠΏ ΠΊ RAM Π² 100 000 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΊ HDD/SSD.
β *ΠΡΠΈΠΌΠ΅Ρ:* Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π·Π° 100 Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ (RAM) vs 10 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ (SSD).
2. ΠΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°
Redis ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²ΡΠΎΠ΄Π΅
epoll (Linux) ΠΈΠ»ΠΈ kqueue (macOS), ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠ³ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΡΡΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. β *ΠΠ°ΠΊ?* ΠΠΎΡΠΎΠΊ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
3. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
Π‘ΡΡΠΎΠΊΠΈ, Ρ ΡΡΠΈ, ΡΠΏΠΈΡΠΊΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° β Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π° O(1) Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ.
β *ΠΠ΅ΠΉΡ:* Π₯ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΊΠ»ΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
4. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ
- ΠΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
- ΠΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ (Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π°ΡΠΎΠΌΠ°ΡΠ½Ρ).
- ΠΡΠΎΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠ° (Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³ΠΎΠ½ΠΎΠΊ Π΄Π°Π½Π½ΡΡ ).
β‘οΈ Π ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ?
Redis Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ! ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠ½Π΅:
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ (Ρ Redis 4.0+).
- ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° (Ρ Redis 6.0+).
ΠΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² β Π²ΡΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
β οΈ ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ
- ΠΠΎΠ»Π³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
KEYS * Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ
ΠΊΠ»ΡΡΠ΅ΠΉ). - Π£Π·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ°: ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
BLPOP) ΠΌΠΎΠ³ΡΡ Π·Π°ΡΠΎΡΠΌΠΎΠ·ΠΈΡΡ Π²Π΅ΡΡ ΡΡΠ°ΡΠΈΠΊ. Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Β«ΡΡΠΆΠ΅Π»ΡΡ Β» ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ Redis Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π ΠΠ°ΠΊ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Redis?
- ΠΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ: Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Redis.
- Π Π΅ΠΆΠΈΠΌ Sentinel: Π΄Π»Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ.
- Π¨Π°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ.
#SYSTEMDESIGN
β€1
This media is not supported in your browser
VIEW IN TELEGRAM
Π‘ΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅π€¨
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4
ΠΠ°ΠΊ ΠΏΡΡΡΠΎΠΉ S3-Π±Π°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΡΠ°ΡΡ
ΠΎΠ΄Π°ΠΌ: Π²Π°ΠΆΠ½ΡΠ΅ ΡΡΠΎΠΊΠΈ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ AWS S3
ΠΠ»ΡΡΠ΅Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ AWS ΡΠΎΠ·Π΄Π°Π» ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ S3-Π±Π°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π§Π΅ΡΠ΅Π· Π΄Π²Π° Π΄Π½Ρ Π±ΡΠ» ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ ΡΡΠ΅Ρ Π½Π° $1300, Π²ΡΠ·Π²Π°Π½Π½ΡΠΉ 100 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ PUT-Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π° 24 ΡΠ°ΡΠ°. ΠΠ½Π°Π»ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΡΡΡΠΏΠ°Π»ΠΈ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡ ΠΈΠΌΡ Π±Π°ΠΊΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°.
ΠΡΠΈΡΠΈΠ½Ρ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ²
1. Π’Π°ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ AWS S3:
- ΠΠ»Π°ΡΠ° Π²Π·ΠΈΠΌΠ°Π΅ΡΡΡ Π·Π° Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ (ΠΎΡΠΈΠ±ΠΊΠΈ 4xx).
- Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ: $0.005 Π·Π° 1000 PUT-Π·Π°ΠΏΡΠΎΡΠΎΠ².
- ΠΠ°ΠΏΡΠΎΡΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² us-east-1, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡ ΠΎΠ΄Ρ.
2. Π ΠΈΡΠΊ ΡΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ :
- ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π±Π°ΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π½Π΅Π³ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ 10 ΠΠ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
1. ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΊΠ΅ΡΠΎΠ²:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΡΡΡΠΈΠΊΡΠΎΠ².
- ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
2. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ°:
- ΠΠ°ΠΏΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠ΅ΡΠ΅Π· Bucket Policy.
- Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ IAM-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΈ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°.
3. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³:
- ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· AWS CloudTrail ΠΈ S3 Server Access Logging.
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
4. Π Π΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
- ΠΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ²Π½ΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ (CLI/SDK).
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄
ΠΡΠ±ΠΎΠ΅ Π»ΠΈΡΠΎ, Π·Π½Π°ΡΡΠ΅Π΅ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ S3-Π±Π°ΠΊΠ΅ΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ Π½Π΅Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΡΠΊ β ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π±Π°ΠΊΠ΅ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ AWS Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π» ΡΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π°ΡΠ΄ΠΈΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ S3 ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
#SECURITY
ΠΠ»ΡΡΠ΅Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ AWS ΡΠΎΠ·Π΄Π°Π» ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ S3-Π±Π°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π§Π΅ΡΠ΅Π· Π΄Π²Π° Π΄Π½Ρ Π±ΡΠ» ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ ΡΡΠ΅Ρ Π½Π° $1300, Π²ΡΠ·Π²Π°Π½Π½ΡΠΉ 100 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ PUT-Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π° 24 ΡΠ°ΡΠ°. ΠΠ½Π°Π»ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΡΡΡΠΏΠ°Π»ΠΈ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡ ΠΈΠΌΡ Π±Π°ΠΊΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°.
ΠΡΠΈΡΠΈΠ½Ρ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ²
1. Π’Π°ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ AWS S3:
- ΠΠ»Π°ΡΠ° Π²Π·ΠΈΠΌΠ°Π΅ΡΡΡ Π·Π° Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ (ΠΎΡΠΈΠ±ΠΊΠΈ 4xx).
- Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ: $0.005 Π·Π° 1000 PUT-Π·Π°ΠΏΡΠΎΡΠΎΠ².
- ΠΠ°ΠΏΡΠΎΡΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² us-east-1, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡ ΠΎΠ΄Ρ.
2. Π ΠΈΡΠΊ ΡΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ :
- ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π±Π°ΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π½Π΅Π³ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ 10 ΠΠ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
1. ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΊΠ΅ΡΠΎΠ²:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΡΡΡΠΈΠΊΡΠΎΠ².
- ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
backup, data). 2. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ°:
- ΠΠ°ΠΏΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠ΅ΡΠ΅Π· Bucket Policy.
- Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ IAM-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΈ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°.
3. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³:
- ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· AWS CloudTrail ΠΈ S3 Server Access Logging.
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
4. Π Π΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
- ΠΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ²Π½ΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ (CLI/SDK).
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄
ΠΡΠ±ΠΎΠ΅ Π»ΠΈΡΠΎ, Π·Π½Π°ΡΡΠ΅Π΅ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ S3-Π±Π°ΠΊΠ΅ΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ Π½Π΅Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΡΠΊ β ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π±Π°ΠΊΠ΅ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ AWS Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π» ΡΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π°ΡΠ΄ΠΈΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ S3 ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
#SECURITY
β€5
π₯ Π‘ΠΏΠΈΡΠΎΠΊ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°
ΠΠ΅Π΄Π°Π²Π½ΠΎ ΡΠ΄Π°Π»ΠΎΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°Π²Π°Π»ΠΈ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° ΡΡΠΎΠ²Π½Ρ Middle (Π·Π°ΡΠΏΠ»Π°ΡΠ° ~250 ΡΡΡ. ΡΡΠ±.). ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΊΡΡΠΏΠ½Π°Ρ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π½Π° ΡΡΠ½ΠΊΠ΅. ΠΠ΅Π»ΠΈΠΌΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ:
π Π Π°Π·Π΄Π΅Π» Β«Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΒ»:
- ΠΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ Π½Π΅ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π²Ρ Π·Π½Π°Π΅ΡΠ΅?
- ΠΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ?
- ΠΡΠ» Π»ΠΈ Ρ Π²Π°Ρ ΠΎΠΏΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅? ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΡΡΡΠΏΠ°Π»ΠΈ?
- ΠΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡΒ»?
- ΠΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ ΠΈΠ»ΠΈ ΡΡ Π΅ΠΌ Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ?
- Π ΠΊΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ ΠΈ Π½ΠΎΡΠ°ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡ Π΅ΠΌ?
- Π§Π΅ΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ User Story ΠΈ Use Case?
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ (Π’Π), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ Π³ΠΎΡΠΎΠ²ΠΈΡΡ.
β ΠΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅!
#REQUIREMENTS
ΠΠ΅Π΄Π°Π²Π½ΠΎ ΡΠ΄Π°Π»ΠΎΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°Π²Π°Π»ΠΈ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° ΡΡΠΎΠ²Π½Ρ Middle (Π·Π°ΡΠΏΠ»Π°ΡΠ° ~250 ΡΡΡ. ΡΡΠ±.). ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΊΡΡΠΏΠ½Π°Ρ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π½Π° ΡΡΠ½ΠΊΠ΅. ΠΠ΅Π»ΠΈΠΌΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ:
π Π Π°Π·Π΄Π΅Π» Β«Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΒ»:
- ΠΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ Π½Π΅ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π²Ρ Π·Π½Π°Π΅ΡΠ΅?
- ΠΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°ΠΌΠΈ?
- ΠΡΠ» Π»ΠΈ Ρ Π²Π°Ρ ΠΎΠΏΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅? ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΡΡΡΠΏΠ°Π»ΠΈ?
- ΠΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡΒ»?
- ΠΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ ΠΈΠ»ΠΈ ΡΡ Π΅ΠΌ Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ?
- Π ΠΊΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ ΠΈ Π½ΠΎΡΠ°ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡ Π΅ΠΌ?
- Π§Π΅ΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ User Story ΠΈ Use Case?
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ (Π’Π), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ Π³ΠΎΡΠΎΠ²ΠΈΡΡ.
β ΠΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅!
#REQUIREMENTS
π₯10
π Π‘ΡΡΡΠΊΡΡΡΠ° FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ REST API Π½Π° FastAPI Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Ρ Π½ΡΠ»Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ, Π²Π΅ΡΠ½ΠΎ?
ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ». Π Π½Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ:
πΉ ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π±ΡΠΊΠ΅Π½Π΄Π°: ΠΌΠΎΠ΄Π΅Π»ΠΈ SQLAlchemy, API-ΡΠΎΡΡΠΈΠ½Π³, Pydantic-ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΈΠ»ΠΈΡΡ.
πΉ ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ Postgres Π² Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ Π΄Π»Ρ docker-compose.
πΉ ΠΠΎΡΠΎΠ²Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Alembic Π΄Π»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΠ.
πΉ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ CI/CD Ρ ΠΏΡΠΎΡΡΡΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ Π΄Π»Ρ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅ΡΡΠΎΠ².
πΉ ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Docker-ΠΎΠ±ΡΠ°Π· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Python 3.12-slim.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π° ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠΈΠ½ΡΡΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
π Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½:
https://github.com/max31ru12/FastAPI-Template
π #INTEGRATION
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ REST API Π½Π° FastAPI Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Ρ Π½ΡΠ»Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ, Π²Π΅ΡΠ½ΠΎ?
ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ». Π Π½Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ:
πΉ ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π±ΡΠΊΠ΅Π½Π΄Π°: ΠΌΠΎΠ΄Π΅Π»ΠΈ SQLAlchemy, API-ΡΠΎΡΡΠΈΠ½Π³, Pydantic-ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΈΠ»ΠΈΡΡ.
πΉ ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ Postgres Π² Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ Π΄Π»Ρ docker-compose.
πΉ ΠΠΎΡΠΎΠ²Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Alembic Π΄Π»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΠ.
πΉ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ CI/CD Ρ ΠΏΡΠΎΡΡΡΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ Π΄Π»Ρ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅ΡΡΠΎΠ².
πΉ ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Docker-ΠΎΠ±ΡΠ°Π· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Python 3.12-slim.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π° ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠΈΠ½ΡΡΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
π Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½:
https://github.com/max31ru12/FastAPI-Template
π #INTEGRATION
GitHub
GitHub - max31ru12/FastAPI-Template: Template for FastAPI projects
Template for FastAPI projects. Contribute to max31ru12/FastAPI-Template development by creating an account on GitHub.
β€2π2π1