生涯プログラマーとして活躍したい
繁忙期の負荷に耐えられなくなっていた自社ECシステムを、
3,000件/日の受注に耐えられるよう新たに構築すること
参画パートナーのスタイルにあわせ、ウォーターフォール形式で
プロジェクトを進行しました。
各システムを開発・構築するための、要件定義・設計を主に担い、
受け入れテストを行った後、2016年まで保守運用に携わりました。
スマートフォン流行の情勢を踏まえ、PCのみで可能だったオーダーメイド商材作成を、
スマートフォンからも可能にすること
PCの仕組みを構築したベンダーに技術支援を受けつつ、
要件定義・設計を行いました。
また、フロントエンドを担うパートナーの技術力不足が
プロジェクト途中で発覚し、急遽フロントエンドの開発に
あたりました。
販促の一環として展開する期間限定のECサイトを、フルスクラッチで構築すること
開発の役割をフロントエンド・バックエンドで分担し、
主にバックエンド(Web API)の開発を行いました。
「画像→文字列抽出」のサービスを提供する外部パートナーのシステムと連携した
自社サービスを構築すること
開発の役割をアプリ・バックエンドで分担し、
バックエンドの開発(データ送受信)を行いました。
このプロジェクト詳細は公開されていません
クラウド運用のコストを削減するため、EC2で稼動するバックヤードシステムを
サーバーレス化すること
既存のシステム(Ruby on Rails製のWeb API)を分析し、サーバーレスアーキテクチャ
で再設計・開発を行いました。
サービスの特性上、単日で数万回コールされるAPIを安定稼動させる必要がありましたが、
既存のrailsでは高負荷を処理し切れずシステムダウンが頻発していた点、スケールアウト
させる為のコストを削減したいという運用の要求から、サーバーレスアーキテクチャを
採用しました。
また、設計の過程で既存データの大規模な洗い替え(約800万件)が避けられないことが
判明したため、急遽AWS Step Functionsを利用したバッチ処理を開発し、洗い替えを行いました。
開発以降、10年弱の運用で機能追加やメンテナンスが困難になっていた
社内業務支援システム(Webアプリケーション)をリプレースし、
社内メンバーの要望実現や保守容易性を担保すること
運用部署起案ではなく、システム部門発案の案件であったため、
企画・折衝・推進から始まり、すべての工程を担当しました。
既存のシステムがSSRのWebアプリケーションで、当時既に
パフォーマンスの問題が顕在化していたため、Web API + SPAの
アーキテクチャで構築しました。
また、JavaScriptを駆使していたがゆえのランタイムエラーも課題であったため、
堅牢性とパフォーマンスを重視してフロントエンドにはElmを採用しました。
リプレース対象システムの機能は100を超えていたため、リプレースのスコープを区切り、
運用部署が最も多忙となる時期までに、基本機能の開発を終えて運用に乗せることができました。
前任者から引き継いだ自社の業務基幹システムを、
現在の運用実態に合わせて再設計・リファクタリングし、
安定性と保守容易性を担保し、運用部門の業務効率化に寄与すること
引き継ぎ後の運用保守を行う過程で、システムの老朽化による業務への影響が
看過できないレベルになっていると判断し、ブラッシュアップの企画から始めました。
運用業務というインターフェースへの影響は最低限にとどめるため、
システム部門内の関連メンバーを巻きこみながら再設計とブラッシュアップの
リファクタリングを進めている最中です。
2023年年末をゴールとしたロードマップベースで、8つ存在するシステムのうち、
2つのシステムを2022年前半に再設計完了させる予定です。
システムの老朽化というと、「作り直した方が早い」というケースはままありますが、
現行システムの設計思想が一貫していた点と、静的型付けであるC#の利点を活かし、
「既存の設計思想を残しつつ、コードを全体的に入れ替えていく」アプローチとしました。
引き継ぎ前には存在しなかったユニットテストを数年がかりで充実させてきたので、
大きな変更に対して躊躇なく取り組める下地ができており、新人メンバーの教育の場にも
なっています。
また、.NETのオープンソース戦略も取り入れ、インフラをWindows Serverから
Linux ServerやAWSのServerlessに切り替えていくPoCも進めています。