โDevOps Engineer๊ฐ ๋๋ ค๋ฉด, ๋ฆฌ๋
์ค์ ํ์ฅ ์ค๋ฌด๋ฅผ ๋ฐฐ์๋ผโ -
๊ทธ๊ฒ ์ง์ง ๋ฌด์จ ๋ป์ผ๊น?
์ฃผ์ ๋ด์ฉ
-
์ ๋ฆฌ๋ ์ค๊ฐ DevOps ์ํฌํ๋ก์ฐ์์ ์ค์ํ๊ฐ?
-
๋ฆฌ๋ ์ค๊ฐ ์ผ์ ์ ๋ฌด์์ ์ด๋์ ๋ฑ์ฅํ๋๊ฐ
-
์ค์ ๋ฉด์ ์คํ์ผ ์ง๋ฌธ๊ณผ ์๋๋ฆฌ์ค ์์
-
์์ํ๊ธฐ: ํ๋ก์ ํธ ์์ด๋์ด์ ํ์ต ๋ฆฌ์์ค
-
Linux ์ปค๋งจ๋ ์นํธ ์ํธ (์ฐธ๊ณ )

์ Linux ๊ธฐ์ ์ด DevOps์์ ์ค์ํ๊ฐ
๋ค์๊ณผ ๊ฐ์ ์ํฉ์ ๋ ์ฌ๋ ค๋ณด์ธ์:
- Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ ๋
- Terraform์ด๋ Pulumi๋ก ํด๋ผ์ฐ๋ ์ธํ๋ผ๋ฅผ ์๋ํํ ๋
- ์คํจํ ๋น๋ ํ์ดํ๋ผ์ธ์ ๋๋ฒ๊น ํ ๋
์ด ๋ชจ๋ ๊ณผ์ ์ ๋๋ถ๋ถ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์, ํฐ๋ฏธ๋์ ์ด๊ณ ์งํ๋ฉ๋๋ค. ์ปจํ ์ด๋, ํด๋ผ์ฐ๋ ์๋ฒ, CI/CD ๋ฌ๋, ๋ชจ๋ํฐ๋ง ์์ด์ ํธ ๋ฑ ์คํ ๊ณ์ธต์ ์งํฑํ๋ ๊ฒ์ ๋ฆฌ๋ ์ค์ ๋๋ค.
๋ฉด์ ์์ ๋ฆฌ๋ ์ค๋ฅผ ๋ฌป๋ ์ด์ ๋ ๋ชจ๋ ๋ช ๋ น์ด์ ํ๋๊ทธ๋ฅผ ์ธ์ฐ๊ณ ์๋์ง๋ฅผ ๋ณด๋ ค๋ ๊ฒ ์๋๋ผ, ํ์ค์ ์ธ ๋ฌธ์ ๋ฅผ ์ผ๋ง๋ ์์ ์๊ณ ํจ์จ์ ์ผ๋ก ๋๋ฒ๊น ํ ์ ์๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํจ์ ๋๋ค.
DevOps๋ฅผ ์ํ ๋ฆฌ๋
์ค - ์ค์ ์๋๋ฆฌ์ค์ ์ ๊ทผ ๋ฐฉ๋ฒ
1. ๋ฐฐํฌ๊ฐ ์คํจํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ ์ฌ๋ผ์ค์ง ์๋๋ค. ๋ฆฌ๋ ์ค ์๋ฒ์์ ์ด๋ป๊ฒ ๋๋ฒ๊น ํ ๊ฒ์ธ๊ฐ?
-
ํ๊ฐ ํฌ์ธํธ: ์๋น์ค, ๋ก๊ทธ, ํ์ผ ์์คํ ์ ์ ๊ฒํ๋ ๋๋ฒ๊น ์ ์ฐจ
-
์ ๊ทผ ๋ฐฉ๋ฒ: ์ธ์คํด์ค์ SSH ์ ์, ์๋น์ค ์ํ ํ์ธ:
systemctl status <service>
- ์ต๊ทผ ๋ก๊ทธ ํ์ธ:
journalctl -xe
- ์คํ ์ค์ธ ํ๋ก์ธ์ค ํ์ธ:
ps aux | grep <app>
- ๋์คํฌ ์ฌ์ฉ๋ ์ ๊ฒ:
df -h
- ํ์ผ ๊ถํ ํ์ธ:
ls -lah <config-path>
ํนํ ๊ถํ ์ค์ ๋ฌธ์ (chmod, ์คํ ๊ถํ ๋๋ฝ ๋ฑ) ๋๋ฌธ์ ์๋น์ค๊ฐ ์กฐ์ฉํ ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
2. CPU๋ฅผ 80% ์ด์ ์ ์ ํ๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ฐพ์์ ์ข ๋ฃํ๋ผ.
-
ํ๊ฐ ํฌ์ธํธ: ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ๊ด๋ฆฌํ๋ ๋ฅ๋ ฅ
-
์ ๊ทผ ๋ฐฉ๋ฒ: ์ฐ์
top์ผ๋ก ์๊ฐ์ ์ผ๋ก ํ์ธ ๊ทธ๋ฆฌ๊ณ ์๋ํ:
ps aux | awk '$3 > 80 {print $2}' | xargs kill -9
$3= CPU ์ฌ์ฉ๋ฅ , awk๋ก 80% ์ด๊ณผ ํ๋ก์ธ์ค ํํฐ๋ง, xargs kill -9๋ก ๊ฐ์ ์ข ๋ฃ- ์ดํ
uptime์ด๋top์ผ๋ก CPU ์ฌ์ฉ๋ฅ ์ ์ํ ํ์ธ
3. ๋ก๊ทธ๊ฐ ํ์ (rotate)๋์ง ์์ ๋์คํฌ๊ฐ ๊ฐ๋ ์ฐจ๊ณ ์๋ค. ๋ฌด์์ ํ์ธํ ๊ฒ์ธ๊ฐ?
-
ํ๊ฐ ํฌ์ธํธ: ๋ก๊น ์์คํ ๊ณผ ๋์คํฌ ์ ๊ฒ ๋ฅ๋ ฅ
-
์ ๊ทผ ๋ฐฉ๋ฒ: ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ:
df -h
- ๋ก๊ทธ ํ์ผ ํฌ๊ธฐ๋ณ ํ์ธ:
ls -lhS /var/log
- logrotate ์๋ฎฌ๋ ์ด์ :
logrotate -d /etc/logrotate.conf
- ํฌ๋ก ์ก ์คํ ํ์ธ:
crontab -l
grep CRON /var/log/syslog
4. 2GB ํฌ๊ธฐ์ ๋ก๊ทธ ํ์ผ์์ ๋ง์ง๋ง 100์ค๋ง ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์์ผ ํ๋ค.
ํ๊ฐ ํฌ์ธํธ: ๋์ฉ๋ ๋ก๊ทธ ํ์ผ์ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๊ณ ์๋ํํ๋ ๋ฅ๋ ฅ
์ ๊ทผ ๋ฐฉ๋ฒ:
- ๋น ๋ฅธ ์ ๊ทผ:
tail์ ํ์ผ ๋๋ถ๋ถ๋ง ์ฝ๊ธฐ ๋๋ฌธ์ ๋์ฉ๋ ๋ก๊ทธ์ ์ ํฉ
tail -n 100 /path/to/large.log
- ์คํฌ๋ฆฝํธํ & ์๋ํ:
#!/bin/bash
tail -n 100 /path/to/large.log >> /var/log/summary.log
- ํฌ๋ก ์ผ๋ก ๋ฑ๋ก (
crontab -e): 30๋ถ๋ง๋ค ์คํ (00:00, 00:30, 01:00 โฆ)
*/30 * * * * /path/to/script.sh
5. CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ์ฌ์ฉ๋์ 30๋ถ๋ง๋ค ๋ชจ๋ํฐ๋งํ๊ณ ์ถ๋ค.
ํ๊ฐ ํฌ์ธํธ: ๊ฒฝ๋ ๋ชจ๋ํฐ๋ง ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด ์์คํ ์ํ๋ฅผ ์ฅ๊ธฐ๊ฐ ๊ธฐ๋กํ๋ ๋ฅ๋ ฅ
์ ๊ทผ ๋ฐฉ๋ฒ:
- ์คํฌ๋ฆฝํธ ์์ฑ
#!/bin/bash
echo "=== $(date) ===" >> /var/log/resource.log
# top ์์ฝ
top -b -n1 | head -5 >> /var/log/resource.log
# ๋์คํฌ ์ฌ์ฉ๋
df -h >> /var/log/resource.log
# ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
free -m >> /var/log/resource.log
- ํฌ๋ก ๋ฑ๋ก:
*/30 * * * * /path/to/resource.sh
์ด๋ ๊ฒ ์์ธ ๋ก๊ทธ๋ ์ฅ๊ธฐ ํจํด ๋ถ์์ด๋ ์ฑ๋ฅ ์ ํ ์์ธ ์ถ์ ์ ํ์ฉํ ์ ์๊ณ , ๋ฉด์ ์์ ์คํฌ๋ฆฝํธ ์์ฑ ๋ฅ๋ ฅ์ ์ดํํ๊ธฐ์๋ ์ข์ต๋๋ค.
ํ๋ก์ ํธ์ ํ์ต ๋ฆฌ์์ค
-
Linux VM์ ๋์์ ์ค์ตํด๋ณด์ธ์ (๋๋ ๋ฌด๋ฃ ํฌ๋ ๋ง ํ์ฉ): AWS Free Tier , Google Cloud Free Tier
-
ํ์ค ์ฌ๋ก ํํ ๋ฆฌ์ผ ๋ฐ๋ผ๊ฐ๊ธฐ: * Linux Journey(์ด๋ณด์ ์นํ์ ์ธ ํ์ต ์ ๊ณต), OverTheWire: Bandit(์ค์ตํ Linux ํผ์ฆ), FreeCodeCamp Linux Crash Course (YouTube)
GitHub์ ํ์ต ๊ณผ์ ์ ๊ธฐ๋กํ๊ธฐ:
- ์ค์ต + ๋ ธํธ ์ ๋ฆฌ : ์ฃผ์ ๋ณ ํด๋๋ฅผ ๋ง๋ค์ด ์คํฌ๋ฆฝํธ์ ๋ ธํธ๋ฅผ ์ปค๋ฐํ๊ณ , ์ค๋ช ์ด ๋ด๊ธด README ํ์ผ ์์ฑํ๊ณ , ํ์ต ๋ด์ฉ์ ๊ณต์ ํ๋ฉด ๊ธฐ์ต์๋ ์ค๋ ๋จ๊ณ ๊ฐ์์ฑ๋ ๋์์ง๋๋ค.
Linux ํ์ต์ ์ํ ์ถ์ฒ GitHub ์ ์ฅ์
[์ถ์ฒ] Linux for DevOps