本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】持续部署Microservices的实践和准则

时间:2017-03-17 21:10来源:报码现场 作者:118KJ 点击:
文/吕健 当我们讨论时,我们通常会和(单体架构 )进行比较。 在Monolithic架构中,一个简单的应用会随着功能的增加、时间的推移变得越来越庞大。当Monoltithic App变成一个庞然大物

报码:【j2开奖】持续部署Microservices的实践和准则

  文/吕健

  当我们讨论时,我们通常会和(单体架构 )进行比较。

  

报码:【j2开奖】持续部署Microservices的实践和准则

  在Monolithic架构中,一个简单的应用会随着功能的增加、时间的推移变得越来越庞大。当Monoltithic App变成一个庞然大物,就没有人能够完全理解它究竟做了什么。此时无论是添加新功能,还是修复Bug,都是一个非常痛苦、异常耗时的过程。

  Microservices架构渐渐被许多公司采用(、、),用于解决Monolithic架构带来的问题。其思路是将应用分解为小的、可以相互组合的Microservices。这些Microservices通过轻量级的机制进行交互,通常会采用基于HTTP协议的服务。

  每个Microservices完成一个,它可以是一个HTTP API服务,提供给其他服务或者客户端使用。也可以是一个服务,用于完成数据迁移工作。每个Microservices除了在业务独立外,也会有自己独立的运行环境,独立的开发、部署流程。

  这种独立性给服务的部署和运营带来很大的挑战。因此持续部署(Continuous Deployment)是Microservices场景下一个重要的技术实践。本文将介绍持续部署Microservices的实践准则

  实践:

使用Docker容器化服务

采用Docker Compose运行测试

  准则:

构建适合团队的持续部署流水线

版本化一切

容器化一切

使用Docker容器化服务

  我们在构建和发布服务的时候,不仅要发布服务本身,还需要为其配置服务器环境。,可以让我们不仅发布服务,同时还发布其需要的运行环境。容器化之后,我们可以基于Docker构建我们的持续部署流水线:

  

报码:【j2开奖】持续部署Microservices的实践和准则

  上图描述了一个基于(简称:Rails)服务的持续部署流水线。我们用配置Rails项目运行所需的环境,并将Dockerfile和项目同时放在Git代仓库中进行版本管理。下面Dockerfile可以描述一个Rails项目的基础环境:

  FROM ruby: 2.3.3RUN apt-get update -y && \ apt-get install -y libpq-dev nodejs git WORKDIR /app ADD Gemfile /app/Gemfile ADD Gemfile.lock /app/Gemfile.lock RUN bundle install ADD . /app EXPOSE 80CMD [ "bin/run"]

  在持续集成服务器上会将项目代和Dockerfile同时下载(git clone)下来进行构建(Build Image)、单元测试(Testing)、最终发布(Publish)。此时整个构建过程都基于Docker进行,构建结果为,并且将最终发布到。

  在部署阶段,atv,部署机器只需要配置Docker环境,从Docker Registry上Pull Image进行部署。

  在服务容器化之后,我们可以让整套持续部署流水线只依赖Docker,并不需要为环境各异的服务进行单独配置。

  使用Docker Compose运行测试

  在整个持续部署流水线中,我们需要在持续集成服务器上部署服务、运行单元测试和集成测试Docker Compose为我们提供了很好的解决方案。

  可以将多个Docker Image进行组合。在服务需要访问数据库时,我们可以通过Docker Compose将服务的Image和数据库的Image组合在一起,然后使用Docker Compose在持续集成服务器上进行部署并运行测试。

  

报码:【j2开奖】持续部署Microservices的实践和准则

  上图描述了Rails服务和Postgres数据库的组装过程。我们只需在项目中额外添加一个来描述组装过程:

  db: image: postgres:9.4 ports: - "5432" service: build: . command: ./bin/run volumes: - .:/app ports: - "3000:3000" dev: extends: file: docker-compose.yml service: service links: - db environment: - RAILS_ENV=development ci: extends: file: docker-compose.yml service: service links: - db environment: - RAILS_ENV=test

  采用Docker Compose运行单元测试和集成测试:

  docker-compose run -rm ci bundle exec rake构建适合团队的持续部署流水线

  当我们的代码提交到代码仓库后,持续部署流水线应该能够对服务进行构建、测试、并最终部署到生产环境。

  为了让持续部署流水线更好的服务团队,我们通常会对持续部署流水线做一些调整,使其更好的服务于团队的工作流程。例如下图所示的,一个敏捷团队的工作流程:

  

报码:【j2开奖】持续部署Microservices的实践和准则

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容