サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
blog.manabusakai.com
AWS re:Invent 2017 で発表された脅威検出サービスの GuardDuty はもう試されましたか? 発表されたその日に有効化してみましたが、さっそく意図せずオープンになっていたポートへの攻撃が検出されました。幸いポートスキャンされただけで実害はありませんでしたが、GuardDuty で検出されなかったら気づくことはなかったと思います。 ところで、GuardDuty が検出した脅威は AWS Management Console で確認できますが、メールや Slack でプロアクティブに通知する機能はありません。 AWS あるあるですが、通知したければ自分で仕組みを作る必要があります。 いつも参考にさせてもらっている Developers.IO の「GuardDuty を設定してメンバーアカウントを招待してみた」にもこんな感想がありました。 いまの状態だと、毎日 GuardDu
先日のアップデートで mackerel-agent に action オプションが追加されました。 チェック監視の結果に応じてコマンドを実行させられるようになりました - Mackerel ブログ テキストログ監視をおこなう check-log や、プロセス監視をおこなう check-procs など、さまざまな観点での監視がおこなえる Mackerel のチェック監視ですが、今週のアップデートにより、チェック監視の実行後、その結果をもとに任意のコマンドを実行できるようになりました。 たとえばプロセス監視を行う check-procs プラグインと組み合わせれば、監視対象のプロセスが落ちたら自動的に再起動するということができます。 freee でも非同期ワーカーのプロセス監視に活用しています。 これまでは「アラート通知 → 検知 → 対応」という流れでしたが、軽微なアラートならこのオペレー
これまで Kubernetes を触ったことがなかったのですが(概念はざっくり知っている程度)、freee で使いそうな雰囲気になってきたので空き時間を見つけてキャッチアップしています。 AWS は Kubernetes のマネージドサービスを出していないので、自前でクラスタを構築する必要があります。ツールはいろいろありますが、今回は AWS Compute Blog で紹介されている kops を使って AWS 上に Kubernetes クラスタを立ててみます。 Manage Kubernetes Clusters on AWS Using Kops | AWS Compute Blog kops とは kops は Kubernetes Operations の略で、Kubernetes クラスタをマネージメントするコマンドラインツールです。 Golang で書かれているので mac
4 月に Apple Watch Series 2 を購入してから、ほぼ毎日のように Apple Pay を利用しています。もともと現金をほとんど使わない生活をしていましたが、最近は財布から電子マネーやクレジットカードを出すことすらなくなってきました。 すっかり普段の生活に溶け込んでいる Apple Pay ですが、セキュリティについては漠然と安全なんだろうという程度の知識しかありませんでした。今回は Apple が公開している情報をもとに Apple Pay のセキュリティについて詳しく調べてみました。 参考にしたのはこの 2 つです。 日本の Apple Pay のセキュリティとプライバシーの概要 - Apple サポート iOS のセキュリティ: iOS 10 より詳しく知りたい方はリンク先のドキュメントを参照してください。以下は自分が気になったポイントです。 デバイスアカウント番号
AWS で長年サービスを運用していると、不要なリソースが残ったままになって無駄なコストを払っていたということがよくあります。物理的なハードウェアがない分、不要なリソースを掃除する動機が起きにくいです。 freee では CodeBuild を使って AMI 作成を自動化していますが、削除するところまで自動化していなかったので古い AMI が増え続けていました。 AMI の削除(登録解除)は意外と面倒で、AMI とは別にそれに紐づく EBS スナップショットも削除する必要があります(課金されるのは EBS スナップショットの方)。 気づいたときに手動で少しずつ掃除はしていたものの、さすがに面倒になってきたので AMI Remover という CLI ツールを作りました。 manabusakai/ami-remover: "AMI Remover" is a simple tool to de
SPF (Sender Policy Framework) の設定をするときに知らなかったことがいくつかありました。 SPF についてはうろ覚えの知識だったので、この機会に RFC を読んで仕様を確認してみました。 SPF レコードタイプは使わない SPF を設定するときは TXT レコードに追加するほかに、専用の SPF レコードタイプが用意されています。ですが、SPF レコードタイプは相互運用性の観点から勧められていません。 RFC 7208 の 14.1. The SPF DNS Record Type から引用します。 Studies have shown that RRTYPE 99 has not seen any substantial use, and in fact its existence and mechanism defined in [RFC4408] have
freee では「会計 freee」に始まり、「給与計算 freee」や「会社設立 freee」など全部で 5 つのサービスを提供しています。また、サービス間で共通している機能はマイクロサービス化されているので、インターナルなサービスも含めると数多くのサーバが動いています。 サービスの特性に合わせてミドルウェアやプログラミング言語を選んでいるので AMI を共通化することが難しく、サービスの成長に伴って AMI の数も増えていました(起動時に Cloud-init でゼロからセットアップするやり方だと時間がかかりすぎるため採用できません)。 AMI の数が増えると管理コストがバカになりません。特に、Linux カーネルなどに脆弱性が見つかるとすべての AMI を作り直す必要があります。 freee では Packer と Ansible を使っているので構築自体は自動化されていますが、それ
freee の開発チームは、ユーザーに安心して使っていただけるよう様々なセキュリティ対策を行なっています。 SRE チームも例外ではなく、セキュアなインフラを提供できるように日々努力しています。 その一環で、先月リリースされた AWS WAF のレートベースルールを検証しました。このレートベースルールを使えば、DDoS 攻撃やブルートフォース攻撃、パスワードリスト攻撃を自動的に遮断できます。 Protect Web Sites & Services Using Rate-Based Rules for AWS WAF 設定方法は Developers.IO の記事が詳しいので、そちらをご覧ください。 AWS WAF でレートベースのルールが作成可能になりました | Developers.IO レートベースルールとは AWS WAF のよくある質問から引用します。 レートベースのルールは、A
freee ではプロダクトの拡大に合わせて、汎用的な機能をマイクロサービスに切り出していこうとしています。すでにマイクロサービス化されているところは REST API による通信を行なっているのですが、これから新しく作るところはデフォルトで gRPC を採用しようとしています。 freee のサービスはすべて AWS 上で動いていますが、本格的に採用する前に gRPC アプリケーションを AWS で動かすときに注意することを調べてみました。 ALB では gRPC の HTTP/2 通信を負荷分散できない gRPC はデフォルトで HTTP/2 で通信します。 ALB (Application Load Balancer) は HTTP/2 に対応していますが、対応しているのはあくまでクライアントと ALB のフロントエンド側(リスナー)であり、ALB と EC2 のバックエンド側(ターゲ
先日、ついに発表された RDS の停止機能をさっそく試してみました。 RDS インスタンスの起動 / 停止 - Developers.IO AWS Developer Forums: Amazon RDS Supports Stopping and Starting of Database Instances RDS のコストが占める割合は大きいので、業務時間外にステージング環境や開発環境の RDS を停止することでコスト削減できそうです。 Single AZ の RDS インスタンスに限られるなどいくつか制限がありますが、これまでのスナップショットを取得して復元するのに比べれば大きな進化ですね! The stop/start feature is available for database instances running in a Single-AZ deployment whic
育休を取っていることは以前書きましたが、子どもが生まれると何かとお金がかかります(参考: 5 月は育休を取っています)。 この機会に出産・育児でもらえるお金について調べたので、せっかくなのでブログにまとめておきます。これから子どもが欲しい方の参考になれば嬉しいです。 なお、雇用形態や社会保険の加入状況によっては当てはまらない場合もあるので、詳しくは勤務先に確認してみてください。また、自分に関係する制度のみ調べたので、すべてを網羅しているわけではないです(たとえば、妊婦が働いている場合に受けられる出産手当金やひとり親家庭の児童扶養手当など)。 網羅的に知りたい方は「知って得する! 国・自治体からこんなに! もらえるお金大全」という本がおすすめです。 出産育児一時金 だれが: 健康保険に加入している人 いくら: 42 万円 申請先: 健康保険組合 参考: 出産育児一時金の支給額・支払方法につい
Amazon Aurora 1.12 がリリースされました。注目すべきは Fast DDL です。 Announcement: New Aurora Release 1.12 Now Available Amazon Aurora Under the Hood: Fast DDL Fast DDL とは大規模なデータベースでも DDL が高速に行えるという機能です。この機能を待ちわびていたので、さっそく検証してみました。 検証に使ったインスタンスは db.r3.large で、対象のテーブルは 1500 万以上のレコードがあります。このテーブルには本番環境に近いデータが入っています。 mysql> select count(*) from xxxxxx; +----------+ | count(*) | +----------+ | 15441969 | +----------+ 1 r
Amazon Aurora への移行検証の中で、RDS for MySQL にできて Aurora にできないことを見つけました。 MySQL との高い互換性は確認できたのですが、運用する上でハマりそうです。 レプリケーションを一時停止できない MySQL にはレプリケーションを一時停止するために STOP SLAVE が用意されています。 RDS の場合は権限がないため mysql.rds_stop_replication というストアドプロシージャを使います。 mysql.rds_stop_replication - Amazon Relational Database Service どういうときにレプリケーションを止めたいかというと、分析のためにある時点(たとえば深夜 0 時)の全データをエクスポートしたいときです。 RDS の Restore to Point in Time (
omoiyari.fm に知り合いの吉田さんこと @kakakakakku さんが出演されていたので楽しく聞かせてもらいました。 #22 Trello があるので眠れない - omoiyari.fm 冒頭の 5 分を聞けば、吉田さんの意識の高さや行動力に驚かされると思います。吉田さんとは年齢も近く、得意とする分野もかぶっているので、自分にとっては良きライバルでもあります。 個人的に気になったのが、冒頭 3 分 13 秒あたりの次の会話です。 睡眠時間もね、一応だいたい見ていて、できるだけ少なめに少なめに。 これを聞いて、Twitter にこんな感想を書きました。 意識の高さはさすが (笑) 自分はいかに睡眠時間を削らずに効率よくやるかを意識していて、実際に副業を始めてから睡眠時間を増やしています。プロである以上、眠い状態でお手伝いするなんてできない。 / Trello があるので眠れない
3/25 (土) に副業にまつわる勉強会 Second Job Meetup を開催します! すでに connpass の方で募集を開始しています。 Second Job Meetup - connpass なぜこのような勉強会を開催しようと思ったか補足します。 「2017 年から個人事業主として開業します」にも書いたとおり、今年から本業の傍ら個人事業主として開業し、主にスタートアップへ技術支援を行なっています。おかげさまで順調に楽しくやっていますが、いざ始めてみるまでは税金や手続きのことなど分からないことばかりでした。 副業が話題になっていますが、自分と同じように不安が大きくて始められない人もいると思います。そういう方が最初の一歩を踏み出せるように、副業にまつわる知識を効率よくインプットできる場を作りたいと思ったのがきっかけです。 ちなみに、よくある副業セミナーと違って「どうやって儲ける
AWS Key Management Service (KMS) は暗号化キーを簡単に作成・管理できるマネージド型サービスですが、これまでは EBS や RDS のように AWS サービスに統合された用途でしか使ったことがありませんでした。 今回は機密ファイルの耐タンパー性を確保するために KMS を使ってファイルを暗号化してみます。 検証なので次のようなプレーンテキストを暗号化してみます。 $ echo 'Hello, world!' > plaintext-file.txt $ cat plaintext-file.txt Hello, world! AWS CLI で暗号化する まず KMS のマスターキーのエイリアス名を確認します。 alias/aws/* は AWS サービスに統合されたキーで、alias/test_key が検証用に作ったマスターキーです。 list-alias
最近、個人事業のお仕事で Redash を使ったデータ分析をやっています。データ分析は「10 年戦えるデータ分析入門」を読んで興味を持っていたので、とてもいい機会をいただきました。 今回は RDBMS の他に S3 にあるログデータも分析したいので Athena を使うつもりですが、ちょうど Redash が Athena を正式サポートしたので試してみました。 Amazon Athena + Redash = ♥ ちなみに、2 月 7 日時点で Athena が使えるのは Hosted 版だけです。自分のサーバにインストールする OSS 版は v1.0.0 で対応するようなので、もう少し待ちましょう(OSS 版は v1.0.0-rc.1 までリリースされています)。 If you run Redash on-premise, you can either wait for the v1.
RDS for MySQL から Amazon Aurora への移行を検討していたら、タイミングよく便利な機能がリリースされました。 New - Create an Amazon Aurora Read Replica from an RDS MySQL DB Instance いま稼働している MySQL から Aurora のリードレプリカを作成し、そのリードレプリカを昇格させることで簡単に MySQL から Aurora へ移行できるという機能です。 これまでも MySQL のスナップショットから Aurora クラスタを起動することはできましたが、今回のリードレプリカを使えば移行時のダウンタイムを最小化できます。 リードレプリカの作成と昇格 対象となる MySQL を選択して "Create Aurora Read Replica" をクリックするだけ。拍子抜けするくらい簡単です
1/19 にプレイドさんと共催した Tech Meetup に登壇させていただきました。今回はインフラ監視というテーマだったので、「freee を支えるインフラ監視」というタイトルで発表しました。 プレイドさんが技術寄りの話をするということだったので、自分はあえて技術の話ではなく少人数で運用するために工夫していることを紹介しました。 スライドで紹介していることは、freee のエンジニアが創意工夫をして培ってきた暗黙的なノウハウです。これまで勉強会などで話されることがなかったので、こういう場でご紹介できて良かったです。はてブでもホットエントリーに入るなど、freee のインフラ技術を PR できました。 ちなみに Slack に情報を集約する Tips は、ブログに詳細を書いていますので合わせてご覧ください。 Mackerel でステータスが working 以外のホストを Slack に
去年の年末に個人事業主として開業すると書きましたが、先日 1 月 6 日に税務署に行って開業手続きをしてきました。 開業手続きに関する書類は「開業 freee」を使って作成しましたが、はじめての自分でも簡単に使うことができたのでご紹介します。 個人事業主の開業届けに必要な書類を出力する「開業 freee」 - TechCrunch Japan 個人事業主の開業手続きを簡単にする無料サービス「開業 freee」リリース - INTERNET Watch 必要な書類が無料で一括作成できる 自分は freee でエンジニアとして働いていますが、開業についてはまったくの素人です。実際に開業 freee を使ってみるまでは、開業手続きにどんな書類が必要なのか知りませんでした。 開業 freee を使えばいくつかの質問に答えていくだけで、税務署に提出する書類を作成できます。実際の画面はこんな感じです。
あけましておめでとうございます! 2017 年はじめての投稿です。 ちょうど 1 年前に「AWS の CPU の歴史とそこから見えてくる戦略」という記事を書きました。 EC2 のこれまでの CPU を振り返りつつ、AWS の CPU 戦略について考察した内容になっています。 その中で次のように書きました。 C4 からは AWS 向けに最適化された CPU が採用されました。これにより AWS は CPU を安定的に調達できるようになりました。 AWS は市場からの調達は一切やめて AWS 向けに最適化された CPU しか採用しない方針と取れます。 果たして、この考察が本当に正しかったのか? 2016 年に登場したインスタンスタイプの CPU を調べてみました。 2016 年に登場したインスタンスタイプ 2016 年も数多くのインスタンスタイプが登場しました。 X1: メモリ最適化(エンター
年末のご報告になってしまいましたが、来年 2017 年 1 月 1 日から個人事業主として開業します! いま勤めている freee を辞めるわけではなく、副業としての個人事業主です。もちろん会社の許可も取っています(freee では副業をしている人は珍しくありません)。 個人事業主として何をやるのか、また、なぜ開業するのかについて書きたいと思います。 何をやるのか 肝心の事業内容ですが、開業届には次の 3 つを挙げています。 IT サービス・ソフトウェア開発 コンサルティング インターネット広告 特に 2 番目を主にしたいと考えています。 具体的には AWS の導入支援やアーキテクチャのコンサルティングで、すでにいくつかのスタートアップからお声がけをいただいています。 AWS のスキルを持った人材を雇う余裕がないスタートアップに対して、スポットで利用してもらうことを想定しています。イメ
※ 過去の給与明細はさすがに残っていないので、年金記録の標準報酬月額を元に計算しました。これまでの年金記録は「ねんきんネット」で確認できます。 24 歳のときだけ前年を下回っていますが、それ以外は前年維持かプラスでした。 平均すると 年率 14.3 % の伸び率 です。それに対して平均給与の伸び率は 10 年で -0.34 % とマイナスに転じています。 金融資産に投資をしている方ならわかると思いますが、長期に渡って年率 14 % のリターンを得るのは至難の技 です。自分も少しばかり投資をしていますが、これまで 14 % のリターンが続いたことは一度もありません。 強みを持つということ さらに 20 代の前半と後半で比較してみます。 22 〜 25 歳: 8.25 % 26 〜 30 歳: 19.2 % 実に 2.3 倍の差がありました。なぜここまで差がついたのか考えてみました。 20 代
この記事は Mackerel Advent Calendar 2016 の 25 日目です。 参加しようと思ってカレンダーを見たら最終日しか空いていなくて、取りをつとめることになりました。今年は Mackerel 尽くしの 1 年になりました :-) Mackerel の Twilio 連携機能 先月ついに、Mackerel が Twilio に対応しました! 夜間の手薄になる時間帯は確実に通知したいので、待ちわびていた方も多いのではないでしょうか。 はてな、サーバー監視サービス「Mackerel」が「Twilio」に対応。電話を使った確実性と自由度の高い通知を低コストで提供 この Twilio 連携は管理画面からいくつかの項目を入力するだけで使える反面、必要最低限の機能のためエスカレーションや時間帯の制限などはできません。 Mackerel Meetup #8 Tokyo に登壇したとき
nginx で UUID を生成して X-Request-Id ヘッダを追加する方法を調べてみました。 X-Request-Id ヘッダをレスポンスに含めておけば、Web / App サーバのログをリクエスト毎に串刺し検索できるので、問題が起きたときにスムーズに調査できます。 X-Amzn-Trace-Id は検討したものの… 本題に入る前に。もともとは nginx で UUID を生成するのではなく、ALB が追加する X-Amzn-Trace-Id ヘッダを使おうと思っていました。 X-Amzn-Trace-Id は Field=version-time-id というフォーマットになっています。 X-Amzn-Trace-Id: Self=1-67891234-12456789abcdef012345678;Root=1-67891233-abcdef01234567891234567
続いてテーブルを作ります。 CloudFront のログはタブ区切りの TSV 形式で、フィールドは全部で 24 個あります。 アクセスログ - ログファイル形式 TSV のフィールド名を小文字のアンダースコア区切りにして、テーブルのカラム名にしました。 CREATE EXTERNAL TABLE IF NOT EXISTS blog_manabusakai_com ( date DATE, time STRING, x_edge_location STRING, sc_bytes INT, c_ip STRING, cs_method STRING, cs_host STRING, cs_uri_stem STRING, sc_status INT, cs_referer STRING, cs_user_agent STRING, cs_uri_query STRING, cs_cook
ELB や CloudFront を挟んだら ngx_http_realip_module / mod_remoteip も忘れずに設定する 先日、キャッシュしない CloudFront とそのメリット・デメリットについて書きましたが、ELB や CloudFront を挟んだら nginx や Apache のクライアント IP に関する設定も忘れずにやっておいた方がいいです。 ELB や CloudFront に限らずですが、プロキシやロードバランサを挟むと Web サーバのログにはそれらの IP アドレスが記録されます。正確にはネットワーク上の直前の IP アドレスがクライアント IP として送られてきます。 Client 124.xx.xx.xx | CloudFront 54.xx.xx.xx (Client IP = 124.xx.xx.xx) | ELB 172.xx.xx.
AWS WAF は CloudFront と統合されているので、AWS WAF を単体で使うことはできません。よくある EC2 + ELB といった構成で AWS WAF を導入するには、ELB の前段にキャッシュしない CloudFront を挟むことで実現できます(そのうち ELB にも AWS WAF が導入できるようになると思いますが)。 このキャッシュしない(させない) CloudFront を検証する機会があったので、その手順とメリット・デメリットについて考えてみました。 キャッシュしない CloudFront の設定 Cache Behavior を次のように設定すれば、CloudFront にまったくキャッシュされず、すべてのリクエストがオリジンサーバに届きます。 Allowed HTTP Methods: GET, HEAD, OPTIONS, PUT, POST, PA
数年前までインフラ界隈の OSS は Ruby で開発されることが多かったと思いますが、最近は Golang がメインストリームになりつつあります。有名どころでは HashiCorp や Docker が採用していますし、個人で開発されている Hugo や STNS も Golang で書かれています。 この流れを受けて、必然的に Golang のソースコードを読む機会が増えてきました。ただ、バグを見つけて Pull request を送ろうと思っても、Golang が書けないので Issue を上げることしかできなかったことがあります。 プログラミング言語が壁になって OSS に貢献できないのはエンジニアとして悔しいので、連休中に勉強を兼ねてちょっとしたコマンドを Golang で書いてみました。 freee ではサービスの品質を落とさずに、インフラコストをいかに抑えるかが課題のひとつに
次のページ
このページを最初にブックマークしてみませんか?
『はったりエンジニアの備忘録』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く