NAFAL λ°±μλ κ°λ°μ
μ΄λ€ μ
무λ₯Ό ν¨κ»νκ² λλμ§
[μ£Όμ μ
무]
β’
λν μΉ/μ± λ°±μλ κ°λ° λ° μ μ§λ³΄μ
β’
μλ², DB κ΄λ¦¬
β’
μμ€ν
μμ μ±/보μμ± ν보
β’
μΈνλΌ κ΄λ¦¬
[NAFAL μ£Όμ κΈ°λ₯ κ°λ°]
β’
JWT κΈ°λ° μΈμ¦ μμ€ν
ꡬν
β¦
Access Token λ° Refresh Token λ°κΈ μ²΄κ³ κ΅¬ν
β¦
Redisλ₯Ό νμ©ν JWT λΈλ리μ€νΈ κ΄λ¦¬
β¦
ν ν° μλ κ°±μ λ©μ»€λμ¦
β’
OAuth 2.0 μμ
λ‘κ·ΈμΈ μ°λ (μΉ΄μΉ΄μ€, ꡬκΈ, μ ν)
β’
3λ¨κ³ μΈμ¦ νλ‘μΈμ€ (μΌλ° νμκ°μ
β μμ
κ³μ μ°λ β μμ
λ‘κ·ΈμΈ) κ°λ°
β’
보μ κΈ°λ₯ ꡬν: XSS/CSRF 곡격 λ°©μ΄, IP κΈ°λ° μ κ·Ό μ μ΄, Security Headers μ μ©
μ°λ¦¬λ μ΄λ° λλ£λ₯Ό μ°Ύκ³ μμ΄μ
[νμ κΈ°μ μ€ν λ° ν΅μ¬ κ²½ν]
β’
νμ κΈ°μ μ€ν λ° μ¬μ© κ²½ν
β¦
νλ μμν¬/μΈμ΄: Java / Spring Boot
βͺ
Java 21 λ° Spring Boot 3.3.0 λ²μ μ λν μ΄ν΄
β¦
λ°μ΄ν°λ² μ΄μ€: PostgreSQL / Redis
βͺ
PostgreSQL (κ΄κ³ν DB) μ€κ³/μ΅μ ν κ²½ν λ° Redis (In-Memory DB)λ₯Ό νμ©ν μΊμ±, μΈμ
κ΄λ¦¬, λμμ± μ μ΄ κ΅¬ν κ²½ν
β¦
μΈμ¦/보μ: Spring Security / JWT / OAuth 2.0
βͺ
JWT κΈ°λ° μΈμ¦ μμ€ν
ꡬν λ° Refresh Token, λΈλ리μ€νΈ κ΄λ¦¬ κ²½ν
βͺ
OAuth 2.0 (μΉ΄μΉ΄μ€, ꡬκΈ) μ°λ κ²½ν
βͺ
보μ μ·¨μ½μ λ°©μ΄(XSS/CSRF) κ²½ν
β’
νμ μλ λ° ν΅μ¬ κ²½ν
β¦
λμμ± μ μ΄: κ²½λ§€/νΈλμμ
νκ²½μμ λμμ± λ¬Έμ ν΄κ²° κ²½ν
β¦
κ³ μ±λ₯ μμ€ν
μ€κ³: Strategy Pattern λ± μ€κ³ ν¨ν΄μ νμ©νμ¬ μ μ°ν νμ₯ ꡬ쑰 λ° μ±λ₯ μ΅μ ν κ²½ν
β¦
μ°λ/μ°κ²°: μΉ΄μΉ΄μ€/κ΅¬κΈ λ‘κ·ΈμΈ ν΅ν©, pg κ²°μ , NCP Object Storage λ± μΈλΆ μ°λμ μμ ν κ²½ν
β¦
μ΄μ μλν: Quartz Scheduler λ± μ€μΌμ€λ¬λ₯Ό νμ©ν λ°°μΉ μ²λ¦¬/μλν κΈ°λ₯ ꡬν λ° μ΄μ κ²½ν
μ΄λ° μ€ν¬κ³Ό κ²½νμ΄ μμΌλ©΄ μ’μμ
β’
νλ‘ νΈμλ λ° κΈ°ννκ³Όμ νμ
κ²½ν: λΉμ¦λμ€ μꡬμ¬νμ μ΄ν΄νκ³ API μ€νμ λ₯λμ μΌλ‘ μ μνμ¬ νλ‘ νΈ κ°λ°ν λ° μλΉμ€ κΈ°ννκ³Ό μνν μν΅ν μ μλ λ₯λ ₯ 보μ μ
β’
μλΉμ€ μ΄μ κ²½ν: μ€μ μλΉμ€μ λͺ¨λν°λ§, λ‘κ·Έ λΆμ, μ±λ₯ κ°μ κ²μ¦ κ²½ν
β’
보μ μ΄ν΄λ μ°μμ: 보μμ λν μ΄ν΄λκ° λμ JWT, OAuth 2.0 λ± μΈμ¦ μμ€ν
μ μ§μ μ€κ³νκ³ λ³΄μ κ°μ΄λλΌμΈμ μ μν μ μλ λ₯λ ₯ 보μ μ
β’
ν΄λΌμ°λ μΈνλΌ κ΄λ¦¬ κ²½ν: NCP, AWS λ± μΈνλΌ κ΄λ¦¬ κ²½ν (μλ² νκ²½ κ΅¬μ± λ° νΈλ¬λΈ μν
κ²½ν)
β’
μμ ν κ²½ν: μμ ν μμμ λΉ λ₯΄κ² μ±μ₯νλ©° μ€μ§μ μΈ νλ‘μ νΈ κ²½νμ μκ³ μ νλ μμ§
μ°λ¦¬λ ν¨κ»νλ©΄ μ΄λ° κ°μΉλ₯Ό μ»μ μ μμ΄μ
β’
μμ ν μμμ λΉ λ₯΄κ² μ±μ₯νλ μ€μ§μ νλ‘μ νΈ κ²½ν
β’
λ€μν μν μ κ²½ννλ©° μΌμ μ 체 νλ¦μ μ΄ν΄νλ κΈ°ν
β’
λ¬Έμ λ₯Ό λ°κ²¬νκ³ κ΅¬μ‘°λ₯Ό κ°μ νλ μ€μ§μ μ±μ₯ κ²½ν
β’
μμ₯ μμμ μ§μκ°λ₯μ±μ μ§μ μ€ννκ³ νμ₯νλ κ²½ν
근무 쑰건
β’
근무 νν: μ κ·μ§ μ νν κ³μ½μ§ (μμ΅ 2κ°μ)
β’
근무μ§: μμΈ λλ문ꡬ κ²½ν¬λλ‘ 26, μΌμμμ°½μ
μΌν° 315νΈ
β’
근무μκ°: μ£Ό 5μΌ, μμ¨ μΆν΄κ·Όμ (9μ or 10μ)
β’
κΈμ¬: νμ ν κ²°μ (μλ/κ²½νμ λ°λ₯Έ μ μ° μ‘°μ )