雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

読書ノート 「入門 監視」

読んだ本

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

雑感

わかり見あふれるよい本でした。

監視とは?何をどう監視すればよいか?などの実践的な内容がまとめられています。時々監視ってどうすればいいんですか?って聞かれることがあるのですが、次からはこの本をおすすめします。

内容的にもオペレーションを担当していた人ではなくてそれ以外のアプリケーションエンジニアやプロダクトマネージャーの方が読むと得るものが大きいいんじゃないかなと思いました。

最近はマイクロサービスの普及、SREの台頭によって監視に対する考え方もずいぶん変わりましたね。

「監視とは役割ではなくスキルであり、チーム内の全員がある程度のレベルに至っておくべきです」という言葉が監視の必要性を物語っているなと。

ビジネスの監視について触れているのもおもしろかったです。

この手の「監視」の話しになるとどうしてもシステム寄りの話しが中心になりがちなので。。

ビジネスKPIを技術指標に結び付けるという点も結果として結びついていることはあったりしましたが(例えば稼働率の監視とか)、あまり明示的に意識してやったことがなかったので今度考えてみたいと思ってます。

印象に残ったところメモ

1.1.1 監視とは複雑な問題をひとくくりにしたもの
- 単一のツールで解決できる問題でもない
- 汎用的なツールと専門的なツールを組み合わせて監視を作る

1.2 アンチパターン2: 役割としての監視
- 監視を担当する人を作るということはアンチパターン
    - 監視とは役割ではなくてスキル
    - 一人の人に任せるのではなく、全員が監視に対する責任を持った方がよい
        - アプリケーションエンジニアの方がよりよいアプリケーションに関する監視を作れる

1.3.2 アラートに関してはOSのメトリクスはあまり意味がない
- アラートについて意味がないと言ってるだけで、使い所をちゃんと考えましょうということ

2.2 デザインパターン2: ユーザ視点での監視
- ユーザレベルの監視を意識する
    - システムから入るのではない。ユーザに影響を与えるところから監視を始める
        - 例えば、DBのCPUが高負荷になったとしても本当にユーザに影響が出ているのか

2.3 デザインパターン3: 作るのではなく買う
- 監視ツールは組織の規模や監視に求めるものとのバランスをよく考慮すること
    - だいたいはSaaSで十分
    - SaaSでやりたいことができなくなったらOSS
    - それでも無理なら自前で作る

5 ビジネスを監視する
5.3 ビジネスKPIを技術指標に結び付ける

6 フロントエンド監視
- ここでいうフロントエンドはブラウザあるいはネイティブなモバイルアプリケーションによってパースされて実行されるすべて
- フロントエンド監視は盲点になりがち
- フロントエンド監視には2つのアプローチがある
    - リアルユーザ監視
        - GAが一つの例
    - シンセティック監視
        - WebpageTestとか

フリーランスエンジニアとして使っているサービスリスト的なやつ

この記事はmybest Advent Calendar 2018 - Adventar 9日目のエントリーになります。

普段はフリーランスエンジニアとして色々な会社さんのお手伝いをさせて頂いているのですが、マイベストさんはその内の一つです。とっても素敵な会社さんですよ!

採用もしてるので興味ある方ぜひ。

hrmos.co

本題

フリーランスは会社員と違って今まで会社がよしなにやってくれていた税金や社会保険、情シス的なやつは全部自分で面倒見る必要があります。

全部を1からやっていくと超絶めんどくさいため、各種クラウドサービスを使ってなるべく手間がかからないようにしています。クラウド便利ですよね。いい時代に生まれました。

フリーランスになってぼちぼち2年になるのですが、そんな自分が普段使っているサービス達をご紹介したいと思います。

GSuite

f:id:og732:20181209123626p:plain

https://gsuite.google.co.jp/intl/ja/

鉄板のオフィススイート。独自ドメインでメールアドレスを持ちたかったので契約しました。

独自メールアドレス持つだけなら無料で提供しているところもあったりするのですが、自分の場合は会社さんによってGSuiteの導入支援とかもやってたりするので、事前に検証するためにも使ってたりします。あとは単なる興味。

GoogleのサービスとしてはGmailの他に、ドライブとカレンダー使ってますが、GSuite独自の使い方してるかと言われると全然そんなことありません。

