Git Product home page Git Product logo

rajeshjaava / flowers-micro-services Goto Github PK

View Code? Open in Web Editor NEW

This project forked from designreuse/flowers-micro-services

0.0 1.0 0.0 1.06 MB

This is a Apache Maven project consisting of a collection of REST json micro service modules sub-projects. By nature, microservices are best when light weight with a minimal footprint. It follows therefore that these microservices are bootstrap implemented using Spring Boot, and data is persisted to a NoSQL database (MongoDB).

Java 52.16% HTML 8.75% CSS 23.12% JavaScript 15.98%

flowers-micro-services's Introduction

flowers micro services

This is a Apache Maven project consisting of a collection of REST json micro service modules sub-projects. By nature, micro-services are best when light weight with a minimal footprint. It naturally follows therefore that these micro-services are bootstrap implemented using Spring Boot, and data is persisted to a NoSQL database (MongoDB). The Hystrix API (Netflix) was used to implement the exception isolation strategy, circuit breaker, and fall-back software design patterns (specific to micro-services) to prevent micro service failures from cascading. Build process and library version management was configured to use the Apache Maven build tool. The service is designed to interact with a MongoDB key/value model with associations between various types of user defined entities. As a rule, each micro service adheres to the standard C-R-U-D operations on the narrow set of entity and data each service provides. Other operations have also been implemented that manipulate more complex derived data structures.

technology stack

The technology stack includes Apache Maven, Java 1.8, Stream API, Method references, Functions, Functional Interfaces, Lambda expressions and other more recent tools.

Performance was a key concern in terms of throughput and resource (cpu|memory) management. As a result the following were carefully considered:

  • Special care was made to ensure that looping and other expensive operations were limited to a maximum O(log n) performance.
  • Stream API was used to perform bulk operations on various Collections objects.

Apache Maven was used to streamline and manage jar file versions as well as automate the various JUnit tests that were integrated into the compile and packaging process. Security being an implicit and obvious design time concern was built in from day one. Various OWASP suggested code features were implemented. All communication was done over Transport Layer Security (TLS). Various software architectural design patterns were used. These include Fa�ade & Null Objects. Exception tunnelling (Lambda Expressions) was used to restore the conciseness of code when the lambda expression throws an exception. The generalized target-type inference feature of the Java programming language was used extensively to simplify passing various types of parameter objects as well as reduce the effect of generic types handling complexities. Stream API was used preferably in place of classic looping control structures. Special attention was made to ensure the proper documentation of key functionalities, as well as the code being javadoc compliant.

technologies used

  • Java 8
  • Spring Boot 4
  • Hystrix
  • Maven 3
  • MongoDB
  • Aspects
  • Eureka
  • Zuul
  • Loggly
  • MongoDB

design documentation

flowers-micro-services's People

Watchers

Rajesh Thokala avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.