omuronの雑記

個人的な備忘録

Developers.IO CONNECT 2020 DAY4 + DAY5 見始め #devio2020

DAY4 の続き。

DAY4 は、やっと見終わりました。
DAY5 もマネジメントでなかなか魅力的な内容。 ボチボチ見ていきます。

機械学習の知識ゼロでも動かせるAIツールキットの世界

www.youtube.com

せーのさんの最初の家族総出のVTRの質が無駄に高すぎます。

機械学習には「数学」「アルゴリズム」「DeepLearning」「フレームワーク」「ボード(GPUとか」などの大量に知識が必要で挫折してしまう。 一人で全部行わずにチームでやる。 学習ツールをクラウドサービスなどに任せる。

機械学習は門外漢なので、何がわからんかわからん状態です。 大まかな用語とかニュアンスの勉強になりました。 ツールのデモは未来を感じて「へー」となって面白い。 ゲーム用のUnreal Engineとか使って学習させるんだ。

実践プロダクションサーバーレス - AWS CDK と TypeScript によるWebアプリケーション開発パターン #devio2020

www.youtube.com

サーバーレスが苦手なこと

CDK の利用

先にデプロイ可能な状態を獲得し維持する。 クラウドアプリの一番の壁は、デプロイと継続。 AWSにあげないとわからないため。 最初にあげれるようにしてしまう。

AWS アカウントを分けるメリットは以下、理由はわかるけど契約を次々ふやすのはハードルがそこそこ高い気がしてます。

サーバーレスでの開発が決まれば、AWS CDK の利用を検討する。 CDK なら、 addTarget で IAM も勝手に作ってくれたりする。 CloudFormation より手軽。

リポジトリのパッケージ構成は yarn workspace でのモノレポでつくるのがおすすめ。

CDK 食わず嫌いしたままだからやらないとなーと感じました。

経験談、失敗談、勘所から語るフルリモートマネージャへの方向転換 #devio2020

www.youtube.com

岡山からリモートワークでしている。 入社もすべてが不安になるレベルでリモートで進んだ。

情報量不足、「なんとなく察した」アクションが不足する。 アウトプット以外の評価。 非目的思考なコミュニケーション。

情報共有、個人の働き方、オンサイトの定義を変える必要がある。 情報の発信は非対称性でも全員がプルできるようにする。 セルフマネジメントで動けるように、巻き込みも重要。 オンサイト(l集合、目線合わせ)、オフサイト(散開、結果push)

目標を見据えて自律的に動くチーム。

組織へのドキュメント。 読まない人は読まないので強い心で発信続けるの大事。 個人のプライドとプライベートはパブリックにしない。

Google re:Work を参考にして、ビジョン合宿開催。 リモートでチームが働くようになるのは不可逆な流れ。

Google re:Work 調べよう。 本家よりハマコーさんの記事のほうがはてブ多いし参考になりそう。

dev.classmethod.jp

プロフェッショナルなエンジニアとしてのコミュ力概論 #devio2020

www.youtube.com

エンジニアに必要なコミュ力とは?

  • キレさせない
    • チームメイトを不快にさせずに意思疎通できる
    • 仕事をスムーズに進めることができる
      • 人として社会人として普通である
  • 礼節
    • 無礼な態度は会社に損害
    • 無礼な態度はパフォーマンス落ちる
      • そんなやついらん
  • コード・コメント・ドキュメント
    • コードは読む時間が長い
    • コメントは礼節を忘れず
    • ドキュメントは品質重要

仕事をうまくやるためにやる。

場数を踏むと上手になる。 ブログ、登壇、実況、どちらも二度おいしい。

所感

「ビジネスとマネジメント」というのも、好き嫌いは別として必要なポジションにはなってきているので、興味を持ってみることができてます。 AWS だけではなく幅広い情報があって助かります。

Developers.IO CONNECT 2020 やっと DAY4 見終わる? #devio2020

DAY3 + DAY4 に引き続き、Developers.IO CONNECT 2020 眺めてます。

DAY4 は、「機械学習の現在地と、サーバーレス、IaC、ほか」という内容で、好きなのが多く時間がかかりました。

RDS Proxyは世界を変えるか?

www.youtube.com

先日 GA された RDS Proxy の話です。
セミナーのタイミングでは、GA 前なのでやってみた系ではなく使い所の話。
Lambda + RDS のアンチパターンの改善策。

Lambda 独自の問題としてあった、コールドスタートや IP アドレス枯渇については、 アップデートで解決済み。 RDS は垂直スケールなので、Lambda の水平スケールアップについていけない問題がある。
Lambda ではコネクションプーリングが実現できない。
コネクションプーリングを実現するのが RDS Proxy 。

現状の制限の元、ある程度工夫して対応することも可能だった。
Lambda のグローバル変数でコネクションすることで、接続しっぱなしにはできる。 切断タイミングがないので、DB側から切断するとかが必要。
EC2などのミドルウェアで解決もできるが、それだとサーバーレスにならない。

RDS Proxy を利用するにしても、以下のワークロードでは不向き。

  • DB アクセス、リクエストが多い場合
  • ロングトランザクション
  • 一時テーブル作った場合などの "ピン留め" が発生するケース

RDS Proxy はあくまで緩和するだけなので、Lambda なら DynamoDB が基本。 本当に必要なのか見極めましょう。

Lambda が出てすぐ、「とりあえず使ってみたい」で、RDS と接続するアンチパターンで苦しんだのですが、過去の負債の解決がある程度できそうです。
コネクションプーリングの理解になりました。
GA と同時にやってみた記事も投稿されてます。

dev.classmethod.jp

Cognito Identity Pools + Auth0を連携させてWebアプリケーションからAWSを操作する画面を作った話

www.youtube.com

SPAパターン:S3 + API Gateway
APIG を認証して、ユーザーごとに表示を変えたりするケースが多い。 Auth0 は、IDaaS で最近人気。

テナントは、認証基盤の単位。開発ステージ本番などテナントを切り替えて対応ができる。

管理画面のWebアプリケーション実装例。

  • APIG + Lambda
  • DynamoDB
  • フロントエンドはモダンFW利用、S3 + CloudFront 配信

あーまさに最近作ったのと同じ。
AWS マネジメントコンソールを作るのと同じ。

Cognito の IdP に Auth0 を使う。 Auth0 から token を取得して Cognito に渡して AWS の Credentials を取得して、AWS リソース類にアクセスする。 Cognito を挟むメリットって、AWS リソースに効率よく直接アクセスしたいからかな。 わざわざ Auth0 を使うのは、認証周りを楽にするためか?
Cognito オンリーでも Auth0 のみでもできそうだけど、いいとこ取りするとこうなるのかもと思ってたらちゃんとメリット・デメリットも説明があった。

  • メリット
    • API の実装不要
    • 多くの AWS サービスとの連携
  • デメリット
    • APIG が使えない、大量アクセスできない
    • フロントエンドのロジック増

Auth0 で、API 作ってクライアントの audience に設定するのはわかるんだけど、Auth0 側で Application と API の接続設定がいると思ってた。 設定無くても動くんだ。 最後の方の Angular セットアップしていくデモあたりでついていけなくなってしまった。

「動いてるからヨシ!」よりも実験してみませんか?カオスエンジニアリングのススメ #devio2020

www.youtube.com

Netflix が始めたやつですね。 障害注入は目的ではなく手段。 安定性と回復力は重要。 AWSのベストプラクティスの「故障のための設計」を加速させる。

みんな重視するポイントが違う。 銀の弾丸はない。 企画書で意識あわせ。 検証とデータで語る。

組織もシステムなので重要人物の行動を止めてカオスエンジニアリングを試す。

めっちゃチャレンジングできる環境じゃないと、カオスエンジニアリングを実際に行うことができる気がしない。

マイクロサービスにおけるログ管理とコスト #devio2020

www.youtube.com

分散したコンポーネントから大量にログが出力される。 そのため、集約して管理する必要がある。 集約すれば、クエリで検索や分析、アクセスの傾向から異常値の検出などできる。

ツールとしては、色々ある

  • CloudWatch Logs
  • Elasticsearch
  • Datadog
  • New Relic Logs
  • Sumo Logic

一意なリクエストID、トレースID。
Forwareder、Fluentdとかをサイドカーで使ったり。スケール考える。コストも考える。
ログは掛け捨ての保険のようなもの。
本番でコストが爆発するので注意する。

ログは適切に。メモレベルなど意味のないものは出さない。
「スタート」「終了」や「エラー」のみで中身がないなど。
ログレベルは適切に。デバッグログは本番では出力されない。
保存期間も考える。

お金をかけてまで保存するログか見極める!

社員情報の可視化サービスを内製開発した話 #devio2020

www.youtube.com

同僚の強みや個性を可視化した社内ツール。 開発手法から、アーキテクチャまでとても濃い内容で参考なりました。

もともとは Wiki に入社時自ら書いていた。 内製ツールでは、AWS 認定資格表示の機能あり(クラメソらしい)。

まず、リーンキャンバスで、課題とターゲット解決策を模索。
次にインセプションデッキ作成し、ユーザーストーリーマッピングも作成。
共通語彙を作成し常にアップデート。
健康状態を図るために KPI/KGI を定める。
暗黙ルールを減らす Working Agreement
タスク完了の定義。
GitHub へ情報集約。

技術スタックが参考になる。

  • Lang: TypeScript, JavaScript(Auth0 Rules)
  • Frontend: Vue.js(Nuxt.js), Vuetify, Atomic Design, Figma
  • Backend: APIG, Lambda, DynamoDB, CF, S3, SQS, SES, Amplify, CloudWathch, CDK
  • Other: GitHub, Slack, VSCode, Auth0

今日から使えるIPv6 ~遊んでみよう編~

www.youtube.com

雰囲気でしかしらなかった IPv6 のお話。

自分が知ってることとしては...
IPv6 では基本的に下位 64bit はインタフェース ID として利用することが想定されているため、プロバイダからは /48~/64 のブロックが個別に払い出される。
そのため、IPv6 での IP 制限をする場合は上位 64bit だけとかでいい。
ぐらいです。

基本アドレスの付け方が違うだけ。
速度が早いわけではなく、使う人が少ないから早いだけ。
というお話をとてもノリがいい感じで進めてくれる録画ならではのセッションでした。

所感

やっと、折り返し地点です。
この先も気になるセッション目白押し。
結局 DAY4 はビデオセッション全部見てしまった。
これを書いた後に気がついたのですが、ライブセッションアーカイブされてて、そっちをまだ見てないという...
ゆっくり見よう。

「Serverless Meetup Japan Virtual #1」 #serverlessjp 受講メモ

今日は「Serverless Meetup Japan Virtual #1」見てました。
あんまりメモは取れず。

serverless.connpass.com

ハッシュタグ#serverlessjp

アーカイブ

僕らがJeffyをつくった理由

「Serverlessのフレームワークは、フレームワークと言うよりデプロイツールになってない」と
わかり味が深い。

Jeffyの日本語でフィードバックやディスカッションができる場所を準備しましたとのこと。

github.com

Provisioned Concurrency Dive Deep & Practice

speakerdeck.com

Provisioned Concurrency

Lambda の事前暖気。
スケジュールでのスケール設定もできる。

自分のユースケースだと、自動のスケールで困ることがなかったので、全然使ったことはないです。
オートスケール設定みたいに、何割利用したら事前スケールみたいな事もできるんですね。

つけっぱなしにするものではないけど、常時設定するとそこそこコストがかかりそう。

dev.classmethod.jp

SAM を使用してサーバレスアプリケーションを作成する場合、CodeDeployが組み込まれているため、Lambda を安全にデプロイできます。

え? SAM って CodeDeploy 組み込まれてたの知らなかった。

所感

短時間だけど内容が濃いですね。
SAM がリスなのは作者がリスを飼ってたかららしいです。

途中で西谷さんが告知した「サーバーレスアンチパターン今昔物語」が瞬殺で定員の100人を突破してた。
珍しくすぐ申し込んでよかった。

connpass.com

Developers.IO CONNECT 2020 DAY3 + DAY4途中 #devio2020

DAY2 に引き続き、Developers.IO CONNECT 2020 眺めてます。 DAY4 興味があるのが多すぎて、まだ途中です。

ダイバーシティを実現するアクセシビリティの基礎と実践

www.youtube.com

アクセシビリティは人権であり、障害者差別解消法などの法律もあるのでちゃんと配慮しましょう。
後半の iOS の話は、過去の Developers.IO で受講したことがある内容でした。

別のところでの話題で「CapsLockキーは邪魔なだけ」と言われるけど、上肢不自由とかだと必要だよね?という話を聞いて、ハッとした。 やっぱり当事者じゃない立場だと難しい問題。

初めてのサーバーレスアプリケーション開発 #devio2020

www.youtube.com

Lambda と接続してつかうサービス類の説明。
このあたりと連携してよく使われますという説明。

できること 対応サービス
ログ CloudWatch Logs
API API Gateway
情報の永続化 S3, DynamoDB
送受信 SNS
キューイング SWS
イベント駆動 CloudWatch Events
監視 CloudWatch Alarms

活用パターンで学ぶGraphQL #devio2020

www.youtube.com

日本語歴 1.5 年なのに、日本語でプレゼンできるってすごい。めっちゃ上手に話している。

REST API だと、画面構成に併せてパラメータが複雑になる。それに伴いバックエンドも重複コードが多くなって効率が良くない。わかり味が深い。
OSFA (One-Size-Fits-All) 問題。1つのユースケースに最適化して設計したが、APIが大きくなり多くのニーズに答えるようになってメンテナンスや追加機能の拡張が難しくなる。 これ踏んだことある。ちゃんと名前があったのか。

REST API の辛さや GraphQL の良さもわかるんだけど、プロダクトでガッツリ使うのは学習量の多さとナレッジの量的にもまだ辛そうな印象です。 AppSync 利用して学習量を下げて、小さめのプロダクトから挑戦かな?

AWS環境でIaCを使い始めて運用するためのメリットデメリットと注意点 #devio2020

www.youtube.com

「今から使う人向けで、ゴリゴリ使っている人向けには物足りない」とのこと。 そこそこ使ってるつもりだけど、IaC 好きだらか見ました。

この辺りは個人的にはハマりがちなポイント。

  • 暗黙的なデフォルト値がAWSマネジメントコンソールと違う場合がある
  • ツール固有のバグ

学習コストや構築に時間がかかるのはしょうがないけど「楽しい」という点でがんばる。
Terraform については、AWS 専任で頑張ってるうちは、存在を知ってる程度でいいかな。

CDK は、「今激熱な IaC ツール」で、新しく始めるならコレと。 最近プログラムろくに書いてないから、あんまり試すことできてないのよね...

IAM で、マネジメントコンソールを触るのを禁止してしまい「AWS環境を素手で触らない強い意志」で運用してしまうのも手。

所感

質が高いコンテンツをゆっくり自分のタイミングで見れるのは助かります。
さらにそれぞれの説明ブログがきっとアップロードされるだろうし後でそれをみれば復習にもなります。
クラメソの中の人はこのモチベーションをどこから持ってきてるんだろう?

「コンテナ若葉マーク」 #wakabamark 受講

今日は「コンテナ若葉マーク」を受講。

tech-lab.connpass.com

ハッシュタグ#wakabamark

世界一わかりみの深いコンテナ&Docker入門

  • コンテナは単なるプロセス
  • HyperVisor + OS が不要で、DockerEngine 上のプロセスで動くから高速
  • プロセスはホストOSのカーネルを共有
# ps ax 
たくさんでる

# unshare --mount-proc -p --fork /bin/bash
# ps ax
とすると、プロセスが同じ名前空間を利用するので全然出てこない

docker はプロセス空間を一緒にする感じで、 namespace に作成ともろもろのコマンドの簡略化を行う。

後半は、k8s の話。
k8s は本番で使わなくても学ぶ価値はある。
「私がk8sで構築したかったから」
プロダクトじゃなくてブログとかなら十分な理由になりますね 。
構築ブログもありました。

tech-lab.sios.jp

怖くないコンテナ・ネットワーク

speakerdeck.com

docker いれると、docker0 172.17.0.1/16 のネットワークが自動で作られる。

  • 以下のコマンドで諸々確認
    • sudo docker network ls
    • sudo docker network inspect bridge
    • sudo docker container inspect Docker名
  • コンテナ内から別コンテナにcurlでアクセスできる

docker 内のネットワークってあんまり意識して作ったことが無い状況。 docker-composeは、ネットワーク定義なくても自動で専用のbridgeネットワークが作られるとのこと。 普段は、docker-compose を使っているからかな。

実運用から考えるコンテナ技術

献血が趣味114回...すごい。丸々5人分ぐらいの血液を献血してるんじゃないだろうか。

コンテナを使って「何を実現するべきなのか」を常に考えて学んでいくべきと。 Dockerファイルを作るのはそれほど難しくないので、その向こう側をイメージする必要がある。 Docker になっても監視は大事。 アウトプット大事。

所感

コンテナっていつぐらいから使いだしてたかなーと、 docker images してみて、ローカルの一番古いイメージは

mysql  5.7.12 2fd136002c22   4 years ago 378MB

でした。 docker rmi もして消してるからもっと昔から試してたかもしれないけど、少なくとも 4年前ぐらいから使っていそう。
開発環境では4年ぐらい前からで、本番環境ではここ2年ぐらいか?

サクッと環境作って試すには、本当に Docker 便利ですね。
本番で使おうとすると、k8s なり ECS なりオートスケールツールが必要でかなり辛いのですが、単独で使うには本当に便利です。

「【オンライン】ログ分析勉強会 vol.2」 #logben 受講

今日は「【オンライン】ログ分析勉強会 vol.2」を受講。

loganalytics.connpass.com

ハッシュタグ#logben

追記:動画がアーカイブされました。

https://www.youtube.com/watch?v=XBZtbtr2llU&feature=emb_err_woyt

AWSのログをAzureに出力してみた話(1)?〜Azure Sentinelもある?〜

追記:資料公開されました。フォント埋め込んだりしてると SlideShare だと文字消えたりすることもあった気がするけど、サムネイルだけなぜか表示できてる。

AWS で対応もできるけど、Azure でやった場合の話。
「あくまで一例です!CloudWatchLogsでも全然できますので。ただし、複数のクラウド使ってたりする場合、やはりどこかへ統合するべきなので、その例としてAzureに連携するパターンをご紹介しました。前回、GCPに連携するパターンもご紹介しています。」
との補足もいただけました。

【ログ分析勉強会】セッションアクティビティログは使えるのか

www.slideshare.net

「ログはシステムの声そのもの。」という言葉が響きました。
その声を聞くのがモチベーションになると。
運用ではログは何よりも大事なんですが、手を抜いてしまいがちです。

テレビのサーバレス視聴データ収集・分析の仕組みのご紹介

speakerdeck.com

AWS Samurai 2019 に選ばれた三浦一樹さん。
地上デジタル放送で、TV へ送信する視聴データの話。
BML(ブロードキャスト・マークアップ・ランゲージ)を利用して TV 内の BML ブラウザで表示をしているとのこと。
メーカーごとに表示が違ったりするから、複数メーカーの TV を買って確認するとのこと。
IE/Chrome/Firefox のマルチブラウザ対応みたいな苦労があることに驚きです。

リアルタイムログ分析基盤のAWS->GCP移行話

speakerdeck.com

じゃらんとかで「今このプランを何人見ています!」という基盤のお話でした。
あれって、煽るたに適当に出してるんじゃないかと、懐疑的に思ってたんだけど、ちゃんと計算してたのが驚きでした。

所感

ログ分析ってトラブったりしたときにやることが多いのですが、「システムの声」をちゃんと聞けば改善にも役に立つし、セキュリティ的にも大事だし、ちゃんと分析できるようにならないと改めて感じました。

(小ネタ) Google IME の変換候補が出なくなった

いつからか macOS で利用している Google IME の変換候補が出なくなった。
そのうち直るかと思って気にせずつかってたけどやっぱり不便。

f:id:omron:20200624215453p:plain

GoogleJapaneseInput* を全部停止したら直りました。