ID:66704さん

キャリアビジョン


分散処理を広めたい

前職ではアプリケーションサーバをメインで面倒を見ており、別チームのデータ処理班へはSpark使ったら? など提案はしていたのですがフォローしきれず、大きなデータを捌けない仕組みに育ってしまい、後悔しています。 Webページの紹介コードのコピペではなく、そもそもデータをどう分散するかや、どう処理を繋いでいくか、データの流れなどの考え方の共有ができればいいなと考えています。 あとは、Java / Scala-Spark / Rust あたりの連携や使い分けなど。 こういう知見をチームで共有することで、チーム全体の実力の底上げをするのが趣味のため。

プロジェクト経験

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

2023年/2年以内

出店者支払い管理システム

# 背景 経理が利用する社内向けの、出店者への支払い管理システムの、動いていない状態からアーキテクチャ再設計、実装。 # 取り組んだ課題 - golangを使い、五人チームで技術的なリードを行いました。 - ロードバランサ - BFF - ロードバランサ - appサーバ - ワーカーと不必要に多層化されていた当初のシステムを、開発やリリース作業を平易に行えるようappサーバを一つに集約し単純化 - DevOps環境構築のために自動テストで必要な検証の大部分が行えるよう、ソースの構造をオブジェクト指向、クリーンアーキテクチャ、TDDなどに沿うように、単体で検証可能な状態に移行 - SQSとLambdaを使ってイベントに対するバッチ実行可能なようにアーキテクチャレベルから再設計、バッチ処理、メッセージングなどの基本的な共通フレームワークを作成し、既存の処理を耐障害性を上げた状態へ既存処理を置き換え移行 - 本システムは、ビジネス固有の込み入った条件が既に多数存在し、散在するデータソースから表計算ソフトに手作業でデータを取り込んで顧客管理を行なっている既存の業務内容を、まず若手に聞き取らせて要件定義や設計してもらった後、会計知識を含め、ドメイン駆動開発の手法などを使って、リファインしていく過程を見せつつドメインレベルから変更に強い設計を完了。 # 取り組みの成果 - システム化に目処がつきました。 - 変更に柔軟な状態で、若いメンバーは単独で仕様追加できるところまで成長しました。 # その他 - 他部署のアーキテクチャ相談に乗り、インスタンスキャッシュなどの仕組みでWebアプリ、DBの負荷を大幅に下げたりしています。

2021年/2年以内

在庫管理サービス

#概要 在庫の業務分析サービスの、不具合解消のアーキテクチャ再設計とシームレス移行計画策定/実施。 #担当 データベースをはじめとしたアーキテクチャ再設計、移行計画策定とその説得、実施、ならびにサーバサイド(Rust)の設計と実装。 エンジニアの教育、チームビルディング。 # 使用技術 - Docker,AWS,Rust,SQS,Lambda,StepFunctions,ECS,Athena,ElasticSearch,Aurora(PostgreSQL) # 課題 - 公開直後からシステム障害が多発して客先でデモが動かない状態で、ほとんどのエンジニアが退社してしまっていた。 - 日次のデータ投入バッチとそれに続く集計分析バッチが昼過ぎまでかかり、顧客がサービスを利用したい朝イチに利用できず、クレームが積み上がっていた。 - メイン機能の一つであるCSVファイルをダウンロードしようとすると、サーバが落ちてサービス提供できなくなっていた。 - 売り上げを増やすためにより大きなクライアントを受注してしまったため、長期の待機をお願いしてしまい、信用問題になりかけており、解決までの猶予がほとんどなかった。 # 取り組み - 優先順位を決めて、大量データを前提として全体を再設計、データ移行手順策定から移行実施までを行い、新規機能を追加しながら、シームレスにデータ移行を行い、半年弱で安定稼働まで漕ぎ着けました。 - DBに書き込んだログイン情報が消えるという問題があり、DBの機能の誤用を修正、DB周りを再設計して、移行計画策定からサーバサイド実装ま、3フェーズで移行を行い、まずログインして画面を動かすところまで1ヶ月半で達成。 - 日次バッチの突き抜けを回避するため、Cron+ElasticSearchからSQS-LambdaとAthenaを使った並列データ投入/集計処理に再設計/実装。夜明け前にバッチを完了し、サービスの朝一利用を可能に。分析処理はSpark(Glue)で再設計、実装支援。Snowflakeも評価しましたが、利用タイミングが限られている、利用データがかなり偏っている、料金が高いなどの理由で見送り。 - ダウンロードするCSVファイルがアプリケーションサーバ内で生成されており、複数リクエストが同時に要求された場合、OutOfMemoryでサーバが落ちるので、Lambdaを使った非同期処理とS3から署名付きリンクでダウンロードに移行。同一リクエストには生成済みのファイルをダウンロードする仕組みを実装し、全社売上などの処理を1回実行で済ませることによって、Athena化と合わせて該当処理のAWS利用料を1/10以下に削減。 - 中でもよく使われるデータはキャッシュとしてAuroraに都度充填、あるいは日次バッチでよく使われるデータを事前充填して利用できるようにして、応答速度を上げました。この機能はまた、展示会などでデモを行う時に、AWSへのアクセスなしで、Localの仮想環境に閉じて実行するという要求があり、それを実現するためにも利用しています。 # 工夫した点 - 既存顧客に迷惑をかけないよう、シームレスな移行のための段取りをする。 - 理想型に近づけるための優先順位検討 - メンバーの技術力底上げのためのフォロー。悩み相談など。

