Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

PHPカンファレンス小田原2024/PHP Conference ODAWARA 2024

Shota Ito
April 13, 2024
1.2k

PHPカンファレンス小田原2024/PHP Conference ODAWARA 2024

Shota Ito

April 13, 2024
Tweet

Transcript

  1. © SMS Co., Ltd. 7 01 02 03 04 05

    06 目次 自己紹介とサービス紹介 医療キャリア事業に携わり始めたときのきっかけ ローカル環境の整備 デプロイフローの整備 全体を巻き込んで行動するときに心がけているマインドと振る舞い 今後の課題
  2. © SMS Co., Ltd. 9 自己紹介 • 株式会社エス・エム・エス プロダクト推進本部 技術推進グループ

    • 2023 年4 月入社( ちょうど今月で1 年 ) • SRE( 最近はPlatform Engineering 寄り) • 群馬県からフルリモートでお仕事中 • X: @st_1t • 今日がまさかの10 周年 伊藤 翔太 / いとう しょうた
  3. © SMS Co., Ltd. 11 分野 区分 サービス キャリア 介護キャリア

    医療キャリア 介護事業者 ヘルスケア シニアライフ 海外 *1 .柔道整復師、あん摩マッサージ師、はり師、きゅう師のこと サービス一覧&紹介 介護職向け求人情報 看護師向け 人材紹介 看護師向け 求人情報 介護・医療・福祉の 資格講座情報 PT/OT/ST 向け 人材紹介 ケアマネジャー向け 人材紹介 看護学生向け 就職情報 放射線技師向け 人材紹介 高校生・看護学生 向け奨学金情報 臨床検査技師向け 人材紹介 看護師・看護学生向け コミュニティ 臨床工学技士向け 人材紹介 保育士向け 人材紹介 治療家*1 ・セラピスト向け 人材紹介 介護事業者向け 経営支援 介護事業の 経営者・管理者向け情報 高齢社会の 調査・研究・情報発信 医療従事者向け医薬情報 治療家*1 ・セラピスト向け 求人情報 柔道整復師・あはき師 向け受験参考書 人事・組織ソリューション 管理栄養士・栄養士向け 人材紹介 介護職向け人材紹介 介護で働く人の ためのスクール 介護で悩む人向け コミュニティ 高齢者向け食事宅配 紹介サービス 高齢者向け住宅 紹介サービス 遠隔指導特定保健指導 サービス 管理栄養士・栄養士向け コミュニティ 企業の介護離職 防止ソリューション ICT を活用した 禁煙サポート 認知症患者とその家族 向け認知症情報 認知症予防 ソリューション 認知症予防の 習慣化サポート 遠隔指導重症化予防 サービス 女性の健康経営 サポート 産業保健に 関わる人向け情報 企業向け健康管理 業務サポート 住まいにまつわる 総合情報サイト 葬儀社紹介サービス  ケアマネジャー 向けコミュニティ 医療従事者向け人材紹介 ( マレーシア、フィリピン、アイルランド、UK 、ドイツ等) 看護師向け キャリアサービス 行動療法に特化した 禁煙サポート 自治体向け調査・ 計画策定・予防事業 医療介護業界特化型 ストレスチェック
  4. © SMS Co., Ltd. 13 医療キャリア事業に携わり始めたときのきっかけ • 全社SRE 業務で医療キャリアの構成を見たときに、介護キャリアチームの良いところを展開 できそうなポイントがいくつかあった

    デプロイフローや、コンテナ化、監視設計等 • 入社時は介護キャリア事業のSRE(+ アプリ開発) と、全社SRE チームを兼務で入社していた 月〜水は介護キャリア事業の業務、木金は全社SRE 業務 お、これは大きな改善チャンスでは・・・?
  5. © SMS Co., Ltd. 20 何ができない要因になっていたのか • 単純に時間がない(キャパシティオーバー) 介護キャリア向けの仕事としてアプリ開発に挑戦したり※1 、開発者体験を上げられそうな業務をやってみたり※2

    • 全社SRE チームから医療キャリアチームのSRE へ引っ越し 元々やっていた介護キャリアとも距離が近いこともあり相談してキャリア事業専任SRE へ ※1 :35 歳から挑戦するインフラエンジニアのアプリケーション開発@SMS TECH BLOG ※2 :パスワードマネージャを1Password へ移行、アンチウィルスソフトウェアの変更検討
  6. © SMS Co., Ltd. 22 ローカル環境の整備@意識したこと • docker-compose.yml で定義しているアクセス経路を整理する -

    初期構築時は動くことを優先にしてついホスト側に色んなポートを露出させがち - 色んなところでアクセス経路を持たせてしまうと、 - トラブルシュートが大変になりがち - 将来追加するコンテナのポートがバッティングしてしまうかも - Reverse Proxy を経由させることで、
 各Web サービスに名前でアクセスできるようにする - 例) - OK - https://www.local.example.com - https://mail.local.example.com - NG - http://localhost:3000 - http://localhost:8025
  7. © SMS Co., Ltd. 23 ローカル環境の整備@意識したこと • ドキュメントより仕組み化を徹底する Makefile でラップしてmake

    コマンドで立ち上がるようにする。 - ドキュメントは整備しても更新漏れに気が付きにくい - コマンド化してあると、失敗したりするので気が付きやすい - Makefile のヘルプ Tips - こんな感じで書いておいてあげると、
 ## 以降のコメントをmake コマンドが拾ってくれる % make help: このページを表示 install_commands: 必要なコマンド類をインストール init: 0 から環境を初期構築する start: 全てのコンテナを起動 stop: 全てのコンテナを停止 down: 全てのコンテナを削除する(MySQL のデータは消えません) restart: 全てのコンテナを再起動する sqldef: ローカル環境でスキーマ変更を適用する log: 全てのコンテナのログをtail し続ける glog: MySQL general query log を表示する destroy: 全てのコンテナを削除する(MySQL のデータも消えます) よくある操作手順はこちら: https://xxxx.example.com % help: ## このページを表示 @sed -n -e '/^[^#]*##/ s/^\(.*\):.*##/\1:/p' $(MAKEFILE_LIST) @echo @echo ' よくある操作手順はこちら: https://xxxx.example.com' • 証明書エラーを出さずにちゃんとHTTPS 通信できるようにする Google Chrome で「thisisunsafe 」と入力して回避もできるけどちゃんとやる - mkcert コマンドを利用するとサクッと証明書の発行まで済ませられる
  8. © SMS Co., Ltd. 25 デプロイフローの整備@解決したかった課題 • 意図せず自分以外のコミットもリリースされてしまわないようにしたい 同一サービス内でデプロイタイミングがバッティングすると、他の人の動作確認中のコミットが一緒にリリースされてしまう 可能性があった

     →今本番リリースすると何のPR がリリースされるのかわかるようワンクッション挟むようにした • IDE のSFTP 機能でDevelopment 環境(EC2 )へデプロイする  Development 環境にSFTP で反映していたがサーバーへのアップロード漏れや、コミット漏れが発生していた → 複数名で動作確認するための環境へのデプロイはEdge 環境やGitHub Actions でデプロイを仕組み化 • DB のスキーマ変更を人力でやるのを辞めたい 開発環境も本番環境もDB サーバーにログインしてSQL を実行する運用になっていた →sqldef というツールを利用してGitHub Actions やmake でラップして実行するように整備
  9. © SMS Co., Ltd. 29 デプロイフローの整備@Edge 環境とは? • Pull Request

    をレビュアーが動作確認できるようにするための一時的な環境 - PR を作ったら必ず作成するというよりは、必要な場合に作成する使い方をしています - UI 変更や重めなロジックの変更等 - Label に「edge 環境」を追加するとGitHub Actions がAWS CloudFormation を使いデプロイ - PR にコミットが追加されたら更新され、PR がClose されたら自動で削除される Edge環境が作られたことを通知 実際のEdge環境
  10. © SMS Co., Ltd. 32 デプロイフローの整備@DB Migrate • DB Migrate

    についてはsqldef というツールを利用しています • Laravel のmigration ではなくsqldef を利用しているのは、 - 既存のmigration ファイルが不足していた - 0 ベースからやるなら、実際のDB を元にしたスキーマ定義を抽出して保守出来る方が確実でやりやすい - 例)mysqldef -uroot test --export > schema.sql - dry run ができるのが良かった 引用:https://github.com/sqldef/sqldef
  11. © SMS Co., Ltd. 33 デプロイフローの整備@DB Migrate • Local 環境

    • $ make db_migrate といった形でmigrate する • Staging 環境 • スキーマファイルを修正したPR を作成するとGitHub Actions でDry run が実行されコメントされる • topic ブランチをmain ブランチにmerge するとStaging 環境へスキーマ変更が反映される • Production 環境 • $ make db_migrate_production といった形でmigrate する
  12. © SMS Co., Ltd. 36 デプロイフローの整備@Deploy Pull Request • 本番環境へデプロイするためのPull

    Request - main ブランチ -> deploy ブランチへの方向で自動生成されるPR - main ブランチにcommit が追加されると自動でPR のコメントが追加される
  13. © SMS Co., Ltd. 38 全体を巻き込んで行動するときに心がけているマインドと振る舞い • 既存のメンバーとシステムに対して最大限リスペクトする 今自分がもらっているお給料は今まで開発、保守、サポートしてくれているメンバーやシステムが発生しているものなので絶対に今 すぐこうすべき!みたいな考え方は捨て、よりよくするために一足飛びでやろうとするのではなく、背景を確認しながら一歩づつ確実

    にやっていく。 • 単なる業務の押しつけにならないようにする アプリ開発者がインフラ構成をどんどん変えられるようになると従来のインフラ作業が減っていきます。
  単に業務の押し付けにならないよう、ここを変えられるとお互いどう嬉しいのかをちゃんと語っていくようにしています。 • 積極的にペアワークを誘っていく Terraform の書き方だけでなく、トラブルシュート等もペアワークして周辺知識を伝えていく
  14. © SMS Co., Ltd. 40 今後の課題 • Terraform をもっと色んな人がメンテできるようにしていく -

    PR を作ったらterraform plan 内容をPR のコメントに追記する - main ブランチにmerge したら自動でterraform apply - renovate を追加してバージョンの更新漏れを防いでいきたい - Terraform Cloud を検討中 • ガードレールを整備していきたい - ControlTower を有効にはしているけど、まだポリシーで絞るところまでは踏み込めていない
  15. © SMS Co., Ltd. 41 今日の話を聞いて少しでも興味があればいつでもお声がけください • SRE の採用募集ページ 今日の発表内容は医療キャリア事業向けですが、他の事業でも募集しています。

    • ユニークな制度 - スキルアップ手当( 年1 回15 万円支給) - MacBook Pro M2 Max( メモリ64GB) 貸与 または M3 Max ( メモリ64GB 以上にて機種検討中) - 希望者は GitHub Copilot for Business を利用可能 - Slack で技術書のリンクを連絡すると自宅に送付手配をしてもらえます • ソフトウェアエンジニア - バックエンド (PHP) の採用募集ページ PHP 以外にもRuby を主軸としているチームやJava/Kotlin を使っているチームもあります。