Skip to content

Latest commit

 

History

History
80 lines (77 loc) · 3.88 KB

File metadata and controls

80 lines (77 loc) · 3.88 KB

In progress:

  • Measure performance difference between AOP, BPP(CGLib, DynamicProxy), Micrometer Timed and native
  • play with the openrewrite library

TODO:

  • add kafka-gitops approach to create topics and acl kafka-gitops
  • use the best-practise for topic name convention dev.io
  • Kafka ssl via SslBundles
  • spring web via https with self-signed certificate
  • QueryDSL or jooq
  • retryable schema registry (it should be on the main source soon confluentinc/schema-registry#3424)
  • id "nebula.integtest" version "8.2.0" TODO Explore this plugin for integration tests
  • add filtering fields to logger
  • add http logging library(maybe from Zalando) instead of custom implementation
  • Observability:
    • Grafana as logs collector
    • Grafana as traces collector
  • move testcontainers to separate spring profile
  • use embedded external dependencies with an embedded spring profile for local development and tests
  • use spun up services for faster local testing
  • investigate and apply @TestBean
  • Consider the replacement for the archived avro plugin (com.github.davidmc24.gradle.plugin.avro)
  • Resolve the warning:
       org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport - Spring Data JDBC - Could not safely identify 
    store assignment for repository candidate interface com.github.jenkaby.persistance.repository.MessageLogRepository;
    If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations:
     org.springframework.data.relational.core.mapping.Table.
    
    Bean 'telemetryConfig' of type [com.github.jenkaby.config.telemetry.TelemetryConfig$$SpringCGLIB$$0] is not eligible 
    for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor
     [recordLatencyBeanPostProcessorDynamicProxy] is declared through a non-static factory method on that class; consider declaring it as static instead.
    
  • Investigate why do we need spring data and spring jpa simultaneously ?
  • Add docker image caching to GitHub CI for faster builds

Implemented:

  • gradle
    • multi projects structure
    • version catalog
  • Testing
    • postgres testcontainers
    • slice tests (JPA, WebMvc)
    • component tests via Cucumber
    • use the Gatling testing framework for performance tests
  • Kafka:
    • Kafka consumers
    • string SerDe
    • JSON SerDe
    • Avro schemas
    • schema registry
    • Avro SerDe
    • skip retrying message consuming for specific exception
    • filter Kafka message by field or header value
  • Spring general features:
    • graceful shutdown. Note
    • AOP (around method execution and @annotation)
    • Bean Post Processor(BPP)(CGLib proxy type)
    • Bean Post Processor(BPP)(JDK Dynamic proxy type)
    • @Timed Micrometer
  • CI/CD:
    • Add profile to docker-compose file to easily start only minimal number of services. Note
    • github CI
    • improve GitHub CI. Parallelize test executions, cache build and so on
  • AuthZ and Authn:
    • Spring Security(JWT, Basic)
    • Use Keycloak as an authentication server
    • Secure REST endpoints via roles
    • Custom method arguments resolver(see com.github.jenkaby.config.security.support.LoggedUserResolver)
  • Observability:
    • Micrometer metrics
    • Prometheus as metrics collector
    • Grafana dashboard
    • provisioning Grafana dashboard, alert-manager rules, Prometheus configurations