1. 关于个人项目
为什么强调是个人项目?商业项目对代码托管、开发、运维部署等环节有着冗长的流程。而对于个人开发者,这样的流程成本过高,不利于快速项目迭代。个人项目可能是一次学习的 Demo。完成一个领域 Demo 是很好的技术学习思路。从零开始搭建一个完整的 Demo, 不仅能了解到一些常见的领域问题,还能够对领域有一个完整的了解。既见树木,又见树林。个人项目也有可能是为了满足一个小的需求。比如,你需要一个在线相册,而公共相册又不能任意的按照自己的想法展示,也不承诺永久服务。这样就产生了一个需求。你可以自己开发在线相册,也可以在开源项目的基础上修改,总之有了一个小需求。无论何种出发点,个人项目都应该被鼓励。个人项目是程序员的试验场,也是程序员展示自己的地方,既能够提高自己的能力,也能够取悦自己。
2. 使用 GitHub 开源自己的项目
你要记住的是,你的代码远没有你想象的那么重要。绝大多数的程序员只是在模仿或者搬运他人的成果,具有开创性贡献的程序员极少。这里并不是在贬低模仿或者搬运,对于商业来讲,代码的核心是与业务逻辑相关的实现,并不需要特殊的技巧。而对于个人项目,摆脱了业务逻辑的束缚,开源对我们不仅没有害处,还有诸多好处。
- 监督代码质量。毕竟是需要对外开源的项目,代码肯定被自己 Review 很多次。
- 交流项目合作开发。全世界的程序员都在 GitHub,用 issues 提交自己的问题,通过 PR 多人开发。
- 增加影响力。你的Demo、小需求,其他人也会需要,在分享给其他人的同时,你也获得了其他人的赞许,收获影响力。
3. 使用 Docker 容器化项目
Docker 简直是喜欢折腾服务器者的福音。在没有 Docker 之前,服务器总是被弄得乱糟糟,安装各种服务软件、运行环境,没过多久服务器磁盘就不够用了。有了 Docker 之后,你可以在隔离的运行环境去完成自己的各种尝试。Docker 通过 lxc、cgroup、namespace 等技术在宿主机上虚拟出运行时,提供支持秒级启停的虚拟机服务。相对于 VirtualBox、VMWare 等虚拟机,Docker 更轻量级,对资源利用率更高效。使用 Docker 容器化一个项目也只有三步:
- 需要合适的基础镜像
- 挂载目录
- 暴露服务端口
|
|
上面是我为最近 Docker 化的一个应用,编写的 Dockerfile 文件。为了加快依赖包安装时间,使用了 cnpm。
4. 使用 hub.docker.com 发布镜像
通过 GitHub 托管代码的好处是可以方便地使用各种各样周边的服务。比如,用于持续集成的 Travis CI 。这里想提的是 hub.docker.com 提供的镜像编译功能。在 hub.docker.com 注册账号之后,创建项目关联上 GitHub 的项目。每次向 GitHub 推送代码之后,就会触发 hub.docker.com 的编译镜像任务。同时,编译完成的镜像也可以被其他人所使用。
5. 使用 GitLab 私有仓库托管部署脚本
对于一些私人信息的配置,放在 GitLab 是一个不错的选择。GitHub 免费账号只能创建公开项目,而 GitLab 免费账户也可以创建私人项目。将项目配置、部署脚本托管在 GitLab 私有仓库,既保证了隐私,也记录了配置和脚本的变更。再加上 GitLab CI,GitLab 真的是越用越喜欢。
|
|
上面是我最近利用 docker-compose 编排的一个服务。只需要一个 docker-compose.yml 文件,加上一些配置文件,在任意一台服务器上,都可以使用一条命令 docker-compose up -d
将服务跑起来。
6. 将服务监控起来
有两种方式监控服务:
- 第一种是通过日志。通过部署 ELK 可以很好的记录运行和访问日志,针对日志关键字可以开发相关的监控告警系统。
- 第二种是监控系统。通过部署 Prometheus、Bosun 可以对服务进行有效地监控。
如果嫌麻烦,还有一种更加方面的途径,使用 DaoCloud。安装 DaoCloud 的 Agent ,将主机托管在 DaoCloud 之后,就可以实时地查看和部署服务,了解服务器的运行状况了。