For Bio-OS开发者
Last updated
Last updated
特点:高可扩展,包括接口、存储层等;深度集成生信领域流行的开源工具,Cromwell、JupyterHub等;
下图展示了运行依赖的网络和存储,及内部各组件间的调用关系;
文件存储存放生信分析作业的输入输出和Notebook,DB存放各类实体控制信息,包括工作流脚本。
整个项目深度实践了领域驱动设计;图中仅示意了API Server所代表的核心域设计,Cromwell、JupyterHub处于支撑域未做体现;限界上下文划分基于动静分离原则,出于轻量化的考虑,所有限界上下文被集中实现于单个服务中。
限界上下文
职责
Workspace
用于归档和呈现生信分析过程和结果资料,同时也是划分人员权责的基本单元
Notebook Server
用于管理Notebook编辑环境,即环境设置和环境生命周期
Submission
用于管理工作流运行及其历史
Hertz 字节跳动CloudWeGo团队开源的HTTP服务框架GRPC GRPC主要被用于CLI接入及内部各限界上下文间的接口调用Casbin 基于其RBAC能力支持访问控制GORM Go生态中最流行的ORM框架,所有关系型数据库都借助它进行连接
代码部分
其他
项目采用经典四层结构:
Interface层 用于借助各种server框架实现不同的种类的接口,与Hertz和GRPC的对接就在该层实现,在层内会对不同的协议类型分别定义View Object,并实现从View Object到Data Transfer Object的转换
Application层 按CQRS原则分command和query,其中query中带有Read Model抽象定义,由Infrastructure层实现,用于与Interface层传递的数据Data Transfer Object定义于此
Domain层 最核心的部分,其对外部的依赖也由其进行抽象定义,抽象的实现由外部完成,比如典型的Repository,表现为依赖倒置
Infrastructure层 负责对包括存储在内的各种外部设施的对接,表现为各种抽象的实现
所需工具(未涉及前端):
Git
GNU Make
Go 1.19或以上
Docker
其余的工具(例如swagger、womtool、protoc等)可以通过make tools
一键安装
对于集群部署,推荐使用官方提供的helm charts,原文档中以Minikube为运行环境,但更推荐使用公有云kubernetes托管服务,能一键安装网络、存储组件,另外公有云也有NFS、MySQL产品
准备一个工作目录,在目录中创建application.conf,并将以下内容进行粘贴
下载程序文件cromwell.jar
从下面的链接下载cromwell-85.jar:https://github.com/broadinstitute/cromwell/releases/tag/85
运行bash ./run.sh