mozyのかきおき

mozyの読書感想文や思考置き場

AWSの勉強会に行ってきた【サーバレス技術】

【サポーターズCoLab勉強会】CTOが語るTalknoteを支えるサーバレス技術【AWS

【サポーターズCoLab勉強会】CTOが語るTalknoteを支えるサーバレス技術【AWS】 - サポーターズCoLab
に行ってきたのでメモをシェアしておく

Talknoteとは

講師さんの作っているサービス LINEとか使ってる人が普通に使えるようにしている社内SNSとのこと。
チャット + コミュニケーションの可視化もできる

サーバーレスとは

  • BasS型 例: File base
  • FaaS型 例: AWS lambda
    などの種類があるが、今日はFaaSについて話す

種類

  • IaaS
  • CaaS Dockerとか
  • PaaS herokuみたいな グロースして行くとキツイ
  • FaaS アプリケーション部分がミニマム

サーバレスは何がいいのか メリットは

* コスト削減
* 局所化と疎結合
* スケーラビリティ
* イベントインテグレーション
  • インフラコスト削減
    • 待機分のサーバコストを削れるかも
    • 単位あたり 7割コストカットできた
  • 運用コスト節約

    • サーバ保守 サーバ管理とか、プロセス管理が容易
    • 偶有的な仕事の削減 (目的のためにたまたま発生する事象のこと)
    • プログラムのバグ潰しが減る
    • 本質的な仕事に取り掛かれるようになる
      • 本質的仕事とは、顧客の問題を解決すること 製品を差別化すること
  • サーバレスってなによ -> いわばシェアリングエコノミーかな

  • 局所化と疎結合が自然とできる

  • スケーラビリティ

    • 必要に応じて勝手にスケールする
    • 厳密な需要予測しなくていいのはナイス
    • タスク開始時点でサーバリソースの割合が保証される
    • スケールアウトについて設計考慮することが ::減る:: 。なくなりはしない。ボトルネックは外にあるので。
  • イベントインテグレーション
    • 様々なリリースのトリガーと簡単にリアルタイムに紐づけられる
    • IFFTTと概念は近い(?)

やってみたこと 実際の事例

* PDFプレビュー機能
* EC2 イメージマジックとゴーストスクリプトを走らせる
* cronで定期的に捜索してた
* メモリ食うので -> インフラコスト増
* いつPDFが来るかわからないのでwaitしている間のサーバコスト無駄

これは、Faas教科書みたいな案件とのこと

サーバレスの問題、リスクは?

  • ベンダー依存
    • ベンダーが定めた制限事項に仕様全体が限定される
    • APIのバージョンアップによって想定外の改修が起きる可能性
  • ベンダーロックイン
    • 特定のベンダーの仕様にシステム全体が依存してしまう
    • 特にFassはそう
  • 外部のボトルネックがある
    • サーバ上に状態を保持できないので外部サービスに渡す必要あり RDSなど
    • 無制限の自動スケールアウトなどは存在しない
  • 環境上の制約
    • 起動のレイテンシがある
    • 実行時間の制限
    • サーバーリソースの制限
      • 確保している分しか使えない
    • サーバ設定の制限
      • プリインのライブラリ、フォントファイルなど
        • ここは暗黙的に担保されるという思ってるけど意外と重要な点
      • 最近はラムダと同じDockerが落ちてるのでテストできるらしい
    • マルチテナント
      • セキュリティ面での問題がある可能性がある
      • EC2は専用ホストあるけど、lamdaはそうじゃないので気になる顧客もいる
  • 原子性の管理
    • 不可分性
    • それ以上細かい単位や要素に分割できない要素のこと
    • 共通のコンテキスト
    • 同じドメインモデルへの操作、同じDBテーブルへのアクセスなど、コレらをまとめて管理する手法がない

サーバレスとマイクロサービスの関係は?

サーバレスにすると必然的にマイクロサービスになる

メリット

  • 耐障害性
  • 変更に対する柔軟性
  • 技術多様性
  • ライフタイムを伸ばせる 長期的に伸びるために導入する必要あるだろう

デメリット

  • 整合性担保のためのコスト
  • 設計の複雑化
  • 運用コスト増

システムの複雑度を考慮した上で段階的に導入すべし

