Hey John,

On Wed, Feb 7, 2018 at 8:23 PM, John Frizelle <jfrizell@redhat.com> wrote:
Hi Matthias,

Can we have a discussion about this before it progresses too far.

sure - that's why I am sending mails here, for discussions :) 
 

I have some fairly serious concerns [1] about the resource requirements needed to run a Kafka deployment in a production environment and am not convinced that putting Kafka into the mix here is the right approach.

I don't think we need to worry about the mentioned linkedin scenario. I honestly doubt we will ever need that, nor on-prem, neither on the SaaS world 
 
Are we over complicating push to optimise for the corner cases here?

I don't think so. I see the Push as a _system_ space deployement, where a few nodes of Kafka would be OK. Especially since it can be used by other services as well (e.g. analytics etc).
 
What would a "Starter" deployment look like in terms of resource usage?


I've used the EnMasse template for Openshift w/, and had three nodes for Kafka and Zookeeper. Kafka was around 600 MB (per node), and ZK around 400 (when I turned on Openshift metrics) 

 
Would it fit in an OpenShift Online free tier?

Dunno  - I don't have an account there.


That said - the current UPS 1.2.x (with decoupled Keycloak) works fine - especially w/ the fixes that we did last year introducing Netty for network comms. to APNs. - but it does need 1.7 GB RAM, and scaling the busy parts (e.g. if only APNs traffic goes up) is not so simple, or even impossible. 

The main work, on Kafka, was done last year during GSOC. My POC work here was really just going on top and introducing smaller services, like the APNs pod (150 MB RAM) or the WildFly-Swarm based "CORE" module.

I am fine to pause that POC, and focus more on features (E.g. larger payloads), and get a proposal in based on features.  

 

Cheers,
John.




--
John Frizelle
Chief Architect, Red Hat Mobile
Consulting Engineer

twitter: @johnfriz
skype: john_frizelle




On 7 February 2018 at 18:54, Matthias Wessendorf <matzew@apache.org> wrote:
That said, the HTTP API for device registration and sending should stay compatible 

On Wed, Feb 7, 2018 at 7:43 PM, Matthias Wessendorf <matzew@apache.org> wrote:
Question :-) 

On Wed, Feb 7, 2018 at 8:15 AM, Matthias Wessendorf <matzew@apache.org> wrote:
with the POC for agents done (APNs), I will continue the work, to shrink the "CORE" part of the UPS, using Swarm, JPA, CDI and JAX-RS fractions

speaking of the "CORE" part ... I think... the simplified push models will allow us, to also come up w/ a different and simpler data model. 

So... Let's say the UPS2 would be a bit different (POC in progress), I think the really important bit is that the "important" data (e.g PushApps/Variants and, of course, devices) can be exported from old DB and 'transformed' to new DB.
Sounds good?

Our current analytics, is something, I'd like to revisit. But not 100% sure yet, but I do see some option, based on lessons learned. 
If these data bits are not portable, I'd not cry a river - compared to a case where "device metadata" would be lost (which is IMO a no-go)

Thoughts ?
-M

 

On Tue, Feb 6, 2018 at 4:18 PM, Matthias Wessendorf <matzew@apache.org> wrote:
here is the proposal:


On Mon, Feb 5, 2018 at 8:05 PM, Matthias Wessendorf <matzew@apache.org> wrote:
Hi, Dave

thanks for the feedback

On Mon, Feb 5, 2018 at 6:16 PM, David Martin <davmarti@redhat.com> wrote:
For RHMAP 3/4, the Studio was originally part of a single jar/war
(millicore). It did have a jsp for delivering the index.html (which
wrote a bunch of inline javascript)

The studio was then decoupled from the war file as a separate war
(fh-studio). However, it still had an index.jsp, but called back to
the 'core' to get some of the info needed for that.

This was eventually refactored into a node.js express app (fh-ngui)
and deployed completely separately. It still made calls back to the
core to get some config/user info.

The main benefit I found was the UI could be progressed at a faster
pace as the local development tooling could be tailored better. (just
run the UI server & hook up to an existing core somewhere)
However, it introduced overhead with the addition of a new deployable component.

