一个创业公司的容器化之路一个创业公司的容器化之路-容器化之前及容器化容器化之前及容器化
容器化之前
1. 创业公司的技术挑战
托尔斯泰说:“幸福的家庭都是相同的,不幸的家庭各有各的不幸。”互联网创业公司也一样。大部分互联网创业公司,都会碰
到以下几个技术挑战。
如何快速、低成本的搭建系统,同时确保安全稳定?
如何快速的构建和发布应用,满足业务需求?
如何提高团队开发效率,确保开发质量?
这个列表肯定不完整,但这三个应该是创业公司技术团队都会面临的共通的问题。当然杏仁不能说完全解决了这几个问题,但
还是取得了一些进展。我们接下来简单介绍下,我们杏仁是怎么应对这些挑战的,以及容器又可以带来什么?
介绍容器化之前,先来说一下杏仁技术架构的发展历史。接着介绍容器以及杏仁的容器化方案
2. 杏仁早期
在 2012 年以前,大部分互联网公司包括创业公司,都是直接购买服务器,租用 IDC 机房的机架部署的。应用是直接运行在物
理机上的,要扩展必须购买新服务器。IDC 经常出各种故障,如果碰到 IDC 迁移的话,就更痛苦,必须半夜搬机器,天亮前
上线。总之对创业公司的成本、服务稳定性、工作效率都是有很大的消耗。
不过杏仁医生很幸运,正好赶上了公有云的成熟,所以一开始就是基于公有云搭建的。杏仁医生最早期的架构如下:
这个架构非常简单,其中负载平衡、数据库都是基于腾讯云的。然后腾讯云也提供了一些基础的监控、告警和安全服务。然后
就是两个应用,一个移动后端 API,一个运营平台,都是基于 Play 的 Scala 应用。
很多人可能会好奇为什么选择 Scala/Play 进行开发,毕竟 Scala 在国内应该用的不多。这里一方面因为杏仁医生是继承了看
处方的架构,当初看处方就是基于 Scala/Play 开发的, 团队对这一套方案比较熟悉。我们需要快速的构建杏仁医生,自然
就会选择最熟悉的语言和框架。而且对于中小规模的应用,Scala/Play 的开发效率的确非常高。Scala 本身的表达能力非常
强,是一门很有意思的语言。很多好学的工程师,也会对新的语言也会比较感兴趣。
3. 应用拆分和CI/CD
经过一年多快速演进,整个应用越来越庞杂。所以我们对应用进行了拆分,并且随着业务扩张,应用也越来越多,例如 HIS、
CRM 等。所以我们的架构变成了这个样子。