どんなときにつかうかの提案

  • プロトタイプ開発
    • 事例、お店に来た人をAIで解析マーケティング
    • 有効データとれるかわからないので、数店舗のみで実行
    • 実験的な取り組みとは相性いい
    • 大きくなっても構成変えなくて良いのはナイス
  • 予測が難しいトラフィック
    • 事例、ラウザでのカードゲーム
    • 10,000%トラフィックにも対応できた
  • データのフィルタ
    • UNIXという考え方 本を読むといい
    • 設計思想の定理に、割とマイクロサービスな考え方が詰まってる
    • 入力したデータを加工して出力する単機能プログラム grepなどの思想
  • サブドメインの分割
    • モノシリックで巨大なサービスを段階的にマイクロサービスに分割して行く
    • コアドメイン 最も重要で戦略的に必要な機能 (コミュニケーションに関する機能など)
    • 支援サブドメイン コアドメインを支援する独自機能 (ユーザ管理など)
    • 汎用サブドメイン 必要だが事業的に特別なでない機能 (認証 決済など)
      • ここからマイクロサービス化して行くべき

質疑応答

サーバレスとは、要するにサーバの外注ってこと?

違うぜ 意識しなくなるって意味
最初はBaasで君はアプリだけ作ればいいよーという文脈で始まったのもある

コストって抑えられるの?

コストは抑えられないかも。ここら辺のヘッジは難しい。
lamdaのファンクションで、ディスクエラーはつきもの容量とか。
冪等性担保は めんどくさいよね

結局サーバレスのいいところって?

人のコストは下げられるけど、お金のコストはかかるかも。
スケーラビリティの観点が一番大きい。
また、トラフィック対策の点も大きい。複製できるので逐次対応できる点が良い。

【IDDD本】ドメイン駆動設計読書記録【ことはじめ】

ドメイン駆動設計読書記録

エンジニアなお仕事をさせていただいている会社で、ひょんなことから、
エリックエヴァンスのドメイン駆動設計をお借りできたので、読書記録を書いて行こうと思います。

まずは、現状のメモ

自分は、DDDに関してほぼ知識はない状態で、このような開発も行ったことがないと言える状態です。

ペースなど

一週間に一章のペースで読んでブログにメモをしていこうと思っていますが果たしていつ最終章にたどり着けるのでしょう。楽しみです。今回はフォーマットを決める記事としましょうか。

フォーマット

  • これまでの章まとめ(目次の代わり)
  • 章の概要とまとめ
  • 感想、新たに知ったこと
  • 適用先、応用先など
  • その他

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

今話題(?)のモブプログラミングを大学のプログラミング講義に適用したらどうだろうかという提案

表題の通り、大学のプログラミングの講義などで、モブプログラミングのような形式をとるのはどうだろうか。と思った。

この記事の後半部分 心理的に安全を感じること という部分よんで思ったのだれども

技術なきマネジメントの衰退とその対策 - メソッド屋のブログ

心理的に安全を感じること

 プログラミングをやる時に、現在では毎日のように「未知の技術」に向かわないと いけない。新しいことを覚えて熟練して使えるようになるには時間がかかるし、知らない技術をやらないといけない時は、自分にできるだろうかとか不安になる。

大学の講義などで初めてプログラミングを行った初心者の人は、そもそもコンパイルの方法がわからない、ターミナルで $ls と打つと書いてあったら $も含めて $ls と打ってしまうみたいな、経験者は自然に身についている勘どころみたいなものがわからないというように、小さな障壁がたくさんある気がしている。

自分が書いたコードの問題なのか、それ以前の環境の問題なのか、このアイコンはOKを押していいのかなど、複数の要因が絡み合ったわからないが存在しているハズ。

そこで つまづいてしまって途中で投げ出してしまうのももったいない

 

実際、大学の講義などでは、TA制度などがあるだろうから、チーム分けをしてその中に1人詳しい人が必ずいる、そして常に対話しながらコードを書いていくというのはどうだろうか。

わからないポイントって人それぞれで、補完しあえるし、目の前で、ちょっとした指摘をしているのを見るとへぇそんなものかと身につく気もする。

境界線を考えるということ

新しいことを思いついた時に、これって問題が起きるかなって一度脳内でシミュレートしてみるときがある。

例えば、俺、今度、札幌に行くから、向こうの大学生の家に泊めて貰えば宿代がうくじゃないかと考えて連絡をして、実行したとする。

多分これは個人間だと多々ある話で、大きな問題は表面に露見せずに終わると思う。

 