that's also some of the points. We already have the development moved over to a different repo.
We currently just stick it's JAR (which might be silly) into the WAR.
 

This was all in a pre-containers world, but it was migrated to a
container world (on openshift).
We never went as far as nginx serving static content, but I could see
that as a logical progression.
It would probably mean a smaller footprint overall.

cool. It's something I will include in the proposal (not done any testings).


Currently I look removing some good parts of the WAR file for the push delivery itself.

current approach, which I do like so far, is having each "network" run as a java process, that wires the "send bits" (e.g. for iOS) togehter via messaging (kafka).
Here is a metrics screenshot: 

code is located here:

It's borrowing some concenpts/code from core UPS. but is really no http server - just a standard Main, which has a kafka consumer, plugged via ENVs.

I currently deploy to Openshift using the fabric8-maven-plugin (fmp), that generates all all (docker file, k8s/oc yamls).

I will do the same for FCM.

Once that all is done, we have no "sending" code in the UPS, and we can move than the UPS itself to WF-Swarm, for a migration to a simpler develipment/deployment model (and perhaps some more modules in the longer run)

Proposing:
* fcm-sender.jar (in container)
* apns-sender.jar (in container)
* UPS move to Swarm
* UI in nginx 

 

On 30 January 2018 at 19:40, Matthias Wessendorf <matzew@apache.org> wrote:
> Hi,
>
> right now, we have the static resources of the admin ui build to a JAR file
> and a "node tgz". Currently, in the community, we use the bundled JAR and
> deployed to the UPS WAR file. So far, so good
>
> For our modularization I was thinking at different options:
>
> * WildFly Swarm w/ just static (WAR) resources
> * Node.js/Express app
> * Ngnix container, just serviing the content
>
> I've tested 1) I was wondering if we might - for some better resource
> utilization might just go w/ Ngnix, and deploy the static resources of the
> admin UI to there?
>
> How do other think about breaking the UPS down to different technologies and
> aspects?
>
> -Matthias
>
> [1] https://github.com/aerogear/unifiedpush-admin-ui
>
> --
> Matthias Wessendorf
>
> github: https://github.com/matzew
> twitter: http://twitter.com/mwessendorf
>
> --
> You received this message because you are subscribed to the Google Groups
> "Aerogear" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to aerogear+unsubscribe@googlegroups.com.
> To post to this group, send email to aerogear@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/aerogear/CAAg5f2Qi6Fwj5FPq-VdBEw3Ro_pq4FwqJpPiyGbmj0cEJrfv7Q%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.



--
David Martin
Red Hat Mobile
Twitter: @irldavem
IRC: @irldavem (#aerogear)

--
You received this message because you are subscribed to the Google Groups "Aerogear" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aerogear+unsubscribe@googlegroups.com.
To post to this group, send email to aerogear@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aerogear/CADvBQ45yhH_-%2BZ2gKsU-agjv2ucngsgUgo66-dQ7MdyoMuDinw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.



--
Matthias Wessendorf

github: https://github.com/matzew 
twitter: http://twitter.com/mwessendorf



--
Matthias Wessendorf

github: https://github.com/matzew 
twitter: http://twitter.com/mwessendorf



--
Matthias Wessendorf

github: https://github.com/matzew 
twitter: http://twitter.com/mwessendorf



--
Matthias Wessendorf

github: https://github.com/matzew 
twitter: http://twitter.com/mwessendorf



--
Matthias Wessendorf

github: https://github.com/matzew 
twitter: http://twitter.com/mwessendorf

--
You received this message because you are subscribed to the Google Groups "Aerogear" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aerogear+unsubscribe@googlegroups.com.
To post to this group, send email to aerogear@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aerogear/CAAg5f2QF2AiZVK%2BQyYB0mDL5G58LXmUPVNySjrcpgJv58Z012A%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Aerogear" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aerogear+unsubscribe@googlegroups.com.
To post to this group, send email to aerogear@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aerogear/CAJFhnM4tUCG3-nqq-H2t4OgkF4yTp5koz%2BrAUNX_xcxrNobaNA%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.



--
Matthias Wessendorf

github: https://github.com/matzew 
twitter: http://twitter.com/mwessendorf