๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Server

Oracle Cloud๋กœ ๊ตฌ์ถ•ํ•œ Spring Boot ์„œ๋น„์Šค ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜ — Active-Standby, VCN Peering, CI/CD ์ž๋™ํ™”


๐Ÿ™‹ ๋“ค์–ด๊ฐ€๋ฉฐ

์•ˆ๋…•ํ•˜์„ธ์š”! ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์•„์ด๋Œ ๊ตฟ์ฆˆ ์ค‘๊ณ ๊ฑฐ๋ž˜ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๊ตฌ์ถ•ํ•œ Oracle Cloud Infrastructure(OCI) ๊ธฐ๋ฐ˜์˜ ์ „์ฒด ์„œ๋ฒ„ ์ธํ”„๋ผ๋ฅผ ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” AWS๋ฅผ ๊ณ ๋ คํ–ˆ์ง€๋งŒ, ํ”„๋ฆฌ ํ‹ฐ์–ด ์ œํ•œ๊ณผ ๋น„์šฉ ๋ฌธ์ œ๋กœ Oracle Cloud์˜ Always Free ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. 4 OCPU + 24GB ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ํฐ ์ด์œ ์˜€์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ „์ฒด ์ธํ”„๋ผ ๊ตฌ์กฐ (VCN, ์„œ๋ธŒ๋„ท, Active-Standby ์šด์˜ ์„œ๋ฒ„)
  • ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์„ค๊ณ„ (Security List, NSG, Bastion)
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ (Jenkins ์ž๋™ํ™”)
  • ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํƒ ๊ตฌ์„ฑ

๐Ÿ—๏ธ 1. ์ „์ฒด ์ธํ”„๋ผ ๊ตฌ์กฐ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

์ „์ฒด ์ธํ”„๋ผ๋Š” Oracle Cloud ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„ํ–ˆ์œผ๋ฉฐ, ์—ญํ• ์— ๋”ฐ๋ผ ์„œ๋ฒ„๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์—ญํ•  ๊ตฌ๋™ ์„œ๋น„์Šค
goody-dev-server ๊ฐœ๋ฐœ ์„œ๋ฒ„ Spring Boot, Redis
goody-prod-server-main ์šด์˜ ์„œ๋ฒ„ (Active) Spring Boot, Redis
goody-prod-server-sub ์šด์˜ ์„œ๋ฒ„ (Standby) Spring Boot, Redis
goody-monitoring-server ๋ชจ๋‹ˆํ„ฐ๋ง / CI-CD ์„œ๋ฒ„ Jenkins, Prometheus, Grafana, Loki, Tempo

 

์šด์˜ ์„œ๋ฒ„๋Š” Active-Standby ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์—๋Š” Active ์„œ๋ฒ„๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์žฅ์•  ๋ฐœ์ƒ ์‹œ OCI ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์˜ Backup ๊ธฐ๋Šฅ์— ์˜ํ•ด ์ž๋™์œผ๋กœ Standby ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ์ด ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

Redis๋Š” ๊ฐ ์„œ๋ฒ„์— ๊ฐœ๋ณ„๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ  Redis๋ฅผ ๋‘๋ฉด ๊ทธ ์ž์ฒด๊ฐ€ ๋‹จ์ผ ์žฅ์• ์ (SPOF)์ด ๋˜์–ด Active-Standby ์ด์ค‘ํ™”์˜ ๋ชฉ์ ์— ๋ฐ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Redis์— ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹ฑ ์ •๋ณด๋ฟ์ด๋ผ ์žฅ์•  ์‹œ DB ์žฌ์กฐํšŒ๋กœ ์ถฉ๋ถ„ํžˆ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ๋ณ„๋„ Redis๋ฅผ ์šด์šฉํ•ด๋„ ์„œ๋น„์Šค ์•ˆ์ •์„ฑ์— ์˜ํ–ฅ์ด ์—†์„๊ฑฐ๋ผ ํŒ๋‹จํ•˜์—ฌ ๊ทธ๋ ‡๊ฒŒ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœ/๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„์™€ ์šด์˜ ์„œ๋ฒ„๋Š” ์„œ๋กœ ๋‹ค๋ฅธ VCN์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋‚ด๋ถ€ ํ†ต์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Jenkins(๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„)์—์„œ ์šด์˜ ์„œ๋ฒ„๋กœ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‘ VCN ๊ฐ„ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋ฅผ OCI Local Peering Gateway๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ ๋กœ Local Peering ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ๋‘ VCN์˜ CIDR ๋Œ€์—ญ์ด ๊ฒน์น˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ, ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ฐœ๋ฐœ/๋ชจ๋‹ˆํ„ฐ๋ง VCN์„ 10.0.0.0/16, ์šด์˜ VCN์„ 10.2.0.0/16์œผ๋กœ ์„ค์ •ํ•ด ์ค‘๋ณต ์—†์ด ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.


