안녕하세요!
장르를 넘나드는 칼럼을 작성하다보니 저도 컨셉 하나를 딱 잡아야 할 것 같아서 저는 개발관련 분야로 가보려고 합니다.
특히, 개발자들은 개발에만 전념하기때문에 개발 외적의 인프라를 잘 모르는 경우가 많습니다.
저는 개발에 관련된 부분 외에도 개발자가 신경써서 개발해야 할 부분까지 혹은 아키텍쳐까지 넘나드는 칼럼을 작성해보도록 하겠습니다.
일단, 제가 만든 플랫폼을 토대로 기술적인 부분을 큰 그림으로 설명을 해보자 합니다.
가장 먼저 제가 운영중인 서버를 소개합니다.
총 2개의 서버가 있습니다.
클라우드 서버를 활용하고 있으며 개당 월마다 적지않는 비용을 지불하고 있습니다.
물론 서버비용은 서비스를 통해 충당하고 있죠^^
가장 먼저 데이터서버입니다.
데이터서버는 DB서버에 들어갈 모든 데이터처리를 합니다.
그렇기때문에 하는 일이 많고 규모가 적은 서비스를 운용함에도 종합적으로 보면 하루 1천만건 이상의 데이터를 수집하고 가공하는 역할을 합니다.
아키텍쳐를 보시면 어떤 역할을 하고 있는지 아실 수 있을겁니다.
두번째로 DB서버입니다.
웹서버는 데이터서버와 사이좋게 하나씩 나누어가졌습니다.
DB가 먹는 부하가 적지 않으므로 DB에 몰빵했습니다.
이렇게 저는 DB 메인서버와 데이터서버를 분리하여 사용합니다.
DB 클러스터링도 고민해봤지만 분산하는것보다 확실히 하는일을 나누는게 낫다고 판단했습니다.
nmon을 통해 리소스 사용률을 보실 수 있습니다.
DB서버는 죽지않고 정말 제대로 돌아갑니다.
아주 디자인이 잘 되었다고 생각합니다.
데이터서버는 최근 사용자도 많아지고 데이터를 처리하는 기능이 많아지면서 쓰레드를 정말 많이 사용합니다.
기존에 증권쪽만 해도 증권데이터와 뉴스데이터만 처리하는데 사용되는 쓰레드도 많은데 가상화폐 실시간데이터를 모두 쓰레드로 처리하려고 하니 컨텍스트스위칭 빈도가 높아질 수 밖에 없었습니다.
이런경우를 설명하자면요 CPU Core는 사용률이 적은데 짧은 작업을 하는 job들이 많아서 CPU를 제대로 못쓰고 있는 경우입니다.
저는 패턴을 바꿔야 했습니다.
그래서 이러한 해결책을 만들었습니다.
앞으로 새로운 관점에서의 DEV 칼럼들을 작성해보겠습니다.
감사합니다.