Notification Team MicroService Practice

REA-AAP-Notification

我们是……

  • 负责 REA 中邮件、推送、收藏等功能
  • 6 Dev, 1 QA, 1 Ops, 1 Lead Dev
  • Code Repos: 45
  • Apps & Services: 22
  • CI: 30
  • 全功能团队
  • DevOps 实践团队
  • 两个披萨饼团队
  • 本质上,人人都是工程师

Features

Architecture

Tech Stack

Language: java, ruby, scala, nodejs

Backend: spring-boot, grape, sinatra, play

Frontend: react, backbone, jquery

Process: sidekiq, AWS kinses

Persistence: RDS(MySQL, Postgres), Redshift, DynamoDB, S3

Environment: Docker​​, Gradle, Bundle, npm

Deployment: Deployment Util, AWS Cli, Stackup, Shipper

CI: Buildkite, Bamboo

大约十人的团队使用了这么多技术,因为:

合理的切分、严格按照准则、勇于尝试

Principles

The Twelve-Factor App

  • 基准代码
  • 依赖
  • 配置
  • 后端服务
  • Build,Release,Run
  • 进程
  • 端口绑定
  • 并发
  • 易处理
  • 等价环境
  • 日志
  • 管理进程

Interaction Styles

什么样的服务是好服务?

编排(orchestration)

  • 优点:中心驱动、事务支持、工作流
  • 缺点:承担太多的职责、子服务贫血

协同(choreography)

  • 优点:事件驱动,低耦合
  • 缺点:难以实现事务、一致性挑战
1对1 1对多
同步 request/response NA
异步 notification publish/subscribe

Event Driven Example: RIES-API

CI & CD

Code 到产品环境需要三个步骤:Build、Release、Run

  • Version Binding Problem
  • Independent Steps 
  • Easy to rollback
  • More Test

Under Microscope

  • 集成优先
    • 明确服务边界
    • 明确集成方式
    • 搭建 CI\CD
    • 返回满足 contract 的假数据
  • 自动化
    • 单元测试、集成测试、甚至 e2e 测试
    • 维护等价环境
    • CI 脚本的合理复用
  • 开发
    • 小步提交,持续集成
    • 代码、配置符合约定
    • 合理规划任务

202 Pull Requests

180 部署

Infrastructure

  • Artifacts
    • Docker Images
    • Static Files
  • Target
    • EC2
    • S3
    • Data Center
  • Tool
    • AWS CloudFormation
    • Bamboo, Buildkite
    • Stackup Shipper

EC2

App Contianer

Log Forwarder

Others...

EC2

App

EC2

App

...

ELB

Monitor - Log, Alarm, APM

High Lights

  • 云设计模式
    • Event Sourcing
    • CQRS
    • Gatekeeper
    • Static Content Hosting
    • Cache-Aside
    • Health Endpoint
    • ...
  • 数据管理
    • 0 downtime 迁移
    • 智能备份
  • 监控
    • dashboard
    • 工具集成
  • 自动化
    • 性能测试
    • 快速预研
    • 等价环境

Security

  • AWS ACL
    • 网络层安全
    • 创造安全域
    • 入侵检测
  • AWS IAM
    • 应用层安全
    • 服务权限
    • 方便调整
  • Service Security
    • 联邦认证
    • 分布式验证
    • 配置加密

Future...

  • Kubernetes
  • AWS ECS
  • AWS Lambda
  • Buildkite
  • Apache Kafka
  • Apache Storm
  • Cloud Foundry
  • Spring Cloud
  • MicroService Security
  • ……

让 Event Sourcing 发挥更大的价值!

Q & A

Thanks!

Notification Team MicroService Practice

By Yuchen Zhang

Notification Team MicroService Practice

  • 575