正直、フリーランスとしてやるだけならGoogleアカウント一つ取得してそれ使うだけで事足ります。

MoneyForward クラウド確定申告

f:id:og732:20181209123710p:plain

https://biz.moneyforward.com/tax_return

会計サービス。めちゃくちゃお世話になってます。

フリーランスになって何が一番めんどくさいかと言うと確定申告です。自分で帳簿をつけるなんて考えたくないので真っ先に契約しました。

この手のサービスはfreeeもあるのですが、実際に使っている知人の評価も聞いてでMoneyForwardを選択しました。

今のところ概ね満足しています。レポート周りが充実しているのがよいですね。

プランはベーシックプランを契約しています。最初はフリープランだったのですが、仕訳件数が追いつかなくなってきたので。

Misoca

f:id:og732:20181209123740p:plain

https://www.misoca.jp/

請求書作成サービス。めちゃくちゃお世話になってます。

他のサービスを見ると無料だと機能制限が結構きつかったりするのですが、Misocaは無料でも一通りの機能が使えるのが素晴らしいです。

毎月の請求書自動生成機能も無料範囲なので、請求業務が圧倒的に楽です。

MoneyForwardと連携させています。

モバイルSuica

f:id:og732:20181209123811p:plain

http://www.jreast.co.jp/mobilesuica/index.html

交通費精算が地味にめんどくさかったので事業用として使い始めました。

交通系ICカードで交通費を経費精算するためには利用履歴を定期的に吐き出すか、自分で利用履歴を作る必要があるんです。利用した金額もまとめて計算して都度入力。苦痛ですね。

MoneyForwardと連携させているのでSuicaを利用したら勝手にMoneyForward側にも利用金額が登録されるようになっています。 利用履歴はモバイルSuicaのページから取得できるので、定期的に落とすようにしています。

楽天銀行 / 楽天カード

f:id:og732:20181209123841p:plain

https://www.rakuten-bank.co.jp/

事業用口座として利用。個人口座でも別に問題はないのですが、事業用口座を用意しておくとお金周りの管理が圧倒的に楽になるのでオススメです。

カードも事業で使うやつは全て楽天カードを使うようにしています。

楽天銀行はアプリの使い勝手がすごい良いです。これまでは三菱UFJ住信SBIを使ったことがあったのですが、もう比較するのが失礼になるレベルですね。

MoneyForwardと連携させています。

クラウドサイン

f:id:og732:20181209124026p:plain

https://www.cloudsign.jp/

電子契約サービス。自分の場合は契約書はお客様側で用意して頂いて内容確認->合意という流れが多いのですが、その際にクラウドサインでやり取りすることが割とあるので利用しています。

契約書の締結とかFAXでやり取りして仮締結、後日原本持っていって社判押して本締結、というめんどくささの塊だと思っていたのですが、クラウドサインであれば内容みて必要事項入力してポチれば終わりでした。

Slack

f:id:og732:20181209124137p:plain

https://slack.com/intl/ja-jp/

1人Slackしてます。主にfeed登録しての情報収集やメモ帳代わりとして使ってます。

お客様とのやり取りは会社ごとに利用しているツールに合わせているのですが、もう全部Slackになっています。1つだけChatworkがあったのですがそこも乗り換えました。もはや覇権とっちゃった感ありますね。

AWS / GCP

f:id:og732:20181209124158p:plain

f:id:og732:20181209124222p:plain

https://aws.amazon.com/jp/

https://cloud.google.com/

検証用。この手のものは会社が用意してくれるところもあったりするのですが、個人でいつでも気軽に使えるように1つぐらいは用意しておくと便利だと思います。

LastPass

f:id:og732:20181209124241p:plain

https://www.lastpass.com/ja

パスワードマネージャー。

色々なサービスを契約してるとアカウント管理がめんどくさくなってくるので導入。無料で利用できる範囲で探していて行き着きました。ただそんなに使い勝手がよくないので、変えたい感じ。最近はこの分野は信頼性大事なのでお金払ってでもいいものを使いたいと思ってます。

Authy

f:id:og732:20181209124258p:plain

https://authy.com/

2FA。お客様契約のサービスを利用する場合、2FAが設定できるのであれば必ず設定するようにしています。 以前はGoogleAuthenticator使ってたのですが、スマホが壊れて機種変したときに大変な目にあったので変えました(Authyはバックアップができるのです)

