개발 Q&A

제목 어떤 애플리케이션을 cloud로 운영한다고 했을 때 php 기준으로는 어떤게 유리할까요?
카테고리 PHP
글쓴이 나이토리아 작성시각 2022/11/28 14:51:26
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 8231   RSS

KT cloud 기준으로 4코어의 cpu, 4GB의 램으로 2개를 구성하여 로드밸런서를 운영하여야할지

 

8코어의 cpu, 8GB의 램으로 단일 서버를 구성하여 운영을 해야할지 고민입니다.

 

php는 멀티쓰레딩이 되지 않는 것으로 알고 있는데 어떤 점이 유리할지 몰라서 질문 남깁니다..

 다음글 [AWS] RDS vs EC2에 DB 구축 관련 질문 (4)
 이전글 페이지 이동 시 세션 값이 초기화되어버리는데, 왜 그런... (1)

댓글

주말생각 / 2022/11/28 15:16:49 / 추천 0

저라면

 4코어의 cpu, 4GB의 램으로 2개를 구성하여 로드밸런서를 운영을 할 것 같기는 한데,

어떤 종류의 서비스인지 알 수가 없으니 답변드리기 모호하네요.

고수분들이 적절한 답변을 해주시겠지요.

나이토리아 / 2022/11/28 15:24:13 / 추천 0

저도 그 생각입니다만 스트레스 테스트를 해보는게 가장 정확하겠죠?

많은 인원이 들어와서 시험보는 형식의 웹 애플리케이션입니다

한대승(불의회상) / 2022/11/28 15:34:34 / 추천 0

로드밸런서 구성시 세션 및 공유 데이터 관련된 부분을 잘 고려하시길 바랍니다.

나이토리아 / 2022/11/29 09:37:41 / 추천 0
보통 DB세션을 사용하기는 합니다. 평소에도 로드밸런서로 많이 서비스를 운영해서 문제되진 않습니다.
tuyitu719 new / 2026/03/14 09:51:42 / 추천 0

안녕하세요.
이 경우는 “PHP가 멀티스레드가 되느냐”보다, 장애 허용성과 운영 방식이 더 중요한 기준이라고 보시는 게 맞습니다.

일반적으로 PHP 서비스는 PHP-FPM이 여러 child process를 두고 요청을 처리하는 구조로 운영됩니다. PHP 공식 문서에서도 FPM의 process manager가 static, dynamic, ondemand 방식으로 child process 수를 관리하며, pm.max_children 이 동시에 처리할 수 있는 요청 수 한도를 결정한다고 설명합니다. 그래서 실무에서는 “PHP는 멀티스레드가 아니니까 코어 수가 의미 없다”기보다는, 여러 프로세스가 동시에 요청을 처리하므로 CPU 코어 수와 메모리 둘 다 중요하다고 보는 편이 더 정확합니다.

그래서 선택 기준은 보통 이렇게 나눕니다.

서비스 안정성, 무중단 운영, 장애 대응이 중요하다면
4코어 4GB 2대 + 로드밸런서 구성이 더 유리합니다.
이 방식은 서버 1대에 장애가 나더라도 나머지 1대로 서비스를 계속 받을 수 있고, 배포나 점검도 한 대씩 제외하면서 운영하기가 좋습니다. KT cloud는 로드밸런서와 네트워크 분산 구성을 제공하고, 공식 안내에서도 서버 부하를 분산해 운영 상태를 기준으로 트래픽을 분배하는 구조를 소개하고 있습니다. 또한 KT cloud는 멀티 AZ, 로드밸런서, 오토스케일링 같은 확장형 구성을 함께 안내하고 있어, 서비스가 커질수록 다중 서버 구조가 더 자연스럽습니다.

반대로 아직 트래픽이 크지 않고, 비용과 단순한 운영이 더 중요하다면
8코어 8GB 단일 서버가 더 나을 수도 있습니다.
같은 총합 스펙처럼 보여도 2대로 나누면 OS, 웹서버, PHP-FPM, 캐시 등이 각각 메모리를 따로 사용하므로, 단일 서버가 관리 측면에서는 더 단순합니다. 다만 단일 서버는 장애가 발생하면 전체 서비스가 바로 중단되는 단일 장애점(SPOF) 이 되기 때문에, 운영 리스크는 더 큽니다. KT cloud도 공식적으로 고가용성과 장애 대응 측면의 구성을 별도로 안내하고 있습니다.

제 기준으로 정리하면 이렇습니다.

  • 상용 서비스 / 장애 허용이 어려움 / 배포 중 무중단이 중요함4코어 4GB 2대 + 로드밸런서

  • 초기 서비스 / 내부 시스템 / 트래픽이 아직 적음 / 예산과 단순 운영이 우선8코어 8GB 단일 서버

즉, 이 문제는 PHP가 멀티스레드냐 아니냐보다,
**“단일 장애점을 감수할 것인가, 아니면 이중화와 운영 안정성을 가져갈 것인가”**의 문제에 더 가깝습니다.
성능만 보면 단일 8코어도 충분히 괜찮을 수 있지만, 운영 안정성까지 고려하면 2대 + 로드밸런서 구성이 더 좋은 선택인 경우가 많습니다. 그리고 실제 성능은 PHP 자체보다도 PHP-FPM worker 수, DB 병목, 세션 저장 방식, OPcache, nginx/apache 설정에 더 크게 영향을 받는 경우가 많으니, 가능하면 현재 병목이 CPU인지 메모리인지 DB인지 먼저 확인해 보시는 것도 좋습니다. PHP-FPM은 상태 페이지를 통해 accepted connections, listen queue, process manager 상태 등을 확인할 수 있습니다.

참고 사이트: www.cbalist.com