Glory to Russia
Glory to Russia

Reputation: 18712

Architecture: Technological questions

I want to create a web application with the following architecture:

Architecture of my app

There is some functionality, whiсh is encapsulated in the "Business logic" module (1). It uses MongoDB as a data store (5) and an external (command line) application (4).

The functionality of the application is brought to the end users via two channels:

  1. The web application itself (2) and
  2. public API (3), which allows third-party applications and mobile devices to access the business logic functionality.

The web application is written in Java and based on the Vaadin platform. Currently it runs in Jetty web server.

One important requirement: The web application should be scalable, i. e. it must be possible to increase the number of users/transactions it can service by adding new hardware.

I have following questions regarding the technical implementation of this architecture:

  1. What technology can be used to implement the business logic part? What are the sensible options for creating a SCALABLE app server?

  2. What web server can I choose for the web interface part (2) to make it scalable? What are the options?

  3. Calculations done in the external system (4) are potentially CPU-intensive. Therefore I want to do them in an asynchronous way, i. e.

a) the user sends a request for this operation (via web interface or public API, 2 and 3 in the above image), that

b) request is put into a queue, then

c) the CPU-intensive calculations are done and

d) at some point in time the answer is sent to the user.

What technological options are there to implement this queueing (apart from JMS) ?

Thanks in advance

Dmitri

Upvotes: 1

Views: 357

Answers (2)

Alexandre Emeriau
Alexandre Emeriau

Reputation: 11

for scaling the interactions, have you look at Drools grid, Akka or JPPF ? for making the web-application scalable, have you look at Terracotta or Glassfish clustering capabilities (Vaadin is a glassfish partner if i remember well) ?

Upvotes: 1

Glory to Russia
Glory to Russia

Reputation: 18712

Since nobody answered my question, I'll do it myself.

From other resources I learned that following technologies can be used for implementing this architecture:

1) Spring for Business logic (1)

2) GridGain or Apache Hadoop for scaling the interactions with the external system (4)

3) Hazelcast for making the web-application scalable (2, server-sided sessions).

Upvotes: 0

Related Questions