[WEBエンジニア]転職して3ヶ月の振返り (その2
[WEBエンジニア]転職して3ヶ月の振返り (その1 に続く記事です。
その1は、退職エントリーっぽくなってしまったので、
この記事は、転職して3ヶ月何やってきたかを振り返りたいと思います。
主に自分メモなので、読み手をあまり意識しておりませんのであしからず。。
会社について
・自社サービス系(メディア)
・社員数10名 (うち、エンジニア:2名、デザイナー2名)
・複数サービス存在
・インフラエンジニア不在
・ AWS使ってた
・php x Laravelがメイン
状況
・毎年1月、平時の10倍のトラフィックが来る日がある
前年はサービス落ちてるので、今年は落とさないが3ヶ月の目標
・インフラエンジニア不在で冗長化なし
・アプリケーションは、もともとDIを意識した構造で、
とっつきやすかった(闇が無いとは言ってない)
・アプリケーションでExceptionがあがると、Slackに通知される仕組みが
あり、不具合はちゃんと直す文化があった
総評
・前職はマネージメントメインで自分で手を動かす
機会がなかったので発散できた!
・github への コミット量もダントツNo1\(^o^)/
・トラフィック祭り何の問題もなく乗り越えた!
(もっとトラフィック来てほしかったぐらい)
・toC向けのサービス開発もできた。使ってもらえるのはホント嬉しい
・JSと少し仲良くなれた(次は、 Vue.js or React での開発したい)
・色々変えたけど、自由にやらせてもらえたのと、
抵抗なく受けれてくれた、開発チームのみなさんのおかげ
やったこと
# インフラ可視化
・NewRelic導入
- 定量的な監視が不十分だったので、SaaS導入した
- 無料枠の範囲で考えていたが、APMが想像以上に良かったので課金
・AWS RDS Performance Insight 導入
- RDSのボトルネックが可視化される
- MySQLのバージョン低くく対応してなかったので、合わせてvUP
# インフラ冗長化
・セッションストレージの変更
- File だったので DynamoDBに移行
- パフォーマンス的にネガティブ要因があるので、
今後、Redis or Memcached に移行予定
- 小規模サービスは、DynamoDBでも十分ということはわかった
・アプリケーション改善
- 一時的にローカルストレージを使う処理があり、後続のバッチ処理に
ファイルを渡せないため、S3にアップロードするように変更
・ Terraform導入
- 使うの初めてなので、部分的に使用。VPCの定義やEC2起動など
- まだドキドキしながら触っている
・ Ansible導入
- TerraformとAnsibleを使って、移行先構築
- コンテナに一気に行きたかったけど学習コストと影響範囲を考え、
EC2での冗長化。
・冗長化の副次効果
- AmazonLinux1 から CentOS8 に
- 移行した翌日に、CentOS8のサポート切り上げ発表。。
- 次はコンテナ行く!
- php7.2 => 7.3 ( 7.4はちょっと影響範囲広すぎたので段階踏む。)
- VPCのネットワークの整理整頓(private/public の使い分け)
- ssh ログイン経路の一本化(bastion経由)
・アプリケーションパフォーマンス改善
- 1月のトラフィック祭りに向けて
- N+1の改善、
- memcached による キャッシュ利用
- Laravelのdebugbar と NewRelic, Performance Insight 見ながら効果の高そうなものをピックアップ
- サーバサイドは、三分の一程度の処理時間に!
# デプロイ&開発環境改善と開発ワークフロー
・git pull でのデプロイから、毎回buildするように変更
- Slackでデプロイできるようになっていたのでバックエンドを差し替え
- deployer 使った
- 余裕ある時、GithubActionsと codeDeoloy あたりに変更したい
・webpack のbuildファイルを git除外
- 毎回大量Conflict出ていて辛かった。デプロイ時にbuildするように変更
・ デプロイの民主化
- ボスが1人で全部コードレビューしてリリースまでしていた
- 1人以上のレビューでマージOKに
- 今ではデザイナーもデプロイしてる
- 今後は、マージされたら自動デプロイにかえたい
・Docker開発環境の整備
- 以来は、Macに直接 apache,php,mysql をインストール
- 手順書ベースだった環境構築を Docker化して数コマンドで 環境構築できるように
# サービス開発
・機能開発。既存サービスに新たな機能(独立性高い)
- 実質3weekぐらい
- デザイナーと2人三脚で概ね予定通りリリースできた!
- 残念ながらJquery使った(学習コストと既存の兼ね合い)
# その他
・redash 導入
- 継続的なKPIの追っかけの為、導入
・ 社内Wifi改善
- 頻度にWifiが切れるのでCisco Meraki導入
次の3ヶ月
トラフィック祭りの為に、インフラに比重をおいてきたが、次の3ヶ月は、サービス開発に主軸を移していく所存。
開発リソースが相当限られているのでメリットのある開発をしていきたい。
会社の決算が2月末なので、来期に良い開発ができるよう提案していく。
この記事が気に入ったらサポートをしてみませんか?