Skip to content

Example setup for a scalable Vaadin UI for consuming microservices

Notifications You must be signed in to change notification settings

ripla/microservices-ui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Example project for working with microservices using Vaadin and Spring boot.

The project was a learning process for creating a micro-services setup from scratch.


1. Create Students microservice using [Spring boot](http://projects.spring.io/spring-boot/) and [Spring Data REST](http://projects.spring.io/spring-data-rest/). Data is simple to test out things, just a Student POJO that is served over REST and stored in a SQL DB. I used [Spring Cloud](http://projects.spring.io/spring-cloud/) as a base since I knew that it was the direction I was going.

2. Create [Eureka](https://github.com/Netflix/eureka/) server with help from Spring Cloud. Same setup as in step 1, just without data. After starting Eureka I configured the URL to Students-service and it registered itself automatically. This means that clients can find the service without knowing the actual URL. It also allows load balancing later.

3. Create [Vaadin](https://vaadin.com) UI with help from [Spring4Vaadin](https://github.com/peholmst/vaadin4spring). From Vaadin perspective the UI is very simple. The UI uses Spring to handle the basic REST call, but uses [Ribbon](https://github.com/Netflix/ribbon) to load balance the calls and Eureka to discover the service. I also needed help from [Spring HATEOAS](http://projects.spring.io/spring-hateoas/) to map the responses, since Spring Data REST automatically uses HATOAS when mapping the Students REST interface.

4. TODO: At this point the Students-service should scale by just adding more nodes, so I can test this by deploying to [Heroku](https://heroku.com).

5. Next I want to be able to scale the Vaadin nodes by just adding more nodes, but since Heroku doesn't support sticky sessions I need to add support for shared sessions. Luckily it's very easy with Spring Boot and [Memcached session manager](https://code.google.com/p/memcached-session-manager/)

6. TODO Add hystrix-dashboard and check that Hystrix streams work

7. TODO Add second service and Zulu for proxying service requests. Includes cross-service linking and UI additions. (Calendar, Map?)

8. TODO Add Docker files for all services and deploy to AWS Beanstalk

9. Add asynchronous calls with hystrix

About

Example setup for a scalable Vaadin UI for consuming microservices

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages