You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This theme is for collecting requirements and tasks to get the Arconia Dev Services ready for the 1.0 release. Separate issues will be used to track the actual implementation work. We'll use this theme to gather requirements and discuss ideas. For starters, I'm adding details here, but we'll progressively move them to dedicated issues.
General
Consider if each Dev Service module should be marked as a development tool by adding Spring-Boot-Jar-Type: development-tool to the MANIFEST.MF file. See spring-projects/spring-boot@27715de for more context.
Service connection beans in Spring Boot can only be configured via annotations, such as @RestartScope. The new BeanRegistrar API doesn't support registering them programmatically. The permutations of different possible annotations on a service connection bean leads to cumbersome auto-configuration. Currently, each Dev Service comes with two different configurations: restart and no-restart. If we wanted to support TLS configuration, we would end up with many different configurations as multiple annotations are used by Spring Boot for that purpose (@Ssl, @JksKeyStore, @JksTrustStore, @PemKeyStore and @PemTrustStore). Explore options to overcome this challenge. Handled in [Dev Services] Consolidate bean registration #160 and df1574d
Lots of configurations are duplicated across all Dev Services module. That should be consolidated for the sake of clarity and maintenance. Handled in [Dev Services] Consolidate bean registration #160
Lots of test code is duplicated across all Dev Services module. That should be consolidated for the sake of clarity and maintenance. Handled in 1f53561
Testcontainers
Each Arconia Dev Services module should define an Arconia subclass of the Container class used in that module to ensure there's a unique API for each service (e.g. ArconiaRabbitMQContainer). Currently, some of them use GenericContainer (like Redis and Phoenix), which limits customisations. This change is for enabling use cases such as allowing bean override (using the @ConditionalOnMissingBean annotation in the auto-configuration) and logging information like the URLs where certain UIs are made available. Handled in [Dev Services] Consolidate bean registration #160.
Consider if Dev Services should support TLS connection between the application and the container. Spring Boot introduced TLS support for service connections (see Consider how to provide SSL from ConnectionDetails spring-projects/spring-boot#41137) specifically due to issues with the Elasticsearch Testcontainer (see Improve Elasticsearch ServiceConnection spring-projects/spring-boot#35926). Even though there is support on the Spring Boot side for the client connection and we might be able to support that, the container itself also needs to be customised internally with the TLS certificates. Only Elasticsearch comes built-in with this support, from what I understand. For the rest, it's manual, explicit configuration which differs for each container image. Dev Services follow the principles of Spring Boot auto-configuration: sensible defaults out-of-the-box, but with the possibility to override if needed. So it might be acceptable to let users interested in TLS between app and dev services to define their own service connection bean, as documented in https://docs.spring.io/spring-boot/reference/testing/testcontainers.html#testing.testcontainers.service-connections. Further investigation is needed for this point before proceeding.
The Reusable Containers feature is a bit confusing. Refactor it so that it can be controlled via a boolean value. When true, the containers will be made reusable only when the application runs in dev mode. Handled in df1574d
Configurable resource mappings (classpath/file system resources copied into a container, read-only) c281d37
Description
This theme is for collecting requirements and tasks to get the Arconia Dev Services ready for the 1.0 release. Separate issues will be used to track the actual implementation work. We'll use this theme to gather requirements and discuss ideas. For starters, I'm adding details here, but we'll progressively move them to dedicated issues.
General
Spring-Boot-Jar-Type: development-toolto theMANIFEST.MFfile. See spring-projects/spring-boot@27715de for more context.@RestartScope. The new BeanRegistrar API doesn't support registering them programmatically. The permutations of different possible annotations on a service connection bean leads to cumbersome auto-configuration. Currently, each Dev Service comes with two different configurations: restart and no-restart. If we wanted to support TLS configuration, we would end up with many different configurations as multiple annotations are used by Spring Boot for that purpose (@Ssl,@JksKeyStore,@JksTrustStore,@PemKeyStoreand@PemTrustStore). Explore options to overcome this challenge. Handled in [Dev Services] Consolidate bean registration #160 and df1574dTestcontainers
Containerclass used in that module to ensure there's a unique API for each service (e.g.ArconiaRabbitMQContainer). Currently, some of them useGenericContainer(like Redis and Phoenix), which limits customisations. This change is for enabling use cases such as allowing bean override (using the@ConditionalOnMissingBeanannotation in the auto-configuration) and logging information like the URLs where certain UIs are made available. Handled in [Dev Services] Consolidate bean registration #160.