μκΈ°λ₯ #46
μ§νμ€μκΈ°λ₯ #44: π Mangement Cloud server FastAPI νλ‘μ νΈ
π₯ Epic 1 - Task 1 FastAPI λλ ν 리 ꡬ쑰 μ μ
0%
μ€λͺ
- λͺ©μ°¨
- π₯ Epic 1 β Task 1
π₯ Epic 1 β Task 1¶
FastAPI λλ ν 리 ꡬ쑰 μ μ¶
π μμ κ°μ¶
FastAPI κΈ°λ°μ μλ‘μ΄ mgmt μλ²λ₯Ό ꡬμΆνκΈ° μν΄, μ 체 νλ‘μ νΈμ λλ ν 리 ꡬ쑰λ₯Ό 체κ³μ μΌλ‘ μ€κ³νλ€.
μ΄ κ΅¬μ‘°λ ν₯ν κΈ°λ₯ νμ₯, μ μ§λ³΄μ, μλ² λ°°ν¬, MQTT worker λΆλ¦¬ μ΄μ λ±μ κ³ λ €νμ¬ μ₯κΈ°μ μΌλ‘ μμ μ μΈ μν€ν
μ²λ₯Ό λͺ©νλ‘ νλ€.
π μ€κ³ λͺ©μ ¶
-
FastAPI μλ²μ MQTT Workerλ₯Ό λͺ νν λΆλ¦¬νμ¬ νλ‘μΈμ€ μΆ©λμ λ°©μ§νκ³ μ΄μ μμ μ±μ ν보νλ€.
-
SQLAlchemy λͺ¨λΈ, λΌμ°ν°, μ€ν€λ§λ₯Ό λͺ¨λννμ¬ μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμΈλ€.
-
Reverse SSH, μλ² μ μ΄, μ₯λΉ μν κ΄λ¦¬ λ± κΈ°λ₯λ³λ‘ λΌμ°ν°λ₯Ό λΆλ¦¬νμ¬ API ꡬ쑰λ₯Ό λͺ ννκ² νλ€.
-
AlmaLinux λ°°ν¬ νκ²½(systemd, scripts)μ κ³ λ €ν λλ ν 리 ꡬμ±μΌλ‘ μ€μ μ΄μ νκ²½κ³Ό κ°λ° νκ²½μ μ°¨μ΄λ₯Ό μ΅μννλ€.
-
ν μ€νΈ μ½λ, λ¬Έμ, μ€μ νμΌμ νμ€ννμ¬ νλ‘μ νΈ νμ§μ μ μ§νλ€.
π νλ‘μ νΈ λ£¨νΈ κ΅¬μ‘°
mkMgmtCloudFastAPI/
β
ββ app/ # FastAPI λ©μΈ μλ²
β ββ main.py # FastAPI μνΈλ¦¬ν¬μΈνΈ
β ββ db.py # DB μ°κ²° (SQLAlchemy + PostgreSQL)
β ββ models/ # SQLAlchemy λͺ¨λΈ
β β ββ server_master.py
β β ββ server_status.py
β β ββ server_control.py
β β ββ server_detail.py
β ββ routers/ # API λΌμ°ν°
β β ββ server.py # μλ² μν/λͺ©λ‘ API
β β ββ control.py # μ μ΄ API (shutdown/reboot/WOL)
β β ββ ssh.py # reverse SSH API
β β ββ health.py # ping/health check
β ββ core/
β β ββ config.py # νκ²½ μ€μ
β β ββ utils.py # κ³΅μ© μ νΈ
β ββ schemas/ # Pydantic μ€ν€λ§
β ββ server.py
β ββ control.py
β ββ ssh.py
β
ββ worker/ # MQTT Worker (λ
립 νλ‘μΈμ€)
β ββ mqtt_worker.py # MQTT λ©μμ§ μμ λ° μ²λ¦¬
β ββ handlers/ # λ©μμ§ νΈλ€λ¬
β β ββ status_handler.py
β β ββ control_handler.py
β ββ utils.py
β
ββ scripts/ # λ°°ν¬/μ΄μ μ€ν¬λ¦½νΈ
β ββ start_mgmt.sh
β ββ start_worker.sh
β ββ migrate.sh
β
ββ systemd/ # systemd μλΉμ€ νμΌ ν
νλ¦Ώ
β ββ mgmt.service
β ββ mqtt-worker.service
β
ββ tests/ # ν
μ€νΈ μ½λ
β ββ test_server.py
β ββ test_control.py
β ββ test_mqtt.py
β
ββ .env # νκ²½ λ³μ
ββ requirements.txt # Python ν¨ν€μ§ λͺ©λ‘
ββ README.md # νλ‘μ νΈ λ¬Έμ
π μ€κ³ κ·Όκ±° λ° μλ¶
β FastAPI / MQTT Worker λΆλ¦¬
- MQTTλ λΉλκΈ° μ΄λ²€νΈ κΈ°λ°μ΄λ―λ‘ FastAPIμ κ°μ μΉ μλ² νλ‘μΈμ€μ λΆλ¦¬ν΄μΌ μμ μ μ΄λ€.
- λ°λΌμ worker/ λλ ν 리λ₯Ό λ³λλ‘ κ΅¬μ±νμ¬ λ 립 μ€νμ΄ κ°λ₯νλλ‘ μ€κ³νλ€.
β SQLAlchemy λͺ¨λΈ λΆλ¦¬
- κΈ°μ‘΄ Django λͺ¨λΈ ꡬ쑰λ₯Ό κ·Έλλ‘ μ μ§νλ©΄μλ FastAPI μ€νμΌμ λ§κ² λͺ¨λννλ€.
- λͺ¨λΈμ νμΌλ³λ‘ λΆλ¦¬νλ©΄ μ μ§λ³΄μμ λ§μ΄κ·Έλ μ΄μ μ΄ μ¬μμ§λ€.
β λΌμ°ν° ꡬ쑰 λΆλ¦¬
- μλ² μν, μ μ΄, SSH, ν¬μ€μ²΄ν¬ λ± κΈ°λ₯λ³λ‘ λΌμ°ν°λ₯Ό λΆλ¦¬νμ¬ API λ¬Έμ μλ μμ± μ κ΅¬μ‘°κ° λͺ νν΄μ§λ€.
β systemd / scripts ν¬ν¨
- AlmaLinux μ΄μ νκ²½μμ λ°λ‘ μ¬μ©ν μ μλλ‘ systemd μλΉμ€ ν νλ¦Ώκ³Ό μ΄μ μ€ν¬λ¦½νΈλ₯Ό ν¬ν¨νλ€.
- μ΄λ λ°°ν¬ μλνμ μλ² μμ μ± ν보μ νμμ μ΄λ€.
β ν μ€νΈ μ½λ ν¬ν¨
- FastAPIλ ν μ€νΈ μλνκ° λ§€μ° μ¬μ°λ―λ‘, μ΄κΈ°λΆν° ν μ€νΈ λλ ν 리λ₯Ό ν¬ν¨νμ¬ νμ§ κ΄λ¦¬ κΈ°λ°μ λ§λ ¨νλ€.
π μ°μΆλ¬Ό¶
-
FastAPI mgmt μλ²μ μ 체 λλ ν 리 ꡬ쑰 μ€κ³ λ¬Έμ
-
Gitea μ΄κΈ° 컀λ°μ μ¬μ©ν νμ€ νλ‘μ νΈ κ΅¬μ‘°
-
ν₯ν λͺ¨λ κ°λ° μμ μ κΈ°λ°μ΄ λλ μν€ν μ² μ μ
minkyu parkμ΄(κ°) 21μΌ μ μ λ³κ²½
- μ€λͺ μ΄ λ³κ²½λμμ΅λλ€. (λΉκ΅(diff))