Measuring Application Performance (Hosted on IBM WebSphere) - java

I'm going to start by admitting that I have little experience in this domain outside of measuring response times using Chrome Developer Tools.
I need to provide baseline performance measurements for a web application that is hosted in WebSphere. This is a Java-based web app, and is primarily accessed from mobile devices (iPhones, used in areas with varying connectivity).
My management wants response times for specific actions and/or pages in the app I worked on. What is the best way I can capture this data? Ideally, I'd like to be able to seperate response times for different pages in the app, and also by user session (so that we can isolate different users with different levels of connectivity).
Can this be done from WebSphere? Or does this need to be completed on the client end? I've found WebSphere's PMI module, however I don't know if this will allow me to isolate stats based on specific users and user actions?
Thank you!

To get a realistic view of the performance that mobile users of the web app will experience, you probably should use a mobile device test framework. I have never used such tools, but Dr Google returns a bunch of helpful-looking pages when queried with "mobile device performance testing tools". :-)
As you mentioned, WebSphere PMI provides many types of measurements about the performance of various aspects of the application server:
https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/rprf_dataorg.html
including measurements specific to web applications, with some average response time metrics:
https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/rprf_datacounter10.html
But those measurements will generally be aggregated at some level much higher than individual users or user sessions, since they are intended to provide information about the overall performance of the system.
Also measurements taken in the app server will not include the transport time for the request and response to travel between the mobile device and the app server, or the time for the response to be rendered and displayed by the mobile device. So those metrics will not reflect the actual user experience.

Related

Where should the batch processes of an e commerce website be kept in the same application or different application?

My question is do we need to keep customer functionalities and daily processing of products, payments in different application or server or port number?I Have not found any articles in Google whether we should keep processes such as checking whether a product is expired and also checking whether vendor is eligible for payment in the same application where we show customers products and various other e commerce functionalities or do we keep all the batch process in different application or different port number or different server? I am a beginner in building e commerce websites any links or best practice recommendations would be great
Study and watch Clean Code Lectures by Robert Martin. Study about Microservices. Study about building good APIs. The idea is that to start with your application is going to be monolithic. Its not practical to build 10 different applications at the same time. But then as you build out you should refactor and split them up. The other big idea is that even if its just the credit card transactions to start with - your application will be interacting with 3rd parties. And as you grow you will be interacting with more external APIs.
However one area where it should be immediately split up - I would strongly recommend keeping your Order/Product Admin applications completely separate from the Public ecommmerce shopping application. This will simplify the security concerns which are very different, and the User Roles which are also very different.

Which server framework (or even platform) do I need for a small dev team?

I want to develop an server/client software of which the clients will be in different Os's.
(Think Mobile phones, tablets, desktop pc's, I even consider this service to connect with asterisk and work with a phone call center).
I'm really searching amongst all the available server frameworks and cannot decide what is the best for my case or whether I even NEED for my specific problem.
Things to consider:
I need it to be scalable: Initially that server will be accessed through a website but later it will expand and allow people to access it through mobile apps, desktop applications, phone call/sms service, etc..
Low cost hosting and open source
Thousands of users to be using that service in the future. (So it must be able to handle this)
Small dev team (1-3 ppl)
I've done past projects in C/C++, actionscript, a bit java and a bit php.
I don't know much about server programming yet (but I'm ok with learning).
So:
it must have an active community and not have died yet.
Be as easy as possible to learn.
it must already solve the problems of security, packet asynchronism, concatenation
for me etc.
Is there such a thing, should I even bother to mess with a framework? What options do I have considering the tools available? What does the industry use? A list of possible options would be greatly appreciated!
A common technology stack which is open source, scales well and has a very active community is:
Java
Tomcat Servlet Container
Spring Framework (with Spring Security)
Either Spring Web-services or Apache CXF for web service (mobile connections for example)
JPA (Hibernate) ORM on top of MySQL
There are numerous other projects that sit around these technologies that fulfill various requirements. I would certainly recommend this as a starting point to your investigation.

Cloud for Flex, Java, mongoDb?

