{
  "accessed": "2026-07-22",
  "sources": [
    {
      "name": "Martin Fowler Monolith First",
      "url": "https://martinfowler.com/bliki/MonolithFirst.html",
      "sha256": null,
      "required_text": ["good, stable boundaries between the services", "Any refactoring of functionality between services is much harder", "it takes a lot, perhaps too much, discipline"]
    },
    {
      "name": "Martin Fowler Microservice Trade-Offs",
      "url": "https://martinfowler.com/articles/microservice-trade-offs.html",
      "sha256": null,
      "required_text": ["remote calls are slow and are always at risk of failure", "each service manages its own database", "you can get a Big Ball of Microservice Mud"]
    },
    {
      "name": "Microsoft Identify microservice boundaries",
      "url": "https://learn.microsoft.com/en-us/azure/architecture/microservices/model/microservice-boundaries",
      "sha256": null,
      "required_text": ["There are no interdependencies that require two or more services to be deployed together", "start with more coarse-grained microservices", "maintaining data consistency means grouping related functionality"]
    },
    {
      "name": "Microsoft Data considerations for microservices",
      "url": "https://learn.microsoft.com/en-us/azure/architecture/microservices/design/data-considerations",
      "sha256": null,
      "required_text": ["Each microservice manages its own data", "keep a work item on a durable queue", "chatty APIs"]
    },
    {
      "name": "Microsoft Handle partial failure",
      "url": "https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/handle-partial-failure",
      "sha256": null,
      "required_text": ["ever-present risk of partial failure", "might not be able to respond in a timely way", "network issues"]
    }
  ]
}
