云原生CAx软件技术约束
云原生CAx软件:技术约束
Pital公司的Matt Stine于2013年首次提出 Cloud Native ( 云原生 )的概念,从概念提出到技术落地,云原生还处于不断发展过程中,关于云原生的定义也不断在完善。
云原生使用开源软件堆栈来创建容器化、动态编排和面向微服务的应用程序。
Heroku创始人 Adam Wiggins 在2012年提出的"十二要素原则"用于指导设计与开发云原生应用程序。
Ref. from
I. Codebase
One codebase tracked in revision control, many deploys
II. Dependencies
Explicitly declare and isolate dependencies
III. Config
Store config in the environment
IV. Backing services
Treat backing services as attached resources
V. Build, release, run
Strictly separate build and run stages
VI. Processes
Execute the app as one or more stateless processes
VII. Port binding
Export services via port binding
VIII. Concurrency
Scale out via the process model
IX. Disposability
Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity
Keep development, staging, and production as similar as possible
XI. Logs
Treat logs as event streams
XII. Admin processes
Run admin/management tasks as one-off processes
与此同时,云原生的概念与技术也在逐渐影响 CAx ( CAD / CAE / CAM ) 软件 的架构设计与开发,要考虑设计与实现 原生为云的CAx软件 : 云原生CAx软件 ( Cloud Native CAx System )
狭义上来说,云原生CAx软件实际上就是采用微服务架构、以Kubernetes容器集群为目标平台的CAx软件。
目前,国内已有厂商也在从事 云原生CAx ( CAD / CAE / CAM )相关的研究,并推出了相应的 云原生CAx 产品。作为一种学习与研究方法,如果抛开具体的业务需求,可以尝试按照以下思路对这些云原生CAx软件进行分析:
- 知名(云原生)CAx软件采用的架构模式;
- 架构模式中技术约束的作用;
- 归纳总结(云原生)CAx软件应当满足的技术约束。
在前面的博文中,已就云原生CAx软件设计与开发过程中可能涉及的基础知识进行了总结,但尚未对云原生CAx软件的技术约束进行研究。
Software architecture research investigates methods for determining how best to partition a system, how components identify and communicate with each other, how information is communicated, how elements of a system can evolve independently, and how all of the above can be described using formal and informal notations. ——
因此,本文结合技术研究与工作实践,拟对云原生CAx软件设计和开发的技术约束进行系统性总结。
注1:限于研究水平,分析难免不当,欢迎批评指正。
注2:文章内容会不定期更新。
一、C/S架构
二、多租户服务
三、微服务架构
四、HPC加持
参考文献
Joseph Ingeno. Software Architect’s Handbook. Packt Publishing, 2018.
Fielding, Roy Thomas. Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine, 2000.
网络资料
[Architectural Styles and the Design of Network-based Software Architectures
“Architectural Styles and the Design of Network-based Software Architectures”)
[The Twelve Factors
“The Twelve Factors”)