あとchrome拡張が用意されていたりするのが地味に便利。

まとめ

特にお金周りの効率化大事。じゃないと毎年2〜3月ぐらい死ねます。

今年もそろそろ確定申告の時期ですね。がんばりましょう。

SlackからファイルをアップロードしてPre-Signed URLを生成するボットを作った

タイトル通り

f:id:og732:20180416231457p:plain

ファイルをSlackにアップロードすると自動的にS3にアップロードしてPre-Signed URLを返してくれるもの。

コードはこちら。

github.com

なんで作ったか

  • botkitの練習
  • async/awaitの勉強
  • 仕事でこんな感じの使いそうだったから

とりあえずasync/awaitが便利すぎてjavascriptがちょっと好きになった。

参考

Slackにアップしたファイルを自動でS3にアップするBOTを作ってみた -ファイルはS3にどんどんしまっちゃおうねぇ~- - Qiita

homebrewで管理しているパッケージのバージョンを切り替えて固定する

brew upgrade するとパッケージのバージョンがあがる

上がることはいいのですが、言語などはバージョン上がってほしくないのでバージョンを切り替えたい、あるいは固定したいときにやること。

切り替え

過去インストールしたことのあるバージョンでないと切り替えられないので注意

インストールしたことないバージョンにしたい場合は別途作業が必要

  • バージョン確認
% brew info golang
go: stable 1.9.2 (bottled), HEAD
Open source programming language to build simple/reliable/efficient software
https://golang.org
/usr/local/Cellar/go/1.4.2 (5,569 files, 595MB)
  Built from source on 2015-05-29 at 23:52:51 with: --with-cc-common
/usr/local/Cellar/go/1.5.3 (5,339 files, 259.8MB)
  Built from source on 2016-02-19 at 23:42:46
/usr/local/Cellar/go/1.6.2 (5,778 files, 325.3MB)
  Poured from bottle on 2016-05-07 at 20:57:42
/usr/local/Cellar/go/1.8.3 (7,035 files, 282.0MB)
  Poured from bottle on 2017-06-07 at 16:39:36
/usr/local/Cellar/go/1.9.2 (7,646 files, 293.9MB) *
  Poured from bottle on 2017-11-06 at 13:38:18
・
・
・
  • 切り替え
% brew switch golang 1.8.3
Cleaning /usr/local/Cellar/go/1.4.2
Cleaning /usr/local/Cellar/go/1.5.3
Cleaning /usr/local/Cellar/go/1.6.2
Cleaning /usr/local/Cellar/go/1.8.3
Cleaning /usr/local/Cellar/go/1.9.2
3 links created for /usr/local/Cellar/go/1.8.3
% go version
go version go1.8.3 darwin/amd64

upgradeの対象外にする

% brew pin golang
% brew list --pinned

これを実行することで brew upgrade を実行してもバージョンがあがらなくなる

pinの解除

% brew unpin golang

unpinすればまたバージョンがあがる

pinしているパッケージの確認

% brew ls --pinned
go

AlpineLinuxについて

割りと自分のメモ代わり

AlpineLinuxとは

超軽量ディストリビューション もともとは組み込みでよく使われていた? 最近はその軽量さからコンテナのイメージによく使われている 公式イメージも順次切り替わっているとのこと http://www.publickey1.jp/blog/16/docker_alpine_linux.html

有名所は代替alpineも提供している印象

Alpineを使うメリット

  • とにかく軽量
  • docker pullとか早くなる
  • コンテナは容量が小さければ小さいほどよい

Alpineを使うデメリット

  • パッケージ管理が弱め(パッケージのサポートが古め)
  • 最新版のミドルなりを使いたかったらソースコンパイルする必要あり
  • が、glibcがデフォで入っていないみたい

DockerHub

apkコマンド

パッケージ管理 yumとかaptと同じ

# apk update
  • パッケージインストー
# apk add [package]
  • パッケージインストール(cacheを削除)
# apk add --no-cache [package]
  • パッケージインストール(group化)
# apk add --no-cache --virtual [virtual name] [package] [package]

グループ化しておくと、削除時に[virtual name]を指定するだけで一括で削除できる

  • パッケージインストー
# apk del [package or virtual name]
  • パッケージ検索
# apk search [packagee]
  • インストール済みパッケージ
# apk info [packagee]