ラーメンとともに振り返る2021年ProgateでのSREのお仕事

こんにちは、ProgateでSREとして日々運用している齊藤です。
本記事は Progate Advent Calendar 15日目の記事になります。

普段からラーメンの話ししかしてませんが、この回も「今年食べたラーメンとそのときに取り組んでいた仕事」という緩い感じでラーメンと弊社のSREの仕事を幾つか紹介させて頂きます。

老郷 本店

f:id:devildogs:20211213204537j:plain

おせちもいいけどラーメンもね、ってことで今年一発目のラーメンは1月初旬に平塚のソウルフードと呼ばれている老郷(ラオシャン)へ。
ここのラーメンの特徴は酸っぱくワカメたっぷりで癖になる味です。
年内再訪しようと考えておりましたが今年は一度しか行けずに終わりそうです。

この年初の時期は、昨年(2020年)に実施した大規模なインフラ刷新の延長で海外ユーザのレイテンシ対策を実施しようとALBの前段にCloudFrontを挟みました。
CloudFrontのEdgeを効率的に使えば改善するであろうと睨んだものの効果は現れず。
分析したところ、CloudFront->ALB間の通信がHTTP2に対応していないのが原因と判明。

このときに本当にEdgeが使われているかを試したスクリプトを紹介します(pupというHTMLパーサーが必要になります) 。
弊社はインドネシアにサービス提供しているので、インドネシアからどのEdgeに繋いでいるのか?を調査しました。

#!/bin/bash -e

SEARCH_DOMAIN=progate.com
COUNTRY_CODE=id

public_dns() {
  curl -sS https://dnspropagation.net/free-public-dns-servers/${COUNTRY_CODE}/ | pup 'td[width="20%"]' | grep -E "^\s*[0-9\.]+\s*$" | \
    xargs -P 4 -IIP dig +short +time=1 @IP progate.com
}

air_terminal_identifier_codes() {
  public_dns | xargs -P 4 -IIP dig -x IP +short +time=1 | sed -e 's/^server-[0-9]*-[0-9]*-[0-9]*-[0-9]*\.\([a-z]*\).*$/\1/'
}

cat <<EOF
Search: $SEARCH_DOMAIN
Contry: $COUNTRY_CODE
------------------------------
EOF
air_terminal_identifier_codes | sort | uniq -c | sort -k1 -n -r

dnspropagation.netで公開されているpublic dnsを検索してCloudFrontのEdge URL(例: server-x-x-x-x.nrt12.r.cloudfront.net)で使用している空港コード(例のnrt12がそれ)を集計しているだけです。
このスクリプトを実行するとなんとインドネシアからはシンガポールのEdgeが一番利用されていることが分かります。

Search: progate.com
Contry: id
------------------------------
 104 sin
  36 cgk
   4 nrt
   4 kul
   4 hkg
   4 bkk

これを見てAWSシンガポールリージョンにリソースを置くのが良いと判断し対応をしました。

ほっこり中華そば もつけ

f:id:devildogs:20211213204758j:plain

花よりラーメンってことで、まだ肌寒い3月下旬に訪れたのは八王子ラーメンで評価が高く気になっていたもつけへ。
以前から気になっていた八王子ラーメン、自宅から八王子へは国道16号を上っていくだけなので近いはずなのにどうも足が向かず漸く食べに行けたこの日は春の陽気で気持ち良い。
味の方は特筆することも無く、普通に美味しく頂きました。

さくら咲くこの時期にSREは何に取り組んでいたかというとページスピード改善の旗振りをしておりました。
海外からのページ読み込み速度改善をSRE(インフラ)として取り組んで欲しいとの要望がありましたが、SREだけではどうにもできずfrontendを巻き込んでどうしたら速度が改善するかのプロジェクトが発動しました。
旗振りだけSREの自分が執り行い、実装は他人任せでLCPの改善に勤しんでおりました。
チームを跨いだプロジェクトは功を奏しターゲットとしていたLPは日に日に改善し、プロジェクト終了時には開始時と比較しページ速度は半分以下の改善ができました。
この良い流れは大分時間が経ってしまってましたが、関係するチームへの啓蒙活動として今も引き続き活動しております。

福々亭

f:id:devildogs:20211213204902j:plain

夏も近づく八十八夜、からは大分後になる夏に訪れたのは支那そばや系列の伊東の福々亭。何度か訪れてはいたものの臨時休業だったりでこの日が初訪問となる。
支那そばやは、戸塚の本店や白根の店やらは好きでたまに行っていたので味に関しては満足出来るであろうとワンタン麺を注文。
ワンタンの量が尋常ではなく完食することに全力投球してしまい味の印象が薄まる。
本家に比べるとコクがあって食べごたえはあり、次回はNo wantanでトライすると心に誓う。

そんな蝉が喧しい時期にSREはChefからAnsibleへのmigrationを進めておりました。
弊社ではAMIのbuildにはChefとPackerを使用しており、このChefのメンテナンスが中々厳しく代替としてAnsibleを採用することになりました。
このAnsibleへのmigrationで今現在はほぼChefが駆逐され健全な状態になっており、且つ今まではChef用のgit repositoryが散らばっていたのを一箇所に集め開発効率も向上しております。
EC2依存ではなくコンテナ化すべきだ!なんていう意見もあるのかもしれませんが、弊社は今後も暫くはEC2とがっぷり四つで取り組む姿勢でございます。

旭川らぅめん青葉 本店

f:id:devildogs:20211213210110j:plain

食欲の秋ってことでラーメンを求めて北の大地へ。
旭川ラーメンは好きで北海道に行く際は時間に都合が付けば立ち寄る。この日は朝の早い時間に旭川を通過する予定でその時間にオープンしている店を調べたら、丁度行ってみたかった青葉が開いていたので初訪問。
舌に衝撃が走る鋭い味で次回も寄ることに決定。午前中の早い時間からオープンしているので旅人には丁度良い店です。

秋から暮れにかけての時期、SREではレガシーな演習用環境をどうmigrationするかを検討しておりました。
弊社の演習用環境はdockerで提供しており、基盤としてはDocker Swarmが使われております。ここの運用が少々難しくなっており今の世の中は代替ソリューションが色々とあるのでどれかに載せ替えようと言うわけです。
次の基盤としてECS+Fargateを先ずは試してみたところ、コンテナが起動するまでの時間が現状と比べると10倍以上かかるため要件を満たせず見送り。
EKS(kubernetes)も検討はしていたのですが、Fargateはdocker imageをキャッシュすることができないのでキャッシュを活かすのであればEC2運用になる。
それならば軽量なHashiCorpのNomadを採用してみようと検証を開始しました。 この数ヶ月調査を進めており感触としてはいけそうとなり、来年から本格的に検証を進めれるように現在は検証環境を構築しながら、並行して調査も継続中。


こんな感じで弊社のSREは日々改善と運用をしており、採用も頑張っております。
ラーメンが好きな方もそうではない方も、もし興味を持って頂けたらカジュアルにお話をさせて頂ければ幸いです。
お待ちしております。

prog-8.com