Skip to content

Instantly share code, notes, and snippets.

@nojima
Created October 21, 2015 09:41
Show Gist options
  • Save nojima/15802bdc449785d83af0 to your computer and use it in GitHub Desktop.
Save nojima/15802bdc449785d83af0 to your computer and use it in GitHub Desktop.

Building Microservices 第6章 Deployment

A Brief Introduction to Continuous Integration

TODO

Mapping Continuous Integration to Microservices

ソースコードレポジトリと CI ビルドの粒度をどうするか?

  • ひとつのソースコードレポジトリ、ひとつの CI ビルド
    • ひとつの巨大なレポジトリで全てのソースコードを管理し、 ひとつのビルドで全てのソースコードをビルドする。
    • コードがチェックインされるたびにソースコード全体がビルドされ、 全てのマイクロサービスに対して verification ステップが実行され、 複数のアーティファクトが生成される。
    • 基本的にこのパターンは避けるべき。
      • 1行の変更でも全てのサービスがビルドされ verify される。 これは開発のスピードに悪影響を与える。
      • ある変更をデプロイするためにどのサービスをデプロイすべきかがわからない。
      • ある変更がビルドを壊してしまった場合、全てのサービスのビルドが止まる。
  • ひとつのソースコードレポジトリ、サービス毎の CI ビルド
    • ひとつの巨大なレポジトリで全てのソースコードを管理し、 ソースツリーの部分部分に対応する複数の CI ビルドを走らせる。
    • 複数のサービスに対して同時に変更を加えるのが容易。
  • サービス毎のソースコードレポジトリ、サービス毎の CI ビルド
    • 著者が最もおすすめしているスタイル。

Build Pipelines and Continuous Delivery

Platform-Specific Artifacts

多くの技術スタックは、ある種の第一級アーティファクトを持っている。 Ruby なら gem, Java なら JAR, Python なら egg など。

しかし、マイクロサービスにおいては、このアーティファクトはそれ単体では十分でない。 JAR ファイルはそれ単体で実行可能にでき、埋め込まれた HTTP サーバを走らせることができるが、 Ruby や Python などは Apache や Nginx の中で走るプロセスマネージャを使いたいかもしれない。 (passenger のこと?)

Operating System Artifacts

Custom Images

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment