Go lang Ent Framework

CornerΒ·2022λ…„ 5μ›” 20일
0

Go

λͺ©λ‘ 보기
9/9
post-thumbnail

Ent ν”„λ ˆμž„μ›Œν¬

λ“€μ–΄κ°€κΈ°

πŸ’‘ Go μ–Έμ–΄λ₯Ό 처음 μ‹œμž‘ν•˜λ©΄μ„œ Go둜 μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“œλŠ” 것을 λͺ©μ μœΌλ‘œ 두고 μžˆμŠ΅λ‹ˆλ‹€. 그런데 GoλŠ” ν”„λ ˆμž„ μ›Œν¬κ°€ λ‹€μ–‘ν•˜κ³ , μ •ν˜•ν™” λ˜λŠ”κ²Œ μ—†μ–΄ 아킀텍쳐 λ‚΄μš©μ„ μ°Ύμ•„λ³΄λŠ”κ²Œ νž˜λ“­λ‹ˆλ‹€. μž₯점도 λ§Žμ§€λ§Œ 단점도 λΆ„λͺ… μ‘΄μž¬ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.

κ²Œλ‹€κ°€ μ›Ή λ°±μ—”λ“œ κ°œλ°œμ— μ΅μˆ™μΉ˜ μ•Šμ€ μ‚¬λžŒλ“€μ—κ² μžλ£Œκ°€ 턱없이 λΆ€μ‘±ν•  κ²ƒμž…λ‹ˆλ‹€. 이 λ‚΄μš©μ„ λ°œνŒμ„ μ‚Όμ•„ 도움이 λ˜μ—ˆμœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€. μ € λ˜ν•œ 곡뢀쀑이기에..

3 계측 ꡬ쑰 (3-Tier Architecture)

βœ… Presentation layer - μ–΄λ–»κ²Œ 데이터가 ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 보여쀄 지에 λŒ€ν•œ μž‘μ—…μ„ λ‹΄λ‹Ή, ν΄λΌμ΄μ–ΈνŠΈλŠ” 이 계측을 톡해 μƒν˜Έμž‘μš©μ„ ν•©λ‹ˆλ‹€.

βœ… Business/Domain layer - Presentation layer와 Data acess layer 사이에 μœ„μΉ˜ν•΄ λΉ„μ§€λ‹ˆμŠ€ λ£°κ³Ό κ·Έ 룰을 λ”°λ₯΄λŠ” λΉ„μ§€λ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„. 보톡 Service라고 ν•˜λŠ” 클래슀(ν˜Ήμ€ νƒ€μž… λ“±)κ°€ μœ„μΉ˜ν•œλ‹€.

βœ… Data Access Layer - DB에 μ ‘κ·Όν•˜λŠ” μž‘μ—…μ„ λ‹΄λ‹Ή. DAO(Data Access Object, Respository)

λŒ€λΆ€λΆ„μ˜ Web Application은 3-Tier Architecture λΌκ³ ν•˜λŠ” ꡬ쑰둜 기초둜 ν•˜μ—¬ κ°œλ°œλ©λ‹ˆλ‹€.

개발 κ³Όμ •μ—μ„œ 번거둜운 κΈ°λŠ₯듀을 ν”„λ ˆμž„μ›Œν¬ or λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ œκ³΅ν•΄μ£ΌλŠ” κΈ°λŠ₯으둜 κ°€μ Έλ‹€ μ‚¬μš©ν•΄ μ’€ 더 μœ μ§€ λ³΄μˆ˜ν•˜κΈ° μ‰¬μš΄ κ°œλ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


Golang에 DB Framework

Golangμ—λŠ” Django와 JPA 같은 DB 관리 ν”„λ ˆμž„μ›Œν¬λŠ” gorm 이 μ‘΄μž¬ν•˜μ§€λ§Œ, μš”μ¦˜ μΆ”μ„Έλ₯Ό 보면 entλΌλŠ” νŒ¨ν‚€μ§€κ°€ μ«“μ•„μ˜€λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

github star history만 봐도 entλŠ” λ¬΄μ„­κ²Œ μ„±μž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μž₯점을 λ‚˜μ—΄ν•˜μžλ©΄..

  1. νƒ€μž…μ„ λ°”νƒ•μœΌλ‘œ μ•ˆμ „ν•˜κ³  νŽΈλ¦¬ν•˜κ²Œ ν…Œμ΄λΈ”μ„ 섀계할 수 μžˆμŠ΅λ‹ˆλ‹€.
    1. ν…Œμ΄λΈ”, 컬럼 μ •μ˜λ“€μ΄ λͺ¨λ‘ ent νŒ¨ν‚€μ§€μ˜ 컬럼 type ν˜Ήμ€ ν…Œμ΄λΈ” type, 관계 type 등등을 μ΄μš©ν•΄μ„œ μ •μ˜ν•  수 있기 λ•Œλ¬Έμ— νŽΈλ¦¬ν•©λ‹ˆλ‹€. 미리 μ •μ˜λœ νƒ€μž…κ³Ό λ©”μ†Œλ“œλ“€λ‘œ λ‹€μ–‘ν•œ 섀정이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  2. λ‹€μ–‘ν•œ λ©”μ†Œλ“œ 제곡
    1. go generate라고 ν•˜λŠ” κΈ°λŠ₯을 톡해 μš°λ¦¬κ°€ μ •μ˜ν•œ μŠ€ν‚€λ§ˆ(ν…Œμ΄λΈ” 및 ν•„λ“œ μ„€μ •)을 λ°”νƒ•μœΌλ‘œ λ‹€μ–‘ν•œ νƒ€μž…κ³Ό λ©”μ†Œλ“œλ“€μ„ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. 이 λΆ€λΆ„μœΌλ‘œ 인해 κ½€ λΉŒλ“œ μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜λŠ” λŠλ‚Œμ΄κΈ΄ ν•˜μ§€λ§Œ, 겨우 secλ‹¨μœ„ μ°¨μ΄μž…λ‹ˆλ‹€. entκ°€ μ œκ³΅ν•΄μ£ΌλŠ” λ©”μ†Œλ“œλ“€μ€ 개발적 νŽΈμ˜μ™€ μ•ˆμ „μ„±μ΄ 훨씬 λ›°μ–΄λ‚©λ‹ˆλ‹€.

profile
Full-stack Engineer. email - corner3499@kakao.com,

0개의 λŒ“κΈ€