Tech Racho エンジニアの「?」を「!」に。
  • 開発

週刊Railsウォッチ(20190723-2/2後編)Rails 6 rc2がリリース、「MySQLパフォーマンスチューニングTips」が超便利、Aurora Serverlessほか

こんにちは、hachi8833です。ジェネレーションの近さを実感しました。


つっつきボイス:「これって何の話だっけ?😅」「あ、私が子どもの頃やってた某特撮番組です👶」「なるほど、令和ライダーの話ね😆」

  • 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください

臨時ニュース: Rails 6 rc2がリリース


参考: マイルストーン6.0.0Issues · rails/rails -- すべてcloseしてます

お知らせ2件

「出張Railsウォッチ in 銀座Rails」のお知らせ

morimorihogeからのお知らせ:

7/24開催予定の銀座Rails#11 @リンクアンドモチベーションにRailsウォッチが出張予定です。
都合により後半からの参加予定ですが、懇親会枠には間に合いますのでよろしければお声かけください。

週刊Railsウォッチ「公開つっつき会」第13回のお知らせ(無料)

1年目を越えた第13回目公開つっつき会は、8月1日(木)19:30〜にBPS会議スペースにて開催されます。引き続き皆さまのお気軽なご参加をお待ちしております🙇。

クラウド/コンテナ/インフラ/Linux/Serverless

Grafana Loki: PrometheusにインスパイアされたGrafanaのログ収集ツール(GitHub Trendingより)


grafana.com/oss/lokiより

Grafanaはこちら↓。


grafana.comより


つっつきボイス:「Lokiって聞いたことあったようなないような?」「PrometheusにインスパイアされたとあるからPrometheusそのものではないということね☺️」


prometheus.ioより

「リポジトリをざざっと見ると、セルフコンフィグできるあたりが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

つっつきボイス:「BPFはBerkeley Packet Filter」「BPF本のこの著者どっかで見たことあるナ: この絵を描いてた人↓」「何かすっごい絵😆」「システムの各要素をどうやって監視するかみたいな話」「しかも前見たときより絵が育ってるというか、文字がめちゃ増えてるし😆: 赤い部分が増えたんだと思うけど」「ほわ〜!」


同記事より

参考: LinuxのBPF : (3) eBPFの基礎 - 睡分不足

「最近はieee80211scanとかあるのね」「overlayfsとかも」「nvmelatencyなんてのもあるし」「この分ならDocker監視用のなんかもありそう😋」

「Brendan Greggってどういう方でしたっけ?」「システムパフォーマンス系の本を書いてる人で、システムアーキテクト系では有名な方だったと思います☺️」「...NetFlixの中の人か!」「あ〜ネトフリ!」「マジ強そう」「この人の本ならめちゃ詳しく解説してそう」

参考: Brendan Gregg's Homepage
参考: Netflix (ネットフリックス) 日本 - 大好きな映画やドラマを楽しもう!


netflix.comより

その他インフラ


つっつきボイス:「プラットフォームをコード制御、なるほど〜☺️」「マイクロサービスをピタゴラスイッチするのも、ある意味プラットフォームコンピューティングと言えそうですし🤔」「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エンジンづくり


同リポジトリより


つっつきボイス:「上のHermesはFacebookがReact Nativeとかに最適化したJSエンジンで、下のQuickJSはES2019やモジュールに対応したJSエンジンだそうです」

Blazor: ブラウザベースの.NET Frameworkアプリフレームワーク(JavaScript Weeklyより)


dotnet.microsoft.comより


つっつきボイス:「.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を採用


つっつきボイス:「へ〜、WebPack使ってるんだ😳」「SlackのUIは地味にうれしく改善されつつありますよね: 左のWorkspaceアイコンの間隔が狭くなってたくさん表示できるようになったとか、WindowsのCtrlキー(Macはコマンドキー)を長押しするとワークスペース番号が表示されるとか↓😋」「ホントだ!」「実際たしかに軽くなったと思いますし❤️」

言語・ツール

ChromeOSの進化


つっつきボイス:「あ、ChromeOSマジで使えますよ😋: ボクが非常勤で授業しに行ってる大学の先生がChromeOSで生活できてるほどですし🎓」「へ〜!」「つまりChromebookか〜」「もう全然問題なくやれるって」

