π₯³ typeormμ μ΄μ©ν FCM μλ¦Ό μλΉμ€ - boostcampwm-2024/web17-juchumjuchum GitHub Wiki
λΆμΌ | μμ±μ | μμ±μΌ |
---|---|---|
BE | κΉμ±ν | 24λ 12μ 02μΌ |
λ°λ¨
-
μ£ΌμΆ€μ£ΌμΆ€ μλΉμ€λ μ΄λ³΄μλ₯Ό μν μλΉμ€μ΄λ€.
- μλ¦Όμ μ²μ μ€μ νκ³ λμ μ μ λ μ κ²½μ μ°μ§ μμλ μ€μ ν κ°κ²©, κ±°λλμ λλ¬νλ©΄ μλ¦Όμ λ°μ μ μκ² μ£Όμ μλΉμ€λ₯Ό ꡬμ±νκ³ μ νλ€.
-
μλ¦Ό μλΉμ€λ₯Ό ꡬνν λ κ³ λ €ν λΆλΆμ ν¬κ² λκ°μ§μ΄λ€.
- μλ²μ λΆν κ°λ₯μ±
- μ±ν μλ², μ£Όμ λ°μ΄ν° μλ² λ±λ± μ΄λ―Έ λΆνκ° μλ μν©μμ μλ¦ΌκΉμ§ λΆνλ₯Ό κ°νκΈ°μλ λΆλ΄μ΄ μμλ€.
- νμ¬ μλ² κ΅¬μ‘°λ κ° κ΅¬μ‘°κ° λΆλ¦¬λμ΄ μμ§ μμ νκ²½μ΄λΌ λλμ± λΆν κ°λ₯μ±μ λ¬Έμ κ° μμ μ μμλ€.
- μ€νλΌμΈ νκ²½μμλ μ λλ‘ μλλμ΄μΌ ν¨.
- μ΄λ³΄μμκ² μ£Όμμ μ§μν΄μ νμΈνλ μν©λ³΄λ€λ λΉκ΅μ μμ λ‘κ² νμΈμ΄ κ°λ₯ν΄μΌ νλ€.
- μλ²μ λΆν κ°λ₯μ±
μλ¦Ό μλΉμ€ ꡬν λ°©λ²
SSE (Server-Sent Events)
μλ² λΆν κ°λ₯μ±
- ν΄λΌμ΄μΈνΈμ μλ² κ° μ§μμ μΈ μ°κ²°μ μ μ§ν΄μΌ νλ―λ‘, μ°κ²° μκ° λ§μμ§μλ‘ μλ² μμμ΄ μλͺ¨λλ€.
- λ§μ μ¬μ©μλ₯Ό λμμ μ§μνλ €λ©΄ μλ² νμ₯μ΄ νμν μ μμΌλ©°, νΉν μ€μκ° λ°μ΄ν° μ€νΈλ¦¬λ° μλΉμ€μμ λΆν κ΄λ¦¬κ° μ΄λ €μΈ μ μλ€.
μ€νλΌμΈ νκ²½ μλ
- ν΄λΌμ΄μΈνΈκ° λΈλΌμ°μ νμ λ«κ±°λ λ€νΈμν¬ μ°κ²°μ΄ λκΈ°λ©΄ μλ¦Όμ λ°μ μ μλ€.
- μ°κ²°μ΄ μ μ§λλ λμμλ μ€μκ°μΌλ‘ λ°μ΄ν°λ₯Ό λ°μ μ μμ§λ§, μ€νλΌμΈ νκ²½μμλ μλ¦Όμ΄ μ€λ¨λλ€.
Web Push
μλ² λΆν κ°λ₯μ±
- μλ²λ νμν λλ§ νΈμ λ©μμ§λ₯Ό μ μ‘νλ―λ‘ μ§μμ μΈ μ°κ²°μ΄ νμνμ§ μλ€. λ°λΌμ μλ² λΆνκ° μλμ μΌλ‘ μ λ€.
- νΈμ λ©μμ§λ νΈμ μλ²λ₯Ό ν΅ν΄ μ λ¬λλ―λ‘, μλ² λΆνμ λλΆλΆμ ν΄λΌμ΄μΈνΈμ μ§μ μ°κ²°λ νΈμ μλ²κ° μ²λ¦¬νλ€.
μ€νλΌμΈ νκ²½ μλ
-
μ¬μ©μκ° λΈλΌμ°μ λ₯Ό λ«κ±°λ μ€νλΌμΈ μνμ¬λ, νΈμ λ©μμ§κ° μ μ‘λλ©΄ μ¬μ©μλ μλ¦Όμ λ°μ μ μλ€.
-
λ€νΈμν¬κ° 볡ꡬλλ©΄ νΈμ μλ²κ° λ©μμ§λ₯Ό μ λ¬νλ―λ‘, μ¬μ©μκ° λ€μ μ¨λΌμΈμ΄ λμμ λ μλ¦Όμ λμΉμ§ μλλ€.
-
μ΄λ° μ μμ Web Pushλ₯Ό μ΄μ©ν ꡬνμΌλ‘ μ κ·Όνλ€.
μ΄λ²€νΈ νλ¦λ
typeorm
μafterInsert
λ₯Ό μ΄μ©ν΄ μ΄λ²€νΈκ° λ°μν λλ§λ€subscriber
κ° μλλ μ μκ² μ΄λ²€νΈλ₯Ό μ€κ³νλ€.
graph
A[OpenapiMinuteData] -->|insert| B[StockMinutely Table]
B -.->|TypeORM event| C[AlarmSubscriber]
C --> D[AlarmService.sendPushNotification]
subgraph OpenapiScraperModule
A
B
end
subgraph AlarmModule
C
D
end
λ°μνλ λ¬Έμ μ
μΈλΆμλΉμ€ API μμ² μ ν λ¬Έμ
- μ£ΌμΆ€μ£ΌμΆ€ μλΉμ€λ μΈλΆ μλΉμ€μΈ νκ΅ν¬μμ¦κΆμ apiλ₯Ό μ¬μ©ν΄ λΆλ¨μ λ°μ΄ν°λ₯Ό κ°μ Έ μ¨λ€.
- λ¬Έμ λ νμ¬ apiλ₯Ό μ΄μ©ν΄ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ€λ₯Έ μλΉμ€κ° λ§κ³ , apiμ μ΅λ μμ² νμλ μ΄λΉ 20ν, μ¬μ© κ°λ₯ν apiκ° 4κ°μ¬μ μ΅λ 80κ°λ₯Ό μ²λ¦¬ν μ μμλ€.
- 1000λͺ μ΄ μλ¦Όμ 3κ° λ±λ‘ν μν©μμ 곡ν΅λ μλ¦Όμ κ²½μ° μ μΈνλ€κ³ ν΄λ λ°μνμ§ μμλ€.
λ¬Έμ μ κ·Ό λ²
-
λΉμ¦λμ€ λ‘μ§μ μΈ‘λ©΄
- νμ¬(2024λ 12μ 3μΌ) κΈ°μ€ νκ΅μ μ½μ€νΌ, μ½μ€λ₯μ μμ₯λμ΄ μλ μ£Όμ(ETN, ETF λ± ν¬ν¨)μ λλ΅ 4200κ° μ λμ΄λ€.
- λΆλ¨μ λ°μ΄ν°λ₯Ό μΌλΆμ νλ² λ°κ³ , 1μ΄μ 80건μ μμ²μ΄ μ²λ¦¬κ°λ₯νλ©΄ 4800건μ μμ²μ 1λΆμ λͺ¨λ μ²λ¦¬ν μ μλ€.
- λ€λ§, λ€λ₯Έ api μμ²μ΄ μκ³ , μ΄ μμ²λ€μ΄ κ°μ Έμ¬ μ μλ λΆνλ₯Ό μμ§ ν μ€νΈνμ§ λͺ»ν΄ μΌλ¨ μλ¦Όμ λ±λ‘ν 건 μ€ λ§μ μ£Όμ κ΄λ ¨ μλ¦Ό μμ 200건μ λν΄μλ§ μμ²μ΄ κ°λ₯νκ² μ²λ¦¬λ₯Ό μ§ννλ€.
-
μλ² λΆνμ μΈ μΈ‘λ©΄