Cross-Tenancy Local Peering ์„ค์ • ์ˆœ์„œ (Local VCN Peering using Local Peering Gateways)

OCI์˜ VCN Peering์€ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋ฐฉ์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ ๋ฐฉ๋ฒ•
๊ฐ™์€ region, ๊ฐ™์€ tenancy LPG๋งŒ์œผ๋กœ ์—ฐ๊ฒฐ
๊ฐ™์€ region, ๋‹ค๋ฅธ tenancy LPG + IAM ์ •์ฑ…๋ฌธ (Acceptor/Requestor)
๋‹ค๋ฅธ region DRG (Dynamic Routing Gateway) ์‚ฌ์šฉ

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฐ™์€ region์ด์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ tenancy์— VCN์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋กœ, LPG์™€ IAM ์ •์ฑ…๋ฌธ์„ ํ•จ๊ป˜ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1. ๊ฐ tenancy์˜ VCN์— LPG ์ƒ์„ฑ

2. ๊ฐ tenancy์— IAM ์ •์ฑ…๋ฌธ ์ถ”๊ฐ€

Requestor ์ธก: ์ƒ๋Œ€ tenancy์˜ LPG์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋Š” ์ •์ฑ… (๋‚ด ๊ทธ๋ฃน์ด ์ƒ๋Œ€ ํ…Œ๋„Œ์‹œ์— ์ ‘๊ทผํ•˜๋„๋ก ํ—ˆ์šฉ)

 

Acceptor ์ธก: ์š”์ฒญ tenancy์˜ LPG ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝ ํ—ˆ์šฉํ•˜๋Š” ์ •์ฑ… (์ƒ๋Œ€ ํ…Œ๋„Œ์‹œ์˜ ๊ทธ๋ฃน์ด ๋‚ด ์ชฝ์— ์ ‘๊ทผํ•˜๋„๋ก ํ—ˆ์šฉ)

3. Requestor๊ฐ€ Acceptor์˜ LPG OCID๋ฅผ ์ž…๋ ฅํ•ด ์—ฐ๊ฒฐ ์š”์ฒญ → ์ •์ฑ…๋ฌธ์ด ์˜ฌ๋ฐ”๋ฅด๋ฉด ์ž๋™ ์ˆ˜๋ฝ

4. ๊ฐ VCN ๋ผ์šฐํŠธ ํ…Œ์ด๋ธ”์— ๊ฒฝ๋กœ ์ถ”๊ฐ€

  • ๊ฐœ๋ฐœ VCN ๋ผ์šฐํŠธ ํ…Œ์ด๋ธ”: 10.2.0.0/16 → ๊ฐœ๋ฐœ VCN์˜ LPG
  • ์šด์˜ VCN ๋ผ์šฐํŠธ ํ…Œ์ด๋ธ”: 10.0.0.0/16 → ์šด์˜ VCN์˜ LPG

5. NSG์— ์–‘๋ฐฉํ–ฅ ๋ณด์•ˆ ๊ทœ์น™ ์ถ”๊ฐ€

  • ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„(Jenkins) NSG — ์†ก์‹  (Egress): TCP 22 → <์šด์˜ ์„œ๋ฒ„ private IP>/32 ํ—ˆ์šฉ
  • ์šด์˜ ์„œ๋ฒ„ NSG — ์ˆ˜์‹  (Ingress): TCP 22 ← <๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„ private IP>/32 ํ—ˆ์šฉ

์ด ์„ค์ •์œผ๋กœ Jenkins(๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„)๊ฐ€ SSH๋ฅผ ํ†ตํ•ด ์šด์˜ ์„œ๋ฒ„์— ์ง์ ‘ ๋ฐฐํฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ” 2. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์„ค๊ณ„

VCN ๋ฐ ์„œ๋ธŒ๋„ท ๊ตฌ์„ฑ

VCN์€ CIDR 10.0.0.0/16์œผ๋กœ ์„ค์ •ํ–ˆ๊ณ , ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท๊ณผ ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์œผ๋กœ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ธŒ๋„ท CIDR ์—ญํ• 
ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท 10.0.0.0/24 ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ, Bastion ์„œ๋ฒ„
ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท 10.0.1.0/24 API ์„œ๋ฒ„, ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„

