Skip to content

winstarshl/pip-services

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Pip.Services Logo
Library of reusable microservices

Microservices architectural style is quickly becoming popular among software developers. But variety of languages, platforms and frameworks, as well as lack of standards make it difficult to find ready-to-use components that you can drop and use into your system. SaaS services offer fairly good solution to that problem. But they also come with difficult tradeoffs. You have to give up control over functionality and data. You may pay extra to SaaS providers. You are limited to features that are given to you and so on. Moreover, not everything can and shall run on the cloud. In that case SaaS services is not a good help.

Pip.Services team offers a different solution - a collection of reusable microservices that you can take, modify and deploy as a part of your own system. You regain full control over functionality and operations. You are able to pick any type of persistence storage, infrastructural components like logging, performance and health monitoring. You can deploy microservices on virtually any platform and use them from any programming language.

That level of flexibility becomes possible due to componentized microservice architecture. You can simply take a microservice, pick the necessary components for persistence, logging, caching, discovery, performance counters, service endpoints and client connectors and describe it in microservice configuration. After that microservice is ready to be deployed in the target development or production environments.

Pip.Services Overview

Below you can see the list of options you can choose from. Specific microservice may or may not have all of them. Please, refer to the microservice documentation for details.

  • Languages: Java, .NET, Node.js, Go, Python. Ruby is planned to be added in the future
  • Deployment: System processes, Windows services and Linux demons, Docker containers, AWS Lambda, Seneca.js, Tomcat container, Spring container, Microservice Service-Fabric, ...
  • Persistence: In-memory, Files, MongoDB, Couchbase, Cassandra, MySQL, SQL Server, AWS S3, ...
  • Communication protocols: HTTP REST, Seneca, Thrift, Direct, Kafka, ActiveMQ, ZeroMQ, ...
  • Discovery: Static, Custom, Consul, Etcd, ...
  • Logging: Null, Console, File, Custom, Logstash, Syslog, ...
  • Performance counters: Null, Log, Custom, ...

The library contains constantly growing number of microservices, donated and supported by community contributors. They divided into several groups.

Infrastructure microservices

  • pip-services-logging - Distributed logging microservice. It collects logs from other microservices and stores them in a single location for further analysis.
  • pip-services-counters - Performance monitoring microservice. It collects performance metrics from other microservices and generates performance statistics. It is a lightweight alternative to production services like Consul or Etcd that can be used during development and testing.
  • pip-services-eventlog - System event logging microservice. It logs key system events like installing a new server, upgrading to a newer version, shutting down system for maintenance and so on
  • pip-services-settings - Settings microservice. It keeps system-wide configuration settings split by sections.
  • pip-services-statistics - Statistics microservice. It aggregates business statistics within Hour, Day, Month, Year and Total intervals.
  • pip-services-blobs - Blob storage microservice. It is the key microservice that enables upload and download of binary blobs. It also tracks references from other system entities and destroys files when the last reference is released.
  • pip-services-facets - Faceted search microservice. It records and allows to search by aggregated (faceted) criteria, like groups, types or categories.
  • pip-services-changescopes - Change scopes microservice. It trackes changes in specific scope down to individual elements. That helps to use simple pulls to detect changes in one call without use of asynchronous update messages.
  • pip-services-email - Email delivery microservice. It sends email messages and supports message templates.
  • pip-services-sms - SMS delivery microservice. It sends sms messages and supports message templates.

User management microservices

  • pip-services-accounts - Users account management microservice. It allows to register system users and set their key preferences.
  • pip-services-passwords - Password authentication microservice. It allows to set and manage user password, performs basic login/password based authentication and supports password recovery via email.
  • pip-services-roles - User role-based authorization microservice. It allows to grant roles to a user and performs basic ‘is user in role’ authorization.
  • pip-services-emailsettings - Email settings microservice. It manages user primary emails and handles email verification.
  • pip-services-smssettings - SMS settings microservice. It manages user phone numbers and handles phone verification.
  • pip-services-msgdistribution - Message distribution microservice. It distributes messages to one or many recipients via selected delivery method: email or sms.
  • pip-services-sessions - User session management microservice. It tracks sessions opened by users from multiple hosts and applications. It can be very useful for session tracking in client facades (API gateways).
  • pip-services-activities - User/party activity logging microservice. It logs activities performed by user (or party) like registering and logging into the system, changing configuration settings, creating/removing/updating system entities and so on.

Product support microservices

  • pip-services-announcements - System announcements microservice. It allows system administrators or product support personnel to create announcements and show them to product users to keep them informed about important information and events.
  • pip-services-feedbacks - Users feedback microservice. It allows to collect feedback from product users about their issues, ideas, copyright infringement or other requests.

Content management microservices

  • pip-services-attachments - Blob attachments microservice. It tracks references to blobs from other system entities and destroys files when the last reference is released.
  • pip-services-tags - User/party search tags microservice. It records tags used by user (or party) when they create their content. Later these tags can be used to suggest tags for search within applications.
  • pip-services-quotes - Inspirational quotes microservice. It is a basic sample microservice that shows to users inspiring quotes.
  • pip-services-tips - User tips microservice. It shows prerecorded useful tips and suggestions to application users.
  • pip-services-guides - Application guides microservice. It shows guides (introduction, walk-through, new release) to application users.
  • pip-services-imagesets - Image library microservice. It contains a collection of images that users can search and use to visualize their content.
  • pip-services-files - Files microservice. It keeps collections (groups) of files. File content can be stored either in blobs or in external source and referenced via uri.
  • pip-services-msgtemplates - Message templates microservice. It allows content managers to compose message templates in multiple languages and later use to send out emails or sms to system users or internet community.
  • pip-services-dashboards - Dashboards microservice. It stores configurations of user dashboards.

Microservice framework for .NET

Microservice framework for Java

Microservice framework for Node.js

Microservice framework for Python

Microservice framework for Golang

Portable build infrastructure

Quick Links

Acknowledgements

This project would not be possible without effort contributed by particular individuals.

  • Sergey Seroukhov - the project founder, microservice architecture and runtime implementation
  • Mark Zontak - Node.js and .NET implementations, AWS integration
  • Volodymyr Tkachenko - .NET implementation, Service Fabric and Docker deployments
  • Alex Mazur - .NET implementations, Azure integration
  • Alex Masliev - Website and graphics

We also would like to recognize help received from the following companies.

About

Open-source library of reusable microservices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published