だけど、これがサービス化するとどうなるだろうか? 

大学生を旅行先の大学生の宿主とマッチングするサービスだと考えると、きっと、色々な問題が露見してくる。

出会い系と何が違うの?危険性は?そもそも相手が虚偽の申告をしていたら?

そんな時にじゃあ難しいなぁって思うのではなく、もう一歩深掘りすると面白いってことに最近気がついた。(最近とか言っているけど、数秒前に思いついた。)

じゃあ実世界でサービスを行なっている、実働している、

ホテル予約サイトや、Airbnb、などってこの部分をどうクリアしているんだろう?何が違うんだろう?と考えて行くと、境界線がぼんやりと見えてくる気がする。

考えると、多分、信頼とか信用とかも関係あるかもしれない、気軽さの度合いが違うってのもある。法に基づいて運用してるかとかもあるだろうし、プライバシーとかもあるかもしれん。

 

こうやって境界線をどんどん探って行くと、あっコレどうにかなるかも。ということが見つかることがありそう。そんなわけで深夜のメモ書きですがここら辺で筆を置くことにしましょうかね。

2017/09/25 の気になったこと

三日坊主になりがちな俺がメモメモ3日目です。(๑˃̵ᴗ˂̵)

気になったこ
  • 駐車料金ってどうやって決まってるのかな
  • 昨日も思ったけどパークアンドライド経路案内があったらめっちゃ便利だろうなぁ
  • ノイズキャンセリングイヤホンを使っているけどコレ実際に実装するならどうすればいいんだろうなぁ
  • 僕は、本にめっちゃ書き込みするタイプなんだけれども、結構少数派らしい? そういや、この書き込みとか点検読みとかは、「本を読む本」という本を読んでから実践しているのだった。
  • iPhoneでバックグラウンド起動のアプリって、個人的には、かなりまめに消すんだけど、最近は起動中のままにしているアプリが多い気がする。
  • バックグラウンド起動をしておくと何かメリットあるんだろうか。
  • どのアプリをどれくらい起動しているのか時間などが分かったら面白いね。あるユーザの時間帯別アプリ占有率とか出せたらプロモーションとか打ち出しやすいし。

 

考えたこ

電車の座席や公園のベンチなどは、肘掛けがないから、人が隙間を開けて座って、本来座れる人数よりも1人くらい少なくなっていることがある。これってパーソナルスペースの考え方でいいのかな。

高速バス4列シート車両で、肘掛けがあると自分の占有できる範囲が明確になるため、気が楽に感じる気がするし。

電車の新型車両では、座る部分にくぼみを作ったり、2人ごとに縦に支柱(?)を作ることで規定人数座れるようにしているなぁ。

確か、武蔵野線の車両などでは、上記の問題が起きている気がした。

 

気がついたこ

バスから外を見てて気がついたのだけれども、

首都高6号三郷線上り、街灯の根元の部分に車両用センサがあるっぽい
街灯番号06-7170,7082,7062,7044にはセンサらしきものがあることを確認できた。

よく渋滞する区間だしあのセンサで渋滞状況とかをみてるのかな。

 

知ったこ
  • つくば-東京駅のバス切符がなくなったらしい
  • イージューライダーの二番の歌詞は最高に良い。自分の考えていることに近い。

 

読んでる本

 

 感じたこ
  • トヨタ CH-Rのモータ加速はスゴい。出だしに少し強くアクセルを踏み込むと背中をぐいぐい押される感じがある。
  • CH-R海外でめちゃ人気っぽい。カタチが人気なのかなぁ。
  • こうやって数日間メモメモしていると気分の違いというか、日によって書く分量というか、書こうっていう気力が結構違うんだなぁって思った。今日はなんだか気だるい日です。

 

食事とか

今日は朝昼兼用で、完全食COMPに置き換えています。

今日も昨日の夜同様、カルピス割りです。カルピス割りは商品でもいいでしょうと思うくらいに美味しいです。

毎回お腹は満たされているのであまり不満はありません。ふとした拍子にコロッケとか食べたくなるけど、ほぼほぼ満腹なので気にならず。☻

f:id:mozy_ok:20170925153221j:image

2017/09/24 の気になったこと

三日坊主にならないようにメモメモ。2日目です。(๑˃̵ᴗ˂̵)

睡眠時間が2時間半と短かったので、内臓が少し重く疲れています。

 

