Python GIL과 캐시 스래싱, 그리고 ARM64(Graviton)의 물리적 시너지
·
탐구 생활/Python
Python WSGI Django 환경에 Rust 를 받아들여서 하루 1.8억건의 요청을 견디는 백엔드 서버를 만든 글에서 자세히 보면 한가지 중요한 사항이 빠져있습니다. 바로 AWS 환경에서 ARM64(Graviton) CPU를 사용함으로써 Error Rate와 RPS가 모두 안정화 됐다는 점입니다.해당 글에서는 Rust를 이용함으로써 Accept Queue 에서 accept() 을 호출하는 과정에 안정화되어 Error Rate이 줄어든건 설명이 되지만 RPS가 개선된건 주로 CPU교체 때문이었습니다. 개인적으로 Python GIL 제약하에 CPU구조의 차이로 인해 X86_64(AMD64)와 Graviton(ARM64)에서 차이가 발생했다고 알고 있었지만 그 내용을 깊이 파보진 않았습니다. 이 글을 통..
AWS AutoScaling 수평 확장시 어플리케이션 자동 세팅
·
탐구 생활/개발 탐구
아직 백엔드 인프라쪽에 전문성이 높지 않아서 여러가지 시도를 해보고 있습니다. 그 중에서도 항상 저에게 의문을 던져주었던 AWS 의 오토스케일링 그룹을 가지고 놀아보고자합니다. 저에게 주어진 주된 의문은 (1) 트래픽이 증가해서 자동으로 인스턴스가 늘어나면 그 안에 서버도 복제되는가? (2) 서버가 복제된다면 포트포워딩, 라우팅 설정도 알아서 자동으로 되나? 아래와 같이 간단한 환경을 만들고 테스트를 해봤습니다. 직접 실험해본 결과 이 질문에 대한 대답은 "아니다" 였습니다. (1) 트래픽이 증가해서 자동으로 인스턴스가 늘어나면 그 안에 서버도 복제되는가? -> 시작템플릿에서 지정된 백지상태의 EC2 가 하나더 만들어진다. (2) 서버가 복제된다면 포트포워딩, 라우팅 설정도 알아서 자동으로 되나? -> ..