参考: ChromeOS uses Rust to build a secure Linux environment for Linux apps running on Chromebooks (min. 8:00) : rust

その他言語・ツール

つっつきボイス:「ターミナルのCUIでSlackからメールチェックから全部やりたい人のためのツールだそうです」
「ターミナル版ダッシュボードというか😆」「しかしすごい名前😆」「英語圏では公の場で使いにくいヤツですね😅」「もしかして何とかterminal frameworkを略してWTF?」「きっとノリ一発でしょう🤣」

参考: WTF の意味 ネイティブの使い方 例文 - 英会話教材 - サンドイッチ英会話

「機能ってどうやって足すのかな?」「欲しいモジュールを自分で書くんだったりして😆」「こういうの昔もあったし😆」「VimとかEmacsでこんな感じの画面になってる人よく見ますし🤣」「Vimmerなんだし使ってみる?」「いや〜😅」

「そういえばこれGoで書かれてる」「これ系のツールはGoの圧勝ですね〜👍」「Golangのコマンドラインツールはワンバイナリで依存もないからコピーするだけで使えるし😋」


つっつきボイス:「例の『Linuxのしくみ』の著者がSoftware Design誌で連載持ってるそうです」「そういえば『Linuxのしくみ』借りっぱなしだ😆」「そろそろ返さないと😆」「やっぱKindleで読むのがいいっすよ😋」「新しいスケジューラの話とか読めるのかな?学生の頃は追いかけてたけどここ10年は追えてないし😅」

「そういえば最近のLinux(amd64)はとっくにセグメンテーション使わないってやっと最近知りましたし😆」「えぇ〜ついに?!」「ま、今ぐらいアドレス空間広ければもう要らないし😆」「たしかに😆」「ちなみに以下のスライド(p36)↓で知りました」

参考: 現代のコンピュータに おける自作OS事情 - Google スライド


その他

学長から学生へ


つっつきボイス:「こちらの岡部先生は少し前まで放送大学の学長を務めた方で、現在は何と同大学の学生として学んでいるんだそうです」「放送大学は授業の質も高いしいいっすよね」「入学すれば大人でも学生価格で買い物できますし😋」「放送大学はモチベを維持できるかどうかがキモですが😆」

その他のその他

つっつきボイス:「ZIP爆弾は先々週ぐらいに話題になってたような😆」「古典的なテクニックでしょうか?」「ZIP爆弾は前からありますが、これは爆発力がまるで違う新しいアルゴリズムが登場したヤツです💣」「そんなに!😳」「better zip bombって🤣」「46MBが4.5ペタバイトってマジやばい😇」「ペタはね〜😆」「レポートのzipファイル名↓がzbsmとかzblgとかzbxlとか、どことなくBootstrap風味🤣」


news.mynavi.jpより



つっつきボイス:「英作文はいかに日本語で考えないようにするかでしょうね〜☺️」「そうそう、日本語で文章を書き始めるとだいたい失敗するという😆」「むしろ英語でよく見かける言い回しを持ってきて書く」「その方が絶対いいと思います!」

「あと自分の経験則として、(時間表現は別として)副詞をなるべく使わないで英文を書くがポイントだと思います: 副詞は避けて、できるだけ形容詞と名詞で表す」「そこら辺の感覚が日本語と英語で違うんでしょうね〜😆」「『ちゃんと』とか『しっかりと』とか『正確に』とか『徹底的に』みたいな副詞って、実はめったに英語に含める意味がありませんし🤣」「本当に必要な場合にしか副詞を使わないんでしょうね」「日本語の副詞は単なる念押しになりがちなので😆」(以下延々)

番外

イリジウムでわかったらしい


つっつきボイス:「そういえば上野の国立科学博物館で恐竜展やるらしいっすね」「マジで?!、行っちゃおうかな〜😋」「やってるやってる↓」「10/14まであるし」

参考: 恐竜博2019 THE DINOSAUR EXPO 2019


後編は以上です。

バックナンバー(2019年度第3四半期)

週刊Railsウォッチ(20190717-2/2後編)NFSのよさとは、Linuxカーネル5.2リリース、Puppeteerでメモリリーク検出ほか

今週の主なニュースソース

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。

Serverless Status

serverless_status_banner

JavaScript Weekly

javascriptweekly_logo_captured

GitHub Trending

160928_1701_Q9dJIU


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。