Trying Another Way... (Dependency Injection)

Trying Another Way... (Dependency Injection)

고랭 λ°±μ—”λ“œ μ„œλ²„ ꡬ좕 방법

μ„Ήμ…˜ κ°œμš”: 이 μ„Ήμ…˜μ—μ„œλŠ” κ³ λž­μ„ μ‚¬μš©ν•˜μ—¬ λ°±μ—”λ“œ μ„œλ²„λ₯Ό μ„€μ •ν•˜κ³  κ΅¬μ‘°ν™”ν•˜λŠ” 방법에 λŒ€ν•΄ μ†Œκ°œν•©λ‹ˆλ‹€.

고랭 λ°±μ—”λ“œ μ„œλ²„ κ΅¬μΆ•μ˜ 어렀움

  • μ—¬λŸ¬ κ°€μ§€ λ‹€λ₯Έ μ‹œλ„λ₯Ό 거친 κ²°κ³Ό, Express μ•±μ²˜λŸΌ κ΅¬μ‘°ν™”ν•˜κ±°λ‚˜ 고의 λ°©μ‹μœΌλ‘œ μ‹œλ„ν•œ κ²½ν—˜μ΄ 있음.
  • μƒˆλ‘œμš΄ λ°©μ‹μœΌλ‘œ μ ‘κ·Όν•˜μ—¬ λ§Žμ€ μž₯점을 λ°œκ²¬ν–ˆμœΌλ©° μ΄λ²ˆμ— μ†Œκ°œν•  방법이 μœ λ§ν•˜λ‹€κ³  생각함.
  • 고와 κ³  λ°±μ—”λ“œμ— λŒ€ν•΄ 배운 κ°€μž₯ 큰 것 쀑 ν•˜λ‚˜λŠ” μ™„λ²½ν•œ 해결책이 μ—†λ‹€λŠ” κ²ƒμž„.

μ˜μ‘΄μ„± 관리와 νŒ¨ν‚€μ§€ FX

  • μ˜μ‘΄μ„± 관리λ₯Ό μœ„ν•΄ νŒ¨ν‚€μ§€ FXλ₯Ό μ‚¬μš©ν•˜λŠ”λ°, μ΄λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 더 합리적인 λ°©μ‹μœΌλ‘œ κ΅¬μ‘°ν™”ν•˜λŠ” 데 도움이 됨.
  • FXλ₯Ό ν™œμš©ν•˜μ—¬ Ghost Felt To Do의 λ°±μ—”λ“œ APIλ₯Ό μ–΄λ–»κ²Œ κ΅¬μ‘°ν™”ν•˜λŠ”μ§€ μ„€λͺ…함.

μ˜μ‘΄μ„± μ£Όμž…κ³Ό FX

  • FXλŠ” μ˜μ‘΄μ„± 관리 μ‹œμŠ€ν…œμœΌλ‘œ, μ˜μ‘΄μ„± μ£Όμž… κ°œλ…μ„ ν™œμš©ν•˜μ—¬ μž‘λ™ν•¨.
  • FXκ°€ μš°λ¦¬μ—κ²Œ μ œκ³΅ν•˜λŠ” 핡심 κ°œλ…μ€ μ˜μ‘΄μ„±μ„ μ œκ³΅ν•˜κ³  이λ₯Ό λ‹€λ₯Έ μš”μ†Œλ“€μ— μ œκ³΅ν•  수 μžˆλ„λ‘ 함.

핡심 μ»΄ν¬λ„ŒνŠΈμ™€ μ˜μ‘΄μ„± 제곡

  • λ°±μ—”λ“œμ˜ 핡심 μ»΄ν¬λ„ŒνŠΈμ™€ 각 μš”μ†Œλ“€ κ°„μ˜ μ˜μ‘΄μ„± μ œκ³΅μ— λŒ€ν•œ μ„€λͺ….

μ½”λ“œ 리뷰 및 μ˜μ‘΄μ„± μ£Όμž…

μ„Ήμ…˜ κ°œμš”: 이 μ„Ήμ…˜μ—μ„œλŠ” μ½”λ“œμ˜ ꡬ쑰와 μ˜μ‘΄μ„± μ£Όμž…μ— λŒ€ν•΄ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.

μ½”λ“œ ꡬ쑰 및 μ£Όμš” κΈ°λŠ₯

  • μ½”λ“œλŠ” 메인 ν•¨μˆ˜λ₯Ό ν¬ν•¨ν•˜κ³  있으며, μ œκ³΅ν•˜κ³  μ†ŒλΉ„ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  • newFiberServer λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ Fiber μ„œλ²„λ₯Ό μƒμ„±ν•˜κ³  μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • userHandlersλ₯Ό μ£Όμž…ν•˜μ—¬ μ•± λ‚΄μ—μ„œ μ΄ˆκΈ°ν™”ν•˜κ³  λΌμš°νŒ…μ„ μ„€μ •ν•©λ‹ˆλ‹€.
  • FX의 라이프사이클 μ„Ήμ…˜μ€ μ•± μ‹œμž‘ 및 μ’…λ£Œ μ‹œ λ™μž‘μ„ κ΄€λ¦¬ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.
  • onstart ν•¨μˆ˜λ₯Ό κ°€μ§„ FX 후크λ₯Ό μ‚¬μš©ν•˜μ—¬ 앱을 μ‹œμž‘ν•˜λ©°, 메인 μŠ€λ ˆλ“œ 차단을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ κ³ λ£¨ν‹΄μœΌλ‘œ ν˜ΈμΆœλ©λ‹ˆλ‹€.