์ฃผ์š” ์„œ๋ฒ„๋“ค์€ ๋ชจ๋‘ ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์— ๋ฐฐ์น˜ํ•ด ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์€ ๋ฐ˜๋“œ์‹œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์–ด์š”.

Security List vs NSG

OCI์—๋Š” ๋ณด์•ˆ ๊ทœ์น™์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‘ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Security List: ์„œ๋ธŒ๋„ท ๋‹จ์œ„๋กœ ์ ์šฉ๋˜๋Š” ๋ ˆ๊ฑฐ์‹œ ๋ฐฉ์‹
  • NSG (Network Security Group): ์ธ์Šคํ„ด์Šค ๋‹จ์œ„๋กœ ์„ธ๋ถ„ํ™”๋œ ๋ณด์•ˆ ์ œ์–ด

๋‘ ๊ฐ€์ง€๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ์ด์ค‘ ๊ณ„์ธต ๋ณด์•ˆ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์€ ๋‘ ๊ณ„์ธต์„ ๋ชจ๋‘ ํ†ต๊ณผํ•ด์•ผ ์ธ์Šคํ„ด์Šค์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • Security List(์„œ๋ธŒ๋„ท ๋‹จ์œ„): ํ—ˆ์šฉํ•  ํฌํŠธ ๋ฒ”์œ„๋ฅผ 1์ฐจ๋กœ ํ•„ํ„ฐ๋ง
    ํ”„๋ผ์ด๋น—๊ณผ ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์„ ๋‚˜๋ˆ„์–ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ณด์•ˆ๋ชฉ๋ก(Security List) ์ ์šฉ

  • NSG(์ธ์Šคํ„ด์Šค ๋‹จ์œ„): ํŠน์ • IP๋กœ ์ ‘๊ทผ์„ ์ถ”๊ฐ€ ์ œํ•œํ•˜๋Š” 2์ฐจ ์„ธ๋ฐ€ ์ œ์–ด
    ๊ฐ ์ธ์Šคํ„ด์Šค ๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๋ณด์•ˆ๊ทธ๋ฃน(NSG) ์ ์šฉ

Bastion ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ SSH ์ ‘๊ทผ

ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์˜ ์„œ๋ฒ„๋“ค์€ ์™ธ๋ถ€์—์„œ ์ง์ ‘ SSH ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์˜ Bastion ์„œ๋ฒ„๋ฅผ ๊ฒฝ์œ ํ•ด์„œ๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ SSH ์ ‘์† ์‹œ ProxyJump๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ๋ฒˆ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ~/.ssh/config ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

# Bastion ์„œ๋ฒ„
Host bastion
  HostName <Bastion ๊ณต์ธ IP>
  User ubuntu
  IdentityFile ~/.ssh/goody_server_key
  ForwardAgent yes

# ๊ฐœ๋ฐœ ์„œ๋ฒ„ (ProxyJump via Bastion)
Host private-server1
  HostName <๊ฐœ๋ฐœ ์„œ๋ฒ„ private IP>
  User ubuntu
  IdentityFile ~/.ssh/goody_server_key
  ProxyJump bastion

# ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„
Host private-server2
  HostName <๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„ private IP>
  User ubuntu
  IdentityFile ~/.ssh/goody_server_key
  ProxyJump bastion

์ด ์„ค์ •์œผ๋กœ ssh private-server1 ๋ช…๋ น๋งŒ์œผ๋กœ Bastion์„ ์ž๋™ ๊ฒฝ์œ ํ•ด ํ”„๋ผ์ด๋น— ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ํฌํŠธ ๊ตฌ์„ฑ

OCI ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ๋ฆฌ์Šค๋„ˆ(Listener)์™€ ๋ฐฑ์—”๋“œ ์ง‘ํ•ฉ(Backend Set)์„ 1:1๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์Šค๋„ˆ๋Š” ์™ธ๋ถ€์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•˜๋Š” ํฌํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ , ๋ฐฑ์—”๋“œ ์ง‘ํ•ฉ์€ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•  ๋‚ด๋ถ€ ์„œ๋ฒ„์™€ ํฌํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์Šค๋„ˆ ํฌํŠธ ๋Œ€์ƒ ์„œ๋ฒ„ : ํฌํŠธ ์šฉ๋„
8080 goody-server-001 : 80 (Nginx) API ์„œ๋ฒ„
8888 goody-server-002 : 8080 Jenkins
3000 goody-server-002 : 3000 Grafana
5601 goody-server-002 : 5601 Kibana
9200 goody-server-002 : 9200 Elasticsearch

