前言
为了在企业中能够更好的支持Cloud, Mobile, Big Data,成功的关键在于能够 安全的, 可靠的,一致的发布web services. REST API是目前广泛使用的web service,WEB API为底层的应用与数据提供与发布web-enabled 接口,它的特点是能够直接简单的访问应用功能与数据;并且解耦不同的IT服务,从而IT服务提供者能够独立的提供IT服务,支持application-to-application的集成模式。
API First策略意味着所有的集成场景中首先考虑API集成的方式,甚至在应用没有开发的时候就需要考虑其可以提供的API。将API与底层的应用分开来考虑,将API作为一个产品,从而能够更大程度的复用API。
API管理提供了API发布,API发现,API网关,API运维等功能。
API 为中心的架构
在API为中心的架构中,API管理作为中心的接口层,解耦了接口提供者与接口消费者,其概要架构如下图
REST API Unless
其他的技术,例如GraphQL, gRPC , SOAP在一些特定场景下可以满足特定的需求。
REST | GraphQL | gRPC | SOAP |
---|---|---|---|
Internal and External Integration | Internal Integration | Internal Integration | Internal Integration |
需要灵活、复杂的数据结构 | 在高性能的场景中(REST与JSON的latency不能满足的情况下) | 旧系统提供的接口 | |
需要高频率的API调用 | 可以使用REST包装供外部调用 | 只用于系统API的层级 |
Streaming API
Streaming API能够实时将数据传输给客户端,与一般REST API的区别在于Streaming API 使用HTTP长连接,并将数据主动推送到客户端. 在服务端持续的产生数据流的场景中,能够极大的降低网络延迟。
通常Streaming API使用publish/subscribe模式。
微服务与API
微服务架构中每个微服务只提供其一套服务 - It does one thing and it does it well.
微服务的特征包括自治性与隔离性(autonomous and isolated), 也就是说微服务本身是 独立的功能单元, 微服务之间是松耦合的,各个微服务都是独立设计、开发、测试和发布的。 当需要变更的时候,只有影响到的微服务需要devops的自动化部署管道,从而也简化了系统更新的过程.
由于上述的可复用性,某个微服务可以被数个其他服务所调用,所以微服务还应具有按需伸缩的特性。
API分类
在企业应用中,可以根据数据的分类与API的使用范围(企业内部还是外部)来做API的分类。 例如
- Public API only expose unrestricted information
- Partner API may access restricted information
- Internal API
- Private API
API分层
API分层的主要目的是增加API的可重用性和灵活性,从上至下分为以下三层
- 访问层 🡪 UI and presentation specific logic
- 业务层API 🡪 Orchestration and process triggers
- 系统层API 🡪 每一个业务系统的API
API平台
所以,发布了API之后就可以开始集成工作,然后就没有问题了,是这样吗?当然不是,还需要考虑安全与威胁,认证与授权,可用性,监控等才是一个完整的API产品。
API平台是管理API的中间件,应当具备以下功能:
- API Management
- API life cycle management
- API Developer Portal
- API Proxy
- Policy Management
- Mediation,format mediation and protocol mediation
- Operations
- Security
- Monitoring
- Report&Analysis
- Messaging
- Orchestration
- Data Transformation
- Message Routing
- Adapters/Connectors
API安全
API安全是最被忽视的一层,但是必须重视
一些必要点
- API设计阶段就应该开始Risk Assessment
- 所有的API必须配置默认的最小安全策略集,包括
- Https (TLS1.2 or later)
- IP White/Black List
- Authentication and Authorization
- API key Security
- Basic Authentication
- OAuth 2.0
- Certificate based authentication
- Restrict http methods
- Input validation
- Error logging
- Audit logs
- Spike Arrest
- Quota
- JSON Threat mitigation
- XML threat detection.
- API 发布需要IT安全部门的审批
- API monitoring是必要的
- 需要Web 防火墙来支持DDOS prevention, threat mitigation等