I am about to develop my masters project using Flex as front end, BlazeDs, Java Web Services and MongoDB in the backend. I am looking to deploy and manage it on a cloud. (The application analyzes financial data from various sources, I will need to query multiple endpoints for news articles and DB for processing)
It is my experiment to usage of cloud rather than deploying on my local for demo and presentation purposes.
I saw heroku (http://www.heroku.com/), but I am not sure if it allows flash.
Please suggest a cloud application platform which allows Flex, BlazeDs, Java Web Services and MongoDB?
Amazon Web Services is a good place to start. You can have a instance ready in like 15-30min from signing up. If you are just experimenting, you ought to try to get the Amazon Linux Image (AMI) up and running. Scour the net on HOWTO set up Tomcat, for your requirements it might be too much to go J2EE, but you might know better.
But a word of advice, it's better to get your application working on a local machine first. Then drop the programmer hat and put on the deployment hat 100% cause it's a b!tch configuring deployment environment for Tomcat configurations, Blaze DS, Mongo's failover servers, load balancers and all kinds of non-programming tasks. You will want to work your development stack close to home so you can diagnose quickly.
Cloud business is great only when you want 1) Not use your home PC and bandwidth as a server 2) You want to have global mirror points to your application so that user's latency in one area of the world is not slower than another part of the world 3) You want to distribute computing load burden on one application across many instances of the same application.
Clouds are relatively cheap to deploy but if you got an application that hording GB's of bandwidth and storage, be prepared to fork over $1000's+ in costs. You can save money by going with an OS with no licensing costs to get a better rate.

Google application engine

I would like to know whether a net server game for a game like packman can be held on google application engine easily? In terms of response speed.
I want to set a server which can manage the game tables in which the games will be held.
Each table will have two players only.
I don't understand if I can upload a java applet to GAE and how I'm doing so.
Any other suggestions about other free servers which can be suitable for a real time action games?
Thanks
GAE supports only short-lived connections (about 30sec max). Which means you can not have a permanent connection open between your client and GAE server. This effectively prevents push notifications from server to client, which are needed in most gaming setups.
To alleviate this limitation, Google introduced Channel API which enables you to push messages from server to client. However you need to use their javascript library on the client side. You could write an applet which calls javascript to access this library but this could be a bit of a kludge.
All-in-all, due to this limitations, GAE could prove not to be the right fit for your needs.
Update:
There is another reason why GAE is not fit for real-time communication between users: a client request to GAE app can be served by any server that Google chooses. Two users communicating could be connected to two different servers, even in different data centers (maybe even on different continents). To pass data between them you'd need to store all messages to datastore (slow) or to memcache (unreliable and possibly slow because it would need to propagate between servers/datacenters).
You can use permanent backend for fast responces and break through 30 response limitation. You manually can define instances of backends. If you set it to be permanent - it is always will be on. And you can use your own implementation of in memory cache for fast data storing. Not sure, but maybe performance of data store will be ok for you.
If DataStore ok and you don't have requests that can take more than 30 seconds - use fronend with high performance settings.
Yes you can upload applet. Just put it somewhere in war folder and make reference to it from your jsp/html
Well, if you need java, free for startup your project - I don't know alternatives to GAE

Blackberry applet to communicate with back-office server

We use a back-office accounting system with an SQL db2 database. Our sales, service and management all have Blackberries. I have started to write some HTML web scripts that go through BES sever so staff can access and update data (sales summaries, late orders, AR approvals).
The next level seems to be using the native blackberry applets to manage data. For instance we could use an application that notifies head of A/R when a substancial order is being prepared for a customer who is behind in payments. This would require a form of push notification (message and/or email) from server, an entry in Blackberry database, a screen to view list of unapproved orders, a way to approve/reject orders that would update local database and backoffice server.
Questions
what language? Java J2ME with blackberry classes seem most obvious, but is there any viable rapid development tools on this platform?
what database on Blackberry? Is there a choice?
what is appropriate technology to push and pull data (sockets, http?)
can we hire a regular Java guy with a year or two exp, or do we need a Blackberry specialist
is synchronizing data an issue. If blackberry is out of range, will missing messages be synchronized automatically or do you have to control this programically?
thank you
Blackberry apps are Java using a proprietary API. It's derived from J2ME but you have to use the BB APIs in order to do anything interesting. A lot of BB developers use the Eclipse plugin. Compared to Android and iPhone BB dev is a bit clunky.
BB's running OS 5 and higher have SQLite on the device. All devices have a "Persistent Store". The store gives you broad support if your users have older devices.
Now of course on your backend you can use whatever database you want :)
BB's can do http, sockets, wifi (depending on the device). Things like carrier-tcp can be unreliable on older devices and with certain carriers. However since you have a BES, you can use the MDS service which tends to be reliable (provided the BES is running).
You can also get notified from push messages which are sent to the BES. This is useful for low-latency.
I guess most people can learn this, but I recommend finding someone with specific BB knowledge. In my experience I've found the platform pretty tricky to do things well. I've had to experiment a lot to get things working.
Push messages are 'fire and forgot' but there is a 'reliable push' mechanism I haven't used. In general wireless apps have to be good about not depending on network reliability.

Categories

Resources