🧐 대용량 트래픽 발생 시 어떻게 대응해야 하나요?
대용량 트래픽은 웹사이트나 애플리케이션에 대한 갑작스러운 수요 증가를 의미한다.
이러한 대용량 트래픽으로부터 사용자 경험을 보호하기 위해 대응 조치가 필요하다.
1. 트래픽 모니터링
- 트래픽을 분석하고 모니터링한다.
- 어떤 문제가 어디서 발생하는지 파악할 수 있다.
2. 스케일 업 / 스케일 아웃
- 서버 자원을 추가하여 트래픽 부화를 분산 시킨다.
3 캐싱 사용하기
- 정적 콘텍츠를 캐싱하여 서버의 부하를 줄이고 응답 속도를 향상 시킨다. (ex CDN, Nginx)
4. 클라우드 서비스 활용
- 클라우드 기반 인프라를 사용하여 필요에 따라 서버를 신속하게 추가하거나 축소할 수 있다.
5. 부하 테스트
- 시스템이 어느 정도 트래픽을 견딜 수 있는지 확인해보고 대비할 수 있다.
6. 로드 밸런싱
- 로드 밸런서를 사용하여 트래픽을 여러 서버로 분산 시킬 수 있다.
이를 통해 단일 서버에 가해지는 부하를 줄일 수 있으며, 가용성도 향상된다.
🧐 ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?
ORM(Object-Relational Mapping)을 사용하면 일반적으로 쿼리 작성과 데이터베이스와의 상호 작용이 훨씬 편리해지지만, 복잡한 쿼리의 경우에는 ORM만으로는 처리하기 어려울 수 있습니다. 이러한 상황에서 다음과 같은 방법들을 고려해 볼 수 있습니다.
1. Native SQL사용: ORM을 사용하면서도 필요한 경우에는 네이티브 SQL을 직접 작성하여 실행할 수 있습니다. 이를 통해 ORM의 제한 사항을 극복하면서도 필요한 복잡한 쿼리를 실행할 수 있습니다. 그러나 네이티브 SQL을 사용할 때는 ORM이 관리하는 데이터와 일관성을 유지하기 위해 주의해야 합니다
2. ORM의 Query Builder 사용: 대부분의 ORM은 Query Builder를 제공하여 SQL 쿼리를 동적으로 작성할 수 있는 기능을 제공합니다. 이를 통해 복잡한 쿼리를 더욱 간단하게 작성할 수 있습니다
3.Stored Procedure 사용: 저장 프로시저는 데이터베이스에 미리 정의된 SQL 쿼리를 저장하는 방법을 제공합니다. 복잡한 로직이나 연산을 데이터베이스 측에서 처리하고자 할 때 유용합니다. ORM과 함께 사용할 수 있지만, 데이터베이스 종속성을 증가시킬 수 있으므로 주의가 필요합니다.
4. 인덱스 및 성능 튜닝: 데이터베이스의 쿼리 성능을 향상시키기 위해 인덱스를 추가하고 쿼리를 튜닝할 수 있습니다. 복잡한 쿼리의 경우 성능 튜닝이 중요하며, ORM이 생성하는 쿼리의 실행 계획을 분석하여 최적화할 수 있습니다
5.ORM의 성능 향상 기능 활용: 일부 ORM은 성능 향상을 위해 캐싱, 지연 로딩 등의 기능을 제공합니다. 이러한 기능을 활용하여 복잡한 쿼리의 부하를 줄일 수 있습니다
6. 데이터베이스 샤딩: 데이터베이스 샤딩은 대규모 데이터베이스를 분할하여 처리 부하를 분산시키는 방법입니다. 복잡한 쿼리에 대한 성능을 향상시키는데 도움이 될 수 있습니다.
'TIL' 카테고리의 다른 글
[TIL] 면접카타 6일차 (1) | 2024.04.04 |
---|---|
[TIL] 면접카타 5일차 (0) | 2024.04.02 |
[TIL] jest.spyOn() 사용법 (0) | 2024.04.02 |
[TIL] 면접카타 3일차 (0) | 2024.03.29 |
[TIL] 면접카타 2일차 (0) | 2024.03.28 |
댓글