-
μλ‘μ΄ νλ‘μ νΈ μμ: κ°μμ λͺ©ννλ‘μ νΈ 2022. 1. 2. 20:26
π μλ‘μ΄ νλ‘μ νΈ μμ
μ§λ μ¬λ¦μ μ λ§ λ§μμ΄ μ λ§λ λλ£λ€μ λ§λμ λ무 μ¦κ²κ² μ§ννλ νλ‘μ νΈκ° μμλλ°, μ·¨μ€/ν΄μΈ/μ§μ₯ λ± λ€λ€ μκ°μ μ¬μ κ° μμ΄ νμ§λΆμ§ λμλλ¬λ€. κ·Έλ₯ μκ³ λ¦¬μ¦μλ μ§μ€νμ νκ³ κ·Ό νλλ¬κ° κ³΅λΆ μ€μ΄μλλ°, μ°μ°ν μλ‘μ΄ νλ‘μ νΈλ₯Ό μμνκ² λμλ€.
DRF κΈ°λ°μ backend API μ€κ³μ μλ² κ΅¬μΆμ 맑μ μμ μ΄λ€.
νλ‘μ νΈ μμ μ μ λ΄κ° μ΄ νλ‘μ νΈ κ²½νμ ν΅νμ¬ μ§μμ μΌλ‘ μ±μ₯νκ³ μ νλλ°μ λͺ©νμ λνμ¬ κΈ°μ ν΄λ³΄λ €νλ€.π₯ λͺ©ν μ€μ νκΈ°
1. μ κ·ν κ·μΉμ λ°λ₯΄λ DB μ€κ³
νμ μμ μΌν΄λ³Έ κ²½νμ΄ μμ΄μ μ’μ DBꡬ쑰/νμ₯μ± μλ μ€κ³μ λν μ νν κΈ°μ€μ μΈμΈ μ μμ§λ§ μ€μ€λ‘ μ€μ ν κ·μΉμ μ§ν€λ©΄μ λͺ¨λΈλ§μ μ§νν΄λ³΄λ € νλ€. (λ³΄ν΅ μ κ·ν 3λ¨κ³κΉμ§λ₯Ό νλ‘λμ μ λ§μ΄ μ μ©νλ€κ³ νλ€) μ΄κΈ° μ€κ³ μ΄ν, κ°λ°μ μ§ννλ©° λ§μ£Όνλ λΉμ κ·ν, transaction λ±μ λ¬Έμ λ₯Ό κ°μ ν΄λκ°λ©° λ°μ μν¬ μμ .
2. λ‘κ·Έ μμ€ν μ¬μ©
μ΄μ νλ‘μ νΈμμλ .txt νμΌλ‘ μμ² λ‘κ·Έλ₯Ό λ¨κΈ°λ λ°©μμ μ¬μ©νμλ€.
λ‘κ·Έ μμ€ν μ μ€κ³ν κ²μ μλμκΈ° λλ¬Έμ μλ²μ μ§μ μ΄μ΄κ°μ λ‘κ·Έ νμΌμ λ―μ΄λ³΄μ§ μλ μ΄μ, μ΄λ ν μλ¬κ° λ°μνλμ§ νμ νκΈ°κ° μ΄λ €μ λ€. κ·Έλμ νλ‘ νΈμνΈ νμλΆκ³Όμ μ¦κ°μ μΈ μν΅μμ μ΄λ €μμ κ²ͺμμλ€. μλ¬ μλ΅μ΄ λ μμ€λ©΄, νμλΆμ΄ λμκ² λ©μΈμ§λ₯Ό 보λ΄κ³ .. λλ νμ°Έ λ€μ νμΈνκ³ ... κ·Έλ¬λ©΄ νμλΆμ μμ μλλ λλ €μ§κ³ .. νμ μ΄ λλμ§κ³ ... λ κ·Έλ°.
ꡬκΈλ§ν΄λ³΄λ μλ¬ λ‘κ·Έ μμ€ν μΌλ‘λ Sentry κ° κ°μ₯ λ§μ΄ μ°μ΄λ λ―νμ¬, μ΄ ν΄μ μ¬μ©ν΄λ³Ό μμ μ΄λ€.Integrating Sentry Application Monitoring - PyCharm Guide
Hello everyone, welcome to the Django tutorial series. In this tutorial step, we are going to set up Sentry, an application for monitoring and error tracking. Sentry automates exception handling for every programming language and platform, so you can obser
www.jetbrains.com
3. TDD κ°λ°μ κ°λ°
PostmanμΌλ‘λ§ λμ μ¬λΆλ₯Ό κ²μ¦νκ³ , μ΄ν νλ‘ νΈ λ¨μμ μ΄μμ μΈ μλΉμ€ μ μ νλ‘μ°μ λν ν μ€νΈ(happy path testingμ΄λΌ νλ€)λ§ μ§ννλ©° κ°λ°μ ν΄μλ€. λ²κ·Έκ° λ°μν κ²½μ°λ, κΉ¨μ§ λΆλΆμ μ½λλ₯Ό λ§λΆμ΄λ λ°©μμΌλ‘ μ€λ₯λ₯Ό ν΄κ²°νμλ€. μ½λμ μ¬μ¬μ©μ±μ΄ λ¨μ΄μ§κ³ μΈμ μ΄λ ν μΌμ΄μ€μ λνμ¬ μλ¬κ° λ°μν μ§ μμΈ‘ν μ μμ΄ λΆμμ νλ€.
μ΄λ² νλ‘μ νΈμμλ λ°λμ ν μ€νΈ μ½λλ₯Ό μμ±νμ¬ TDD κΈ°λ°μ κ°λ°μ μ§ννλ € νλ€. (μΌλ¨ κΉνλΈμ issueλΆν° μμ±ν΄λλ€γ κ³μ λμ λ°νμ λ―Έλ£° μλ μκ² λ§λ€μ΄λ²λ¦΄ κ±°λ€)4. λ°°ν¬ μλν
CircleCIλ AWS CodeDeployλ₯Ό μ¬μ©νμ¬ CI/CD νμ΄νλΌμΈμ ꡬμΆν΄λ³Ό κ².
μ΄μ νλ‘μ νΈλ μ 립λ λ°°ν¬ νλ‘μΈμ€ μμ΄ docker 컨ν μ΄λλ§ λμκ°κ³ μλ ꡬ쑰μλ€. μλ‘μ΄ PRμ΄ mergeλλ©΄, κ°μκΈ° 컨ν μ΄λκ° ν°μ§κΈ°λ νκ³ λ‘κ·Έκ° λ€ λ μκ°κΈ°λ νκ³ λ κ·Έλ¬μλ€. κ·Έ λλ dockerμ κ°λ μ μ΅νλλ°λ κΈκΈνκΈ°μ μλ‘μ΄ ν΄μ λμ ν μ¬μ μ‘°μ°¨ μμλ κ² κ°λ€.
μ λλ‘λ λ°°ν¬ νλ‘μΈμ€λ₯Ό ꡬμΆν΄λ³΄κ³ μΆλ€. μ΄ λΆλΆμ λν΄μλ λ΄ μ§μμ΄ κ·Έλ¦¬ κΉμ§ μλ€κ³ νλ¨λμ΄, μ‘°κΈ λ 곡λΆν λ€μ ꡬ체ννλ κ²μΌλ‘.5. API λ¬Έμ μλν
μλνλ API λ¬Έμλ₯Ό κ΄λ¦¬ν κ².
λ³λμ λ¬Έμλ₯Ό ν΅ν΄ κ΄λ¦¬νλ©΄ λκΈ°νκ° μ λμ λ λμ§ μμ νλ‘μ νΈμ μμ°μ±μ΄ μ νλλ€. λ Έμ ν μ΄λΈλ‘ μ²μ api λ¬Έμλ₯Ό μμ±ν μκ°λΆν° μ΄λ¬ν λ¬Έμ λ₯Ό λκ»΄μ λ°λ‘ λμ νμλ€. κ°μΈμ μΌλ‘ 컀μ€ν°λ§μ΄μ§μ΄ μ©μ΄νμ¬ swagger보λ€λ drf-yasgλ₯Ό μ νΈνλ€. field-level, response format/errorκΉμ§ 컀μ€ν°λ§μ΄μ§νλ μμμ΄λ€. μ μΈμ κ°λ μ±μ μλνλ€... λ무μ’μ6. git issueμ PRμ ν΅ν task κ΄λ¦¬
githubλ΄μμ issueμ PRμ νμ©νμ¬ taskλ₯Ό 체κ³μ μΌλ‘ κ΄λ¦¬ν μμ μ΄λ€. μ΄κ±΄ μ΄λ―Έ νκ³ μλ€. μμ°¨μ μΌλ‘ taskλ₯Ό μ²λ¦¬νκΈ°μλ μ©μ΄νκ³ κ΅¬μ‘°ννκΈ°λ λ§€μ° μ’μ κ² κ°λ€. λ³λμ λ¬Έμ(λ Έμ )μ μ΄μ©νλ©΄ μ’ μ’ μ½λ μμ μ§νμν©κ³Ό λκΈ°νκ° λμ§ μμ λκ° μμλλ° κ·Έλ΄ μΌμ΄ μλ€λ κ²λ ν° μ₯μ μ΄λ€.
μΆκ°μ μΌλ‘ Projectμ μΉΈλ°μ°¨νΈλ μ¬μ©μ€μΈλ° μμ£Ό μ§κ΄μ μ΄κ³ λ§μμ λ λ€. taskκ° μμΌμλ‘ μ§κ°λ₯Ό λ°νν κ² κ°λ€.task κΈ°λ°μ issueλ₯Ό μμ±, label μ§μ issueκΈ°λ°μ PRμμ± μΉΈλ°μ°¨νΈ(todo, inprogress, done) 7. κ°λ° νκ²½ λ° μ½λ© 컨벀μ μ λν νκ·μΉ μ€μ νκΈ°
νμλ€. ν΅μ¬λ§ κ°μ§κ³ κ°κΈ°λ‘ νλ€.
리뷰λ₯Ό νμ±ννκ³ μΆμ§λ§, νμμ΄ νλ‘ νΈ1+λ°±2μΌλ‘ ꡬμ±λμ§λΌ μ½μ§ μμ κ² κ°μμ μ°μ ν΅μ κ·μ½, github μ¬μ©κ·μΉ, django μ½λ©μ»¨λ²€μ μ λν΄μλ§ λ¬Έμλ₯Ό μμ±νμλ€.8. ν¬κ³ μμ μμ¬κ²°μ κ³Όμ μμ νμ€ν κ·Όκ±° μΈμ°κΈ°
ꡬκΈμ μ³λ³΄λ λλΆλΆμ μ¬λλ€μ΄ μ΄λ¬ν λ°©ν₯μΌλ‘ μ§ννκΈΈλ, λ¨μν μ΄ κΈ°μ μ μ¬μ©ν΄λ³΄κ³ μΆμ΄μ λ±λ±
νμΈμκ² 'λ΄κ° μΈμ΄ λ Όλ¦¬μ νλ¦'μ λ§λ‘ μ€λͺ ν΄λΌ μ μλ μμ¬κ²°μ μ νμ§ μμΌλ €κ³ λ Έλ ₯νλ € νλ€. κ³μ μ§λ¬Έμ λμ ΈμΌ νλ€!'ν΄/λͺ¨λμ λμ ν μ΄μ λ 무μμΈκ°'
'쿼리λ₯Ό μ΄λ»κ² μ§μΌ μνμκ°μ μ΅μ νν μ μμκΉ'
'리ν©ν λ§μ΄ νμνλ€κ³ μκ°νλ€. μ? μ½λμ κ°λ μ±μ΄ λ¨μ΄μ§λκ°? λΆνμν μΏΌλ¦¬κ° μλκ°?'
'λ΄μ₯ λͺ¨λμ μ¬μ©νλ€κ³ ν λ, μ₯κ³ κ° μ 곡νλ κΈ°λ₯μ 100λΆ μ΄ν΄νκ³ λ΄κ° μνλ λλ‘ μ»€μ€ν°λ§μ΄μ§ν μ μμ κ²μΈκ°'
'κ³Όμ° μ΄ μ½λλ νμ΄μ μ΄λΌλ μΈμ΄μ, μ₯κ³ λΌλ νλ μμν¬μ νΉμ₯μ μ μ λ°μνλ€κ³ λ³Ό μ μλκ°'π©π»π» μν΄λ³΄μ!
무μΈκ°λ₯Ό μλ‘ λ§λ€μ΄λκ°λ κ³Όμ μ λ μ¬λμ μ€λ μ΄κ² νλ€.
μ΄λ² κ²½νμ ν΅ν΄μ λ λλ μλ‘μ΄ κ²λ€μ λ°°μ°λ©° μλ§μ λκ΄λ€μ λ§μ£Όνκ³ λ 극볡ν΄λκ° κ²μ΄λ€.
μ½μ§ μκ² μ§λ§! λ€μ μλ‘μ΄ λλ ₯μ μ»μ μ μκ² λμ΄ κΈ°μλ€.