2018年/2年以上

AIBotチャット: v1(Scala/消火) -> v2(Golang/設計・プロトタイプ)

#概要 AIボットチャットサービスの、再設計/移行による不具合解消のアーキテクチャ再設計から実装 #担当 契約社員として、 - 不具合解消のため、メッセージング、データベースをはじめとしたアーキテクチャ再設計、移行計画策定とその実装、ならびにサーバサイド(Scala/PlayFramework)の実装 - 新サービス構築に伴うメッセージング周りの再設計、Golangでの初期実装 # 使用技術 - GCP,Kubernetes,Scala(PlayFramework,Cats),PubSub,Firebase # 課題 - 関数型プログラミング(scala/cats)、非同期処理(マルチスレッディング、メッセージキューイング)など、流行りの技術を取り入れていたが、使い方を間違え、またデータストアなどの基本設計を間違えていたため、タイミングによってメッセージが消える、会話の辻褄が合わなくなる、あと数件の新規顧客の追加ができないなどの不具合があり、保守、機能追加が困難になっていたところ、エンジニアが大量離職した。 # 取り組み - 設計実装を失敗していた非同期処理周りを、クライアントサイドは変更しないという制約の下、メッセージタイミング、リトライ、Identifier変更など再設計を行い、移行計画策定、実装などを担当し、メッセージロストや会話破綻を極力減らしました。 - SalesforceのCRM連携等の新規機能の設計、実装。 - 別タイプのAIBotチャット(v2)開発で、v1の反省を踏まえてモブ設計に挑戦。Golang(Echo)で実装中、新型コロナによって契約終了。 - Golang特有というわけでもなく、CleanArchitectureで影響範囲を分離し、チャットアプリなのでメッセージの取り回しを主軸に設計しました。 # 工夫した点 - 既存顧客に迷惑をかけないよう、シームレスな移行のための段取りをする。 - 理想型に近づけるための優先順位検討 - メンバーの技術力底上げのためのフォロー

2016年/2年以内

v1(Scala 火消し) -> v2 (Scala 設計、実装)

