[Daily morning study] SRE(Site Reliability Engineering)์ SLO/SLI/SLA ๊ฐ๋
#daily morning study
SRE๋ ๋ฌด์์ธ๊ฐ
SRE(Site Reliability Engineering)๋ Google์ด 2003๋ ๋ถํฐ ๋์ ํ ์ด์ ๋ฐฉ์์ผ๋ก, ์ํํธ์จ์ด ์์ง๋์ด๋ง ์์น์ ์ธํ๋ผ ์ด์์ ์ ์ฉํ๋ ๊ฐ๋ ์ด๋ค. ํต์ฌ ์์ด๋์ด๋ ๋จ์ํ๋ค. ์์คํ ์ ์์ ์ ์ผ๋ก ์ด์ํ๋ ์ผ ์์ฒด๋ฅผ ์ํํธ์จ์ด ๋ฌธ์ ๋ก ๋ฐ๋ผ๋ณด๊ณ , ์๋ ์์ ์ ์๋ํํ๋ฉฐ ์ฅ์ ๋ฅผ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
์ ํต์ ์ธ Opsํ์ด โ๋ณ๊ฒฝ์ ๊ณง ์ํโ์ด๋ผ๋ ๊ด์ ์ ๊ฐ์ง ๋ฐ๋ฉด, SRE๋ ์ ์ ํ ์์ค์ ๋ถ์์ ์ฑ(unreliability)์ ํ์ฉํ๋ฉด์ ๊ฐ๋ฐ ์๋์ ์์ ์ฑ์ ๊ท ํ์ ๋ง์ถ๋ค.
ํต์ฌ ์งํ: SLI, SLO, SLA
SLI (Service Level Indicator)
SLI๋ ์๋น์ค ํ์ง์ ์ธก์ ํ๋ ๊ตฌ์ฒด์ ์ธ ์งํ๋ค. ์ค์ ๋ก ์์งํ๋ ๋ฉํธ๋ฆญ์ด๋ค.
- ๊ฐ์ฉ์ฑ:
(์ฑ๊ณต ์๋ต ์) / (์ ์ฒด ์์ฒญ ์) - ์ง์ฐ ์๊ฐ: ์์ฒญ์ 95%๊ฐ 300ms ์ด๋ด์ ์๋ต
- ์ฒ๋ฆฌ๋: ์ด๋น ์ฒ๋ฆฌ ๊ฐ๋ฅํ ์์ฒญ ์
- ์๋ฌ์จ: ์ ์ฒด ์์ฒญ ๋๋น 5xx ์๋ต ๋น์จ
SLI = ์ง๋ 30์ผ๊ฐ ์ฑ๊ณต ์๋ต / ์ ์ฒด ์์ฒญ
= 999,500 / 1,000,000
= 99.95%
SLO (Service Level Objective)
SLO๋ SLI์ ๋ํด ๋ด๋ถ์ ์ผ๋ก ์ค์ ํ๋ ๋ชฉํ์น๋ค. ํ์ด ๋ฌ์ฑํ๋ ค๋ ์ ๋ขฐ์ฑ ๊ธฐ์ค์ด๋ค.
SLO: ๊ฐ์ฉ์ฑ 99.9% (์๊ฐ ๊ธฐ์ค)
โ ํ์ฉ ๋ค์ดํ์: ์ฝ 43.8๋ถ/์
SLO: p99 ์ง์ฐ ์๊ฐ < 500ms
โ 99%์ ์์ฒญ์ด 500ms ์ด๋ด ์๋ต
SLO๋ ์ธ๋ถ์ ๊ณต๊ฐ๋์ง ์๋ ๋ด๋ถ ๋ชฉํ์ด๋ฉฐ, SLA๋ณด๋ค ์๊ฒฉํ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ์ค์ ์ฑ๋ฅ์ด SLO๋ฅผ ์ํํ๊ธฐ ์์ํ ๋ ๋ด๋ถ์ ์ผ๋ก ๊ฒฝ๋ณด๋ฅผ ์ธ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
SLA (Service Level Agreement)
SLA๋ ์๋น์ค ์ ๊ณต์์ ๊ณ ๊ฐ ์ฌ์ด์ ๊ณ์ฝ์ด๋ค. SLO๋ฅผ ์๋ฐํ์ ๋ ๊ธ์ ์ ๋ณด์, ํฌ๋ ๋ง ์ง๊ธ ๋ฑ์ ํ๋ํฐ๊ฐ ๋ฐ๋ฅธ๋ค.
SLA: ์๊ฐ ๊ฐ์ฉ์ฑ 99.5% ๋ณด์ฅ
โ ๋ฏธ๋ฌ ์ ์๋น์ค ํฌ๋ ๋ง ํ๊ธ
| ๊ตฌ๋ถ | ๋์ | ์๋ฐ ๊ฒฐ๊ณผ |
|---|---|---|
| SLI | ๋ด๋ถ ์ธก์ ์งํ | โ |
| SLO | ๋ด๋ถ ๋ชฉํ | ์์ง๋์ด๋ง ๋์ |
| SLA | ์ธ๋ถ ๊ณ์ฝ | ๊ธ์ ์ ํ๋ํฐ |
Error Budget (์๋ฌ ์์ฐ)
Error Budget์ SRE์ ํต์ฌ ๊ฐ๋ ์ค ํ๋๋ค. SLO๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฉ ๊ฐ๋ฅํ ์ฅ์ ์๊ฐ ๋๋ ์ค๋ฅ๋์ ์์นํํ ๊ฒ์ด๋ค.
SLO = 99.9%๋ผ๋ฉด
Error Budget = 100% - 99.9% = 0.1%
30์ผ ๊ธฐ์ค:
= 30์ผ ร 24์๊ฐ ร 60๋ถ ร 0.001
= 43.2๋ถ
์๋ฌ ์์ฐ์ด ๋จ์ ์์ผ๋ฉด ๊ฐ๋ฐํ์ ์ ๊ธฐ๋ฅ ๋ฐฐํฌ, ์คํ ๋ฑ์ ์์ ๋กญ๊ฒ ์งํํ ์ ์๋ค. ๋ฐ๋ฉด ์๋ฌ ์์ฐ์ด ์์ง๋๋ฉด ์์ ํ ์์ ์ ์ง์คํด์ผ ํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐํ๊ณผ ์ด์ํ ์ฌ์ด์ ๊ธด์ฅ์ ์กฐ์จํ๋ ๊ณตํต ๊ธฐ์ค์ด ๋๋ค.
Error Budget ์ ์ฑ ์์
์๋ฌ ์์ฐ 75% ์ด์ ์์ฌ: โ ์ ๊ธฐ๋ฅ ๋ฐฐํฌ ์์ ๋กญ๊ฒ ์งํ
์๋ฌ ์์ฐ 25~75% ์์ฌ: โ ๋ฐฐํฌ ์ ๋ฆฌ๋ทฐ ๊ฐํ
์๋ฌ ์์ฐ 25% ๋ฏธ๋ง ์์ฌ: โ ์์ ํ ์คํ๋ฆฐํธ ์ ํ, ๋ฐฐํฌ ๋๊ฒฐ
์๋ฌ ์์ฐ ์์ง: โ ํฌ์คํธ๋ชจํ
ํ์, ์ฌ๋ฐ๋ฐฉ์ง ์ฐ์
Toil (๋ฐ๋ณต ์๋ ์์ ) ์ค์ด๊ธฐ
SRE์ ์ค์ํ ์์น ์ค ํ๋๊ฐ Toil ์ต์ํ๋ค. Toil์ ๋ค์ ํน์ฑ์ ๊ฐ์ง ์ด์ ์์ ์ด๋ค.
- ์๋์ผ๋ก ์ํ๋๋ค
- ๋ฐ๋ณต์ ์ด๊ณ ์๋ํ ๊ฐ๋ฅํ๋ค
- ๋น์ฆ๋์ค ๊ฐ์น๋ฅผ ์ง์ ์ฐฝ์ถํ์ง ์๋๋ค
- ์๋น์ค ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ ํ์ ์ผ๋ก ๋์ด๋๋ค
๋ํ์ ์ธ Toil ์์:
- ๋งค๋ฒ ์๋์ผ๋ก ์๋ฒ์ SSH ์ ์ํด์ ๋ก๊ทธ ํ์ธ
- ๋ฐฐํฌ๋ง๋ค ์ฌ๋์ด ์ง์ ํฌ์ค์ฒดํฌ ์ํ
- ์๋์ด ์ธ๋ฆด ๋๋ง๋ค ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์์
SRE ํ์ ์ ์ฒด ์๊ฐ์ 50% ์ด์์ Toil์ ์ฐ์ง ์๋๋ก ํ๋ค. ์ด๋ฅผ ์ด๊ณผํ๋ฉด Toil ์ ๊ฑฐ๋ฅผ ์ต์ฐ์ ๊ณผ์ ๋ก ์ผ๋๋ค.
์๋ ์ค๊ณ: Alerting on SLOs
SLO ๊ธฐ๋ฐ ์๋ ์ค๊ณ๋ ๋จ์ํ ์๊ณ๊ฐ์ ์ด๊ณผํ์ ๋ ์๋ฆผ์ ๋ณด๋ด๋ ๊ฒ๊ณผ ๋ค๋ฅด๋ค. ์๋ฌ ์์ฐ ์์ง ์๋(Burn Rate)๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์ ์ค๊ณํ๋ค.
Burn Rate = ํ์ฌ ์๋ฌ์จ / SLO ์๋ฌ์จ
SLO = 99.9% โ ํ์ฉ ์๋ฌ์จ = 0.1%
ํ์ฌ ์๋ฌ์จ = 1%
Burn Rate = 1% / 0.1% = 10๋ฐฐ
โ ์๋ฌ ์์ฐ์ด ์ ์ ์๋์ 10๋ฐฐ๋ก ์์ง ์ค
โ 4.32๋ถ(43.2๋ถ รท 10) ๋ง์ ์์ฐ ์์ง
Burn Rate๊ฐ ๋์์๋ก ์ฆ๊ฐ์ ์ธ ๋์์ด ํ์ํ๋ค. ๋๋ฌด ๋ฎ์ ์๊ณ๊ฐ์ Alert Fatigue(์๋ ํผ๋ก)๋ฅผ ์ ๋ฐํ๋ฏ๋ก, ์ค์ ๋ก ๋์์ด ํ์ํ ์ํฉ์๋ง ์๋์ ๋ณด๋ด๋๋ก ์ค๊ณํ๋ค.
Blameless Postmortem (๋ฌด๊ฒฐ ํฌ์คํธ๋ชจํ )
์ฅ์ ๋ฐ์ ํ ํฌ์คํธ๋ชจํ ์ ์์ฑํ๋ ๊ฒ์ SRE ๋ฌธํ์ ํต์ฌ์ด๋ค. ์ค์ํ ์์น์ ๋น๋ ์์ด(blameless) ์งํํ๋ค๋ ๊ฒ์ด๋ค.
๊ฐ์ธ์ ์ค์๋ฅผ ํํ๋ ๋์ , ์์คํ ์ด ์ ๊ทธ๋ฐ ์ํฉ์ ํ์ฉํ๋์ง ๊ตฌ์กฐ์ ์์ธ์ ์ฐพ๋๋ค. โA๊ฐ ์ค์ ํ์ผ์ ์๋ชป ์ฌ๋ ธ๋คโ๊ฐ ์๋๋ผ โ์ค์ ํ์ผ ๋ณ๊ฒฝ์ด ์ด์ ํ๊ฒฝ์ ๋ฐ๋ก ๋ฐ์๋ ์ ์๋ ๊ตฌ์กฐ์ ํ์ ์ด ์์๋คโ๊ณ ๋ถ์ํ๋ค.
ํฌ์คํธ๋ชจํ ๊ตฌ์ฑ ์์:
1. ์์ฝ: ์ฌ๊ณ ๊ฐ์, ์ํฅ ๋ฒ์, ์ง์ ์๊ฐ
2. ํ์๋ผ์ธ: ๊ฐ์ง โ ๋์ โ ๋ณต๊ตฌ ๊ณผ์ ์๊ฐ์ ์ ๋ฆฌ
3. ๊ทผ๋ณธ ์์ธ ๋ถ์ (RCA): 5 Why ๊ธฐ๋ฒ ํ์ฉ
4. ์ฌ๋ฐ ๋ฐฉ์ง ์ก์
์์ดํ
: ๋ด๋น์์ ๊ธฐํ ๋ช
์
5. ํ์ตํ ๊ฒ๋ค
SRE vs DevOps
SRE์ DevOps๋ ์ข ์ข ํผ์ฉ๋์ง๋ง ์ฐจ์ด๊ฐ ์๋ค.
| ํญ๋ชฉ | DevOps | SRE |
|---|---|---|
| ์ฑ๊ฒฉ | ๋ฌธํ/์ฒ ํ | ๊ตฌ์ฒด์ ๊ตฌํ ๋ฐฉ์ |
| ์ฃผ์ ๊ด์ฌ์ฌ | ๊ฐ๋ฐ-์ด์ ํ์ | ์ ๋ขฐ์ฑ ์ธก์ ๊ณผ ์๋ํ |
| ๋ฐฉ๋ฒ๋ก | ์ ์ฐํจ | ๋ฐ์ดํฐ ๊ธฐ๋ฐ, ์์นํ |
| ๊ธฐ์ | ์ปค๋ฎค๋ํฐ ์ฃผ๋ | Google ์ฃผ๋ |
Google ์ ํํ์ผ๋ก๋ โSRE๋ DevOps๋ฅผ ๊ตฌํํ๋ ํ๋์ ๋ฐฉ๋ฒโ์ด๋ค.
์ค๋ฌด์์์ SRE ์ ์ฉ ํฌ์ธํธ
SLI ์ ์ ๊ธฐ์ค
์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ์ํฅ์ ์ฃผ๋ ์งํ๋ฅผ ๊ณ ๋ฅธ๋ค. ์๋ฒ CPU ์ฌ์ฉ๋ฅ ๋ณด๋ค ์๋ต ์๊ฐ์ด ๋ ์ข์ SLI๋ค. ์์ง์ด ์ด๋ ต์ง ์๊ณ , ์๋ฏธ ์๋ ๋ณํ๋ฅผ ๊ฐ์งํ ์ ์์ด์ผ ํ๋ค.
SLO ์ค์ ์ ์ฃผ์์
- ์ฒ์๋ถํฐ ๋๋ฌด ๋๊ฒ ์ค์ ํ์ง ์๋๋ค. 99.99%๋ฅผ ์ฒ์๋ถํฐ ๋ชฉํ๋ก ํ๋ฉด ๊ฐ๋ฐ ์๋๊ฐ ํฌ๊ฒ ์ ์ฝ๋๋ค.
- ํ์ฌ ์ค์ ์ฑ๋ฅ์ ์ธก์ ํด์ ํ์ค์ ์ธ SLO๋ฅผ ๋จผ์ ์ค์ ํ๊ณ , ์ ์ง์ ์ผ๋ก ์ฌ๋ฆฐ๋ค.
- SLA๋ SLO๋ณด๋ค 5~10% ๋ฎ๊ฒ ์ค์ ํด์ ๋ฒํผ๋ฅผ ํ๋ณดํ๋ค.
๊ฐ์ฉ์ฑ๊ณผ ๋ค์ดํ์ ํ์ฐ
| ๊ฐ์ฉ์ฑ | ์ฐ๊ฐ ๋ค์ดํ์ | ์๊ฐ ๋ค์ดํ์ |
|---|---|---|
| 99% | 3.65์ผ | 7.2์๊ฐ |
| 99.9% | 8.76์๊ฐ | 43.8๋ถ |
| 99.99% | 52.6๋ถ | 4.38๋ถ |
| 99.999% | 5.26๋ถ | 26.3์ด |
์ ๋ฆฌ
- SLI๋ ์ธก์ ํ๋ ๊ฒ, SLO๋ ๋ชฉํ๋ก ํ๋ ๊ฒ, SLA๋ ๊ณ์ฝํ๋ ๊ฒ
- Error Budget์ SLO๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฉ๋ ์คํจ ์ฌ์ ๋์ด๋ฉฐ, ๊ฐ๋ฐ๊ณผ ์์ ์ฑ์ ๊ท ํ ๊ธฐ์ค์ด ๋จ
- Burn Rate ๊ธฐ๋ฐ ์๋ ์ค๊ณ๋ก Alert Fatigue๋ฅผ ์ค์ผ ์ ์์
- Toil์ ์ ๋ํํ๊ณ 50% ์ดํ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด SRE์ ์ค์ฒ ์์น
- Blameless Postmortem์ผ๋ก ์ฅ์ ๋ฅผ ํ์ต ๊ธฐํ๋ก ๋ง๋๋ ๋ฌธํ๊ฐ ํต์ฌ