GithubHelp home page GithubHelp logo

christones / udaconnectmicroservices Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 1.0 3.34 MB

In this project , i will be implementing the three message passing techniques (REST, gRPC, Kafka Queues ) to convert a monolith starter project into microservices defined APIs.

License: Other

Python 62.00% Dockerfile 2.65% HTML 2.51% CSS 4.00% JavaScript 25.58% Shell 3.26%

udaconnectmicroservices's Introduction

UdaConnect

Overview

Background

Conferences and conventions are hotspots for making connections. Professionals in attendance often share the same interests and can make valuable business and personal connections with one another. At the same time, these events draw a large crowd and it's often hard to make these connections in the midst of all of these events' excitement and energy. To help attendees make connections, we are building the infrastructure for a service that can inform attendees if they have attended the same booths and presentations at an event.

Planning message passing strategies

From studying the source code of the Udaconnect application we derived a dependency graph of three services : connection service, location service and person service. The connection service depends on the two others while location service requests the verification of the person's account so as to keep his/her longitude and latitude and stores this data into the database. This is why we shall break the location service into two location microservices where the former connects with the mobile phones and the latter links with the database. The front end web application of the system links solely to the connection service which each instance provides to the rest of the world attendees information. We are therefore going to use the three message passing techniques : gRPC, REST and kafka message queues.

Diagram of the microservices architecture

image

Justifying each strategy

The message passing techniques we will use are gRPC, REST, and Kafka message queues. The purpose is to keep track of all possible GPS information sent by mobile phones of each participant or person. Since a single person is meant to be as mobile as possible, retrieving these locations by user ID can be cumbersome and slow to manage by a REST API. So we will need a Kafka queue between the two location microservices where one will receive the three input values โ€‹โ€‹i.e. longitude, latitude and user id as a gRPC message from each user's mobile phone, while the second will consume each produced stream as a record and store each record one after another in the udaconnect_location.sql database. The Connection Service interacts via a REST API with the Frontend of the application. The Person microservice is another REST API service that keeps track of user information. Whenever the entry point location microservice receives a gRPC message regarding a participant's location, a REST request should be made to the Person service to check if the person belongs the system.

Screenshots of the pod and services deployments

image

image

udaconnectmicroservices's People

Contributors

christones avatar leejustin avatar sarah-udacity avatar abhiojha8 avatar sudkul avatar eyongkevin avatar supirman avatar marcindulak avatar mmphego avatar douglasbergman avatar udacity-content-dockerhub avatar

Watchers

 avatar

Forkers

m168168

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.