Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
ast_j
PDF, PPTX
1,110 views
はてなのサービスの開発環境
2015/02/07 Hatena Enginner Seminar #4
Engineering
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 76
2
/ 76
3
/ 76
4
/ 76
5
/ 76
6
/ 76
7
/ 76
8
/ 76
9
/ 76
10
/ 76
11
/ 76
12
/ 76
13
/ 76
14
/ 76
15
/ 76
16
/ 76
17
/ 76
18
/ 76
19
/ 76
20
/ 76
21
/ 76
22
/ 76
23
/ 76
24
/ 76
25
/ 76
26
/ 76
27
/ 76
28
/ 76
29
/ 76
30
/ 76
31
/ 76
32
/ 76
33
/ 76
34
/ 76
35
/ 76
36
/ 76
37
/ 76
38
/ 76
39
/ 76
40
/ 76
41
/ 76
42
/ 76
43
/ 76
44
/ 76
45
/ 76
46
/ 76
47
/ 76
48
/ 76
49
/ 76
50
/ 76
51
/ 76
52
/ 76
53
/ 76
54
/ 76
55
/ 76
56
/ 76
57
/ 76
58
/ 76
59
/ 76
60
/ 76
61
/ 76
62
/ 76
63
/ 76
64
/ 76
65
/ 76
66
/ 76
67
/ 76
68
/ 76
69
/ 76
70
/ 76
71
/ 76
72
/ 76
73
/ 76
74
/ 76
75
/ 76
76
/ 76
More Related Content
PDF
Vagrant+Ansibleで検証環境を簡単構築
by
Ken Sawada
PPTX
Ansible/Vagrantでアドテク環境を最速構築
by
kaboccha
PDF
Vagrant - 最近流行ってるらしいけど何者?
by
Yoshinori Nakanishi
ODP
Nseg20120929
by
hiro345
PDF
OSS Product feat. Gradle
by
Yasuharu Nakano
PDF
Scala 初めての人が Heroku で Web アプリを公開するまで
by
Hideaki Miyake
PDF
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
by
Masashi Shinbara
PDF
Getting Started With Ore-Ore Swift Standard Library +
by
Tomohiro Kumagai
Vagrant+Ansibleで検証環境を簡単構築
by
Ken Sawada
Ansible/Vagrantでアドテク環境を最速構築
by
kaboccha
Vagrant - 最近流行ってるらしいけど何者?
by
Yoshinori Nakanishi
Nseg20120929
by
hiro345
OSS Product feat. Gradle
by
Yasuharu Nakano
Scala 初めての人が Heroku で Web アプリを公開するまで
by
Hideaki Miyake
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
by
Masashi Shinbara
Getting Started With Ore-Ore Swift Standard Library +
by
Tomohiro Kumagai
What's hot
PDF
Getting Started With Ore-Ore Swift Standard Library ++ ほんのり続報
by
Tomohiro Kumagai
PDF
Vagrant+virtualboxを使ってみよう
by
Kei IWASAKI
PPTX
Alpine linuxを触ってみよう
by
Ryo Adachi
PDF
Laravel5を使って開発してみた
by
Takeo Noda
PDF
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
by
Go Sueyoshi (a.k.a sue445)
PPTX
サーバ側Swift
by
幸雄 村上
PDF
Vagrant を Web開発環境に使う
by
Masashi Shinbara
PDF
VagrantからDockerに開発環境を移行した時の話
by
Daijiro Abe
PDF
クラウド上でのChef活用と ベストプラクティス v0.2.0
by
NIFTY Cloud
PDF
誰でも出来るローカル開発環境の作り方
by
666oh666
PDF
Jenkinsの導入 vol.02 Bitbucketと連携する
by
regret raym
PPTX
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
by
真乙 九龍
PPTX
Gradle入門
by
orekyuu
PPTX
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
by
辰徳 斎藤
PDF
20130723 ecシステムにchefを導入してみた v1.0
by
NIFTY Cloud
PDF
JobScheduler Code Reading
by
Shinobu Okano
PDF
React Native GUIDE
by
dcubeio
PDF
認証機能で学ぶ Laravel 5 アプリケーション
by
Masashi Shinbara
PDF
Gradle布教活動
by
Nemoto Yusuke
PDF
Chefで作る開発環境
by
regret raym
Getting Started With Ore-Ore Swift Standard Library ++ ほんのり続報
by
Tomohiro Kumagai
Vagrant+virtualboxを使ってみよう
by
Kei IWASAKI
Alpine linuxを触ってみよう
by
Ryo Adachi
Laravel5を使って開発してみた
by
Takeo Noda
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
by
Go Sueyoshi (a.k.a sue445)
サーバ側Swift
by
幸雄 村上
Vagrant を Web開発環境に使う
by
Masashi Shinbara
VagrantからDockerに開発環境を移行した時の話
by
Daijiro Abe
クラウド上でのChef活用と ベストプラクティス v0.2.0
by
NIFTY Cloud
誰でも出来るローカル開発環境の作り方
by
666oh666
Jenkinsの導入 vol.02 Bitbucketと連携する
by
regret raym
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
by
真乙 九龍
Gradle入門
by
orekyuu
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
by
辰徳 斎藤
20130723 ecシステムにchefを導入してみた v1.0
by
NIFTY Cloud
JobScheduler Code Reading
by
Shinobu Okano
React Native GUIDE
by
dcubeio
認証機能で学ぶ Laravel 5 アプリケーション
by
Masashi Shinbara
Gradle布教活動
by
Nemoto Yusuke
Chefで作る開発環境
by
regret raym
Viewers also liked
PDF
セールスエンジニアとして今後身につけていきたい技術
by
a know
PPTX
Java並行処理プログラミング 第16章ver2
by
Takinami Kei
PDF
第37回NDS Java並行処理 今昔物語
by
civic Sasaki
PDF
Publishing a Perl6 Module
by
ast_j
PDF
pythonでオフィス快適化計画
by
Kazufumi Ohkawa
PDF
はてなブックマークの新機能における自然言語処理の活用
by
Shunsuke Kozawa
PDF
10分でわかるPythonの開発環境
by
Hisao Soyama
セールスエンジニアとして今後身につけていきたい技術
by
a know
Java並行処理プログラミング 第16章ver2
by
Takinami Kei
第37回NDS Java並行処理 今昔物語
by
civic Sasaki
Publishing a Perl6 Module
by
ast_j
pythonでオフィス快適化計画
by
Kazufumi Ohkawa
はてなブックマークの新機能における自然言語処理の活用
by
Shunsuke Kozawa
10分でわかるPythonの開発環境
by
Hisao Soyama
Similar to はてなのサービスの開発環境
PDF
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
by
Naotoshi Seo
PDF
仮想マシンを使った開発環境の簡単共有方法
by
Hideo Takahashi
PDF
Vagrant でお手軽開発環境
by
Hideki MACHIDA
PDF
【dots. IT勉強会】開発環境のDocker化
by
Yuki Kanazawa
PDF
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
by
BIGLOBE Tech Talk
PDF
Cloud Foundry: Open Platform as a Service
by
Shunsuke Kurumatani
PDF
バージョンアップに負けないためのプラクティス
by
Yuji Tokuda
PDF
Vagrant+Chef
by
Daisuke Ando
PDF
モダン開発環境
by
Koji Agawa
PDF
Using Chef for Infrastructure Automation of Ameba Pigg
by
Yuuki Namikawa
PDF
Sacss sp5
by
Wataru OKAMOTO
PDF
Chefを利用した運用省力化とDevOpsの取り組みについて
by
Yuuki Namikawa
PDF
あなたの安心を高速に守る Container-based CI
by
Wataru MIYAGUNI
PDF
【Speee】ライブコーディング公開資料20140809
by
technica_speee
PDF
Niigata.pm #1
by
hayajo Imai
PPTX
Rails on GKEで運用するWebアプリケーションの紹介
by
Makoto Haruyama
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
by
npsg
PDF
ローカル開発環境の構築をしよう VirtualBox + Vagrant
by
Kazuma Kimura
PDF
PaaSの作り方 Sqaleの場合
by
hiboma
KEY
Lxc on cloud
by
Yukihiko SAWANOBORI
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
by
Naotoshi Seo
仮想マシンを使った開発環境の簡単共有方法
by
Hideo Takahashi
Vagrant でお手軽開発環境
by
Hideki MACHIDA
【dots. IT勉強会】開発環境のDocker化
by
Yuki Kanazawa
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
by
BIGLOBE Tech Talk
Cloud Foundry: Open Platform as a Service
by
Shunsuke Kurumatani
バージョンアップに負けないためのプラクティス
by
Yuji Tokuda
Vagrant+Chef
by
Daisuke Ando
モダン開発環境
by
Koji Agawa
Using Chef for Infrastructure Automation of Ameba Pigg
by
Yuuki Namikawa
Sacss sp5
by
Wataru OKAMOTO
Chefを利用した運用省力化とDevOpsの取り組みについて
by
Yuuki Namikawa
あなたの安心を高速に守る Container-based CI
by
Wataru MIYAGUNI
【Speee】ライブコーディング公開資料20140809
by
technica_speee
Niigata.pm #1
by
hayajo Imai
Rails on GKEで運用するWebアプリケーションの紹介
by
Makoto Haruyama
ラズパイ2で動く Docker PaaSを作ってみたよ
by
npsg
ローカル開発環境の構築をしよう VirtualBox + Vagrant
by
Kazuma Kimura
PaaSの作り方 Sqaleの場合
by
hiboma
Lxc on cloud
by
Yukihiko SAWANOBORI
はてなのサービスの開発環境
1.
はてなのサービスの開発環境 2014/02/07 Hatena Engineer
Seminar #4 id:astj
2.
アジェンダ • 自己紹介 • 開発環境の整備 •
はてなブックマーク - vagrant • はてなブログ - plackup • Conclusion
3.
id:astj github: astj /Twitter:
@ast_j
4.
はてなサマーインターン2013 はてな新卒エンジニア(2014/04入社) はてなブログ(とか)担当 ブックマーク => ガールズ
=> ブログ => …
5.
and more… BrandSafeはてな
6.
• Perl /
Elasticsearch / JavaScript • ブックマーク 開発環境のメンテナンス(vagrant etc.) • B!KUMA メインエンジニア (~2015/01) • http://bkuma.hatena.ne.jp/
7.
LET'STALK ! • はてなのエンジニア生活 •
1年目いろいろ 懇親会でぜひ
8.
はてなのサービスの開発環境
9.
Hatena Engineer Seminar
#2 https://speakerdeck.com/aereal/vagrant-to-chef-detukuruhatenabutukumakufalsekai-fa-huan-jing
10.
開発環境
11.
• サーバを起動し動作確認・開発 • デザイナーの手元にも整備 •
テストコードの実行環境 • (調査スクリプトなどの動作環境) • (less, typescript などの自動コンパイル)
12.
• 開発者のマシン上で直接実行 • plenv,
carton... • 環境を仮想マシン内に構築 • Vagrant • 複雑/レガシーな環境への対応性 • パフォーマンスオーバーヘッド
13.
• Vagrantによる複雑/レガシーな環境の仮想化 • はてなブックマーク •
ホストマシン上で直接動作する環境 • はてなブログ
14.
はてなブックマーク
15.
Hatena Engineer Seminar
#2 https://speakerdeck.com/aereal/vagrant-to-chef-detukuruhatenabutukumakufalsekai-fa-huan-jing
16.
はてなブックマーク • サービス開始(2005/02) • リニューアル(2008/11)
17.
関連サービス BrandSafeはてな
18.
関連サービス BrandSafe一部のコードがブックマーク内に共存
19.
はてなブックマーク • perl 5.8.8 •
Ridge(自社製WAF) • MoCo(自社製ORM) • apache mod_perl2
20.
はてなブックマーク • TypeScript (部分的) •
less (部分的) gulp ...=>grunt=>gulp
21.
はてなブックマーク • apache +
nginx • MySQL • memcached • Elasticsearch (2014/06~) • (内製サブシステム)
22.
本番サーバ構成 • CentOS • chef •
rpm • 社内でrpmをビルド・ホスティング • CPAN モジュール • etc...
23.
PRODUCTION mod_perl MySQL memcached (misc subsystems)Elasticsearch worker 本番サーバ構成 nginx
proxyapache proxy
24.
開発環境
25.
• "コマンド一発で環境が立ち上がる" • gulp,
アプリケーション, memcached, ... • 複数のプロセスをProcletで管理 • "foreman for perl"
26.
my $proclet =
Proclet->new(! color => $opts->{color},! );! ! $proclet->service(! tag => 'app',! code => sub {! Ridge::Daemon->run('Hatena::Bookmark', +{! root => $RootDir,! port => $opts->{port},! fast => $opts->{fast},! verbose => $opts->{verbose},! reboot_on_reload => $opts->{reboot},! });! },! );! ! $proclet->service(! tag => 'gulp',! code => sub {! exec qw(script/tools/node node_modules/.bin/gulp devel);! },! );! ! $proclet->run;
27.
BUT...
28.
• CPAN モジュールの複雑な依存関係 •
cpanm --installdepsだけで わない • 古いCPANモジュールを使い続ける必要性 • 多様な手元環境 • OS X,Windows, Linux(Debian)...
29.
cpanm trouble!! • cpanm
--installdepsではうまく依存管理できない • テストが落ちることが分かっているモジュール • 厳密にバージョンロックできない • Carton導入? • もうCPANにない古いモジュール • 本番では使わない
30.
仮想マシン化・プログラマブルなセットアップ
32.
• VM(など)による仮想環境の構築 • VirtualBox
(,VMWare, Docker...) • Chef でプログラマブルなセットアップ • "秘伝のVMイメージ"の回避へ
33.
Vagrant box Ubuntu cloud
images http://cloud-images.ubuntu.com ! • Vagrant ready・信頼性 • 必然的にaptベースの構成管理
34.
Chef cookbook ミドルウェアの導入 perlのビルド cpanモジュールの導入
35.
cpanm trouble!! • cpanm
--installdepsではうまく依存管理できない • テストが落ちることが分かっているモジュール • 厳密にバージョンロックできない • Carton導入? • もうCPANにない古いモジュール • 本番では使わない 再掲
36.
cpanm Workaround backpanにしかないモジュールを先に入れる cpanm --installdepsで大まかに
える 厳密にバージョンロックするモジュールは後から
37.
cpanm Workaround backpanにしかないモジュールを先に入れる cpanm --installdepsで大まかに
える 厳密にバージョンロックするモジュールは後から
38.
セットアップ&起動 $ git clone
git://HOGE/dev-Hatena-Bookmark.box $ ./bin/server $ vagrant up $ vagrant ssh script/bookmark.up
39.
セットアップ&起動 $ git clone
git://HOGE/dev-Hatena-Bookmark.box $ ./bin/server $ vagrant up $ vagrant ssh script/bookmark.up less/ts コンパイル (gulp) nginx proxy (一部/後述) アプリケーションプロセス
40.
セットアップ&起動 $ git clone
git://HOGE/dev-Hatena-Bookmark.box $ ./bin/server $ vagrant up $ vagrant ssh script/bookmark.up less/ts コンパイル (gulp) nginx proxy (一部/後述) アプリケーションプロセス Proclet
41.
app MySQLmemcached (misc subsystems) Elasticsearch (worker) ローカル環境 nginx proxy Ubuntu
開発用サーバ
42.
app MySQL memcached (misc subsystems)Elasticsearch (worker) nginx
proxy PRODUCTION MySQL memcached (misc subsystems)Elasticsearch worker nginx proxy 開発用サーバ LOCAL app apache proxy
43.
app MySQL Elasticsearch (worker) テストの実行 Ubuntu
44.
Vagrant導入その後
45.
"放っておくと壊れる"
46.
• 古いUbuntu向けのaptリポジトリ提供終了 • "apt-getできずミドルウェアが入らない" •
Ubuntu base boxのバージョンを上げる • CPANモジュールの非互換変更 • バージョン固定リストに追加
47.
本番と別個に構成管理するコスト
48.
PRODUCTION LOCAL Distribution CentOS
Ubuntu Provisioning chef (by op.) chef (by dev.) Package sys. yum apt CPAN module rpm (by op.) (direct)
49.
PRODUCTION LOCAL Distribution CentOS
CentOS ? Provisioning chef (by op.) chef (by dev.) Package sys. yum yum CPAN module rpm (by op.) rpm (by op.)
50.
• chef official
な CentOS base box の利用 • https://github.com/chef/bento • 社内 rpm サーバの利用 • cookbook の部分共用 • まずはコピペから
51.
他アプリケーションで試験導入
52.
その後停滞中...
54.
nginx proxy http://b.hatena.ne.jp/XXX http://bkuma.hatena.ne.jp/YYY PRODUCTION apache
proxy application /-/HOGE/YYY/XXXX
55.
http://local.hatena.ne.jp:3000/XXX http://local.hatena.ne.jp:3000/-/HOGE/YYY LOCAL (before) /-/HOGE/YYY/XXXX application
56.
http://local.hatena.ne.jp:3000/-/HOGE/YYY
57.
ローカルだとどのURL? URLこれでいいのかわからん 共用エンドポイントうまく動かない LOCAL (before)
58.
nginx proxy http://local.hatena.ne.jp:3000/XXX http://local.hatena.ne.jp:3200/YYY /-/HOGE/YYY/XXXX LOCAL
(after) application
59.
LOCAL (after) :smile:
60.
• 手元マシンを選ばない環境構築の実現 • 本番の環境に近づける •
継続的なメンテナンスの必要性 • 本番環境との一部構成共通化に期待 • あるいはアーキテクチャ自体の刷新...
62.
• 招待ベータリリース(2011/11) • オープンベータ(2011/12) •
正式リリース(2013/01)
64.
http://hatenablog.com/ http://blog.hatena.ne.jp/ http://YOU.hatenablog.com/ マルチドメイン
65.
• perl 5.14.2 •
ぼくのかんがえたさいこうのフレームワーク • plack (Starlet + Start::Server) • Carton • less (grunt)
66.
• nginx (+
aws ELB) • MySQL 5.5 • Solr • memcached • redis
67.
PRODUCTION nginx proxy plack app MySQL memcached
redis solr worker DNS
68.
nginx proxy plack app MySQL memcached
redis solr worker PRODUCTION plack app MySQL memcached redis (no solr) worker LOCAL DNS nginx proxy DNS NO VM
69.
$ brew install
mysql55 redis nginx phantomjs casperjs… $ script/setup セットアップ $ carton install $ mysql < db/schema.sql ...
70.
$ carton exec
-- script/epicup Proclet plackup, nginx, dns, worker, redis, grunt...
71.
http://hatenablog.com/ http://blog.hatena.ne.jp/ http://YOU.hatenablog.com/ http://e.local.hatena.com/
http://local.hatena.ne.jp/ http://YOU.e.local.hatena.com/
72.
• "/etc/hosts にこれ書いて"でよいのか? •
動的に複数のドメインの展開 • Net::DNS::Nameserver • /etc/resolver/
73.
plack app MySQL memcached
redis (no solr) worker nginx proxy (no DNS) Module Module Module Module Module Module JavaScript 必要なコンポーネントを用いてテスト $ carton exec -- prove -lvr t/
74.
• 今のところうまくいっている • 導入するミドルウェアのバージョン?
75.
Conclusion • VMに依存しない環境志向 • 複雑度によってはVMによる手間の削減 •
複雑度の完全な封じ込みは未達成
76.
Thanx!
Download