programing

테스트 컨테이너, mariadb, 샤딩 구 및 플라이웨이

coolbiz 2023. 7. 29. 13:09
반응형

테스트 컨테이너, mariadb, 샤딩 구 및 플라이웨이

테스트 컨테이너, mariadb, 샤딩스피어 및 플라이웨이를 사용한 설정에서 통합 테스트를 설정하는 방법에 영감을 줄 수 있는 몇 가지 정말 좋은 예를 찾고 있습니다.

3개의 샤드가 필요하기 때문에 다음과 같이 각 샤드에 하나씩, 3개의 다른 데이터 소스를 초기화해야 할 것 같습니다.

spring:
  config:
    activate:
      on-profile: test
  shardingsphere:
    datasource:
      names: test-api-1, test-api-2, test-api-3,
      test-api-1:
        type: org.apache.commons.dbcp2.BasicDataSource
        driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
        url: jdbc:tc:mariadb:10.6.7:///
        validationQuery: /* ping */ select 1
        name: testapi01
        username: root
        password: root1234
      test-api-2:
        type: org.apache.commons.dbcp2.BasicDataSource
        driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
        url: jdbc:tc:mariadb:10.6.7:///
        validationQuery: /* ping */ select 1
        name: testapi02
        username: root
        password: root1234
      test-api-3:
        type: org.apache.commons.dbcp2.BasicDataSource
        driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
        url: jdbc:tc:mariadb:10.6.7:///
        validationQuery: /* ping */ select 1
        name: testapi03
        username: root
        password: root1234

제가 이해할 수 없는 것은 플라이웨이를 제대로 구성하는 방법입니다.결론적으로, 저는 저를 올바른 방향으로 인도할 수 있는 몇 가지 좋은 실제 사례를 찾고 있습니다.또한 위의 가정이 틀리면 언제든지 저를 수정해주세요.

지금까지 단일 데이터 소스를 기반으로 통합 테스트를 실행해 왔습니다. 데이터베이스 마이그레이션과 같은 운영 환경에서 테스트를 수행하는 것이 주요 초점이었습니다.하지만 하드 선택을 변경하는 실험을 할 때는 여러 개의 하드도 테스트해야 합니다.

사실, 두 가지 방법이 있습니다.

먼저 flyway와 함께 shardingsphere-jdbc를 사용하는 경우 별도로 구성할 수 있습니다.즉, 여기서는 3개의 DB를 샤딩에 사용하고 이 3개의 DB와 모든 샤딩 실제 테이블을 플라이웨이에 알려주어야 합니다.샤딩구-jdbc가 플라이웨이의 변경 사항을 인식할 수 없기 때문에 이 방법으로 드리프트 문제가 발생합니다.

둘째, 샤딩구 프록시를 사용하여 마이그레이션을 위한 샤딩 및 플라이웨이를 수행합니다.샤딩구-proxy는 샤딩구-jdbc와 동일한 기능을 공유하고 다음과 같이 작동하기 때문입니다.database server따라서 ShardingSphere-Proxy [1]를 사용하여 많은 논리 분할 테이블이 있는 논리 분할 데이터베이스를 생성할 수 있습니다.그런 다음 이 논리 DB와 샤딩 테이블, 사용자 이름 및 암호로 이동 경로를 알려줍니다.

flyway.user=shardingsphere-proxy-username # Defined in a server.yaml file.
flyway.password=shardingsphere-proxy-databasePassword # Defined in a server.yaml file.
flyway.schemas=shardingsphere-proxy-schemaName # Defined in a config-sharding.yaml file.

[1] https://shardingsphere.apache.org/document/5.2.1/en/user-manual/shardingsphere-proxy/startup/

언급URL : https://stackoverflow.com/questions/74517819/testcontainers-mariadb-shardingsphere-and-flyway

반응형