#概要 レコメンド提供Webアプリ、レコメンドメール送信アプリの不具合解消のための再設計と実装 #担当 契約社員として - v1のWebアプリがOut Of Memoryでしょっちゅう落ち、レコメンドデータが出力されなくなってクライアントのECサイトが夜中に商品が表示されなくなり怒りの凸電がかかってくる状態で、初期実装者、責任者がいなくなったところ、不具合解消のための再設計と移行計画策定と実装 - 切り口を変えたv2の分散バッチ基盤をアーキテクチャから設計とサーバサイドの設計をほぼアーキテクトとして。加えて実装。 # 使用技術 - AWS、ElasticBeanstalk、Cassandra、SQS、Scala、PlayFramework、Aurora(MySQL) # 課題 - Webレコメンド機能では、アクセスが増えると大量のDBアクセスか、OutOfMemoryでサービスが落ちる。対策として10以上のインスタンスを立ち上げ、順次再起動をかけていた - レコメンドメール機能では、文面作成のために1メールのために複数のDBアクセスをし、String#replaceを使って挿入内容を一つづつ置換していたため、膨大な時間がかかっていた。 # 取り組み - 個人的に実装済みだった、インスタンス(Object)キャッシュと、MessageQueueを利用したキャッシュスヌーピングの仕組みを提供し、DBアクセスを減らし、他にメモリリークを潰すなどして効率化、安定化し、インスタンスの削減、半日に一回の輪番再起動を廃止した。 - レコメンドメール機能でもレコメンドされる条件、内容に偏りがあるので、上記の仕組みを使って(除・キャッシュすヌーピング)DBアクセスを大幅に減らし、処理可能数を10倍以上に増やしました。 - v2開発では、v1ではHadoopを使ったアクセスログ解析のバッチ処理が重くて日次バッチ終了時間が遅れに遅れていた反省を踏まえて、分散ストリーム処理に設計変更を提案主導しました。 - 当初はSparkをセルフホストする予定で実装を進めていましたが、訳あってセルフホスト禁止となり、アクセスログのS3着弾イベントメッセージからSQSを使って分散カスケード処理に設計し直し、日次バッチに必要なデータをぎりぎりまで先に作っておくことで処理時間を大幅に縮めました。 - 同時に、サーバサイドも実装。 - アルファ版がある程度動作したところで、どうも資金ショートしそうになったらしく、契約終了になりました。 # 工夫した点 - 既存顧客に迷惑をかけないよう、シームレスな移行のための段取りをする。 - 理想型に近づけるための優先順位検討 - メンバーの技術力底上げのためのフォロー

2004年/2年以上

Windowsクラサバプロダクト開発

# C#による画像検索パッケージ - オブジェクト指向、テスト駆動開発、ドメイン駆動開発、クリーンアーキテクチャ相当の手法によって、Access(mdb)からMSSQLServer、Oracleのデータストアと、デスクトップ、クラサバ、Webアプリ(SIlverLight)の形態を1インストーラで選択し、インストールできる仕組みを企画設計実装。 - ドメイン駆動開発的手法により、柔軟にクライアントの要望を取り入れ、標準機能化して、パッケージを育てる。

マネージメント能力

15年ほど前、30人規模のWebメインのデザイン会社のシステム部門立ち上げ。
Webデザイン&コーディングだけでは競争を勝ち抜けないため、JavaScriptを使ったWebページと、サーバサイドの設計実装ができるようにする。
当時、銀行や地方公共団体向けのSIで営業以外を、3人程度のチームをまとめて主にWindowsのクラサバシステムやASP.netを使った業務Webアプリの提案設計構築していましたが、UIの重要性に気づき、社長に了承を得て戻ることを前提に、デザインを勉強するためにデザイン会社に転職しました。 デザイン会社では、元の会社に戻る予定であることを伝え、デザインのことを教えてもらう代わりに、責任者としてシステム部門を立ち上げを請け負いました。 すでに存在していたHTMLコーダー部門をシステム部門に成長させるために、まずJavascriptを習得し、実案件をこなすことで実績を積む必要があると考え、営業同行してシステム提案を行い、クライアントと話をすることで信用を得て小さい案件から受託をしはじめました。 定期的なJavascriptの勉強会と、案件の要点での解説会などを行なって、部員個々人のプログラミング能力向上とチームビルドに努めました。 問題、障害については、基本的に起きる前に対応策を講じるようにしていたため、給与面以外は順調に進みました。 システム部門は成長してはいたのですが、この給与の問題は解決できませんでした。

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
あり
Zenn アカウント
未入力です
Speaker Deck アカウント
未入力です
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
あり

今後、身につけなければいけないと思っている技術は何ですか?

- プレゼン

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

- 全体設計に関われる - マネジメントも引き受けた方が流れが良くなることも多い

生成AIの活用状況

日常的な情報収集・業務活用
ChatGPTやGeminiなどのチャットツールを、情報収集、ドキュメント作成、翻訳に日常的に活用

キャラクター

直近で一番やりたいこと
サービスを作りたい
好きなスタイル
好きな規模
自信を持って人より秀でていると言える点
分析力 / 問題解決力 / 経営判断力
スキルのタイプ
得意なフェーズ
会社を選ぶ一番の基準
一緒に働く人
やりたくない分野
アダルト / 仮想通貨
その他の特徴
新しい技術はとりあえず試す / 趣味は仕事
その他のやりたいこと・やりたくないこと
未入力です

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で50代中盤
好きなテキストエディタ
JetBrains
希望勤務地
東京都
希望年収
1000万円
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?