[Study] Server Performance Tuning

조혜인·2022년 8월 24일
0
post-thumbnail

서버를 구현하기 위해서는 가장 따져야할 것이 서버 성능 개선일 것이다. 이제 막 서버에 발을 담그기 시작하는 어린이 개발자로써 너무 좋은 글을 발견하여 공유해볼까 한다. 성능 엔지니어링에 대한 접근 방법을 a-z까지 정리해놓으셨는데 정말 딱 각 잡고 보기 좋다.

성능 엔지니어링 대한 접근 방법-조대협의 블로그

나는 간단하게 개선에 대해서만 정리해보도록 하겠다.

📌 Server Performance Tuning

  • Server Performance Tuning이란 서버 성능 개선이라고 보면 된다. 개선을 하기 위해서는 해당 부분에 대한 전문적인 지식을 필요로 하지만 개선 방법은 거의 비슷한다.

문제의 정의

  • "서버가 느려요"라고 하는 것 보다 "성능 목표가 350TPS에 1초 내의 응답 시간인데, 현재 60TPS에 5초의 응답 시간에 WAS의 CPU 점유율이 100%입니다."(..🫢 아직은 이해할 수 없는 단어들 투성이이다.)와 같이 명확하게 정의해야하며 문제점이 재현 가능해야한다. 테스트 환경이 잘못되었거나 외부적인 요인에의해 결과가 그 때마다 다르게 나올 수 있기 때문에 재현 가능성을 매우 중요하다.

Break down

  • 문제가 발생하는 부분이 어떤 부분인지를 판단해야한다. 시스템은 로드밸런서, 미들웨어, DB 등 여러 구간에서 문제가 발생할 수 있따. 따라서 성능 저하의 원인이 정확하게 어느 부분인지를 인지하려면, 먼저 성능 시나리오가 어떤 컴퓨넌트를 거치는지를 명확하게 할 필요가 있다. 이 과정을 break down이라고 한다. 전체 구간 중 어느 구간이 문제인지를 명확히 한다.

Isolate

  • 다른 요인들의 발생을 막기 위하여 문제가 되는 구간을 다른 요인들과 분리시킨다. 물론 완벽한 분리는 어렵지만 관련있는 연결성을 끊고 해당 기능의 모형을 만들어 넣어준 후 테스트 하는 것이 좋다.

Narrow down

  • 발생한 문제를 고립시켰으면 근본적인 문제를 찾기위해 문제의 원인을 파내려간다. 코드에 디버깅을 하며 문제의 원인을 분석하는 과정을 두고 Narrow down이라고 한다. 이 과정은 분석을 위한 여러가지 기법이나 도구들을 사용해야하고, 발생되는 현상을 이해하기 위해서 해당 솔루션이나 기술 분야에 대한 전문성은 필수적으로 필요하다.

Bolttleneck 발견

  • Narrow down을 하여 문제를 찾아가다보면 병목의 원인이 되는 근본적인 문제가 판별된다.

해결

  • 간단한 문제일 수도 있지만 근본적인 솔루션 특성이나 설계 상의 오류로 인한 문제가 발생하는 경우도 있다. 하드웨어를 늘려서 해결하는 방법도 있지만, 비즈니스 시나리오 자체를 바꾸거나 UX 관점에서 해결하는 방법도 고려할 수 있다.

실제로 업무에 투입된 후 위와 같이 문제가 발생했다면 이 개선 방안을 잘 기억해두고 적용할 수 있어야겠다. 얼핏보면 당연해보일 수 있지만 당장 맞딱뜨린다고 하면 허둥지둥 물음표만 머릿 속에 가득할 것이다. 이외에도 잘 정리된 부분들을 보면서 내껄로 만들 수 있어야겠다.

profile
코딩은 역시 재밌군

0개의 댓글