/ go

Go + Docker API服务开发和部署 - 开篇

为什么选择Go + Docker

笔者之前的项目开发主要使用Python。Python的优势在于简洁强大的语法,丰富的库包,以及极高的开发效率,而劣势在于通过解释器执行使得性能不够理想,缺少类型检查导致代码质量难以保证,全局锁的存在限制了并发性能,此外缺乏对并发编程的良好支持。这些劣势正好是Go的优势。虽然在开发效率上Go跟Python还有差距,但相比于其它静态类型语言,Go已经有很大提升了。

此外,笔者之前的项目部署主要使用virtualenv(Python 2)和pyvenv(Python 3)来创建独立的应用环境,Supervisor来管理应用进程,Fabric来编写自动化发布脚本。部署应用一键完成,已经能较好满足大多数项目的部署需求。不过不太满意的是,每次新增服务器都要重复进行配置系统,安装软件,优化系统参数等工作,如果要迁移到其它机房或云服务则会更麻烦。问题的根源在于,这种部署方式仅仅把应用依赖的语言库包跟应用一起打了包,但没有把应用运行依赖的系统环境也打包在一起。

Docker正好解决了这个问题,它将应用及其依赖的系统环境一起打包成一个Image(镜像),后面使用这个Image就可以快速的把应用部署到任意的服务器。Docker位于传统的IaaS之上,它让应用跟IaaS服务进行了解耦,这样应用就可以很方便的在各个IaaS服务之间做迁移。不再像以前,一旦做出了选择后面就再也没得选了。

起源

本文章系列是 React Native跨平台移动应用开发实战 的姊妹篇,都是笔者在开发 在球场 这款体育社交类应用过程中的技术总结。

内容目录

简化版的代码已在GitHub开源,在球场API服务开源版

  1. 开篇

其它资料

  1. 在球场API服务开源版
  2. 技术文章 - React Native跨平台移动应用开发实战
  3. 在球场官网