ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈ μ‹œμž‘: κ°œμš”μ™€ λͺ©ν‘œ
    ν”„λ‘œμ νŠΈ 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λΆ„ μ΄ν•΄ν•˜κ³  λ‚΄κ°€ μ›ν•˜λŠ” λŒ€λ‘œ μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•  수 μžˆμ„ 것인가'
    'κ³Όμ—° 이 μ½”λ“œλŠ” νŒŒμ΄μ„ μ΄λΌλŠ” μ–Έμ–΄μ˜, μž₯κ³ λΌλŠ” ν”„λ ˆμž„μ›Œν¬μ˜ 특μž₯점을 잘 λ°˜μ˜ν–ˆλ‹€κ³  λ³Ό 수 μžˆλŠ”κ°€'

     

    πŸ‘©πŸ»‍πŸ’»  μž˜ν•΄λ³΄μž!

    무언가λ₯Ό μƒˆλ‘œ λ§Œλ“€μ–΄λ‚˜κ°€λŠ” 과정은 늘 μ‚¬λžŒμ„ μ„€λ ˆμ΄κ²Œ ν•œλ‹€.
    이번 κ²½ν—˜μ„ ν†΅ν•΄μ„œ 또 λ‚˜λŠ” μƒˆλ‘œμš΄ 것듀을 배우며 μˆ˜λ§Žμ€ λ‚œκ΄€λ“€μ„ λ§ˆμ£Όν•˜κ³  또 κ·Ήλ³΅ν•΄λ‚˜κ°ˆ 것이닀.
    쉽진 μ•Šκ² μ§€λ§Œ! λ‹€μ‹œ μƒˆλ‘œμš΄ 동λ ₯을 얻을 수 있게 λ˜μ–΄ κΈ°μ˜λ‹€. 

     

    λŒ“κΈ€

Designed by Tistory.