Fiber μ„œλ²„ 정리 및 λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°

μ„Ήμ…˜ κ°œμš”: Fiber μ„œλ²„μ˜ 정리 μž‘μ—…κ³Ό λ°μ΄ν„°λ² μ΄μŠ€ 연결에 λŒ€ν•΄ λ‹€λ£Ήλ‹ˆλ‹€.

정리 μž‘μ—… 및 λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°

  • onstop ν•¨μˆ˜λŠ” 앱을 μ•ˆμ „ν•˜κ²Œ μ’…λ£Œμ‹œν‚€κΈ° μœ„ν•œ 클린업 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  • createPostgresConnection λ©”μ„œλ“œλŠ” FX 라이프사이클을 톡해 λ°μ΄ν„°λ² μ΄μŠ€ 연결을 μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° μ΄ˆκΈ°ν™” ν›„ 였λ₯˜ μ²˜λ¦¬κ°€ ν•„μš”ν•œ 경우 ν•΄λ‹Ή 였λ₯˜λ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜μ‘΄μ„± 제곡과 ν™œμš©

μ„Ήμ…˜ κ°œμš”: FXλ₯Ό 톡해 제곡된 μ˜μ‘΄μ„±λ“€μ„ ν™œμš©ν•˜λŠ” 방법에 λŒ€ν•΄ λ‹€λ£Έ.

μ˜μ‘΄μ„± 제곡과 ν™œμš©

  • PGX ν’€κ³Ό μ‚¬μš©μž μ €μž₯μ†Œ λ“± μ—¬λŸ¬ μš”μ†Œλ“€μ„ FX에 μ œκ³΅ν•˜μ—¬ 각 ν•¨μˆ˜μ—μ„œ ν•„μš”ν•œ μ˜μ‘΄μ„±λ“€μ„ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ°œν‘œ 및 ꡬ쑰 μ„€μ •

μ„Ήμ…˜ κ°œμš”: 이 μ„Ήμ…˜μ—μ„œλŠ” νŒŒμΌμ„ μ„€μ •ν•˜κ³  κ΅¬μ‘°ν™”ν•˜λŠ” κ°„λ‹¨ν•œ 방법에 λŒ€ν•΄ λ…Όμ˜ν•©λ‹ˆλ‹€.

파일 ꡬ쑰 μ„€μ •

  • νŒŒμΌμ„ μ„€μ •ν•˜κ³  μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬μ‘°ν™”ν•˜λŠ” 맀우 μ‰¬μš΄ 방법이 μžˆμŠ΅λ‹ˆλ‹€.
  • 일뢀 μ‚¬λžŒλ“€μ€ 관심사에 따라 κ·Έλ£Ήν™”ν•˜λŠ” 것을 μ’‹μ•„ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 개인 디렉토리 λ‚΄μ—μ„œ μ‚¬μš©μž 디렉토리λ₯Ό κ°€μ§€κ³  κ·Έ μ•ˆμ— ν•Έλ“€λŸ¬ 및 μ €μž₯μ†Œμ™€ 같은 것듀을 λ‘λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • 개인적으둜 μ „μ—­μ μœΌλ‘œ Handlers 및 Storage μ•„λž˜μ— λͺ¨λ“  것을 λ‘λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€. 이것은 개인적인 μ·¨ν–₯이며 μ ˆλŒ€λ‘œ μ˜³κ±°λ‚˜ ν‹€λ¦° 것이 μ•„λ‹™λ‹ˆλ‹€.

μ†ŒμŠ€ μ½”λ“œ λ‹€μš΄λ‘œλ“œ 및 μ‹€ν—˜

μ„Ήμ…˜ κ°œμš”: μ†ŒμŠ€ μ½”λ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ 직접 μ‹€ν—˜ν•΄λ³΄λŠ” μ€‘μš”μ„±μ— λŒ€ν•΄ κ°•μ‘°ν•©λ‹ˆλ‹€.

μ†ŒμŠ€ μ½”λ“œ μ‹€ν—˜

  • μ†ŒμŠ€ μ½”λ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  직접 μ‹€ν—˜ν•΄ λ³΄λŠ” 것을 κ°•λ ₯히 ꢌμž₯ν•©λ‹ˆλ‹€.
  • 전체 λ‚΄μš©μ„ ν•œ 쀄씩 μžμ„Ένžˆ μ„€λͺ…ν•˜λŠ” λŒ€μ‹  직접 μ‹€ν—˜ν•˜λΌκ³  κΆŒμœ ν•©λ‹ˆλ‹€.
Video description

NOTE: Before or after watching this video I HIGHLY recommend you read over the FX documentation. FX is weird, and while a video will help you get the idea of what it does, nothing can replace actually doing it. It is a stupidly useful package, but its up to you to learn it! FX: https://uber-go.github.io/fx/get-started/ Source Code for Example: https://github.com/bmdavis419/svelte-go-testing This video goes over an example of how one could structure a GoLang backend. This is not the only way to do it, nor is it objectively the best way to do it, but it does solve the problem. This is part of the ongoing SvelteKit + GoLang series. πŸš€ DEPLOY YOUR BACKENDS πŸš€ [Railway](https://railway.app/?referralCode=HsdtLw) My Socials 🐦 [twitter](https://twitter.com/benjamin41902) πŸ“· [insta](https://www.instagram.com/bmdavis419/) πŸ’Ύ [github](https://github.com/bmdavis419) My Companies πŸ“ˆ [insiderviz](https://www.insiderviz.com) πŸ“… [BLOK](https://www.theblokapp.com/) (coming soon) #golang #programming #engineering