経歴
株式会社サイバーエージェント
202010-
abemaTV サーバーサイドエンジニア
株式会社オムニス
201903-202009
ファッション自動採寸アプリケーション
201903-
バックエンド
- レイヤードアーキテクチャ+ DIPを用いたGoバックエンドサーバーの開発 拡張しやすいようなアプリケーションにするために、レイヤーの責務を重視してアプリケーションサーバーを開発。github上でのPR、レビューをベースとした開発で、開発チームの中でバックエンドサービスのコードオーナーを担当。
- Goのテスト テストによる保守性の向上のために、各レイヤーの処理をモックして単体テストを実施。codecovを使ったカバレッジ測定も行う。
- Goの並行処理 大量のファイルを扱うケースなど必要な場所では、プロファイリングによりボトルネックを特定し、処理時間を短縮するためにgoroutineを用いた並行処理で対応した。実際に所要時間は1/10~20になった。
インフラ
- k8s(kustomize)の構築・スケール kustomizeを用いたk8s manifest fileの管理、適用を行った。運用フェーズには想定外のアクセス数によりパンクしてしまったため、podの水平スケールを担当し解決した。
- envoyをサイドカーとして構築 サーキットブレーカーなどを含むプロキシとしての役割を期待して、静的ファイルによるenvoyを各podのアプリケーションのサイドカーとして配置。
- terraformによるIaC pull requestベースでインフラを管理したかったため、google cloud storageをbackendとしてterraform環境を構築。これによって人為的ミスが減り、誰がいつインフラに変更を入れたかが把握しやすくなった。
- circleci, github actionsによるCI 一部circleci, 並列jobなどの問題もあり徐々にgithub actionsへの移行を行なっている。CIではbuild, test, lintを行い開発でのミスを減らしている。
- Cloud BuildによるCD 人為的なミスを減らすために、デプロイを自動化しており、具体的にはk8sへのapplyやDB schemaのマイグレーションをCloud Buildで行なっている。
- 宣言ファイルの人的ミスが頻発していたため、k8sの宣言yamlのlinterをGoで自作した。
- mysqlパフォーマンス GoogleCloudSQL上のmysqlのindexや正規化などのチューニングを行なっている。
ビジネス
- 利用シーンを考えたコーディング クライアントからみてバックグラウンド(非同期)で動く部分では、DBのindex tree更新に時間がかかることを許容するなど、利用者目線での開発。
- インフラコストを概算 GCP上の各サービスの利用状況・金額を概算しマシンタイプなどの改善提案を行なった。
- 障害対応フローの整備 土日などのトラブルに対応できるようなフローを整備。
全体
バックエンドからインフラの領域を中心に、リソースの足りていない部分を開発した。 運用していく中で、監視結果やログなどを見ながら改善点を発見し修正・開発をしている。
使用技術
- Go
- Firebase
- Terraform
- Kubernetes
- GCP
- Docker
- GithubActions
ファッションカスタマイズECサイトのリニューアル
202004-202009
バックエンド
- 認証基盤の開発 Goとfirebaseを使った認証基盤の開発を行った。Emailに加え、フェデレーション認証の実装など、初めての試みもあったが、ドキュメントを頼りに設計・開発を行なった。 ロールベース認可の仕組みやjwtの検証部分の開発などセンシティブな部分を特に念入り検証していった。
インフラ
- AWS AWSでインフラを構築した経験がなかったため、経験者の方に随時確認しつつfargate, auroraを中心としたマネージドサービスを利用した。
その他
- 開発リード 開発チームのリードを任されることになり、分からないことも多々あったが、もし問題があったら自分が責任を持ってやり切るという気持ちで設計・開発を行なった。 分からないことも多々あったが、タスクを個人が実行可能な単位に細分化していくということで、チームに負荷をかけないようにする方法を身につけた。 PMと一心同体でプロジェクトを進めていくという経験は自分のなかでとてもプラスになっていると感じる。
使用技術
- Go
- Firebase
- Aurora
- Fargate
株式会社ZERO TO ONE
201903-201907(業務委託)
自動車パーツECサイト保守運用
バックエンド
- Java, Spring Bootを用いた開発 Dipendency InjectionなどSpring Bootの開発手法に則ったアプリケーションの開発。
- JUnitによるテスト 修正・変更を行いやすくするために、各レイヤーをモックして、JUnit4を用いた単体テストを実施。 ほぼテストが書かれていない状態のコードにテストを導入する役割を担った。 reflectを用いてprivate関数のテストなども行なった。
- メール送信 画像を入れたユーザーへのメールの送信や問い合わせメールへの返信部分などを担当した。 特に画像に関しては初めはbase64でrequestを送っていたが、frameworkの1リクエスト単位容量を超えてしまうなど様々なトラブルを経て、急遽mutipart/form-dataに変更するなど、苦労する店も多かった。
フロントエンド
- jQuery, HTML5, CSS3を用いたコーディング それなりのユーザー数がいて、直接触れてもらう部分のコーディングだったので、齟齬がないようにデザイナーの方と密にコミュニケーションをとって開発を行った。
使用技術
- Java
- Spring Boot
- Apache Solr
- PostgreSQL
- jQuery
- Solr
シアトルコンサルティング株式会社
201804-201903
携帯電話番号管理サービス
バックエンド
- Java, Spring Bootを用いた開発 Dipendency InjectionなどSpring Bootの開発手法に則ったアプリケーションの開発。 テスタビリティを考えたレイヤー分けなどを実施。
- JUnitによるテスト 修正・変更を行いやすくするために、各レイヤーをモックして、JUnit4を用いた単体テストを実施。
フロントエンド
- マークアップ、jQueryによるフロントエンド HTML, CSSに加えてjQueryを用いた画面のコーディングを行なった。
- angularによるフロントエンド 上述のフロントエンドに加えて、angularへの移行期でもあったためangularでのコーディングも行なった。
バックエンド
- Postgressのチューニング レイテンシの値が基準を下回っていたので、postgressのindexや正規化などのチューニングを行なった。
- jenkinsによるデプロイ アプリケーションのデプロイを自動化するためにjenkinsを用いた。
使用技術
- Java
- Spring Boot
- PostgreSQL
- AngularJS