본문 바로가기
개발일지/기타

모니터링의 중요성 : 성능 비교의 기회

by Peter.JH 2024. 11. 8.
728x90
반응형

 

웹 애플리케이션 개발에서 성능 최적화는 사용자 경험과 서비스 안정성에 직접적인 영향을 준다고 생각합니다. 하지만 성능을 최적화하려면 현재 시스템의 상태를 정확히 파악하는 것이 필수적입니다. 여기서 모니터링의 중요성이 부각됩니다. 최근 저의 경험을 바탕으로 모니터링이 얼마나 중요한 역할을 하는지 공유하고자 합니다.

 

상황 배경

  • 이전 상황: ASP.NET 환경에서 프론트엔드와 백엔드 로직을 모두 처리.
  • 수정된 상황: Next.js에서 NestJS 서버를 거쳐 .NET 서버로 요청이 전달되어 로직이 실행된 후 결과를 반환.

새로운 아키텍처로 전환한 후 데이터베이스에 부하가 걸리기 시작했습니다. 비효율적인 쿼리문을 찾아내고, .NET 서버로 가던 요청을 NestJS로 이전하여 개선을 시도했지만, 서버 간의 속도 차이로 인해 문제가 발생한 것인지 의문이 들었습니다. 하지만 이전 ASP.NET 서버의 성능 데이터를 모니터링하지 않아 정확한 비교가 불가능했습니다. 또한, 문제 발생 이전부터 RDS를 통해 데이터베이스에 문제가 있음을 인지하고 있었지만, 일주일 전의 데이터는 확인할 수 없어 비교할 수 없었습니다. 이 경험을 통해 지속적인 모니터링의 중요성을 절실히 느꼈습니다.

 

모니터링이 왜 중요한가?

  1. 성능 분석 및 최적화: 모니터링은 시스템의 성능 지표(CPU 사용률, 메모리 사용량, 응답 시간 등)를 수집하여 병목 현상을 식별하는 데 도움이 됩니다. 이를 통해 어떤 부분이 개선이 필요한지 명확하게 파악할 수 있습니다.
  2. 문제 해결의 근거 제공 : 문제가 발생했을 때 모니터링 데이터를 통해 원인을 정확히 진단할 수 있습니다. 이 데이터가 없다면 추측에 의존하게 되어 문제 해결에 시간이 더 소요될 수 있습니다.
  3. 변경 사항의 영향 평가 : 시스템 구조나 코드를 변경한 후 그 영향을 평가하려면 이전 상태와의 비교가 필요합니다. 모니터링 데이터는 이러한 비교를 가능하게 합니다.
  4. 예방적 조치 가능 : 실시간 모니터링을 통해 문제가 발생하기 전에 이상 징후를 감지하고 선제적으로 대응할 수 있습니다.

 

CloudWatch와 RDS를 활용한 모니터링 방법

 

현재 모니터링 도구로 AWS CloudWatchAmazon RDS를 사용하고 있습니다. 이를 효과적으로 활용하는 방법을 공유하겠습니다.

 

CloudWatch를 통한 서버 모니터링

  • 지표 수집 및 알람 설정
    •  CPU 사용률, 메모리 사용량, 네트워크 트래픽 등 중요한 지표를 모니터링하고, 임계값을 설정하여 이상 현상이 발생하면 즉시 알림을 받도록 합니다.
  • 로그 수집 및 분석
    •  CloudWatch Logs를 활용하여 애플리케이션 로그를 중앙에서 관리하고, 로그 그룹 및 스트림을 통해 오류나 예외를 신속하게 파악합니다.
  • 대시보드 구성
    •  커스텀 대시보드를 만들어 한눈에 시스템 상태를 파악할 수 있도록 합니다.

 

 

Amazon RDS를 통한 데이터베이스 모니터링

  • 성능 지표 모니터링:
    • RDS의 성능 지표(쿼리 실행 시간, 연결 수, IOPS 등)를 CloudWatch와 연동하여 모니터링합니다.
  • Enhanced Monitoring
    • RDS의 향상된 모니터링 기능을 활성화하여 OS 레벨의 세부 지표를 수집합니다.
  • 자동 스케일링 및 백업
    •  데이터베이스의 부하에 따라 자동으로 리소스를 조정하고, 정기적인 백업을 통해 데이터 손실을 방지합니다.
  • 쿼리 최적화
    •  RDS의 Performance Insights를 사용하여 느린 쿼리를 식별하고 최적화합니다.

 

 

모니터링 데이터 활용 방안

  • 성능 지표 모니터링
    • RDS의 성능 지표(쿼리 실행 시간, 연결 수, IOPS 등)를 CloudWatch와 연동하여 모니터링합니다.
  • 향상된 모니터링(Enhanced Monitoring)
    • RDS의 향상된 모니터링 기능을 활성화하여 OS 레벨의 세부 지표를 수집합니다.
  • 자동 스케일링 및 백업
    • 데이터베이스의 부하에 따라 자동으로 리소스를 조정하고, 정기적인 백업을 통해 데이터 손실을 방지합니다.
  • 쿼리 최적화
    • RDS의 Performance Insights를 사용하여 느린 쿼리를 식별하고 최적화합니다.

 

 

모니터링은 단순히 시스템 상태를 확인하는 것을 넘어, 성능 최적화와 안정성 확보를 위한 필수 도구입니다. 모니터링 데이터를 효과적으로 활용하면 문제의 원인을 정확히 파악하고, 빠르게 대응할 수 있습니다. 저의 경험을 통해 모니터링의 중요성을 다시 한번 깨달았으며, 앞으로의 프로젝트에서는 CloudWatch와 RDS를 비롯한 모니터링 도구를 철저히 도입하고 활용할 계획입니다.

728x90
반응형