Application user experience is a key part of overall user satisfaction. The worst part of a user experience is waiting for a result. I want to share how I dramatically improved performance of the Java back-end service that provides map data for my service LLmaps.
LLmaps works like any other web-based service. You visit a page with your web-browser, enter required data and wait for a result. Data are sent via REST-based API to Java web-server that runs a computation based on pre-computed map data. The initial architecture is on the following diagram:
Today, I’d like to share my approach to secure Java web application using nginx server. Recent industry shift to a secure internet basically require all websites to provide HTTPS access. It improves search ranking and especially privacy of your visitors. So, I will share my approach how I made it for my LLmaps application. This tutorial applies for Linux, specifically Debian or Ubuntu.
Our architecture is laid out on the following diagram. Our clients are accessing nginx server that forwards decrypted calls to Java application.
Enterprise applications usually connect to various systems. They can be either asynchronous (like messaging) or synchronous (like HTTP). This brings in a problem of communication between asynchronous and synchronous systems.