Com2us Platform · FinOps
드래곤스카이 인프라 비용 62% 절감
매출 지표와 인프라 비용을 연동해 모니터링하고 Python으로 불필요 리소스를 매일 자동 탐지해 인프라 비용을 최대 62% 줄였습니다.
- 역할
- Cloud Engineer · 메인 엔지니어
- 기간
- 2023.02 – 2026.02
- CSP
- Azure
- 규모
- 서버 10대 · DB 5개
- 핵심 기술
- Azure · Python · Billing monitoring
- - 62 %
- 인프라 비용 최대 절감
- 10
- 서버
- 5
- DB
한눈에 보기
문제
게임 매출 대비 인프라 비용 비율이 높아 수익성에 문제가 있었습니다.
접근
매출 지표와 인프라 비용을 연동해 함께 모니터링했습니다. Python으로 전 CSP의 불필요 리소스를 매일 자동 탐지했습니다.
결과
인프라 비용을 최대 62% 절감했습니다.
자세히 보기
미사용 자원 찾기 (관련 공개 저장소 pf-05)
이 코드가 하는 일: AWS 계정과 리전을 하나씩 돌며 미사용 자원을 찾습니다. 공인 IP는 어떤 인스턴스에도 붙어 있지 않고 연결 정보도 없으면 미사용으로 보고, 이름·할당 ID·IP를 묶어 기록합니다. 보안그룹은 제외 규칙에 걸리는 이름을 건너뛴 뒤, 그 그룹을 쓰는 네트워크 인터페이스가 하나도 없는지 조회해 미사용 여부를 판단합니다. 이렇게 모인 결과가 공통 형식(UnusedResource)으로 쌓여, 정리할 후보를 한 목록에서 볼 수 있습니다.
for account, region, client in provider.regional("ec2"):
base = {"cloud": "AWS", "project": account.name, "project_id": account.account_id, "region": region}
for address in client.describe_addresses()["Addresses"]:
if not address.get("InstanceId") and not address.get("AssociationId"):
label = (
f"{_name(address)} ({address.get('AllocationId')} / {address.get('PublicIp')})".strip()
)
records.append(UnusedResource(resource_type="IP", resource=label, **base))
for group in client.describe_security_groups()["SecurityGroups"]:
if _excluded(group["GroupName"], rules):
continue
used = client.describe_network_interfaces(
Filters=[{"Name": "group-id", "Values": [group["GroupId"]]}]
)["NetworkInterfaces"]
if not used:배운 점
비용은 금액만 볼 때보다 매출과 같은 기준에서 볼 때 판단이 쉬워진다는 점을 배웠습니다. 인프라 비용을 매출 지표와 나란히 두니, 어떤 리소스가 수익성에 영향을 주는지와 무엇을 먼저 줄여야 하는지가 분명해졌습니다. 또 비용 누수는 한 번 정리한다고 끝나지 않아서, 불필요한 리소스를 사람이 가끔 찾는 대신 Python으로 매일 자동 탐지하는 것이 절감 효과를 유지하는 방법이었습니다. 다만 탐지만으로는 비용이 줄지 않고 실제 정리까지 이어져야 하므로, 탐지 결과가 정리 승인과 실행으로 빠르게 연결되는 흐름이 비용 관리의 다음 단계라는 점도 알게 됐습니다.