ID:66704さん

2024年11月回 指名


まだ何もありません

あなたを気にしている企業

3年後の目標や野望


分散処理を広めたい

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

年収評価シート

2023年/2年以内

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

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

2021年/2年以内

在庫管理サービス: Fullkaiten v3

#概要 在庫の業務分析サービスの、再設計/移行による不具合解消のアーキテクト役 #担当 契約社員として、データベースをはじめとしたアーキテクチャ再設計、移行計画策定とその説得、ならびにサーバサイド(Rust)の実装。 # 使用技術 - Docker,AWS,Rust,SQS,Lambda,StepFunctions,ECS,Athena,ElasticSearch,Aurora(PostgreSQL) # 課題 - 公開直後からシステム障害が多発して客先でデモが動かない状態で、経営陣とエンジニアの間で諍いが起こり、ほとんどのエンジニアが退社してしまっていた。 - データベースの機能の利用の仕方を間違えていたり、選定したデータストアが処理にマッチしていない、そのため日次バッチが半日以上終わらない、サービス全体のデータフロー設計が間違えている。 - メイン機能の一つであるCSVファイルダウンロード機能ではアプリケーションサーバ内で生成行われており、複数リクエストが同時に要求された場合、サーバが落ちる。 - 日次バッチがPython on StepFunctionsで、主に共有のRedshiftを利用して実行されていたため、データ投入に時間がかかり、複数顧客の同時実行が困難で、顧客が利用したいタイミングで使えない。 - など数え上げられないほどの課題が山積していました。 # 取り組み - 優先順位を決めて、全体を再設計、データ移行手順策定から移行実施までを行い、半年弱で安定稼働まで達成し、その後大量データを前提とした本格的なデータ移行を行いました。 - DBに書き込んだ値が消えるという問題があり、Aurora(PostgreSQL)のロジカルレプリケーションによるWriterへの書き込みからReaderで読み出し可になるまでのタイムラグがあったところ、DB再設計してロジカルレプリケーションを廃止、書き込み直後はWriterから読み出しに変更。DB再設計に伴う移行計画策定からサーバサイド実装までで、まずとにかくちゃんと動かす。 - CSVファイルダウンロード機能では生成をSQS経由Lambdaに追い出し、S3にアップロードしたそのファイルの署名付きダウンロードリンクをブラウザからのリクエスト時に送り返し、ファイル生成完了までポーリングするように変更することでサーバに必要なリソースを削減するよう、再設計、移行計画策定から実装はサーバサイドを。 - このサービスは日次バッチで分析データを大量に準備するものですが、利用されるデータに偏りがあるため、データ投入に時間がかかりすぎるElastic Searchから、少々性能が落ちるが複数のParquetファイルのUploadとMetaデータの再取得だけで短時間で済ませて解決できるAthenaへ、日次バッチについてはSpark(Glue)移行することを前提に移行。Athena以外にSnowflakeも評価しましたが、利用タイミングが限られている、利用データがかなり偏っているなどの理由で説得しました。その再設計、移行計画策定からサーバサイド実装まで。 - 中でもよく使われるデータはキャッシュとしてAuroraに都度充填、あるいは日次バッチでよく使われるデータを事前充填して利用できるようにして、応答速度を上げました。この機能はまた、展示会などでデモを行う時に、AWSへのアクセスなしで、Localの仮想環境に閉じて実行するという要求があり、それを実現するためにも利用しています。 # 工夫した点 - 既存顧客に迷惑をかけないよう、シームレスな移行のための段取りをする。 - 理想型に近づけるための優先順位検討 - メンバーの技術力底上げのためのフォロー。悩み相談など。

2018年/2年以上

AIBotチャット: AI Messanger 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年以内

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

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

マネージメント能力

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

アピール項目


アウトプット

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

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

- プレゼン

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

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

キャラクター

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

やりたい事

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

基本プロフィール

年齢
今年で50代前半
好きな Text Editor
JetBrains
希望勤務地
東京都
希望年収
800万円
転職ドラフトに参加して
企業から指名を受け取ろう!
会員登録をして転職ドラフトに参加すると、参加企業から年収付きの指名を受け取ることができるようになります。
会員登録する
ご意見箱

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

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

  • {{error}}
SIGN UPSIGN IN


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