이 글은 이권수님과 팟캐트스를 진행하면서 나눴던 이야기를 적었습니다.
컨테이너의 장점은 애플리케이션 수를 증가시키고 감소하는 과정이 매우 쉽습니다. 서버 cpu, 메모리만 충분하다면 컨테이너 개수만 늘리면 애플리케이션이 쉽게 증가하고 감소하기 때문입니다. 그러면, 애플리케이션 처리속도를 높이기 위해 단순히 애플리케이션 개수를 늘리면 될까요?
정답은 아닙니다. 인스턴스 개수를 늘려도 처리속도 한계가 존재합니다.
1. 개발로직에 처리속도 이슈가 있다면 처리속도가 유의미하게 늘어나지 않는다.
애플리케이션 처리속도가 locking등 개발로직에 있다면 애플리케이션 개수를 늘려도 처리속도는 늘어나지 않습니다. 이런 상황은 개발로직을 수정해야 합니다.
2. DB connection 등 주변환경 제약이 있다면 정상적으로 동작하지 않는 애플리케이션이 있다.
애플리케이션이 늘어나면 점유하는 리소스도 당연히 늘어납니다. 대표적으로 DB connection입니다. DB 인스턴스마다 connection 개수 제한이 있습니다. 이 환경을 알지 못하고 애플리케이션 개수만 늘리면 DB connection을 더이상 만들지 못하여 애플리케이션이 부팅되지 않습니다.
3. 내가 의도한 애플리케이션 처리속도가 올라가더라도 주변 애플리케이션이 바쳐주지 않으면 처리속도는 올라가지 않는다.
애플리케이션의 대부분은 나 혼자 돌지 않고 주변 환경과 연동되어 동작합니다. 예로 결제 시스템 연동이 있습니다. 내 처리속도가 빠르더라도 주변 시스템의 처리속도가 느리면 전체 처리속도는 유의미하게 빨라지지 않습니다.
내가 제어할 수 있는 애플리케이션이면 같이 애플리케이션 개수를 늘리거나 오토스케일링을 설정하여 자동으로 애플리케이션 속도를 늘리게 해야 합니다. 하지만, 내가 제어할 수 없는 애플리케이션이면 애플리케이션 담당자에게 요청을 해야 합니다. 제어할 수 없는 영역 사례는 배달의 민족이 있습니다. 배달의 민족 시스템은 애플리케이션 개수를 늘려 트래픽을 버텼지만, 다른 회사 결제시스템이 버티지 못한 사례입니다.
- 우아콘2020: https://youtu.be/BnS6343GTkY?si=EKbGp5fuknD2mIB7&t=539
4. 애플리케이션 아키텍처에 따라 처리속도가 늘어나지 않는다.
애플리케이션 아키텍처가 active-standby구조이고 active가 1개만 가능하다면 처리속도는 늘어나지 않습니다. 왜냐하면 처리하는 애플리케이션은 active만 하기 때문입니다. 대표적으로 hashicorp vault가 있습니다. hashicort vault문서를 보면 애플리케이션 개수가 증가하더라도 active가 1개이기 때문에 처리속도가 늘어나지 않는다고 명시되어 있습니다.
'전공영역 공부 기록' 카테고리의 다른 글
쿠버네티스 statefulset OnDelete 전략 (6) | 2024.10.10 |
---|---|
쿠버네티스 cpu limit을 설정해야할까? 안해야할까? (1) | 2024.10.06 |
리눅스 컨테이너는 cpu 자원이 어떻게 제어될까? (0) | 2024.09.22 |
맥북 Linux VM에서 perf사용 방법 (0) | 2024.09.21 |
AWS ALB에 여러 도메인 인증서(ACM)를 적용한 경험 (2) | 2024.09.11 |