I agree that we should stick to some sort of naming convention. Personally I prefer to keep the "metron" identifier and alter deployment so that it matches the others; metron-deployment.
- metron-deployment - metron-streaming - metron-ui - ... On Fri, Apr 8, 2016 at 4:46 PM, Ryan Merriman <[email protected]> wrote: > All, > > I would like to propose a review and refactor of the current project > organization within Metron. Much of the way the legacy code was organized > does not make sense anymore and could be designed so that it is easier to > navigate and understand. Our test coverage has increased substantially so > I believe we can do this with confidence. > > First off, I think we should agree on a naming convention. I see some > projects (YARN and Storm for example) that prepend the sub-project with the > name of the top-level project (storm-core for example). Metron also > currently does this (Metron-Common). I think that's fine, although in the > case of Metron, I feel like having "Metron" prepended is redundant. > Regardless of whether we decide to stick with that approach, I propose that > project names be uniform and lowercase. For example, under these > assumptions "Metron-Common" would change to "common". > > The first level of organization makes sense to me. Only change I would > make would be to project names: > > * deployment > * streaming > * ui > > Or if we want to keep metron in project names: > > * metron-deployment > * metron-streaming > * metron-ui > > For now I don't see any changes necessary in deployment or ui > organization. I see the streaming project structure primarily driven by 2 > things: the Maven dependency tree and deployment targets. For example, > solr and elasticsearch code should be separated (because their dependency > on lucene conflicts) but both will depend on common enrichment code. Also, > now that parser, enrichment and pcap topologies are separate, code for > those topologies will be deployed as separate jars. No reason to include > parser code in enrichment topologies and vice-versa. Any other > considerations I'm missing? > > With that being said, here is my initial proposal: > > * common - Any common code that all topologies depend on > (configuration classes, generic writers for example). No dependencies on > other Metron projects. > * test - Contains utilities for writing unit tests, sample configs and > sample data. Will depend on common. > * integration-test - Contains utilities and classes needed to run our > integration tests (in memory components for example). Will depend on > common and test. > * dataload - Contains all code related to data loading. Will also > include any property files needed and integration tests. Will depend on > common, test (test scope), and integration-test (test scope). > * parser - All code specific to the parser topologies. Would also > include scripts, property files, flux files and parser topology integration > tests. This project will depend on common, test (test scope), and > integration-testing (test scope). > * enrichment - All code specific to the enrichment topologies (except > solr and elasticsearch). Would also include scripts, property files, flux > files and enrichment topology integration tests. This project will depend > on common, test (test scope), and integration-test (test scope). > * elasticsearch - All Elasticsearch related code. Will depend on > enrichment. > * solr - All Solr related code. Will depend on enrichment. > * pcap - All code specific to the topology dedicated to pcap. Would > also include scripts, property files, flux files and pcap integration > test. This project will depend on common, test (test scope) and > integration-test (test scope). > * api - This will serve as a generic replacement for > Metron-Pcap_Service. Will contain all code to build a Metron web service > middle layer that can expose APIs through REST or other client protocols. > Could possibly depend on all other projects or separated further if version > conflicts arise (separate api projects for solr and elasticsearch for > example). > > Looking forward to hearing everyone's feedback and great ideas. > > Ryan Merriman > -- Nick Allen <[email protected]>
