{"id":14112002,"url":"https://github.com/ToastShaman/awesome-microservices","last_synced_at":"2025-08-01T13:33:04.541Z","repository":{"id":72082519,"uuid":"147093428","full_name":"ToastShaman/awesome-microservices","owner":"ToastShaman","description":"A curated list of additional reading material following my talk at Zuhlke Days 2018.","archived":false,"fork":false,"pushed_at":"2018-09-02T14:41:25.000Z","size":3,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-09T15:04:30.851Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ToastShaman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-09-02T14:40:21.000Z","updated_at":"2023-11-18T17:53:51.000Z","dependencies_parsed_at":"2023-05-10T14:16:26.013Z","dependency_job_id":null,"html_url":"https://github.com/ToastShaman/awesome-microservices","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ToastShaman/awesome-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToastShaman%2Fawesome-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToastShaman%2Fawesome-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToastShaman%2Fawesome-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToastShaman%2Fawesome-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ToastShaman","download_url":"https://codeload.github.com/ToastShaman/awesome-microservices/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToastShaman%2Fawesome-microservices/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268231423,"owners_count":24217032,"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-08-01T02:00:08.611Z","response_time":67,"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-08-14T10:03:34.226Z","updated_at":"2025-08-01T13:33:04.487Z","avatar_url":"https://github.com/ToastShaman.png","language":null,"funding_links":[],"categories":["Other Lists"],"sub_categories":["TeX Lists"],"readme":"# Awesome Microservices\n\nA curated list of additional reading material following my talk at [Zuhlke](https://www.zuehlke.com/gb/en/) Days 2018.\n\n## Recommended Books\n\n* Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations by Nicole Forsgren et al: http://amzn.eu/d/8fteU0t\n* Building Microservices by Sam Newman: http://amzn.eu/d/5VI7e5F\n* Building Microservices **Second edition** by Sam Newman: http://amzn.eu/d/4d7JoEA\n* Production-Ready Microservices by Susan Fowler: http://amzn.eu/d/gZPrzBf\n* Site Reliability Engineering by Betsy Beyer et al: http://amzn.eu/d/57BjsHi\n* REST in Practice: Hypermedia and Systems Architecture by Jim Webber et al: http://amzn.eu/d/1JN6obF\n* RESTful Web APIs by Leonard Richardson et al: http://amzn.eu/d/c5RdRAo\n* Testing Java Microservices by Alex Soto Bueno et al: http://amzn.eu/d/j9WTt21\n* Elastic Leadership by Roy Osherove: http://amzn.eu/d/6GEAft4\n* Threat Modeling: Designing for Security by Adam Shostack: http://amzn.eu/d/6S2hIVh\n* Cloud Native: Designing change-tolerant software by Cornelia Davis: https://www.manning.com/books/cloud-native\n\n## Recommended Articles\n\n* [Testing Microservices, the sane way](https://medium.com/@copyconstruct/testing-microservices-the-sane-way-9bb31d158c16)\n* [Your API versioning is wrong, which is why I decided to do it 3 different wrong ways](https://www.troyhunt.com/your-api-versioning-is-wrong-which-is/)\n* [Consumer Driven Contract Testing](https://www.martinfowler.com/articles/consumerDrivenContracts.html)\n* [REST without PUT](https://www.thoughtworks.com/radar/techniques/rest-without-put)\n* [Trunk Based Development](https://trunkbaseddevelopment.com/)\n* [The Practical Test Pyramid](https://martinfowler.com/articles/practical-test-pyramid.html)\n* [ThoughtWorks: Technology Radar](https://www.thoughtworks.com/radar)\n\n## Technologies we used in the Microservices\n\n### Microservice Framework\n\n* [Spring Boot](https://spring.io/projects/spring-boot)\n* [RxJava](http://reactivex.io/)\n* [Kotlin](https://kotlinlang.org/)\n* [Arrow](https://arrow-kt.io/): Functional companion to Kotlin's Standard Library\n* [Jackson](https://github.com/FasterXML/jackson): JSON serialization/deserialization\n\n### Core Java Libraries\n\n* [Guava](https://github.com/google/guava)\n* [TotallyLazy](https://totallylazy.com/): A complete functional environment for Java\n* [jOOL](https://github.com/jOOQ/jOOL): The Missing Parts in Java 8\n\n### Caching\n\n* [Caffeine](https://github.com/ben-manes/caffeine): A high performance caching library for Java 8\n\n### Circuit Breaker\n\n* [Hystrix](https://github.com/Netflix/Hystrix) or [Resilienc4j](https://github.com/resilience4j/resilience4j)\n\n### Monitoring\n\n* [Grafana](https://grafana.com/)\n* [Prometheus](https://prometheus.io/)\n* [Prometheus push gateway](https://github.com/prometheus/pushgateway) \n* [Grafanalib](https://github.com/weaveworks/grafanalib): Python library for building Grafana dashboards\n* [Dropwizard Metrics](https://metrics.dropwizard.io/3.1.0/) or [Micrometer](http://micrometer.io/)\n\n### Networking\n\n* [Jersey HTTP client with reactive extensions](https://jersey.github.io/documentation/latest/client.html)\n* [OkHttp](https://square.github.io/okhttp/)\n* [JsonPath](https://github.com/json-path/JsonPath): A Java DSL for reading JSON documents.\n\n### XML Parsing\n\n* [XOM](http://www.xom.nu/)\n\n### Testing\n\n* [Rest-assured](http://rest-assured.io/)\n* [Wiremock](http://wiremock.org/)\n* [AssertJ](https://joel-costigliola.github.io/assertj/): Fluent assertions for Java\n* [QuickTheories](https://github.com/ncredinburgh/QuickTheories): Property based testing for Java 8\n* [Pitest](http://pitest.org/): Mutation testing for Java\n* [Snodge](https://github.com/npryce/snodge): Randomly mutate JSON, XML, HTML forms, text and binary data for fuzz testing\n\n### Performance Testing\n\n* [Vegeta](https://github.com/tsenart/vegeta): HTTP load testing tool and library\n* [usl4j](https://codahale.com/usl4j-and-you/): a Java library for modeling system performance given a small set of real-world measurements.\n\n### Security\n\n* [Threat Modelling](https://en.wikipedia.org/wiki/Threat_model)\n* [OWASP Top 10](https://www.owasp.org/index.php/Category:OWASP_Top_Ten_2017_Project)\n\n# Avoid _stringly_ typed stystems\n\nRather than passing a lot of Strings around in your system, try \nto use strongly typed objects. `ValueTypes` can help with that.\n\n```\nimport org.jetbrains.annotations.NotNull;\n\nimport java.util.Objects;\n\npublic abstract class ValueType\u003cT extends Comparable\u003cT\u003e\u003e implements Comparable\u003cT\u003e {\n\n    public final T value;\n\n    public ValueType(T value) {\n        this.value = value;\n    }\n\n    @Override\n    public int compareTo(@NotNull T other) {\n        return value.compareTo(other);\n    }\n\n    @Override\n    public boolean equals(Object o) {\n        if (this == o) return true;\n        if (o == null || getClass() != o.getClass()) return false;\n        ValueType\u003c?\u003e valueType = (ValueType\u003c?\u003e) o;\n        return Objects.equals(value, valueType.value);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(value);\n    }\n}\n```\n\nExample usage:\n\n```\npublic class Username extends ValueType\u003cString\u003e {\n    public Username(String value) { super(value); }\n}\n\nUsername alice = new Username(\"alice@hotmail.com\");\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FToastShaman%2Fawesome-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FToastShaman%2Fawesome-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FToastShaman%2Fawesome-microservices/lists"}