Más contenido relacionado
La actualidad más candente (20)
Similar a Dockerを活用したリクルートグループ開発基盤の構築 (20)
Más de Recruit Technologies (20)
Dockerを活用したリクルートグループ開発基盤の構築
- 2. 自己紹介
(def
me
{:name
"吉田
尚弘"
:age
"33"
:job
"アーキテクト"
:company
{:name
"リクルートテクノロジーズ"
:joined-‐at
"2014/03/01"}
:favorite-‐lang
["Java"
"Clojure"
"Go"]})
- 12. container container container container
docker daemon
Dockerとは
■ Linuxのコンテナ技術を利用して、隔離空間(コンテナ)を作成してプロセスを実行
■ ファイルシステム/ネットワークなどはコンテナごとに独立している
■ ハイパーバイザと異なり、ゲストOSを起動するわけではないため高速に起動可能
環境をコンテナごと全て入れ替えたり
同じ設定の環境を複数高速に起動したり削除したりするのに向く
OS
172.20.10.1 172.20.10.2 172.20.10.3 172.20.10.4
1コンテナ複数
プロセス可 プロセスごとにコンテナを分割しコンテナ間で連携することも可
参考
- 13. container
container
Dockerとは
■ Dockerfileを作成してコンテナのイメージを作成
■ 作成したイメージはDockerがインストールされていれば動作可能
■ インフラの専門的な知識がないアプリケーションエンジニアでも記述可
FROM
centos65
!
#
Java
8
RUN
yum
install
-‐y
wget
unzip
curl
ADD
download.sh
download.sh
RUN
sh
download.sh
RUN
rpm
-‐ivh
jdk-‐8u20-‐linux-‐x64.rpm
RUN
export
JAVA_HOME=/usr/java/jdk1.8.0_20
#
Tocmat
7
ENV
CATALINA_HOME
/usr/local/tomcat
ENV
PATH
$CATALINA_HOME/bin:$PATH
RUN
mkdir
-‐p
"$CATALINA_HOME"
WORKDIR
$CATALINA_HOME
ADD
tomcat
/usr/local/tomcat
ADD
start.sh
/usr/bin/start.sh
EXPOSE
8080
CMD
sh
/usr/bin/start.sh
docker -d
docker build
Dockerfile
例)centos7の場合のimage保存先(default)
/var/lib/docker/
-‐
devicemapper/devicemapper/
-‐
graph/${image_id}
image作成
docker run
container
コンテナ起動
アプリケーションエンジニアが開発作業としてコンテナを作成し
環境ごと構築することができる
参考
- 14. Clojureとは
■ Lich Hickyが開発したJVMで動作するLisp方言の関数型言語
■ 動的型付け/Immutable
参考
;指定した名字の最大年齢算出する関数
(defn
get-‐max-‐age
[name]
(-‐>>
(repeatedly
100
new-‐person)
;Personを100個生成
(filter
#(=
(:name
%)
name))
;名字でフィルター
(map
#(:age
%))
;age属性のみ取得
(apply
max)))
;最大値取得
!
;指定した名字に対応して部分適用
(def
灬╹ω╹灬
(partial
get-‐max-‐age
"sato"))
(def
ಠ_ಠ
(partial
get-‐max-‐age
"tanaka"))
!
;それぞれ出力
(灬╹ω╹灬)
(ಠ_ಠ)
- 15. UI
akagiのアプリケーションアーキテクチャ
Java 8
Clojure 1.6
ring-server
DB Agent
Java 8
Clojure 1.6
core.async
Batch Agent
Java 8
Clojure 1.6
http-kit
core.async
Docker Agent
Java 8
Clojure 1.6
http-kit
core.async
■ 全面的にClojureで開発
■ Web UIから環境構築に必要な命令をAgentに配信
■ Agentは自分のタスクを終了すると次の処理を行うエージェントに命令送信
http
http
http
http http
http
http-kit
Web/App Batch
DB
- 20. アプリ1 アプリ2
この構成のメリット
Web / App
Container
Module
Container
Config Container
Log Container
ミドルウェア
パッチ当て
ログ確認
緊急設定変更
■ 変更頻度の異なるコンテナを別々にすることでコンテナ変更時の影響を局所化
■ 関心のあるコンテナのみを操作すればよい
凡例 docker build / docker run docker attach / docker exec
Web / App
Container
Module
Container
アプリ1のみ起動
App engineer
アプリ
バージョンアップ
設定変更
Infra engineer
akagi