AWS SDK for Java 2.x에서 싱글톤 서비스 클라이언트 인스턴스 사용
AWS SDK for Java 2.x의 서비스 클라이언트는 스레드에서 안전합니다. 각 서비스 클라이언트의 인스턴스 하나를 만들고 애플리케이션 전체에서 재사용할 수 있습니다. 이 접근 방식은 성능을 개선하고 리소스를 보다 효율적으로 관리합니다.
싱글톤 서비스 클라이언트의 이점
- 연결 풀링
-
서비스 클라이언트는 내부 HTTP 연결 풀을 유지합니다. 이러한 풀을 만들고 삭제하는 데는 비용이 많이 듭니다. 클라이언트를 재사용하면 이러한 풀이 요청 간에 효율적으로 공유됩니다.
- 초기화 오버헤드 감축
-
클라이언트를 만들려면 구성을 로드하고, 자격 증명을 설정하고, 내부 구성 요소를 초기화해야 합니다. 싱글톤 인스턴스는 이러한 오버헤드를 없앱니다.
- 리소스 활용 향상
-
싱글톤 클라이언트는 많은 클라이언트 인스턴스를 만들 때 발생할 수 있는 리소스 소진을 방지합니다.
싱글톤 서비스 클라이언트 만들기 및 사용
다음 예제 코드에서는 싱글톤 서비스 클라이언트를 만들고 사용하는 방법을 보여줍니다.
// Create one instance and use it throughout the application. public class ServiceClientSource { private static final S3Client s3Client = S3Client.create(); public static S3Client getS3Client() { return s3Client; } }
각 작업에 대해 새 클라이언트를 만들지 않습니다.
// This approach creates unnecessary overhead. public void badExample() { try (S3Client s3 = S3Client.create()) { s3.listBuckets(); } }
중요 고려 사항
-
서비스 클라이언트는 스레드에서 안전합니다. 여러 스레드에서 안전하게 공유할 수 있습니다.
-
애플리케이션이 종료되거나 클라이언트가 더 이상 필요하지 않은 경우에만 클라이언트를 닫습니다. 애플리케이션 수준에서
client.close()리소스 또는 try-with-resources를 사용합니다. -
리전 또는 자격 증명 등의 다른 구성이 필요한 경우 각 구성에 대해 별도의 싱글톤 인스턴스를 만듭니다.
Spring 등의 종속성 주입 프레임워크를 사용하는 경우 서비스 클라이언트를 싱글톤 bean으로 구성합니다. 이렇게 하면 적절하게 수명 주기를 관리할 수 있습니다.