5.16 멘토와의만남

  1. 데이터베이스 최적화:
  2. 알고리즘 최적화: 비효율적인 알고리즘을 사용하는 경우, 더 효율적인 알고리즘으로 교체하여 성능을 향상시킬 수 있습니다. 예를 들어, 리스트에서 여러 번 조회하는 경우, 리스트 대신 해시맵을 사용하여 조회 시간을 줄일 수 있습니다.
  3. 캐싱: Spring은 @Cacheable 어노테이션을 사용하여 메소드의 결과를 캐시할 수 있습니다. 이는 동일한 매개변수로 메소드가 반복적으로 호출될 때 성능을 향상시킵니다.
  4. 비동기 처리: @Async 어노테이션을 사용하여 메소드를 비동기적으로 실행할 수 있습니다. 이는 CPU를 더 효율적으로 사용하며, 요청 처리 시간을 줄일 수 있습니다.
  5. HTTP 요청 최적화: 클라이언트에 데이터를 보낼 때, gzip 압축을 사용하여 데이터 크기를 줄일 수 있습니다. 또한, **@JsonView**를 사용하여 필요한 데이터만 클라이언트에게 전송할 수 있습니다.
  6. 메모리 최적화: 객체의 수명주기를 관리하여 불필요한 메모리 사용을 줄일 수 있습니다. 예를 들어, 스프링 빈의 스코프를 **singleton**에서 **prototype**으로 변경하여 메모리 누수를 방지할 수 있습니다.

시도해볼만한 부분

  1. HTTP 요청 최적화: 이는 웹 애플리케이션에서 가장 기본적인 성능 최적화 방법 중 하나입니다. 압축 기술을 사용하거나 필요한 데이터만 클라이언트에 전송하도록 JSON 뷰를 조정하는 것은 상대적으로 간단한 방법이며 성능에 큰 영향을 줄 수 있습니다.
  2. 캐싱: 캐싱은 데이터베이스 쿼리 결과나 계산 비용이 높은 연산의 결과를 저장하여 재사용하는 방법입니다. Spring에서는 @Cacheable 어노테이션을 사용하여 이를 쉽게 구현할 수 있습니다. STOMP 채팅에서는 최근 메시지를 캐시하여 빠른 재접속을 지원하거나, Kurento RTC에서는 일부 사용자 정보나 설정을 캐시하는데 사용할 수 있을 것입니다.
  3. 비동기 처리: @Async 어노테이션을 사용하여 특정 작업을 비동기적으로 처리할 수 있습니다. 이는 서버의 응답 시간을 개선하는 데 도움이 될 수 있습니다. 예를 들어, 사용자의 화상통화 기록을 데이터베이스에 비동기적으로 저장하거나, 알림을 비동기적으로 전송하는 등의 작업을 비동기로 처리할 수 있습니다.
  4. 데이터베이스 최적화: 사용하는 데이터베이스에 따라 다르지만, 일반적으로 쿼리를 개선하거나 적절한 인덱싱을 사용하여 성능을 향상시킬 수 있습니다. 이는 비교적 고급 기술이 필요하지만, 성능 향상의 효과가 큰 편입니다.
  5. 알고리즘 최적화: 이는 가장 복잡한 최적화 방법 중 하나이며, 애플리케이션의 특정 부분에서 비효율적인 알고리즘을 사용하는 경우에만 적용할 수 있습니다. 알고리즘을 최적화하려면 해당 알고리즘을 깊이 이해하고, 더 효율적인 대안을 찾아야 합니다.

각 단계는 상대적으로 낮은 난이도에서 높은 난이도로 정렬되었습니다. 하지만 각 프로젝트와 팀의 상

황에 따라 이 순서는 달라질 수 있습니다. 필요한 성능 향상의 정도와 각 단계를 구현하는 데 필요한 노력을 고려하여 최적의 방법을 선택하시는 것이 좋습니다.