You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Ismael Juma (Jira)" <ji...@apache.org> on 2023/01/04 09:09:00 UTC

[jira] [Comment Edited] (KAFKA-14524) Modularize `core` monolith

    [ https://issues.apache.org/jira/browse/KAFKA-14524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17654358#comment-17654358 ] 

Ismael Juma edited comment on KAFKA-14524 at 1/4/23 9:08 AM:
-------------------------------------------------------------

I disagree that the risk is high. We have already done this once before (both the protocol layer and the record layer were converted to Java when the Java clients were introduced) and the evidence shows that project can make this type of change with minimal negative impact (our extensive tests help a lot).

I am deeply familiar with the low level details of both Java and Scala and I also don't foresee any issue regarding the bytecode translation you raised.


was (Author: ijuma):
I disagree that the risk is high. We have already done this once before (both the protocol layer and the record layer were converted to Java when the Java clients were introduced) and the evidence shows that project can make this type of change with minimal negative impact (our extensive tests help a lot).

 

> Modularize `core` monolith
> --------------------------
>
>                 Key: KAFKA-14524
>                 URL: https://issues.apache.org/jira/browse/KAFKA-14524
>             Project: Kafka
>          Issue Type: Improvement
>            Reporter: Ismael Juma
>            Priority: Major
>
> The `core` module has grown too large and it's time to split it into multiple modules. A much slimmer `core` module will remain in the end.
> Evidence of `core` growing too large is that it takes 1m10s to compile the main code and tests and it takes hours to run all the tests sequentially.
> As part of this effort, we should rewrite the Scala code in Java to reduce developer friction, reduce compilation time and simplify deployment (i.e. we can remove the scala version suffix from the module name). Scala may have a number of advantages over Java 8 (minimum version we support now) and Java 11 (minimum version we will support in Kafka 4.0), but a mixture of Scala and Java (as we have now) is more complex than just Java.
> Another benefit is that code dependencies will be strictly enforced, which will hopefully help ensure better abstractions.
> This pattern was started with the `tools` (but not completed), `metadata` and `raft` modules and we have (when this ticket was filed) a couple more in progress: `group-coordinator` and `storage`.
> This is an umbrella ticket and it will link to each ticket related to this goal.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)