正确实施的微服务能够实现团队独立扩展和部署速度。如果实施不当,它们会带来分布式复杂性的噩梦。我们构建的微服务架构以 Domain-Driven Design 为基础,由适当的基础设施支持,并通过全面的可观测性进行操作——在不带来典型混乱的情况下实现其优势。
我们使用 AWS/GCP 上的 Kubernetes 进行构建,使用 Apache Kafka 或 NATS 进行消息传递,使用 gRPC 实现高性能内部 API,并使用 REST/GraphQL 实现外部 API。每个服务都通过 Docker 进行容器化,通过 ArgoCD 部署,并使用分布式追踪进行监控。
适用于需要从第一天起就独立扩展的新系统工程团队,或需要服务自治的多个团队组织。我们还帮助那些尝试微服务但最终形成“分布式单体”的团队——修复架构以实现真正的微服务优势。
建模业务领域,识别服务边界,并定义所有权和通信契约。
设计基础设施平台——Kubernetes 集群、CI/CD、Service Mesh 和共享库。
构建核心服务,包括适当的测试、容器化和部署自动化。
实现服务间通信、契约测试和混沌工程验证。
部署可观测性,建立 SLO,记录架构决策,并创建操作手册。
我们采用 domain-driven design 来识别 bounded contexts,定义服务边界,使用 OpenAPI 或 protobuf 建立 API 契约,设计服务间通信模式,并使用 Kubernetes 创建部署策略。
我们实现了通过 REST 和 gRPC 进行的同步通信,通过 Kafka 和 RabbitMQ 进行的异步消息传递,通过 CQRS 和 event sourcing 实现的事件驱动架构,以及用于分布式事务管理的 saga patterns。
是的,我们采用 strangler fig pattern,从您的单体应用中逐步抽取服务,从最可独立部署的领域开始,同时保持向后兼容性,并避免对现有用户造成任何中断。
我们使用 Consul 或 Kubernetes DNS 设置服务发现,并使用 Kong、AWS API Gateway 或自定义 NestJS/Express 网关来配置 API 网关,这些网关具备限流、认证、请求路由和熔断功能。
Microservices 开发的定价为每小时 10 到 50 美元,其中架构设计和初始服务分解通常需要四到八周,然后才会开始增量服务提取。