経営戦略とソフトウェア品質のバランスを保ち、事業をスケールアップさせるエンジニアとなる
ソフトウェアを扱う事業において、エンジニアに求められる素養としては以下の2点が重要と考えています。
事業戦略からみて、機能実装の開発コストと価値提供の天秤を高い精度で見極められる事と、
継続的な仕様変更に耐えうるソフトウェア品質の維持管理能力です。
現在、ビジネス観点で物事を把握し、事業の意思決定者と高頻度でコミュニケーションを行っておらず、1点目にあげた素養のレベル感はまだ高いとは言えないため課題として取り組んでいる状態です。
一方、エンジニアとしては、実装経験はもちろん、ソフトウェア品質向上のためのアーキテクチャ改善やテスト戦略としてDIや抽象化等の手法によるUTの充実化の実践や、
マイクロサービス間のIO負荷軽減、DBの移行やスキーマ設計など幅広い経験を積んでおり、これからも継続してブラッシュアップを行って行きたいと考えています。
株式会社D2CとNTTドコモの約7345万人の顧客情報を活用した広告配信サービスです。
弊社の主な開発・運用領域は、代理店の入稿システム、ユーザー属性蓄積のセグメントサーバー、計測サーバー、広告配信サーバーです。
使用技術は、React, TypeScript / Scala, PlayFramework です。
アーキテクチャとして、フロントはSPAで内部のデータフローはFluxを、バックエンドとはRESTでやりとりし、PlayFrameworkを採用しています。
私はフロントのユニットテストを充実させ、ドメインロジックに関わるモデル周りのカバレッジを90%以上に押し上げました。
また、位置情報に基づいた広告配信の開発時に、Google Maps Platform を用いた位置情報セグメントの登録フォームを独自で構築し、先方からの修正要求なく実装されました。(今まで1, 2回の修正は当たり前でした。)
1年間はフロントエンドの開発に従事し、2年目以降はバックエンドの開発が主でした。
使用技術は、Scala, PlayFramework です。
アーキテクチャとして、DDDの部分的な適用(Repositoryなど)と、クリーンアーキテクチャを採用しています。
私は配信サーバーが配信時に利用するクリエイティブのジャンルに関わる設定値が、起動時にしか読み込まれないために変更の都度、サーバーを再起動しなければいけない問題に対して、RDBから定期的にキャッシュする機構に切り替える改修をしました。これにより年85万分の工数費用が削減されました。
また、オークション時に単価が高いクリエイティブが勝ち続けることによるCTR低下を防ぐための機能の改修と、それによるパフォーマンス劣化がないかのテストを行いました。結果的に大きな劣化がなかったため、導入することに。
プロジェクト毎に暗黙のルールや、ソースコードレビューの指摘に開発経験の浅い方に共通点があることなどに気付き、チームのボトムアップを図るためにオンボーディング資料を用意し、コーディングのポリシーや、レビュワーに優しいガイドラインの策定を行った。
単体テストを行う際に、テスティングのノウハウに個人差があり、バグ発見の精度に違いが見られたので、テストツールの統一と、ノウハウが蓄積されるようチームのポリシーを設定した。
開発環境にAWSを採用していたため、インフラ費用を見える化するために前日との差分と毎週金曜日の終わりにその月の費用をサマリでSlackへ出力するボットを開発した。結果的に開発者が自主的にリソースを停止したり不要ならすぐ削除するようになり、節約意識を高めることに成功した。
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません