# Features

### 基于配置文件定义应用

* 在现有的应用上只需要增加一个配置文件 spec.yaml 即可定义应用在 Eru 集群里的编译和运行
* 配置文件不与代码/可运行镜像绑定
* 对现有项目 0 侵入

### 调度器中立

* Eru core 层面不绑定 workflow 行为，只关心资源和编排调度
* 通过 [cli](https://github.com/projecteru2/cli) 可以使用本地或者远程配置直接通过 Eru 来部署已有的镜像
* 方便接入上层应用 PaaS 亦或是现有的其他基础设施

### SDN 网络安全隔离

* 默认使用开源的 [calico](https://github.com/projectcalico/calico) 项目构建 [SDN 网络](https://zh.wikipedia.org/wiki/%E8%BB%9F%E9%AB%94%E5%AE%9A%E7%BE%A9%E7%B6%B2%E8%B7%AF)
* 高效率的应用内网络互通
* 多租户隔离(依托于 calico 自己的 ACL 由 Ops 层面决定)
* 支持其他不同的 SDN Driver

### 容器技术支持多样化的技术栈

* 支持 [docker](https://github.com/moby/moby) 构建容器云
* 自动生成 Dockerfile, 支持多步构建部分替代 CI 能力
* 提供动态运行代码/命令入口 (类似于 [AWS lambda](https://aws.amazon.com/cn/lambda/))
* 容器技术天然的支持隔离系统和应用的依赖
* 提供无痛升级能力

### 支持多种 executor

* 支持混合编排容器和虚拟机
* 允许自定义 Executor

### 应用在线扩容缩容

* 自行设计调度核心进行高效调度
* 支持用户从数量和资源两个维度进行扩容/缩容
* 支持应用在不下线的前提下实时重分配资源
* 支持 in-place 复用资源配额就地更新

### 服务健康检查

* 提供自定义服务健康检查，实时知道每一个应用状态 （Agent）
* 同时支持 tcp 和简单 http 健康检查行为

### 集群体系化的日志收集

* 支持多种日志 forward 行为，方便接入各类已有基础设施
* 默认收集应用的 stdout/stderr 日志收集
* 附带足够多元信息日志流方便规整和查询

### 集群自动服务发布

* 基于 [OpenResty](https://openresty.org/en/) 实现了 7 层 [Elastic load balancer](https://github.com/projecteru2/elb)
* 配合健康检查和 Eru 应用控制能力实现动态发布
* 在应用发生异常时通过 Eru 反馈机制实时进行节点摘除行为，避免服务崩溃

### 可选的存储配置和备份

* 支持在 spec.yaml 中显式声明 volume
* 支持备份

### 支持配置分离

* 允许创建时动态传入文件
* 允许自定义环境变量
* 允许运行时传入不同配置

### 高可用

* 提供 Go SDK
* 基于 gRPC 的高可用
* 高性能, 负载均衡在客户端实现

### 告警

* 通过配置文件开启 sentry 告警


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.eru.dev/overview/features.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
