思考と思想

業務経歴

振り返り

2014年

システム保守会社の創業メンバーとして参画

最初の1年半は社長と2人で、軌道に乗るまで5年間インフラエンジニアとして従事、ネットワークやサーバミドルウェアのパラメータだけでなくプログラミングができてシステム全体の保守ができること。更にセキュリティを合わせ。お客様のクラウド、WEBサービスの保守に参画し、複数案件に対してお客様と対面やChatツールを駆使し、ときには会食など密に折衝し直接やりとりしながら、システム保守を行なってきました。

社内の仕組みづくり。会社のホームページ、SEO対策から、SNSマーケティングによる仕事の獲得。自身の学んだ技術を商品化し外部に売り込み、お客様に満足して頂くことで継続保守を行える経験ができました。

零細企業だったこともあり、様々な案件に対して1人称で参画できました。会社を安定軌道する為に様々な取り組みを積極的に全力で行なってきましたが、会社の体制も整い安定期に入ったことで開発を主として行いたいという気持ちが強くなり転職に至りました。

 

2019年9月

アプリ会社にテクニカルエンジニアとして転職。

国内開発事業部という受託部門に配属。

【イベント施設向け会員アプリ開発にてバックエンドを担当】

【チーム構成】

デザイナー2名、バックエンド3名、iOS, Androidエンジニア3名(SE兼任)、PM1名、ディレクター2名、統括1名

【業務内容】

API設計と実装。MySQL WorkBenchを利用したER図作成を行いました。

【言語/インフラ/ツールなど】

AWS EC2, Amazon Linux2, RDS, CloudFront, ALB, S3による基本構成。GitLab CI/CD, PHP7, Laravel, MySQL, phpMyAdmin, MySQL WorkBenchによるDB設計とAPI実装。Swagger OpenAPI, RedocによるAPIドキュメント, JWTを利用したアクセス、リフレッシュトークンによるログイン。

 

【発揮したバリュー】

API設計、DB設計を行い、0からモバイルアプリに必要なAPI開発を行う経験ができました。JWTによるログインの実装は良い経験でした。度重なる仕様変更によるやり直しにも粘り強く対応できました。

XDであるデザインからアプリエンジニアと協議しながらAPIやDB設計を行えました。

 

【IoT関連サービス技術検証の代行】

【チーム構成】

バックエンド2名、SE2名、PM1名、ディレクター2名

【業務内容】

クライアント企業様のRFID関連サービスのAWS IoT関連の技術研究案件

【言語/インフラ/ツールなど】

AWS EC2 -> IoT Core, -> SQS -> EC2 -> DynamoDB, Ubuntu, RDS

【発揮したバリュー】

AWSに知見があるということで参画しました。2日だけの参画でしたが短期で目的のアウトプットを出せてよかったです。

【社内IT部門 技術戦略本部に兼任】

この頃社内IT管理部署にも所属し、社内システムの改修やサーバの保守、ネットワーク。社内向け勉強会の開催などを主催。

 

【社内向け工数管理システムにてバックエンドを担当】

 

【チーム構成】

デザイナー1名、バックエンド・フロントエンド3名、PM2名

【業務内容】

WEBアプリである既存システムの改修。バックエンドとフロントを担当、システムの管理画面とフロント両方を担当。改善要望に応える為に積極的に舵をとって取り組みました。

改修のDB設計は元開発者が行いましたが、途中から設計を引き継ぎ対応しました。

【言語/インフラ/ツールなど】

AWS EC2, Amazon Linux2, Route53, GitLab CI/CD, PHP7, Laravel, MySQL, jQuery, phpMyAdmin

【発揮したバリュー】

バックエンドとフロントの古き良きWEBアプリ開発の改修案件。社内向けの簡易な仕様書とデザインから仕様を読み取り、実装を行う経験をすることができました。リーダーという肩書きではありませんでしたが、積極的にチームをひっぱりスケジュール通りに納品するよう励ましながら進めました。ただ納品1ヶ月前に自社サービス部門へ部署移動となりました。

 

2020年7月

自社サービス開発部署に配属、兼任として全社的にインフラを統括するインフラセクションにも配属。

【自社サービスのイベント支援WEBサービス改修 ver1.10にてバックエンドを担当】

 

【チーム構成】

デザイナー1名、バックエンド3名、フロントエンド3名、アプリエンジニア1名、リーダー1名、PM1名、ブリッジエンジニア1名、グロースエンジニアリーダー1名、営業・ディレクター10名、事業部長1名

 

【業務内容】

自社の主力商品のバックエンド開発に参画。
Firebaseに連携する為のモジュールの開発を主に行うことで、既存サービスや設計を学ぶことができました。数十のモジュールで構成されており、ポリモーフィズムといったオブジェクト思考やデザインパターンが多用されており、品質の高いサービス。会社の主力サービスに携われることとても光栄に感じています。

また動画投稿を行えるように既存モジュールや関連APIに関する改修をフロントと協議しながら設計し、実装しました。

【言語/インフラ/ツールなど】