์™ธ๋ถ€์—์„œ๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์˜ ๊ณต์ธ IP + ํฌํŠธ๋กœ ์ ‘๊ทผํ•˜๊ณ , ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋‚ด๋ถ€ ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.


๐Ÿš€ 3. CI/CD ํŒŒ์ดํ”„๋ผ์ธ

GitHub์— ์ฝ”๋“œ๋ฅผ Pushํ•˜๋ฉด GitHub Webhook์„ ํ†ตํ•ด Jenkins Pipeline์ด ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

GitHub Push → GitHub Webhook → Jenkins Pipeline ์ž๋™ ์‹คํ–‰ → JAR ๋นŒ๋“œ → Docker Image ๋นŒ๋“œ → ์„œ๋ฒ„ ๋ฐฐํฌ

main๋ธŒ๋žœ์น˜์™€ dev๋ธŒ๋žœ์น˜์— ๋จธ์ง€๊ฐ€ ๋˜๋ฉด ๊ฐ๊ฐ prod์„œ๋ฒ„์™€ dev์„œ๋ฒ„๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜๋„๋ก ์„ค์ •ํ–ˆ์œผ๋ฉฐ, ๋นŒ๋“œ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ Jenkins๋กœ ์ž๋™ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Š 4. ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํƒ

๋ชจ๋‹ˆํ„ฐ๋ง์€ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์‚ฌ์šฉ์ž ๋กœ๊ทธ ๋ถ„์„ ๋‘ ๊ฐ€์ง€ ๋ชฉ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง: ๊ฐ ์„œ๋ฒ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด OpenTelemetry Protocol๋กœ ๋ฉ”ํŠธ๋ฆญ/๋กœ๊ทธ/ํŠธ๋ ˆ์ด์Šค๋ฅผ ์ „์†กํ•˜๋ฉด, ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„์˜ Prometheus + Grafana Loki + Grafana Tempo + Grafana ์Šคํƒ์—์„œ ์ˆ˜์ง‘·์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ ๊ฐ์ง€ ์‹œ Slack ์•Œ๋ฆผ์ด ์ž๋™์œผ๋กœ ๋ฐœ์†ก๋ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๋กœ๊ทธ ๋ถ„์„: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ๋ฅผ Filebeat๋กœ ์ˆ˜์ง‘ํ•ด Elasticsearch์— ์ €์žฅํ•˜๊ณ , Kibana๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”Ž 5. ๋งˆ๋ฌด๋ฆฌ — ํšŒ๊ณ  & ๊ฐœ์„ ์ 

์ด๋ฒˆ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„์€ OCI์˜ ๋ณด์•ˆ ์ •์ฑ… ์„ค์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค. AWS์™€ ๋‹ฌ๋ฆฌ Security List์™€ NSG๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•˜๊ณ , ๋‘˜ ๋‹ค ํ†ต๊ณผํ•ด์•ผ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์–ด์„œ ์ดˆ๋ฐ˜์— ํฌํŠธ๊ฐ€ ์•ˆ ์—ด๋ฆฌ๋Š” ๋ฌธ์ œ๋กœ ํ•œ์ฐธ ํ—ค๋งธ์–ด์š”.

ํŠนํžˆ Security List์™€ NSG ๊ทœ์น™์„ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ๋„ ์ ‘๊ทผ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์›์ธ์€ ์ธ์Šคํ„ด์Šค OS ๋ ˆ๋ฒจ์˜ iptables ๊ทœ์น™์ด์—ˆ์Šต๋‹ˆ๋‹ค. OCI ๋„คํŠธ์›Œํฌ ๊ทœ์น™์„ ๋ชจ๋‘ ํ†ต๊ณผํ•˜๋”๋ผ๋„ OS ๋ฐฉํ™”๋ฒฝ์—์„œ ํ•œ ๋ฒˆ ๋” ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ฒ˜์Œ์—๋Š” ๋ชฐ๋ž์„œ ์›์ธ ํŒŒ์•…์— ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•œ๊ณ„ ๋ฐ ๊ฐœ์„  ์˜ˆ์ • ์‚ฌํ•ญ

  • NSG ์ผ๋ถ€ ํฌํŠธ (Jenkins, Grafana, Kibana ์ ‘๊ทผ ํฌํŠธ)๋ฅผ ํ˜„์žฌ 0.0.0.0/0์œผ๋กœ ์—ด์–ด๋‘” ์ƒํƒœ → IP ์ œํ•œ์œผ๋กœ ์ˆ˜์ • ์˜ˆ์ •