아키텍처 대본에 틀림이 있을까?(ex: 스케일인)

너무 정확히 쓰는건 아쉽지 않을까?

아키텍처 대본

다음으로 저희 프로젝트의 핵심 기능인 VM 오토스케일링 기능에 대해 설명드리겠습니다. 기존 OpenStack 환경에서는 사용자가 직접 인스턴스를 생성하고 관리해야 하기 때문에, 트래픽 증가 상황에 대한 빠른 대응이 어려웠습니다. 저희는 이를 개선하기 위해 메트릭 모니터링 기반의 오토스케일링 구조를 구현하였습니다. 먼저 Prometheus는 Node Exporter와 cAdvisor를 통해 노드와 내부 컨테이너의 메트릭을 수집하고, Pull 방식을 통해 시계열 데이터베이스에 저장합니다. rule.yml 파일에 설정한 수치를 초과하면 Alertmanager가 Discord Bot으로 알림을 전달합니다. 알림 발생 후 Cooldown 상태와 현재 인스턴스 상태를 확인하고, 클라우드 서버 내 조건 충족 시 Ansible Playbook을 실행합니다. 그 후 오픈스택 API는 reconsile.yml 파일을 통해 VM 생성, Floating IP 할당과 Cloud-init 기반 초기 설정을 통해 도커 설치와 Docker Swarm Worker Join까지의 과정을 자동으로 수행합니다.
저희는 또한 반복적인 요청에 불필요한 VM을 중복하여 생성하지 않도록 구현했습니다. 이렇게 생성된 VM은 HAProxy를 통해 증가한 트래픽을 분산 처리합니다. 실제 동작 과정은 데모 영상에서 보여드리겠습니다.


( Scale-in은 구현 안되어있긴 합니다. 구현 하려면 따로 cpu 사용률 감소 alert 뜨면 cloud01에서 다시 스크립트 실행되도록 해야해요) > 추후 발전과정 이런거 설명할때 같이 발표해도 좋을거같

영상 대본

k6으로 동시접속자 1500명이 3분 20초동안 방문해 있다고 가정하여, 부하테스트를 걸어보았습니다. 1500명이 다다를때쯤 실시간 메트릭 수집 결과가 변동하여, 왼쪽 상단 캐드바이저는 부하를 알리는 트래픽 그래프가 상승하기 시작하고, 오른쪽 상단 노드익스포터에서는 cpu는 28.2%, 대기열큐는 109%를 보입니다. 오른쪽하단의 알람 매니저에서는 이러한 정보가 pending 되어 5초 동안 cool down하며 기다리다가 node01, node02 두 곳에서 모두 CPU 사용률 20%가 초과되었다는 알람을 전송합니다. 다음은 오픈스택 서버입니다. 디스코드를 수신하는 중계 역할의 컨트롤 서버에서 앤서블 플레이북으로, 오픈스택 내의 쉘스크립트를 실행하여, 오픈스택 서버에서 VM 인스턴스를 생성하기 시작합니다. 자동화이므로 tail을 찍어 실시간 로그를 찍으며 조회하면, 다음과 같이 node-vm-01이 생성되는 과정을 알 수 있습니다. 자동으로 floating ip도 부여되고 cloud-init 또한 정상적으로 수행됩니다. 알람으로 전송된 cpu 부하 게이지는 20%정도이므로 플레이버 중에서 비교적 작은 worker-small을 보냅니다. docker service ls를 반복적으로 찍으며, 도커 컨테이너에서 node-vm-01이 내부적으로 swam join 되어 컨테이너에 편입된 것을 확인하였습니다. 이후 다시 왼쪽 상단 캐드바이저를 확인해보니 트래픽 그래프가 서서히 내려가며 오른쪽 상단 노드익스포터에서 CPU가 28.2%에서 1.5%로 감소하였고, 대기열큐는 109%에서 1.5%로 감소하였음을 확인할 수 있습니다. 이로써 오토스케일링 과정이 정상 작동함을 알 수 있었습니다.

의견 제시

스케일 인이 실제로 구현되는 것인가?

큰 틀이 바뀐게아니라서 이정돈 괜찮을거같아요. 영상대본 수정이아니기도하고..