{"id":19588501,"url":"https://github.com/videlalvaro/gen_microservice","last_synced_at":"2025-10-08T17:21:42.151Z","repository":{"id":29717250,"uuid":"33260335","full_name":"videlalvaro/gen_microservice","owner":"videlalvaro","description":"Microservices for Erlang","archived":false,"fork":false,"pushed_at":"2015-05-14T00:11:41.000Z","size":112,"stargazers_count":94,"open_issues_count":2,"forks_count":16,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-27T12:33:42.440Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/videlalvaro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-01T16:55:29.000Z","updated_at":"2024-09-03T08:04:57.000Z","dependencies_parsed_at":"2022-08-27T15:23:58.539Z","dependency_job_id":null,"html_url":"https://github.com/videlalvaro/gen_microservice","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/videlalvaro/gen_microservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videlalvaro%2Fgen_microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videlalvaro%2Fgen_microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videlalvaro%2Fgen_microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videlalvaro%2Fgen_microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/videlalvaro","download_url":"https://codeload.github.com/videlalvaro/gen_microservice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/videlalvaro%2Fgen_microservice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273529583,"owners_count":25121834,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T08:14:16.763Z","updated_at":"2025-10-08T17:21:37.089Z","avatar_url":"https://github.com/videlalvaro.png","language":"Erlang","funding_links":[],"categories":["`API Frameworks`","Service Toolkits","API Frameworks"],"sub_categories":["Erlang"],"readme":"# Erlang gen_microservice #\n\nThis library solves the problem of implementing microservices with\nErlang.\n\nYour code just needs to add the behaviour `gen_microservice` to your\nmodule, implement a couple of callbacks, and you will have a\n**microservice** ready to use in your stealth startup.\n\nWe bring you the magic that let WhatsApp scale to millions of users\nand dollars, _here_, for free.\n\n## Features ##\n\n- **Full Hot Code Reload**: the library implements some magic to let\n    your app be upgraded without downtime behind the scenes.\n- **Asynchronous and Synchronous Callbacks**: with this library you\n    can have fully asynchronous code like modern\n    [io.js](https://nodejs.org) apps, or use sync callbacks like old\n    monolithic apps, your choice, we don't limit you.\n- **Fault Tolerance**: I know most senior developers don't write bugs,\n    but for that particular case where the junior dev is allowed to\n    push code to production, we need to be covered. This library\n    integrates seamlessly with Erlang's _nine nines_ runtime, so we got\n    you covered there as well.\n\n## Distributed Systmemes ##\n\nDistributed Systems are the talk of the day. The more users your\n_TODO_ app has, the more scalability and distributed consensus you\nwill need. This library anticipates this problem by being written in\nErlang, the only language where distributed systems problems have been\nreally solved.\n\n## Usage ##\n\nYour module needs to implement several callbacks:\n\n- `init/1`: this function will be called by your microservices\n  orchestrator system to launch your gen_microservice.\n- `monolithic_call/3`: if your code _still_ uses synchronous calls,\n  then those functionalities should be implemented using this\n  callback.\n- `modern_async/2`: if you have a modernized app, your app logic will\n  mostly reside inside these callbacks.\n- `handle_info/2`: your microservice will receive external messages\n  via this callback.\n- `code_change/2`: the magic for reloading and upgrading your\n  microservice live in production happens here.\n- `terminate/2`: called when it's time to scale down and decommission\n  your microservice instance.\n\nCheck the example on `doc/kitty_gen_microservice.erl`.\n\n## License ##\n\nSee LICENSE.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvidelalvaro%2Fgen_microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvidelalvaro%2Fgen_microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvidelalvaro%2Fgen_microservice/lists"}