social-network

module
v0.0.0-...-40cf777 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2022 License: MIT

README

Communication patterns in a microservice architecture

Master's thesis

Author: Timon Dudaković

Mentor: doc. dr. sc. Nikola Tanković

Abstract

One of the biggest challenges when migrating from an application based on a monolithic architecture to an application based on a microservice architecture is adopting changes present in communication paradigm. Converting from local method calls to unreliable cross-service synchronous and asynchronous calls adds a higher level of complexity and reduces efficiency in communication which violates performance in distributed systems. The challenges of designing and implementing a distributed system are well known, but the process is still long-lasting and complex. The solution presented in this thesis involves high levels of microservice isolation through the use of asynchronous communication patterns between the internal microservices. Although several microservices are communicating over synchronous communication protocols, they don't violate the integrity of the communication, and they maintain a certain level of isolation.

Juraj Dobrila University of Pula

Faculty of informatics

Master's thesis

Requirements

Directories

Path Synopsis
app
services/comments-api/handlers
Package handlers manages the different versions of the API.
Package handlers manages the different versions of the API.
services/comments-api/handlers/debug/checkgrp
Package checkgrp maintains the group of handlers for health checking.
Package checkgrp maintains the group of handlers for health checking.
services/comments-api/handlers/v1/commentgrp
Package commentgrp maintains the group of handlers for comment access.
Package commentgrp maintains the group of handlers for comment access.
services/comments-api/handlers/v1/testgrp
Package testgrp contains all the test handlers.
Package testgrp contains all the test handlers.
services/posts-api/handlers
Package handlers manages the different versions of the API.
Package handlers manages the different versions of the API.
services/posts-api/handlers/debug/checkgrp
Package checkgrp maintains the group of handlers for health checking.
Package checkgrp maintains the group of handlers for health checking.
services/posts-api/handlers/v1/postgrp
Package postgrp maintains the group of handlers for post access.
Package postgrp maintains the group of handlers for post access.
services/posts-api/handlers/v1/testgrp
Package testgrp contains all the test handlers.
Package testgrp contains all the test handlers.
services/users-api/handlers
Package handlers manages the different versions of the API.
Package handlers manages the different versions of the API.
services/users-api/handlers/debug/checkgrp
Package checkgrp maintains the group of handlers for health checking.
Package checkgrp maintains the group of handlers for health checking.
services/users-api/handlers/v1/testgrp
Package testgrp contains all the test handlers.
Package testgrp contains all the test handlers.
services/users-api/handlers/v1/usergrp
Package usergrp maintains the group of handlers for user access.
Package usergrp maintains the group of handlers for user access.
tooling/admin
This program performs administrative tasks for the social network services.
This program performs administrative tasks for the social network services.
tooling/admin/commands
Package commands contains the functionality for the set of commands currently supported by the CLI tooling.
Package commands contains the functionality for the set of commands currently supported by the CLI tooling.
tooling/logfmt
This program takes the structured log output and makes it readable.
This program takes the structured log output and makes it readable.
business
core/comment
Package comment provides an example of a core business API.
Package comment provides an example of a core business API.
core/comment/db
Package db contains comment related CRUD functionality.
Package db contains comment related CRUD functionality.
core/email
Package email provides support for sending e-mail messages
Package email provides support for sending e-mail messages
core/post
Package post provides an example of a core business API.
Package post provides an example of a core business API.
core/post/db
Package db contains post related CRUD functionality.
Package db contains post related CRUD functionality.
core/user
Package user provides an example of a core business API.
Package user provides an example of a core business API.
core/user/db
Package db contains user related CRUD functionality.
Package db contains user related CRUD functionality.
data/comment/dbschema
Package dbschema contains the database schema, migrations and seeding data.
Package dbschema contains the database schema, migrations and seeding data.
data/comment/dbtest
Package dbtest contains supporting code for running tests that hit the DB.
Package dbtest contains supporting code for running tests that hit the DB.
data/email
Package email contains .proto definitions and generated code for the email service
Package email contains .proto definitions and generated code for the email service
data/post/dbschema
Package dbschema contains the database schema, migrations and seeding data.
Package dbschema contains the database schema, migrations and seeding data.
data/post/dbtest
Package dbtest contains supporting code for running tests that hit the DB.
Package dbtest contains supporting code for running tests that hit the DB.
data/user/dbschema
Package dbschema contains the database schema, migrations and seeding data.
Package dbschema contains the database schema, migrations and seeding data.
data/user/dbtest
Package dbtest contains supporting code for running tests that hit the DB.
Package dbtest contains supporting code for running tests that hit the DB.
sys/auth
Package auth provides authentication and authorization support.
Package auth provides authentication and authorization support.
sys/database
Package database provides support for access the database.
Package database provides support for access the database.
sys/metrics
Package metrics cosntructs the metrics the application will track.
Package metrics cosntructs the metrics the application will track.
sys/nats
Package nats provides support for connecting to NATS server.
Package nats provides support for connecting to NATS server.
sys/validate
Package validate contains the support for validating models.
Package validate contains the support for validating models.
web/v1
Package v1 represents types used by the web application for v1.
Package v1 represents types used by the web application for v1.
web/v1/mid
Package mid contains the set of middleware functions.
Package mid contains the set of middleware functions.
foundation
docker
Package docker provides support for starting and stopping docker containers for running tests.
Package docker provides support for starting and stopping docker containers for running tests.
keystore
Package keystore implements the auth.KeyStore interface.
Package keystore implements the auth.KeyStore interface.
logger
Package logger provides a convience function to constructing a logger for use.
Package logger provides a convience function to constructing a logger for use.
web
Package web contains a small web framework extension.
Package web contains a small web framework extension.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL