SlideShare a Scribd company logo
1 of 30
Download to read offline
DevOps @Gengo
冨田陽介
@seikoudoku2000
DevOps歴6ヶ月
AWS歴6ヶ月
好きなサービス:EC2
好きなチーム:ペイトリオッツ
Company

Chikirin の日記
Gengo 訪問!
OUTLINE
Our setup
ChefとVagrant
課題
今後
OUTLINE
Our setup
ChefとVagrant
課題
今後
Dev 7人、DevOps 2人、QA1人
60 + production servers (120 total )
about 10 repos
3 environments (Git flow)
15 + active contributors
nginx proxy

WordPress webアプリ

APIサーバ

webアプリ
その2

APIサーバ
その2

その他色々
OUTLINE
Our setup
ChefとVagrant
課題
今後
API or コンソール

+ omnibus plugin
share
folder
Sharing recipe on servers and local
Production/QA

Local

Knife-Solo

Vagrant

roles/api.rb

Vagrantfile

run_list(

config.vm.provision :chef_solo do |chef|
chef.add_recipe "base::git"

"role[base]",

chef.add_recipe "nginx"

"recipe[nginx]",
"recipe[python]",

chef.add_recipe "php_pack"

"recipe[repos::api]",

chef.add_recipe "python"

"recipe[monit]",

chef.add_recipe "repos::api"
:

"recipe[monit::nginx]",

:

"recipe[monit::api]"

:

)

:
end
Changing server configuration in a template
cookbooks/repos/templates/api.erb
-----<%- case node[‘environment'] %>
<%- when "live" %>

Define in nodes/xxx.json

api_url = 'http://api.gengo.com'
<%- when "qa" %>
api_url = 'http://yyy.api.gengo.com'
<%- when "dev" %>
api_url = 'http://localhost:8080'
<%- end %>
------

or
Vagrantfile
Changing Resource in a Recipe.
cookbooks/repos/recipes/api/default.rb
if node['environment'] == "dev"
git "#{node['repos']['home']}/#{project}" do
repository "git@github.com:gengo/api.git"
ssh_wrapper "/tmp/private_code/wrap-ssh4git.sh"
action :checkout
notifies :restart, "service[#{project}]"
end
else
deploy "/mnt#{node['repos']['home']}/#{project}" do
ssh_wrapper "/tmp/private_code/wrap-ssh4git.sh"
repo 'git@github.com:gengo/api'
branch "#{node['repos']['branch']}"
keep_releases 3
notifies :restart, "service[#{project}]"
end
end
感想
● Good
○ 動くコードが残る。(コードの壁 < 言葉の壁 )
○ マニュアル作業を(段々)しなくなる。
○ いつでも作り直せるという安心感。
( = disposable infrastructure)

● Bad / Question
○ デプロイだけしたい時にちょっと微妙。
○ Recipeのテスト書くべき? (監視とは継続的なテストである)
○ 冪等性?
disposable > idempotence
OUTLINE
Our setup
ChefとVagrant
課題
今後
Vagrantfileのメンテが大変
● サーバ / ローカルの二重メンテ
○ レシピの変更はサーバに流して終わりになりがち。
○ Vagrantの起動がよくエラーになる。。

● アプリケーションは進化する/増えていく
○ 処理がVangrantfileに一極集中。全体が見えない。
 ⇔ “Divide and Conquer”
○ 起動時間がどんどん長くなる
○ メンテが益々大変に。
不安定な開発環境構築
→ 作業の属人化
  (agileなのに)チームのagilityの低下
OUTLINE
Our setup
ChefとVagrant
課題
今後
Docker
・Linuxコンテナ(LXC)のラッパー
・軽量 / 起動が速い
→多くのコンテナを起動することが容易(らしい)
Vagrantfileのメンテが大変
● サーバ /ローカルの二重メンテ
○ レシピの変更はサーバに流して終わりになりがち。
○ Vagrantの起動がよくエラーになる。。
⇒サーバで流したレシピをそのままコンテナに流す

● アプリケーションは進化する/増えていく
○ 処理がVangrantfileに一極集中。全体が見えない。
 ⇔ “Divide and Conquer”
○ 起動時間がどんどん長くなる
○ メンテが益々大変に。
⇒コンテナが増えるだけ。他には影響しない。
必要に応じて連携

起動
参照

起動
AWSの話があまりなくてすいません、、
Any Questions?

@gengo, @gengo_ja
https://github.com/gengo
http://gengo.doorkeeper.jp
Development Flow

More Related Content

What's hot

What's hot (11)

Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
 
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
 
データカタログソフトウェア CKAN
データカタログソフトウェア CKANデータカタログソフトウェア CKAN
データカタログソフトウェア CKAN
 
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
 
Kotlin skeleton
Kotlin skeletonKotlin skeleton
Kotlin skeleton
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発
 
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみるAWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
 
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
 

Similar to Devops @ Gengo -- AWS日本語初会議

ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築
Masahiro Wakame
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
 
PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性
Serverworks Co.,Ltd.
 

Similar to Devops @ Gengo -- AWS日本語初会議 (20)

2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_tech
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
kunibiki.rb #5 発表資料
kunibiki.rb #5 発表資料kunibiki.rb #5 発表資料
kunibiki.rb #5 発表資料
 
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
 
同じサービスを ECSとOpsWorksで 運用してみた
同じサービスをECSとOpsWorksで運用してみた同じサービスをECSとOpsWorksで運用してみた
同じサービスを ECSとOpsWorksで 運用してみた
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 
Chefで作る開発環境
Chefで作る開発環境Chefで作る開発環境
Chefで作る開発環境
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
Chef
ChefChef
Chef
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 

Devops @ Gengo -- AWS日本語初会議