한대의 서버를 최대한 능력치로 끌어올리는 방법

 서버 한대에서 서비스를 하고자 할 때 보통 최대한 능력으로 사용하지 않는다.

이런 서버를 여러대 운영하다 보면 비효율적이란 생각이 든다.


X86 서버 한대에 웹서비스를 운영한 경험이 있다.

1초에 한번씩 API를 호출하는 안드로이드 앱이 6천대 정도가 실행되는 환경이었다.

서버는 단 한대....,

보안 때문에 비용 때문에 각각의 이유로....

그러한 서비스를 받아줄 서버는 X86 서버 한대 뿐이었다.


일단 API 서비스를 만들었다.

경량웹서비스인 Perfect 웹 프레임워크를 이용해서 만들었다.

스위프트 언어를 사용할 수 있어서 고차함수를 사용하면 아무래도 서비스를 좀 더 효율적으로 만들 수 있는 장점이 있다.

그리고 아이폰 개발자에게 좀 더 쉽게 다가갈 수 있었다.

또한 많이 사용하는 프레임워크가 아니라 보안에 우수한 장점이 있다.


웹서비스를 포트로 여러개를 만들어서 컴파일 했다.

web_perfect_8100, web_perfect_8101,....

이런 식으로... 필요한 서비스를 확장시켰다.


그리고 서버에 haproxy 를 설치했다.

외부에서 접속하는 것은 443 포트만 열었으며 나머지는 닫았다.

haproxy 설정에서 각 서비스를 체크해서 분기하도록 설정했다.


서버의 상태를 보면서 이 서비스를 확장시켰다.

최대한 사용하도록 했더니 한대로 서비스를 해도 충분했다.

6천대가 사용하는데 동시접속은 거의 1천대 정도 되었으며 세션은 항상 10만개 정도 붙어 있었다.

그 이상 더 늘릴 수 있는데 못한 것은

데이터베이스 서버가 그 이상을 늘렸을 경우 응답속도가 급격히 저하되었다.


다음에 시간이 되면 데이터베이스 최적화한 경험을 이야기 해볼까 한다.

댓글

이 블로그의 인기 게시물

한글 2010 에서 Ctrl + F10 누르면 특수문자 안뜰 때

아이폰에서 RFID 사용하는 방법

VCC 와 GND 는 무엇일까?