私の名前はシャオハンです。
職歴
ヒント
その他、詳細は履歴書を参照。
2019 年 7 月から 2025 年 3 月まで、彩雲科技でバックエンドエンジニアとして勤務しています。主な担当業務:
- 2019 年に天気 API コアシステムを Python 2.7 から Python 3.7 へアップグレード
- 彩雲天気アプリのプッシュ通知システムのリファクタリング
- Python プロデューサーと Celery ワーカーを使用し、Protocol Buffers で Redis リストにプッシュタスクを書き込み、Golang ワーカーで消費する方式を実装
- 毎秒約 3,000 件の通知送信を実現
- 高スループットの内部 Flask & FastAPI サービスを Go+Gin で再実装し、高速な地理演算と気象観測所データ API を提供
- 長年の既存コードを Kubernetes 上のモダンアーキテクチャに刷新
- 2023 年第 1 四半期にダウンタイムなしでクロスリージョントラフィック移行を実現
- 天気レイヤーのアニメーションシステムを開発(デモ)、マーケティングに大きく貢献
- 気象観測所の履歴データのアーカイブと検索システムを構築。複数の Parquet ファイルにデータを保存し、Celery ワーカーで非同期読み取りと処理を実行
- 複数のバックエンドエンジニアをメンタリングし、既存業務の理解を支援、採用活動にも参加
- 部門間のコミュニケーション効率を向上させるための社内ドキュメントを作成
使用技術:
- Redis (PubSub / Hash / List)
- MongoDB (ジオインデックス / アグリゲーション)
- Kubernetes (Deployment / Statefulset / Cronjob)
- Python (Flask / Gunicorn / Uwsgi / NumPy / FastAPI / Celery / Parquet / Polars)
- CPU 負荷の高いサービスでは Python の AsyncIO スケジューラの効率が低いため、FastAPI の使用を中止
- NumPy でしか提供できない特定機能が必要な Flask サービスは継続使用
- 地理演算 (H3 / Slippy Tiles / タイムゾーン / 行政区画チェック / 内包判定 / レイキャスティング / …)
- Go (Hertz / Gin / Protocol Buffers / gRPC)
- Rust (Python エクステンション開発、tzfpy など)
個人プロジェクト
以下の個人プロジェクトを開発しています:
- 高速タイムゾーンパッケージ、Project tzf
- 彩雲 API をサポートする
wegoのフォーク版、デモ - AQI(大気質指数)計算用の Go パッケージ
aqi
学歴
2015 年から 2019 年まで、北方工業大学で情報・計算科学の学士号を取得。
作成したリポジトリ
貢献したリポジトリ
転載とライセンス
本ブログの記事(本文、著者が作成した図表とアニメーションを含む)は CC BY 4.0 で提供しています。転載・改変・商用利用はいずれも可能です。その際は ringsaturn のクレジット、原文へのリンク、改変の有無を明記してください。
次のものはこのライセンスの対象外で、それぞれの提供元の条件に従います。
- 報道、公式声明、論文などの出版物からの引用。著作権は原著者または発行元にあり、転載には別途許諾を得るか、引用の要件を満たす必要があります。
- 第三者の画像とスクリーンショット。商用衛星画像、報道写真、SNS やウェブページのスクリーンショットを含みます。
- 第三者のデータセット。WDPA の保護区境界、行政区域、人口データなど。クレジットの形式と利用制限は各記事のデータソースに記載しています。商用利用や再配布を認めないものもあります。
著者が公開データから作成した図(NASA FIRMS、GIBS、コペルニクスの Sentinel データに基づく地図など)は CC BY 4.0 で提供します。転載の際は本ブログのクレジットに加え、キャプションまたは本文に記載したデータソースも残してください。
