- 開発
週刊Railsウォッチ(20190723-2/2後編)Rails 6 rc2がリリース、「MySQLパフォーマンスチューニングTips」が超便利、Aurora Serverlessほか
こんにちは、hachi8833です。ジェネレーションの近さを実感しました。
なぜゼロワンなのに、左右非対称とか、赤青とかの属性がないのか(年寄りの発言)
— Yukihiro Matsumoto (@yukihiro_matz) July 17, 2019
つっつきボイス:「これって何の話だっけ?😅」「あ、私が子どもの頃やってた某特撮番組です👶」「なるほど、令和ライダーの話ね😆」
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
⚓臨時ニュース: Rails 6 rc2がリリース
3ヶ月の時を越えてついにrc2出てきたhttps://t.co/9Gg8sAlpeS
— Ryuta Kamizono (@kamipo) July 23, 2019
参考: マイルストーン6.0.0
Issues · rails/rails -- すべてcloseしてます
⚓お知らせ2件
⚓「出張Railsウォッチ in 銀座Rails」のお知らせ
morimorihogeからのお知らせ:
7/24開催予定の銀座Rails#11 @リンクアンドモチベーションにRailsウォッチが出張予定です。
都合により後半からの参加予定ですが、懇親会枠には間に合いますのでよろしければお声かけください。
明後日24日(水)の銀座Railsにて、弊社技術Blog TechRachoで連載している「週刊Railsウォッチ」出張版の時間をいただきました。僕の予定の都合で後半合流なのですが、Railsウォッチに対するご意見・感想などありましたらぜひ話しかけてください :) https://t.co/TjLDj49Ihz
— Masato Mori (@morimorihoge) July 22, 2019
⚓週刊Railsウォッチ「公開つっつき会」第13回のお知らせ(無料)
1年目を越えた第13回目公開つっつき会は、8月1日(木)19:30〜にBPS会議スペースにて開催されます。引き続き皆さまのお気軽なご参加をお待ちしております🙇。
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓Grafana Loki: PrometheusにインスパイアされたGrafanaのログ収集ツール(GitHub Trendingより)
- リポジトリ: grafana/loki: Like Prometheus, but for logs.
- サイト: Loki. Prometheus-inspired logging for cloud natives. | Grafana Labs
Grafanaはこちら↓。
つっつきボイス:「Lokiって聞いたことあったようなないような?」「PrometheusにインスパイアされたとあるからPrometheusそのものではないということね☺️」
「リポジトリをざざっと見ると、セルフコンフィグできるあたりがPrometheusっぽいらしい」「Grafanaって何がやれるんでしたっけ?」「Prometheusなんかとよく一緒に使われるビジュアライズツールですね🛠」
Loki READMEより大意:
- ログのフルテキストインデックスは行わず、構造化しない圧縮済みログを保存してメタデータのみをインデックス化することでシンプルかつ使いやすい。
- Prometheusでやってるのと同じラベルを用いてインデックスやグループのログをストリーミングすることで、同じラベルでメトリクスとログをシームレスに切り替えられる
- 特にKubernetesのPodログの保存に向いている: Podラベルなどのメタデータは自動的にスクレイピングおよびインデックス化される
- Grafana(v6.0以降が必要)でネイティブサポートされる
「もともとPrometheusは、メトリクスを収集するサーバー側にコンフィグを追加しなくていいというメリットがあります😋」「おぉ」「『メトリクスをこのサーバーに転送するぜ』という設定を行えば、サーバーに勝手にメトリクスが集まってくれるのがPrometheusのいいところ❤️: READMEのこの辺↓からして、このLokiクライアントを入れると似たような感じでログを収集してくれるということなんでしょうね」「なるほど~」
Lokiベースのロギングスタック構成:
promtail
: ログを収集してLokiに送信するエージェントloki
: ログ保存とクエリ処理を担当するメインサーバー- Grafana: ログのクエリと表示を行う
参考: 10分で理解する Prometheus - Qiita
参考: Prometheus likeなログ収集、Grafana Loki|keke|note
⚓Aurora PostgreSQL Serverlessが一般公開へ(Serverless Statusより)
つっつきボイス:「Aurora PostgreSQL ServerlessがGA(一般公開)になった話ですね☺️」「前から進んでたのか...😅」「AuroraのPostgreSQL ServerlessとかMySQL Serverlessって、起動にどのぐらい時間がかかるかが気になりますし😆」
「まあAuroraのこれらのサービス名についてる『Serverless』って本来のサーバーレスと違いますし🤣」「あ、そういえば前にもそんな話が出ましたけど、どこが違うんでしたっけ?」「これらはいわゆる『インスタンスレス』ではなくて、単に『リクエストに応じてインスタンスが立ち上がる』というだけのものですから、本当の意味のサーバーレスではないんですよ😆」「なるほど!」「ですから、おそらくインスタンスが1個もない状態で起動すると起動までのタイムラグがあると思うんですよ」「さっき起動時間を気にしてたのはそれだったんですね😳」
「記事の設定例↓では5分使わなかったらinactiveにするようになってますけど、問題は立ち上がりにかかる時間の方なんですよね〜😅」「ふむふむ」「もちろんこれらのサービスにはリクエストに応じてロードを上げられるというメリットはありますが、ゼロの状態から起動したときのレスポンスタイムがどれぐらいになるかが知りたいところなんですよ」
「もしゼロからでも瞬時に立ち上がれるならばですが、Lambdaからでも使えることになるのでめちゃうれしい🥰」「まあコネクションプールを張ったりとかすると常時いくつかのインスタンスが立ち上がっている、みたいなのが一般的なのかなと思いますけど🤔」「そんな感じで、ほぼミニマムスケールの状態で常時立ち上がっているみたいなことになるでしょうね」
「一般にサーバーレスのメリットって、完全従量課金というか、使ってないときはコストゼロ、みたいに言われるじゃないですか: その意味で言うと、上述のサービスたちは実運用に乗せたときにもしかするとゼロにはならないんじゃないかな?って思ったりするわけですよ😆」
後でmorimorihogeさんが以下の記事を見つけてくれました↓。メリット、デメリットの他に、Aurora ServerlessをLambdaで使う場合などについても言及されています。
参考: Aurora Serverlessが出たので早速テスト環境に適用してみた - YOMON8.NET
⚓書籍:『BPF Performance Tuning』Brendan Gregg
Announcing my next book: BPF Performance Tools: Linux System and Application Observability, for which I developed over 100 new tools https://t.co/GiYiBPICo5 pic.twitter.com/FOWr4mG05U
— Brendan Gregg (@brendangregg) July 15, 2019
つっつきボイス:「BPFはBerkeley Packet Filter」「BPF本のこの著者どっかで見たことあるナ: この絵を描いてた人↓」「何かすっごい絵😆」「システムの各要素をどうやって監視するかみたいな話」「しかも前見たときより絵が育ってるというか、文字がめちゃ増えてるし😆: 赤い部分が増えたんだと思うけど」「ほわ〜!」
参考: LinuxのBPF : (3) eBPFの基礎 - 睡分不足
「最近はieee80211scan
とかあるのね」「overlayfs
とかも」「nvmelatency
なんてのもあるし」「この分ならDocker監視用のなんかもありそう😋」
「Brendan Greggってどういう方でしたっけ?」「システムパフォーマンス系の本を書いてる人で、システムアーキテクト系では有名な方だったと思います☺️」「...NetFlixの中の人か!」「あ〜ネトフリ!」「マジ強そう」「この人の本ならめちゃ詳しく解説してそう」
参考: Brendan Gregg's Homepage
参考: Netflix (ネットフリックス) 日本 - 大好きな映画やドラマを楽しもう!
⚓その他インフラ
最近のk8界隈の、CRD、Custom Controller、Operatorは、systems programmingというよりplatform programmingという感じがする。プラットフォームをコード制御するの、今まで限られた業界の人の技芸だったのが広がっていくのだな
— Uchio KONDO 🦉💎 (@udzura) July 17, 2019
つっつきボイス:「プラットフォームをコード制御、なるほど〜☺️」「マイクロサービスをピタゴラスイッチするのも、ある意味プラットフォームコンピューティングと言えそうですし🤔」「CRDとかCustom ControllerとかOperatorとか言われても何だかわかりませんし😭」
参考: KubernetesのCRD(Custom Resource Definition)とカスタムコントローラーの作成 - Qiita
参考: KubebuilderでKubernetesのカスタムコントローラを作ってみる - Qiita
参考: Kubernetes Operator を理解する - reboooot․net
⚓プラットフォームコンピューティングとECSよもやま話
「そういえば最近のk8s界隈って、一昔前のフロントエンド界隈と似たような状況になってるっぽいですね」「栄枯盛衰っぷりがね😆」「進化の速さがいろいろヤバいんでしょうね: 何だかもう感覚が掴めませんし😅」「k8sを生で管理するのはもう割と諦めて、Envoyのようにアプリケーションオーバーレイみたいなことをやれるものにしないとアプリケーションエンジニアが死んじゃうみたいな話もあるかもって😆」
「ちっちゃいコードを埋め込んでプラットフォームを細かく制御するみたいな」「アプリケーションエンジニアはもうEnvoyのようなレベルで抽象化されたところの上でコードを書いて、それがいい感じに動くように下の層で頑張るようになるのかな、なんてね😆」(以下延々)
「もしオートスケーリングなんかをEC2でやるよりもこういうのでやる方が楽になれると感じられるとしたら、きっとプラットフォームコンピューティング的な方面でこうやって頑張ることにもワンチャンありますよね😆」「そうなんですよね〜、EC2のコンフィグやプロビジョニングってどうやってもちょっと泥臭いし時間かかるし😢」「それでもAWSにはECSとかFargateとかあるからk8sいらないのかなって😆」「自分もECSとかFargateで十分かな〜😆」
参考: Amazon ECS(Docker コンテナを実行および管理)| AWS
「ECSってちょっととっつきにくいんですよね...😅」「でもそのとっつきにくささえ超えればやれそうかなって😆」
「そういえばAWSがECSをローカルでやれるツールを最近出してたような覚えが🤔」「たしかに最近のAWSってマネージメントサービスの公式なローカル版みたいなのを出してますね」「AWS結構頑張ってますよね、Step Functionsもローカル版ありますし」「DynamoDBのローカル版は自分も使ってますし😋」
参考: Amazon ECS で新しいローカルのテストツールが利用可能
参考: AWS Step Functions ワークフローをローカルで開発してテストする
参考: DynamoDB ローカル (ダウンロード可能バージョン) のセットアップ - Amazon DynamoDB
「ECSってこう、使いにくいというか直感に反しているところがあって😅、ECSでコンテナに割り当てるCPU Unitとかメモリの最適解って、どう調整するのがいいんだろうって思ったり😆」「😆」「絞りすぎると落ちるし😆」「一応docker-composeも互換的に使えるらしいですけど、でもね〜って気持ちになりますし😅」「ECSってdocker-composeとかが出てくる前のアーキテクチャでしたし、ある意味登場が早すぎたところはありますね: モダンなECSだともっと楽なのかもしれませんが」「ECS、チャンスがあればやってみたくはあります☺️」「ECSは、トラブったときにどこまでこちら側で対応できるのかがまだちょっと不安に思いますね😅」
「まあECSも入り口にはELBが挟まるので、最悪全フォールバックしたときに1台だけ普通のEC2インスタンスをつないでおけばやれるかも、なんてね🤣」「🤣」「たしかにいけそうだけど、そのフォールバックのためにそこまでやるかどうか😆」「安心して眠れるための1個😆」「わかりみ😆」
「ECSとかって、よくわからないパラメータを設定ミスしたりすると連鎖的に崩壊したりするじゃないですか🤣」「🤣」「あるコンフィグが死んでデーモンが落ちたことで監視が死んで...みたいなことが起きるとマジで何が起こったのかってなりますし😇」「😆」「ECSを本格的にやるなら、全体の挙動の癖や障害対応を含めた運用ノウハウを積み上げてからにしたいな〜☺️」
⚓DB
⚓3日で学べるPostgreSQLチュートリアル
以前のウォッチで紹介したPostgreSQL Exercisesのリニューアルを作者からお知らせいただきました😂。
つっつきボイス:「お、これは今日TechRachoの問い合わせフォームに届いてたおたよりですね💌」「はい、以前掲載したサイトの作者がリニューアルのおたよりくれたヤツです😂」
「ぽすぐれを3日で学べると」「シラバス2日目はWindowsにインストール😆」「まあそこはやっておかないと☺️」「未経験からぽすぐれ始めるならこういう感じになるでしょうね☺️」
「サイトのトップにいくと他にも大量のチュートリアル↓があってびっくりでした😳」「すべて無料とな」「ExcelやVBAのチュートリまであるけどRubyやRailsはないか〜😇」
「その中でEthical Hackerチュートリアル↓というのがちょっと気になって😆」「Ethical?」「ホワイトというか正義のハッカーみたいな感じでしょうね」
後で調べるとCEHという資格があるようです。
参考: CEH(Certified Ethical Hacker)v9を受験してみた | パーソルテクノロジースタッフ株式会社
⚓🌟スライド「MySQLパフォーマンスチューニングTips」はスゴい🌟
つっつきボイス:「そうそう、BPSの社内Slackにも貼ったと思うんですけど、これはとてもいいスライド😍」「Slack気づいてなかった〜😅はてブで見つけたんですが、やっぱりいいヤツですか?」「MySQL 8.0の差分とかの情報もまとまってますし😋」
「p39の『EXPLAINの各項目』↓のあたりもとてもいいですし」
「特に、特に、p45『typeの値』の説明に望ましい・望ましくないがあるのがホントありがたい!🙏」「あ〜たしかに!」「MySQLでEXPLAINするときに、こういうのいっつも探してましたし😆」「その先のページでは各typeの値の意味もきちんと説明しててくれますし」「マジすごい💪」
「たとえば『index
が望ましくない』ってどういう意味なんでしょう?」「p56のindex
の説明ページ↓にもありますけど、インデックスフルスキャンが発生しているということです🧐」「あ〜そういうことか!」「いかにもパフォーマンス悪そう😅」「インデックスといえどもフルスキャンやれば当然遅いですし☺️」
「望ましい方の値だと、たとえばp48のeq_ref
↓が『インデックスにちゃんとヒットして絞り込んでる』ってことかなるほど」
「しかも最近のMySQLにはVisual EXPLAINなんてのがあるみたいっすよ❤️」「ほほぉ〜!」「MySQL Workbenchでやれるのがスゴい😋」
参考: [MySQL Workbench] VISUAL EXPLAIN でインデックスの挙動を確認する - LINE ENGINEERING
「むしろ最初からVisual EXPLAINで見せて欲しかったし🤣」「MySQLのEXPLAINの読みにくさときたらもう😭」「ほんにそれ!😤: nested loop joinしかないのにそれができないっておかしいし!」「ぽすぐれのEXPLAINの読みやすさを考えると特にそう思いますし😆 」
参考: MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.2.1.10 Nested Loop 結合アルゴリズム
🌟を進呈いたします。おめでとうございます!
⚓JavaScript
⚓この頃流行りのJSエンジンづくり
FFmpegの作者が作られたのか / "QuickJS is a small and embeddable Javascript engine. It supports the ES2019 specification including modules, asynchronous generators and proxies." / QuickJS Javascript Engine https://t.co/WFPhBBJWe0
— . (@y_yagi) July 12, 2019
つっつきボイス:「上のHermesはFacebookがReact Nativeとかに最適化したJSエンジンで、下のQuickJSはES2019やモジュールに対応したJSエンジンだそうです」
⚓Blazor: ブラウザベースの.NET Frameworkアプリフレームワーク(JavaScript Weeklyより)
つっつきボイス:「.NET Frameworkでブラウザベースのアプリをやれるそうです」「JSのフレームワーク?」「よくわかってないんですが😅、以下の記事によるとJSフレームワークでやってるようなことを.NET Coreとやれるみたいです」「.NET Frameworkに慣れてる人にはいいのかも☺️」「.NET Coreで書けるって...?」「つまりC#で書ける」
参考: BlazorでSPAするぞ!(1) - ryuichi111stdの技術日記
「お、WebAssemblyを介していることでC#でやれるようになってるのか↓」
「ちょっとだけSilverLightを思い出しましたし🤣」「なつかしい😆」「結局盛り上がらなかったですね😅」
参考: Microsoft Silverlight - Wikipedia
⚓CSS/HTML/フロントエンド/テスト
⚓Slack v4はWebpackを採用
>「Slack 4.0.0」の目玉は、「webpack」への移行だ。リソースをまとめてサーバーへに対するHTTPリクエストの回数を削減することができるため、全体的なパフォーマンス改善が期待できる
Windows版「:slack: Slack」アプリがメジャーアップデート ~v4.0.0をリリース - 窓の杜 https://t.co/sMHuAc5rzF pic.twitter.com/NlmS6eINNn
— takimura (@cv_k) July 12, 2019
つっつきボイス:「へ〜、WebPack使ってるんだ😳」「SlackのUIは地味にうれしく改善されつつありますよね: 左のWorkspaceアイコンの間隔が狭くなってたくさん表示できるようになったとか、WindowsのCtrlキー(Macはコマンドキー)を長押しするとワークスペース番号が表示されるとか↓😋」「ホントだ!」「実際たしかに軽くなったと思いますし❤️」
⚓言語・ツール
⚓ChromeOSの進化
googleのchrome OSがめっちゃパワーアップしててワロタ。
Android runtime containerにdebian VM(ベータ版)も動いてる。しかもVM(のユーザ空間側?)はRustで書かれているらしい。— まさみさん⋈語りたい (@mhiramat) July 17, 2019
つっつきボイス:「あ、ChromeOSマジで使えますよ😋: ボクが非常勤で授業しに行ってる大学の先生がChromeOSで生活できてるほどですし🎓」「へ〜!」「つまりChromebookか〜」「もう全然問題なくやれるって」
⚓その他言語・ツール
つっつきボイス:「ターミナルのCUIでSlackからメールチェックから全部やりたい人のためのツールだそうです」
「ターミナル版ダッシュボードというか😆」「しかしすごい名前😆」「英語圏では公の場で使いにくいヤツですね😅」「もしかして何とかterminal frameworkを略してWTF?」「きっとノリ一発でしょう🤣」
参考: WTF の意味 ネイティブの使い方 例文 - 英会話教材 - サンドイッチ英会話
「機能ってどうやって足すのかな?」「欲しいモジュールを自分で書くんだったりして😆」「こういうの昔もあったし😆」「VimとかEmacsでこんな感じの画面になってる人よく見ますし🤣」「Vimmerなんだし使ってみる?」「いや〜😅」
「そういえばこれGoで書かれてる」「これ系のツールはGoの圧勝ですね〜👍」「Golangのコマンドラインツールはワンバイナリで依存もないからコピーするだけで使えるし😋」
Linuxのしくみはすごくわかりやすい良書だったからこの連載は楽しみ。
なんの雑誌で連載されるんだろう? https://t.co/qwiJ0ef6js— asaken (@asaknkn) July 16, 2019
つっつきボイス:「例の『Linuxのしくみ』の著者がSoftware Design誌で連載持ってるそうです」「そういえば『Linuxのしくみ』借りっぱなしだ😆」「そろそろ返さないと😆」「やっぱKindleで読むのがいいっすよ😋」「新しいスケジューラの話とか読めるのかな?学生の頃は追いかけてたけどここ10年は追えてないし😅」
「そういえば最近のLinux(amd64)はとっくにセグメンテーション使わないってやっと最近知りましたし😆」「えぇ〜ついに?!」「ま、今ぐらいアドレス空間広ければもう要らないし😆」「たしかに😆」「ちなみに以下のスライド(p36)↓で知りました」
参考: 現代のコンピュータにおける自作OS事情 - Google スライド
そうか。コンパイラは女王なのか。。。 pic.twitter.com/tT4EjPIQ89
— エレ舞 (@ele_mai) July 17, 2019
⚓その他
⚓学長から学生へ
本物です。 #放送大学 #OUJ "@Junya_Kato_: @__obake 岡部先生?
本物??
先生の授業を履修したことがきっかけで、東大電気に学士入学した者であります! pic.twitter.com/fctQSr5xlA"
— 岡部洋一 (@__obake) December 22, 2018
つっつきボイス:「こちらの岡部先生は少し前まで放送大学の学長を務めた方で、現在は何と同大学の学生として学んでいるんだそうです」「放送大学は授業の質も高いしいいっすよね」「入学すれば大人でも学生価格で買い物できますし😋」「放送大学はモチベを維持できるかどうかがキモですが😆」
⚓その他のその他
- サイト: Citation Style Language - Citation Style Language(GitHub Trendingより)
- 元記事: G Suite アップデート ブログ: スプレッドシートでセルの編集履歴が表示可能に -- 気のせいか少し重くなったような?
- 元記事: 46MBが4.5PBに膨れ上がる危険なZIP爆弾に注意 | マイナビニュース
- 元記事: ASCII.jp:テクノロジーの大波は「オモチャ」のようなものからやってくる|遠藤諭のプログラミング+日記
- 元記事: OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - ククログ(2019-07-12)
つっつきボイス:「ZIP爆弾は先々週ぐらいに話題になってたような😆」「古典的なテクニックでしょうか?」「ZIP爆弾は前からありますが、これは爆発力がまるで違う新しいアルゴリズムが登場したヤツです💣」「そんなに!😳」「better zip bombって🤣」「46MBが4.5ペタバイトってマジやばい😇」「ペタはね〜😆」「レポートのzipファイル名↓がzbsmとかzblgとかzbxlとか、どことなくBootstrap風味🤣」
わいは初手でGoogle翻訳 / “OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - ククログ(2019-07-12)” https://t.co/GVAccIMqVM
— Ryuta Kamizono (@kamipo) July 16, 2019
つっつきボイス:「英作文はいかに日本語で考えないようにするかでしょうね〜☺️」「そうそう、日本語で文章を書き始めるとだいたい失敗するという😆」「むしろ英語でよく見かける言い回しを持ってきて書く」「その方が絶対いいと思います!」
「あと自分の経験則として、(時間表現は別として)副詞をなるべく使わないで英文を書くがポイントだと思います: 副詞は避けて、できるだけ形容詞と名詞で表す」「そこら辺の感覚が日本語と英語で違うんでしょうね〜😆」「『ちゃんと』とか『しっかりと』とか『正確に』とか『徹底的に』みたいな副詞って、実はめったに英語に含める意味がありませんし🤣」「本当に必要な場合にしか副詞を使わないんでしょうね」「日本語の副詞は単なる念押しになりがちなので😆」(以下延々)
⚓番外
⚓イリジウムでわかったらしい
つっつきボイス:「そういえば上野の国立科学博物館で恐竜展やるらしいっすね」「マジで?!、行っちゃおうかな〜😋」「やってるやってる↓」「10/14まであるし」
参考: 恐竜博2019 THE DINOSAUR EXPO 2019
これから恐竜博行きたい人へ。
・理想は平日。
無理なら開館前から並べ。
・図録(日本館売店で買える)
買って予習してから後日攻めろ
・荷物はロッカーに預けろ
・歩ける服装&靴。クッソ並ぶ。
・チビッ子が阿鼻叫喚&自由
に動く。常に気配を探れ。NINJA魂よ…! pic.twitter.com/dQkgVRndtL
— 浅葱 縹 (@asagihanada173) July 15, 2019
後編は以上です。
バックナンバー(2019年度第3四半期)
週刊Railsウォッチ(20190717-2/2後編)NFSのよさとは、Linuxカーネル5.2リリース、Puppeteerでメモリリーク検出ほか
- 20190709-2/2後編 strong_password v0.0.7がハイジャックされていた、TerraformとCloudFormation、CSSの設計ミスリストほか
- 20190708-1/2前編 ActiveRecord::FixtureSetがめちゃ強くなってた、MacだとRubyが遅い理由、Puma 4登場ほか
- 20190701 RMagickのメモリ使用量が劇的に改善、インスタンス変数の定義順で速度が変わる?、GitLab CIランナーをローカルで回すほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。