production services with gentoo linux on sakura cloud

23
Production Services with Gentoo Linux @mazgi #ssmjp 2015.09.30

Upload: hidenori-matsuki

Post on 13-Apr-2017

1.956 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Production Services with Gentoo Linux on SAKURA Cloud

Production Services with

Gentoo Linux@mazgi#ssmjp 2015.09.30

Page 2: Production Services with Gentoo Linux on SAKURA Cloud

Hidenori MATSUKI ( @mazgi ) Maverick inc.

Manager a.k.a. 雑用係

whoami?

developmentoperationothermake ebuild

My roles are …

Page 3: Production Services with Gentoo Linux on SAKURA Cloud

What’s RTB-DSP ?• RTB→Real Time Bidding

• Web広告が表示される瞬間に広告枠のオークションを行われ配信される広告が決まる仕組み

• DSP→Demand Side Platform

• 広告主に代わりSSPから広告枠を買い付けるプラットフォーム

• SSP→Supply Side Platform

• 広告媒体者に代わりDSPに広告枠を販売するプラットフォーム

Page 4: Production Services with Gentoo Linux on SAKURA Cloud

広告主Audience

It's w

e!

DSP SSP Media

※画像は http://jp.yamaha.com/products/network/downloads/tools/ より

広告出稿

広告閲覧1. 広告リクエスト

2. bid request

3. 入札判断

4. bid response

5. 落札通知

6. 広告配信

a few secs

100 ms or die!

Page 5: Production Services with Gentoo Linux on SAKURA Cloud

whoarewe?

We are planning and developing Internet Advertising services with

Page 6: Production Services with Gentoo Linux on SAKURA Cloud

RTB DSP Service with DMP

We

have

2 s

ervi

ces

PaperArea targeting “Paper” Ads from Web

Paper

Today

’s

Pick Up

Page 7: Production Services with Gentoo Linux on SAKURA Cloud

PaperArea targeting “Paper” Ads from Web

Paper

Code name is “FSS”Mainly made by ScalaProvided on Gentoo Linux

Page 8: Production Services with Gentoo Linux on SAKURA Cloud

今日はこの開発コードネーム”FSS”を提供するサーバーがなぜGentoo Linuxでさくらのクラウド上に構築されたかまた自社製アプリケーションをどのようにebuildでパッケージングしているかをご紹介します!

というわけで

Page 9: Production Services with Gentoo Linux on SAKURA Cloud

システム構成

Page 10: Production Services with Gentoo Linux on SAKURA Cloud

SAKURA Cloud

Rendering

MongoDB (Back)

MongoDB (Back)

MongoDB (Back)

MongoDB (Back)

MongoDB (Back)

MongoDB (Back)

InternetRouter

Switch

WebView WebView

MariaDB MariaDB

Load Balancer

Load Balancer

HTTPS Access

Customer & Publisher

Replication

LoadBalancing

(HA, appliance)

FSS System Structure

WebAPI WebAPILoad

Balancing

MongoDB (Front)

MongoDB (Front)

MongoDB (Front)

(Replication & Sharding) (Replication)

Rendering

Page 11: Production Services with Gentoo Linux on SAKURA Cloud

アプリケーション構成• WebView

• 管理画面のWebView

