한대의 서버를 최대한 능력치로 끌어올리는 방법
서버 한대에서 서비스를 하고자 할 때 보통 최대한 능력으로 사용하지 않는다.
이런 서버를 여러대 운영하다 보면 비효율적이란 생각이 든다.
X86 서버 한대에 웹서비스를 운영한 경험이 있다.
1초에 한번씩 API를 호출하는 안드로이드 앱이 6천대 정도가 실행되는 환경이었다.
서버는 단 한대....,
보안 때문에 비용 때문에 각각의 이유로....
그러한 서비스를 받아줄 서버는 X86 서버 한대 뿐이었다.
일단 API 서비스를 만들었다.
경량웹서비스인 Perfect 웹 프레임워크를 이용해서 만들었다.
스위프트 언어를 사용할 수 있어서 고차함수를 사용하면 아무래도 서비스를 좀 더 효율적으로 만들 수 있는 장점이 있다.
그리고 아이폰 개발자에게 좀 더 쉽게 다가갈 수 있었다.
또한 많이 사용하는 프레임워크가 아니라 보안에 우수한 장점이 있다.
웹서비스를 포트로 여러개를 만들어서 컴파일 했다.
web_perfect_8100, web_perfect_8101,....
이런 식으로... 필요한 서비스를 확장시켰다.
그리고 서버에 haproxy 를 설치했다.
외부에서 접속하는 것은 443 포트만 열었으며 나머지는 닫았다.
haproxy 설정에서 각 서비스를 체크해서 분기하도록 설정했다.
서버의 상태를 보면서 이 서비스를 확장시켰다.
최대한 사용하도록 했더니 한대로 서비스를 해도 충분했다.
6천대가 사용하는데 동시접속은 거의 1천대 정도 되었으며 세션은 항상 10만개 정도 붙어 있었다.
그 이상 더 늘릴 수 있는데 못한 것은
데이터베이스 서버가 그 이상을 늘렸을 경우 응답속도가 급격히 저하되었다.
다음에 시간이 되면 데이터베이스 최적화한 경험을 이야기 해볼까 한다.
댓글
댓글 쓰기