# Python 工程師 Roadmap * Python 環境管理工具 * pip * pyenv * pipenv * poetry * Python Package 製作 * `setup.py` * twine * wheel * git 版本控制 * github * gitlab * 爬蟲 * request * lxml * selenium * 資料庫 * 關聯式資料庫 - RDBMS * MySQL * PostgreSQL * 非關連式資料庫 - NoSQL * Redis * mongodb * 時間序列資料庫 - TSDB * dolphindb * Kdb+ * influxDB * Prometheus * Cloud DB * Bigquery * log 系統 * loguru * sentry * elk、efk * 註解 * typing * schema * 監控系統 * Prometheus & Grafana 統一的監控儀錶板 * netdata 機器系統監控 * 測試 * 單元測試 unit test * pytest 測試框架 * pytest-mock 測試模擬框架 * 整合測試 integration testing * CICD * gitlab-ci * github-action * circleci * 分散式架構 * RabbitMQ * Celery * redis * Kafka * GCP - Pub/Sub * 微服務 microservice * docker * docker-compose * docker swarm * k8s * 高效緩存 * redis * GCP - memorystore * API * GET、POST、PUT、DELETE * Flask * FastAPI * swagger.json * 壓測 * apache benchmark * 效能分析 * line_profiler * timeit * Web 後端開發 * Django * MVC * MVT * data pipeline 數據流 * airflow * GCP - Composer * ETL * ELT * 雲端 * linode * GCP * AWS * 聊天機器人串接 chatbot * telegram * slack * 排程工具 * apscheduler * crontab * 身分驗證 * hash * jwt * 視覺化 * Grafana - 監控系統 * Redash - 商業分析 * Superset - 商業分析 * realtime system 即時系統 * redis 高效緩存 * pub/sub 發送訊息與接收訊息 * socket * pandas 非常慢,numpy 相對快速 * Graceful Shutdown 優雅的關閉 * rolling update * 程式設計理念 * 物件導向 OOP * SOLID * 如何判斷 function 函數太長? * https://stackoverflow.com/questions/475675/when-is-a-function-too-long * 抽象層、商業邏輯層