気になったこと
  • 朝食ヨーグルト、モーニングショットなど、商品名で朝をイメージさせるワードが入っていると朝昼夜で売り上げはどう変動するのか
  • Apple Musicのシャッフル再生で、どう曲を選ぶかのアルゴリズム 数曲前までは重複がないようになど完全ランダムでなく条件づけしてる気がする
  • 音楽聴いてる時の心拍数変化 apple watchのデータで解析可能かな
  • その人の服装や背格好などから職業を推定できるかな。データセットがあれば学習できるか
  • 自転車で大きな荷物を運ぶ時のコツ

 

音楽
  • ハルカトミユキ
  • 奥田民生 イージューライダー

 

考えたこと
  1. 現実世界 to インターネットとインターネット to 現実世界で情報量非可逆みたいなものがあるかも。インターネットから、現実空間に徐々に染み出してきている情報は、両世界で使いやすいように構成されているけれども、逆はそうではない? 現実世界からツイートなどのテキスト、写真に変換されてインターネット上に移動したものはタグ付けがされていないと使いづらい。
  2. 筑波大学における自転車の問題点に関して。ICタグ導入とかやってたけどあれってmobikeとか導入すれば色々解決しそうな気もする。駐輪場問題とかもいつ、どこにどれくらいの台数が止まるかも解析できるし。コレに関してはもうちょっと探ってみたい。
  3. パークアンドライド(車で駅まで行って電車に乗り換えて目的地まで行くこと)で最安のルートを見つけるアルゴリズムとかってまだなさそうかなぁ。例えば、高速代金、ガソリン代金、駐車代金、駅までの移動代金、電車代金、駅からに移動代金、と関わってくるものが多いから最適化するのには面白い題材かもしれない。駅前で激安な駐車場とかあるとそこまで車に乗って行きたくなるし。

 

教えていて気がついたこと

子供達にブレッドボードを使った電子工作を教えていたのだが、ジャンパワイヤの色が違うと機能が違うのように意味があるとみな無意識に思い込んでいるようだ。抵抗の部分でカラーコードの話をするからなのかなぁ。

最近は、LED使った電子工作をするときに子供達は当たり前にLEDを知っているし、人によってはプログラミングをやったことがある人がいて時代は変わって来ているぁなと思う。

あとYoutuberはやっぱりキッズに人気なのねw 話を聞いて実感した。

 

 綺麗だなぁと思った

このお花? アケボノソウっていうんだってなんか綺麗だねぇ

 

2017/09/23 の気になったこと

今日から日々で気になったことをちょこちょこメモっていこうと思う。

ブログの記事も増えていくからね😎

 

イデア
  • その付近のガソリン価格がわかるアプリとかあったらいいな

 

ワード

 

記事とか

「ペンギンはクラゲを食べる」従来の見方覆す研究結果 国立極地研など発表 | THE PAGE(ザ・ページ)

ペンギン、ぺちぺちしててなんか好きなんだけれども、クラゲ食べるらしいという研究結果が載っている記事を読んでほえーと思った。

 

UI,UX

 f:id:mozy_ok:20170923231712j:image

古い記事だけど、マイナビニュースのここの部分。一番右にある、かつ、ページ数よりも大きなボタンで表示されているため、進むボタンと勘違いする。無意識に押すと目次に進む。微妙だと思った。

完全食「COMP」は現代人の福音となるか? 開発者 鈴木優太×メディアアーティスト 落合陽一対談 [PR] | ヘルスケア | マイナビニュース

 

音楽

apple storeで流れているBGMのプレイリストらしいけれども、どの曲も良い。

https://itunes.apple.com/jp/playlist/today-at-apple/idpl.567c541f63414e798be5cf214e155557

 

食べ物

COMP

f:id:mozy_ok:20170923232338j:image

COMPが夕方に届いたので試してみた。

飲んでいる最中からお腹が満たされる感じがあって、スゴい。規定量作ったのだけれども、飲みきるのがキツイぐらいお腹が満たされる。

 

買ったもの

f:id:mozy_ok:20170923233100j:image

Apple Watchを買ったぞ〜

 

知ったこと

f:id:mozy_ok:20170924012639j:image

ミスってるのは置いておいて、clrscr()ってのは知らなかった。下の記事によると古いBorland Cで使うとのこと。

Is clrscr(); a function in C++? - Stack Overflow