2020年を振り返る
久しぶりに個人の能力的な成長があった年だった
あまり外出しなかった
電車に乗ったのも、春と秋の健康診断の2回くらい
飲食も観光も完全に密を避けれた
部屋に露天風呂があって2泊3日で12回ぐらい入って最高だった
https://gyazo.com/97a250efb01db1cec31adedbb577b8bf
外出しなかったぶん食べ物は色々変化があったかも
仕事
書ける成果のうち主な物は下のような感じ
他にも色々やってはいる
プロトタイプ作って自分で自分のプルリクをレビューして叩いてcloseしたり
bug修正やライブラリアップデートなど
2月ごろ
4月にユーザーが増える事を予想していた
準備はしていた
それだけでは足りなかった
急激にリクエストが増えると、これまで問題として現れていなかった不具合が表面に出てくる
サービスが30分ほど不調になった事が3日間、合計5回ほどあった
CPU使用率やIOPSなどのmetricsを見てscrapboxのサーバー側の事を考えれるようになった
超久しぶりにプレッシャーで胃が痛くなって気持ち悪くなった
なんとか乗り越えた
titlesの取得を複数回に分割する with daiiz.icon
サーバーでクソデカJSON作るとNode.jsのパフォーマンスが落ちる
pagingして解決
WebWorkerからUIスレッドにpostMessageでクソデカJSON送ると、UIスレッドがフリーズする
chunkingして解決
人が多いprojectがそれなりの期間運用されて、ページが蓄積されバックアップも巨大になった
streamでJSONをパーツ毎に動的に作って流して解決した
JSONという効率の悪いフォーマットを選んだ事を少し後悔もした
末尾まで受信しないとparseできないフォーマットよ
この頃に得たインフラ・パフォーマンスチューニングの感覚と作法は、自分が成長した感があったshokai.icon
実際やってみないと身には付かない
逆にCovid-19の影響で、いくつかの機能への要望が激減した
人々がインターネットの無い場所に行く頻度が減ったのだろう
cloud functionsでサムネイル作ったり
ずっとほしかった機能を、やったことない新アーキテクチャで実装して、ちゃんと動いてよかったshokai.icon
サーバー側のコードを書かずにスマホ等のクライアント側だけでアプリの実装を完結させる為の機能だと思うけど、こういうの普通にwebアプリにも有用なので便利ですね
リクエストが一切app serverを通らないのでサーバー負荷が全く無い
クライアントがリクエスト→Node.js app serverでsigned URLを発行、リダイレクト
なかなか効率よい実装ができた
5月か6月ごろ、急に「サービス終わるから」と言われてヒエーと思いつつ、まあなんとかなるだろと楽観
実際そんな大変ではなかったが
どうしても数分のダウンタイムは発生するので念のため夜中にやった 昼間にサーバーを見守りつつ夜中にインフラ変更してたら若干体調悪くなった
移行した
Scrapbox本体
Scrapbox セミオンプレ版全部
staging環境
Helpfeelも
サーバー構成を細かく設定できて面白い
MongoDB AtlasはHeroku addonがない
mLabはHeroku addonで使ってた
これは実際Atlasを使ってみて理由がよくわかった
DBaaSは、パフォーマンス・メトリクス情報を利用者に提示する事で教育する 利用者はCPU・メモリ・サーバー構成を自由に変更し、試行錯誤する
アプリケーション毎に最適なDB構成は違うから、運用ログに基づいて設計にフィードバックするべき
複数の人が並列してページ作る、リンクする、ページ分割する、ページのマージ、の粗がなくなってきた
色々やった
Update LinksとMerge pagesのボタン2つが1つに統合された
他のページから新たにリンクされたら、関連ページリストをリロードする
他のページからリンクされたら関連ページリストが更新される
これまでは編集したページ側しか更新されていなかった
タイトル変更したページ内のリンク記法も更新する
Socket.IO再接続後の挙動
titles API再読み込みをwindowがactiveになるまで待つ等
などなど
merge pageで合流できる様になった
これまで
存在しないページをslackなどから共有されて複数人が同時に書き始めると
タイトルに_2がついて別ページに書く事になってしまっていた
合流できるようになった
https://gyazo.com/feb47a04d1c23d6627c57cf1f709da7b
絶妙なアイディアで整合性を取った
実装は普通
実装よりも仕様を練るのをがんばった
新機能と既存の仕様の辻褄をなんとかうまく合わせた
まだ試験的な段階
クリスマスに実装した
今の所調子よく動いてる
一旦実装を終えて、どこをどう直していくか整理してだいたい見えたところ
来年はオンラインでdrinkupなどやりたい