Heroku - How to monitor requests and responses? - spring-boot

I have several spring-boot based micro-services on Heroku platform.
They using http API to communicate each other.
And I need some tool (it can be heroku add-on, spring feature or other tool) to monitor how they communicate (see all requests and responses).
I know that I can implement custom spring http interceptors and store http messages somehow but it will be better to use already ready solution.

Probably the easiest thing is to log to stdout, using any logging library or simply printing, and have heroku logs display it on the command line.

Related

Can we trigger concourse job with HTTP request?

I would like to configure my slack outgoing webhook such that it can trigger concourse job over http. Is there a way that we can trigger concourse jobs via http requests instead of manually clicking on job from web UI?
concourse has a feature where you can trigger pipelines via HTTP if you use a webhook token
https://concourse-ci.org/resources.html#resource-webhook-token
Yes, you can apparently trigger a concourse job via HTTP request as pointed out in this answer on Stackoverflow.
However you would need to implement an intermediary script (or Slack app) that receives the request from Slack and then triggers the concourse job accordingly. That would not work with a simple outgoing webhooks.
Also please note that Outgoing Webhooks are now outdated. Better use either a custom bot (based on Events API or RTM API) or a slash command to trigger them. The former is more flexible and powerful, the latter more easy to implement. I would advise to look into all mentioned concepts to see which bets fits your requirements.

Parse.com and Logentries

I'm using Parse.com with iOS SDK. I really want to get all Parse logs into a third party service (Logentries) but I have no idea if Parse.com's logs can be exposed at all?
Obviously having log data which periodically gets deleted in Parse is not ideal, plus I can't filter it and an integration with Logentries could be amazing.
I'm referencing a previous unanswered question: How to stream parse logs to a service provider?
Logentries has a special endpoint for logging from AJAX and server-side JS applications. This means that for environments like Parse where using 3rd party libraries is awkward, direct integration is still dead simple- see my fork of #Marco T's gist.
I was successful in pushing logs to Loggly using an edited version of: https://gist.github.com/rogernolan/95ea615164e343b3bc54

Cloud / server side code with Apigee or Usergrid

Is it possible to execute server side code (something like Parse "Cloud Code") with Apigee, as backend for a mobile app as client?
I'd want to use the out of the box "App Services" functionality, but perform some extra stuff (like updating data) from the server side,
The only (naive?) way I can think of is this:
Have my own server running.
The mobile app uses standard "App Services" API on Apigee
If necessary, the client calls
some custom API on my server,
which lets my server call Apigee via REST to fetch data, calculate some results, and post the updated data Apigee
and then returns the result to the client
Sounds a bit complicated (especially in terms of handling authentication) - are there any best practices to achieve something like I described?
Thanks!
Consider App Services as your database in the cloud to which you can talk using APIs. Therefore, you really don't need that server in the between unless you are doing some heavy lifting in it. You could make that API call directly from the app.
Even if you want to have a back end server for your app, you can leverage the node.js functionality that Apigee Edge provides and have a server up and running in the cloud in quick time. More info can be found here
If you want to do server side validation, you should use a Node.js proxy that incorporates Usergrid. This will allow you to perform a query on the database and do processing of the results. Check out this presentation: https://speakerdeck.com/timanglade/coders-workshop-at-i-apis. In particular, see Section 7, which discusses using Usergrid and Node.js.

Application services performance

I am developing one distributed system application, besides than other thing, it use real time messasing to chat service and push notifications to many concurrent users notifications.
First, my actual project system is one Spring Framework Webservices with another two servers, one to real time messaging service, and another Google Cloud Messages to push notifications service.
Now, I am thinking to implement my own real time messaging and push notifications through my Spring Framework Webservices.
In here I have some doubts about application performance, Android/iOS chat and notifications services allways will be in up on Movile Services (like facebook, twitter, whatssap...). To few concurrent users less than 1000 for example, I have not doubt about it would be necessary a low features server to run system, but, if will be to many concurrent users more than 10000 running persistent websockets... Somebody can tell me the features server to run it?
For each Websocket connection Java getting up one persistent new Thread until close connection or only is getting up one new Thread by server to each Websocket request/response?
Which of the above two implementations is better?
Thank you in advance and best regards.
Neither nor;) You will want a server that does not need a new thread per connection or request, but per CPU core. And do asynchronous networking. E.g. Netty or Jetty.
Play Framework would be a perfect fit for this : full asynchronous/non blocking and very good websocket support.

Receiving pushed messages from web service

I am working as part of a team using Android and WP7 to create apps that communicate with a server. So ideally we want a consistent approach to receiving the data from the server.
I currently am using HTTPWebRequest to form a SOAP message and send it to a Java-based web service to receive messages (Adding as a ServiceReference didn't work no matter what I tried) At the moment it's a simple case of receiving the full list of things and just recreate the list each time via DespatchTimer to do periodic calls. But of course periodic pollin is likely to be ratehr battery intensive so not the best apporach for my needs.
I now need to change the code so that changes are pushed rather than polled. The team is looking at XMPP to do this as Android libraries are readily available to do this but I am having trouble finding open source libraries to do this.
Microsoft Push seems available but this appears to require a Microsoft based server side environment to push unless I have misinterpreted this? Or even if push notifications are a sensible way to do this.
So what I would like to know is the approach to handling pushed messages in this scenario which i hope someone out there has had experience in
Thanks
Microsoft Push Notification System [MPNS] does not require a MSFT-based server backend. It simply relays the Push Notifications through carrier or other data channels to subscribing phones. You should be able to make HTTP POST requests to MPNS at the Windows Phone subscriber Channel URI & MPNS would deliver the Push Notifications for you. Your server side can be anything, as long as you able to make the HTTP requests.
A good starting point can be found here.
Hope this helps!

Resources