AWS EC2, ALB, CloudFront, S3, ElastiCache(Redis), RDSによるAutoScaling基本構成。 CloudWatch Logs, CloudWatch Agentによるログ集約。 AWS WAF, WAF Charm CloudFrontによるWAFとキャッシュ。 Lambda, SNS, CloudWatch Logs Slackによる閾値通知設計と実装。Laravel Job, SQS, SESによるメール送信。APIによるマイクロサービス。Lambda, Kinesis, S3によるログのエクスポート。Route53, ACMによる証明書更新とルーティング。GitLab CI/CDによるチーム開発。PHP7, Laravel, MySQL, Swagger, RedocによるバックエンドAPI開発。MySQL WorkBenchによるDB管理。Firebase  Hosting, RealtimeDB, Cloud Functions, AWS Lambda, API Gateway, Python, node.jsによるサーバレスサイト。Cloud Trailによる監査。npm Forever, Vue.js, Nuxt.js, Vue Cliによるフロントコーディングの読解。 Vagrant, Dockerによる開発環境。 Nginx, PHP-FPM, Linux Kernelによるパラメータチューニング。Ubuntu, JMeterとデバッグ、各ログによる障害解析。CloudWatchによるモニタリングによるパフォーマンスとセキュリティ分析とセキュリティ対応策定。 Confluence, Slack, Backlog, Wrike, MS Meetsによるアジャイル開発。

【本番のみ】

 

【発揮したバリュー】

アジャイル開発の中で新規モジュール開発、既存モジュール仕様変更による関連APIの改修を行いました。初期メンバーの設計、バージョンアップにより高収益をあげる品質の高い主力製品に開発者として参加できたこと光栄でした。仕様変更による本番データへのデータマイグレーションではローカルでデバッグを入念に行い、devサーバ、ステージング、本番へと対応できました。

全案件で取り扱っていたAWS SESの実装のサンプルコードや注意点など共有しました。朝にも及ぶ粘り強いインシデントへの対応や改善を評価して頂き前職のインフラエンジニアの経験が生きてSRE的な動きが増えてきました。エンジニア役員2人に頼られ、社長による「頼られる人間になってください」という言葉への大幅なコミットができました。

CloudWatch Agentによるログ集約
オートスケール 構成で散らばっていたEC2のログをCloudWatch Logsにてログ集約を実現

アラート通知の構築
CloudWatch Alarm -> SNS -> Lambda -> Slackによる通知機能を実装。
アラート通知の閾値を設計して実装しました。

ドキュメントの整備
開発者向けのドキュメントが不十分であった。参画して理解に苦労した部分について、率先し企業内WikiであるConfluenceにドキュメントの整備をはじめた。自分が実装したものについての手順や、インフラ運用についてもドキュメントを記し、チーム内にドキュメントを整備する流れが強まった。

イベント時の大量アクセス時の対応

  • AutoScalingのスケジュール化を提言。休みの日に出勤する必要がなくなりました。

 

国内最大級のイベントにてスパイクによる大規模障害が発生
ElastiCacheのスペック不足であることをデバッグログとJMeterによりキャッシュ箇所で処理が詰まっていることを特定。 CloudWatchのメトリクスよりSWAP発生を確認することで更に仮説を強めた。そしてJMeterによる障害再現により、全体スペックの不足から障害発生と特定。cache.r4.xlargeからcache.r4.2xlargeへの変更により、スペックとネットワーク帯域の高いインスタンスに変更することでサービス継続することが可能になった。

RDSの障害
SWAPが発生していた為スペックをあげることにより対応

メールが不正送信するインシデントの発生
バウンスレート、苦情率の急上昇を発生開始日にモニタリングから上長に報告し大事になることを未然に不正だ。深夜であるがCTOと共に対応の策定を行いました。SESのNotificationsによりスパムメールの踏み台にされていることが判明、Cloud Trailにより使い回していたIAMユーザの特定に繋がった。対応としてIAMのアクセスキーを交換し、セキュリティ体制を整えることを行いました。CloudWatch+SNSによるSlackへの閾値設計を提案し実装。

運用ノウハウの積極的共有

RDSで小さいインスタンスを利用している機能があり、その負荷分散にマスター・リード構成にしたいという案が出た際の提言

Slackでの提言

WAF Charmの試験導入後のモニタリング

ステージングに試験的に設置しているWAF Charmの攻撃検知率が低いので、
こういう仕様なのか、設定が甘いのかサポートに確認。

アクセスログからほとんどの攻撃がWAF Charmを貫通してアプリケーションサーバに届いていることを確認。

 

プログラミングによるモジュール追加・改修だけなく。パフォーマンスチューニング、インジェクションの分析、セキュリティ設計などSRE的な役割も多くなってきました。

7月に異動してきたばかりですが、積極的な動きからレベルの高いチームの方達にもメンバーの一員として認められてきたように感じています。

サーバレスによるサービスステータスページ作成

サーバレス構成でEC2, RDS, ELBのステータスを取得し、稼働状況を表示するページの作成。

JavaScript, PythonによるAWS Lambda, CloudFunctionsの作成に対して問題なく対処できる。

 

2020年10月13日〜

 

【自社サービスのイベント支援WEBサービス改修 ver1.11にてバックエンドを担当】

 

【チーム構成】

デザイナー1名、バックエンド3名、フロントエンド3名、アプリエンジニア1名、リーダー1名、PM1名、ブリッジエンジニア1名、グロースエンジニアリーダー1名、営業・ディレクター10名、事業部長1名

 

既存機能の設計・実装

  • ダッシュボードAPIの実装

 

会員向けの交流機能ダッシュボード設計・実装

 

AWS SES メール送信設計での間違った実装の指摘

  • Bounce以外にCompalintも処理をしないといけないが。未実装な為その間違いを指摘して直して貰うように提言

 

インフラセクション

  • バラバラで管理されていない証明書管理を提言。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)