Hi Eric,

Answers to your questions are as follows


>
>
>
> *Can I, or is it recommended to, package multiple jobs as 1 deploymentwith
> 1 properties file or keep each app separated?  Based on thedocumentation,
> it appears to support 1 app/job within a singleconfiguration as there is no
> mechanism to assign multiple app classes andgiven each a name unless I am
> mistaken*
>

 *app.class* is a single valued configuration and your understanding about
it based on the documentation is correct.


>
>
> *If only 1 app per config+deployment, what is the best way to
> handlerequirement #3 - common/shared system services as there is no app or
> jobper say, I just need to specify the streams and output system
> (ieorg.apache.samza.system.hdfs.writer*
>

There are couple of options to achieve your #3 requirement.

   1. If there is enough commonality between your jobs, you could have one
   application class that describes the logic and have the different
   configurations to modify the behavior of the application logic. This does
   come with some of the following considerations
      1. Your deployment system needs to support deploying the same
      application with different configs.
      2. Potential duplication of configuration if you configuration system
      doesn't support hierarchies and overrides.
      3. Potentially unmanageable for evolution, since the change in
      application affects multiple jobs and requires extensive testing across
      different configurations.
   2. You could potentially have libraries to perform some piece of
   business logic and have your different jobs leverage them using
   composition. Some things to consider with this option
   1. Your application and configuration stay isolated.
      2. You could still leverage some of the common configurations if your
      configuration system supports hierarchies and overrides
      3. Alleviates concerns over evolution and testing as long as the
      changes are application specific.


I am still unclear about the second part of your 2nd question.
Do you mean to say all your jobs consume from same sources and write to
sources and only your processing logic is different?


> *common/shared system services as there is no app or jobper say, I just
> need to specify the streams and output system*


Also, I am not sure I follow what do you mean by "*there is no app or job"*.
You still have 1 app per config + deployment, right?

Thanks,
Bharath

On Thu, Oct 10, 2019 at 9:46 AM Eric Shieh <datosl...@gmail.com> wrote:

> Hi,
>
> I am new to Samza, I am evaluating Samza as the backbone for my streaming
> CEP requirement.  I have:
>
> 1. Multiple data enrichment and ETL jobs
> 2. Multiple domain specific CEP rulesets
> 3. Common/shared system services like consuming topics/streams and
> persisting the messages in ElasticSearch and HDFS.
>
> My questions are:
>
> 1. Can I, or is it recommended to, package multiple jobs as 1 deployment
> with 1 properties file or keep each app separated?  Based on the
> documentation, it appears to support 1 app/job within a single
> configuration as there is no mechanism to assign multiple app classes and
> given each a name unless I am mistaken.
> 2. If only 1 app per config+deployment, what is the best way to handle
> requirement #3 - common/shared system services as there is no app or job
> per say, I just need to specify the streams and output system (ie
> org.apache.samza.system.hdfs.writer.
> BinarySequenceFileHdfsWriter or
>
> org.apache.samza.system.elasticsearch.indexrequest.DefaultIndexRequestFactory).
> Given it's a common shared system service not tied to specific jobs, can it
> be deployed without an app?
>
> Thank you in advance for your help, looking forward to learning more about
> Samza and developing this critical feature using Samza!
>
> Regards,
>
> Eric
>

Reply via email to