Application summary
When working on the performance, it is always important to keep two things in mind:
- The application business (what the application does)
- The application technical stack (how the application was designed)
Even if the information you have about these two points is very high-level, ensure that you know them before working on the performance.
Let's do this exercise with our application and ensure that we know how to answer both the questions.
The application business
Our application is responsible for providing the quote prices to HTTP or WebSocket clients. With its model and customer/quote relationship, it can enable us to provide (or not provide) the price accessed by the customer if we add permissions or rules, for instance. What is important to see at this stage is that both the entities are in a relationship and that our application can visit this relationship for its business needs and trigger an implicit lazy loading of the relationship entities.
The data is injected into the system based on two external HTTP sources (CBOE and Yahoo). The first one provides a symbol dictionary of the quotes, and the second one, the prices.
The application design
Technically, the provisioning of the quote and prices is done asynchronously (not when a customer request is sent). It retrieves the data using a JAX-RS 2.1 client and inserts it as fast as possible into the database.
Access to the application is gained either through HTTP or WebSocket. In both cases, the application uses a JSON format for message exchange.