• SPAとしてSlim, Sass, CoffeeScript, AngularJS等で実装 ( http://techlog.mvrck.co.jp/entry/frontend-intro/ )

• WebAPI

• 管理画面のWebAPI

• Scala + Play Framework 2で開発

• RenderingServer

• 入稿データから紙広告の原稿を生成する

• こちらもScalaで実装

• RGBからCMYKへの変換や各種組版処理(!)を行う

Page 12: Production Services with Gentoo Linux on SAKURA Cloud

なぜGentoo Linux?

Page 13: Production Services with Gentoo Linux on SAKURA Cloud

OS/Distribution選択• 堅牢さ+サポートは魅力的

• RHELサブスクリプションは良い選択

• 社会インフラや安全性を担うなら(私は)こっち

• カスタマイズの自由度が高いものも魅力的

• 日々変わる自社サービスなら(私は)こっち

• どうせ自前でパッケージングすることになるならやりやすい方が良い

• make menuconfig しなくちゃいけなくなるとか

• ミドルウェアをconfigureのオプション変えてビルドしなくちゃいけなくなるとか

• OpenSSHのバージョン上がるとLPKパッチあててパッケージ作らなくちゃいけないとか(今は AuthorizedKeysCommand があるので不要です)

• 自社プロダクトのパッケージを作りたいとか

Page 14: Production Services with Gentoo Linux on SAKURA Cloud

それ、Gentooだとどうなる?• make menuconfig しなくちゃいけなくなるとか

• OSインストール時にやってますよね?

• 1回やるのもn回やるのも手間は一緒です

• ミドルウェアをconfigureのオプション変えてビルドしなくちゃいけなくなるとか

• USEフラグでかなり自由に制御できます

• Ansible的なやつで /etc/portage/package.use/* を管理すれば展開も楽です

• OpenSSHのバージョン上がるとLPKパッチあててパッケージ作らなくちゃいけないとか

• USE=“ldap” emerge openssh で解決(当時)

• パッケージが提供されていないOSSや自社プロダクトのパッケージを作りたいとか

• Gentoo(Portage)ならGit(Hub)のリポジトリをそのままパッケージにできます

Page 15: Production Services with Gentoo Linux on SAKURA Cloud

どうやって{構築, 運用}?

Page 16: Production Services with Gentoo Linux on SAKURA Cloud

普通にサーバー作成• サーバーはさくらのクラウドで構築

• じつはDSPサービスの方はハウンジングメイン(クラウドって楽だなと改めて思います)

• LDAPアカウントでログインできるところまで構築したイメージを複製するだけ( http://blog.mazgi.net/entry/cloning_ldap_authenticatable_server_on_sacloud )

• /home はNFSで共有

• 同一ゾーン内であればどのサーバーに入っても同じファイルが見える

• ファイルシステムは基本的に btrfs

• パーティション分ける代わりに subvolume

• /var/log は compress 指定

• fog-sakuracloudとか使って手オペ0にしたい

Page 17: Production Services with Gentoo Linux on SAKURA Cloud

普通にプロビジョニング• 弊社は伝統的にAnsible

• オフィシャルにPortageモジュールあります

• でも安定版だと usepkg が指定できない(masterには入ってる)

• PlayBookリニューアル中

• ミドルウェア/ツールインストール

• Gentoo Linuxのオフィシャルパッケージは比較的バージョン新しい

• ~amd64 マスクされてても使うこともひじょうにしばしば

• 足りないものは私家版作成( https://github.com/mazgi/portage-overlay/tree/master/dev-java/sbt-bin )

• 必要の応じてUSEフラグ設定

Page 18: Production Services with Gentoo Linux on SAKURA Cloud

USEフラグ設定(ImageMagick)

AfterLittle CMS, JPEG, PNGがほしい

Page 19: Production Services with Gentoo Linux on SAKURA Cloud

USEフラグ設定(Oracle JDK)

After

今回はX.Orgいらない

Page 20: Production Services with Gentoo Linux on SAKURA Cloud

普通にパッケージング&deploy• とりあえずサンプル(&補足)

• https://github.com/mazgi/portage-overlay/tree/master/www-apps/playscala-example

• Gentoo Linuxを本番で使ってる会社のblog

• http://techlog.mvrck.co.jp/entry/services-with-gentoo/

• だいたいこんな感じでいけます(雑)

• ~amd64 マスクされたバージョン9999を emerge すると実行時点のGitのHEADがインストールされるようにしています

Page 21: Production Services with Gentoo Linux on SAKURA Cloud

いかがでしょうか?

• Gentoo Linux便利そうですよね?

• 本番サービスで使ってみたくなりますよね?

• 一緒にサービスをGentoo Linuxで動かしませんか?

Page 22: Production Services with Gentoo Linux on SAKURA Cloud

さいごに

Page 23: Production Services with Gentoo Linux on SAKURA Cloud

We are hiring !Maverick Inc. では

一緒に本番サーバーでemergeを実行したり ebuildを書いてみたい方を募集しています!

ぜひ @mazgi までお声がけください!