ビジネスと技術の融合による常識への挑戦
近年技術の変化は激しく様々なサービスが生まれてきています。
ですが、技術だけでも、ビジネスだけでも世界に生き残れないと感じる日々です。
自分が関わったサービスが技術とサービスを融合させて常識を変えてしまうことに
挑戦できるエンジニアになっていたいです。
らくらく健助は保険者向けの分析システムとなっており、事前に健保からいただいたレセプトデータを様々な条件で分析、可視化するシステムになります。
このチームではエンジニアリーダーとしての立ち位置で技術負債の解消を主業務に携わっています。
週末にデータの洗い替え処理を行っているのですが、データ量の増加とともに処理が36時間もかかるようになっていた。
原因
対策
結果
現在多くの点で技術負債を多く抱えており、1つ1つ解消しようにも解消作業時に別の問題が発生することが当たり前になっている。
実装内容もあまりコントロールされてこなかったためから統一性がなく非常に読みにくくなっている。
既存のアプリからGo言語へのプログラム言語移行を提案し採用されました。
Go言語を選択した理由は、
今の問題点として大きいinsert処理を1つのSQLで済ませており、分割実行するなどで改善すること計画
DBにVerticaを採用しているためDB周りでは自作する必要性があるケースがおおく、接続周りではロード処理での実績が評価された。
SQL頼みの実装が多いが、BE側での処理を取り入れようとしたときにデータ量が多いケースが考えられメモリ効率がいいGo言語を採用することで処理できる範囲を増やそうとした。
現在
アーキテクトにはクリーンアーキテクトを採用
開発手法には、ドメイン駆動開発に近い状態
開発着手していてまだ大きい成果は出せていないが、処理が重くないログイン後からメイン画面での処理が半減させることに成功し、
Go言語へのリファクタリングのみでなく既存の仕様整理も行いながらパフォーマンスの改選を進めている。
現在の部署ではエンジニアの平均在籍率が2年を下回る状態となっており、開発がチームより個人で行っている状態だった。
そこで以下の取り組みを導入にチームで開発できる体制づくりに努めた。
ラフールサーベイは企業が実施しなければいけないストレスチェックをより企業のメンタルケアに焦点をあてたサービスです。
私は、エンジニアとして参画し、主に外部サービスとの連携処理に携わっていました。
Fitbit連携を行っていたが、当初の実装ではエラーを頻発していおり、運用面でカバーしていた。
連携実態を再確認し、問題点を指摘後、改善を行いました。
今では、エラーが発生することなく、運用が2日かかっていた作業が2時間に短縮されました。
外部ポイント付与サービスの連携のための要件定義から設計、開発、テストを担当しました。
設計仕様はマイクロサービス的な位置づけで推進しつつも、ラフールサーベイのメイン処理のとの連携があるため
実装面はラフールサーベイと同じ言語であるRubyを採用し連携面をスムーズになるようにしました。
実装はTDD駆動開発を採用して、Rspecでのカバレッジは75%を維持しました。
ラフールサーベイにはスマホアプリがあり、Push通知を行いたいが、通知文面などは利用企業側で自由にカスタマイズできるようにしてほしいとの要望から本プロジェクトが始動しました。
アプリチームからFireBaseを使った通知方法にしたいとの打診があり、実装方式を検討
当時はFireBaseのSDKにRubyがなかったため実装に自信があるPythonを選択
開発はTDD駆動開発で行い、テストコードも実装。カバレッジは100%を維持しました。
アプリチームの連携しながら設計を行い、当初のスケジュール通りのリリースに成功しました。
ラフールサーベイでは、月末に今までの結果から集計処理を実施ていた。
実装当初は1時間で終了してたが、問題が発覚したときには5時間以上かかるようになっていた。
原因
対策
結果
変更した結果毎月3時間程度で処理が終了するように修正した。
実装後半年が経過しても3時間程度で処理が終了している。
データ量によっては、画面表示に時間がかかり画面上ではエラーが発生していた。
原因
対策
結果
15分以上要していた画面表示を数秒レベルまで短縮に成功し、大手企業の契約解除を免れた
このプロジェクト詳細は公開されていません
PythonのWebアプリ開発 スマートフォンアプリケーションの技術
仕事のオンオフがしっかりしていて、みんながいいサービス構築のために意見を出し合える環境