inxmailgmbh / clicktracker

A small click tracking service
MIT License
3 stars 0 forks source link

Define technology stack #2

Closed jayeff closed 9 years ago

jayeff commented 9 years ago

I'm not too familiar with the Java Stack. Please provide your input and comments on how our technology stack should look like.

Please try to keep possible overhead costs in checks for your choices. Simple and solves the job beats scalable, best-of-breed, etc. We can always replace parts with a more better suited but maybe more complicated option later.

teramawi commented 9 years ago

As you might expected i like java so that I would say that Java 8 is a must have. That beeing said, there are several choices that can be made for the application.

Stack Good Bad
Java EE Servlets Most simple approach from technology point of view: One servlet for redirects and others for the management endpoints Dont like the idea to implement all the "stuff" myself
Java EE Rest Service using Jersey Its quite standard technology, well documented, easy to get started with ?
Spring Boot Most powerful approach with convention over configuration that provides alot of stuff out of the box. Nice documentation and usually easy to get started with. Can be difficult to start with if Spring is unfamiliar or you dont know what you need to search for

In all cases the application could use an embedded application container or could be deployed to an installed application server. Spock Groovy Tests could be used in all cases.

fewi commented 9 years ago

I also prefer Java, but if we split the application in services we could use different languages. I'm thinking of a redirect and click tracker service. To connect them we could use REST and message queuing.

jayeff commented 9 years ago

Regarding application server/container: Do we need one at all? Could something like Play, Dropwizard or Vert.x (all mentioned in the article linked above) be interesting for this project? I don't know any of them—just want to throw some names into the ring. :smile: You are in a better position to evaluate the different options. And just to make this 100% clear: The traditional route is fine for me as well.

@fewi: I believe this service is small enough that it's not fruitful to split it into smaller chunks. Additionally I want to keep the first version as simple as possible. I would love to experiment with additional architecture and languages after we get this project off the ground. Maybe we can try out your proposal at a later stage.

teramawi commented 9 years ago

@fewi & @jayeff I had to brace myself to not think about architecture at this point too :-) But I too think that we should not split the service at this time. It's just important to keep everything stateless so we can choose to split up later on easily.

@jayeff If we need an application container or not depends on the platform we choose. Its quite cool to use those containers in embedded style so your application ships as a single jar-file for example. They have proven themselves and are well established. Dropwizard for example is based on the embedded Jetty Application Container and Spring Boot is based on what you choose for (by default embedded tomcat) and can be compared to Dropwizard. Both frameworks provide some kind of "full stack" including ui and rest endpoints, database access, monitoring, utility libraries and so on.

Akka (basis for Play) and vert.x are both independent frameworks that implement things themselves. Both are based on the actor model but provide unique approaches to use them. I dont know that much about them but i like the approach they use and wouldnt mind to use one of them. Does anyone have experiences in using them or did you find some cool comparisons? (I will do some googleing ón this one)

jayeff commented 9 years ago

I currently lean towards Spring Boot. Has anyone objections? Different suggestions?

fewi commented 9 years ago

+1 Spring Boot

cyphercrack commented 9 years ago

:+1: Spring Boot. With Spring Boot it's really easy to get your project up and running in a short time. You have access to the complete Spring Framework and if you don't like Java you can use Groovy ;-)

jayeff commented 9 years ago

Spring Boot it is. :tada:

It would be great if someone can open a PR with a basic project structure for Spring Boot.