songining
article thumbnail

μ£Όλ‹ˆμ–΄ 개발자의 μƒλ°˜κΈ° 회고

μ‹œκ°„μ΄ 정말 빨리간닀. 벌써 1년쀑 절반이 μ§€λ‚¬λ‹€λŠ”κ²Œ 믿기지 μ•ŠλŠ”λ‹€ πŸ₯Ή

μž…μ‚¬λ₯Ό κ²°μ •ν•˜λ©° 혼자 λ˜μƒˆκ²Όλ˜ 생각듀이 μžˆλ‹€. 

 

1. 주어진 μ—…λ¬΄λ§ŒνΌμ€ μ œλŒ€λ‘œ μ΄ν•΄ν•˜κ³  λκΉŒμ§€ 맑은 역할을 μΆ©μ‹€νžˆ ν•΄λ‚΄κΈ°

2. μ˜μ‚¬ μ†Œν†΅μ„ ν™œλ°œνžˆ ν•˜κΈ°

3. 무쑰건적인 μˆ˜μš©λ³΄λ‹€λŠ” λ‚΄ 주관을 가지고 λšœλ ·ν•˜κ²Œ μ˜κ²¬μ„ ν‘œν˜„ν•˜κΈ°

 

μ‹œκ°„μ„ λ’€λŒμ•„λ³΄λ‹ˆ κ·Έλž˜λ„ κ½€ μ‹€μ²œν•˜λ©° μ—΄μ‹¬νžˆ νšŒμ‚¬μƒν™œμ„ ν–ˆλ‹€λŠ” 생각이 λ“ λ‹€.

인턴을 ν•  λ•Œλ³΄λ‹€ μ—…λ¬΄μ˜ λ‚œμ΄λ„κ°€ λ†’μ•„μ‘Œκ³  μˆ˜λ§Žμ€ λ ˆκ±°μ‹œ μ½”λ“œλ“€μ„ λ§Œλ‚˜κΈ°λ„ ν•˜κ³  크고 μž‘μ€ μ±Œλ¦°μ§€λ“€μ΄ μžˆμ—ˆλ‹€.

λ¬Έμ œλ“€μ„ ν•˜λ‚˜μ”© ν•΄κ²°ν•΄λ‚˜κ°€λ©° 슀슀둜 μ–»λŠ” κΉ¨λ‹¬μŒλ„ μžˆμ—ˆκ³  μ–΄λŠμ •λ„ λ…Έν•˜μš°κ°€ 생긴 것 같기도 ν•˜λ‹€.

νŒ€μ›λΆ„λ“€μ΄ λ„μ™€μ£Όμ…”μ„œ 업무에 잘 적응할 수 μžˆμ—ˆκ³  좔후에 λˆ„κ΅°κ°€ λ“€μ–΄μ˜¨λ‹€λ©΄ λ‚˜λ„ 받은 도움을 λ‚¨λ“€μ—κ²Œ λ§ˆμ°¬κ°€μ§€λ‘œ μ „ν•  수 μžˆλŠ” μ‚¬λžŒμ΄ λ˜μ–΄μ•Όκ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

 

μƒλ°˜κΈ°λ₯Ό 마치며 느꼈던 생각듀과 배운 것듀을 정리해보렀 ν•œλ‹€. 

 

 

μ œν’ˆμ„ λ°”λΌλ³΄λŠ” 개발자의 관점

쒋은 μ œν’ˆμ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” κ°œλ°œμžκ°€ κ°€μ§€λŠ” 관점을 잘 ν™œμš©ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. 주어진 λ¬Έμ œλ“€μ„ 기술적으둜 μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆμ„κΉŒ κ³ λ―Όν•˜κ³ , 기술적으둜 μ ‘κ·Όν–ˆμ„ λ•Œ μ’€ 더 μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλŠ” λ°©ν–₯을 μ°Ύμ•„ μ œμ•ˆμ„ ν–ˆμ„ λ•Œ λΏŒλ“―ν•¨μ„ λŠλ‚€λ‹€.

근본적인 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” ‘μ™œ’ 에 λŒ€ν•œ 생각이 ν•„μš”ν•œ 것 κ°™λ‹€. ‘κ³ κ°μ—κ²Œ μ΄λŸ¬ν•œ κΈ°λŠ₯이 μ™œ ν•„μš”ν•œκ°€’에 λŒ€ν•΄μ„œ μƒκ°ν•˜λ‹€λ³΄λ©΄ 더 λ‚˜μ€ 해결책이 λ‚˜μ˜€κΈ°λ„ ν•œλ‹€. 무쑰건적인 μˆ˜μš©λ³΄λ‹€λŠ” κ·Έ 이유λ₯Ό κΆκΈˆν•΄ν•˜λ©΄μ„œ μƒˆλ‘œμš΄ μ‹œκ°κ³Ό ν•΄κ²° λ°©ν–₯을 λ°œκ²¬ν•  λ•Œκ°€ λ§Žλ‹€.

λ˜ν•œ 개발자의 μž…μž₯μ—μ„œλ§Œ 바라보기보닀 고객의 μž…μž₯이 λ˜μ–΄ κΈ°λŠ₯을 μƒκ°ν•΄λ³΄λŠ” 것도 ν•„μš”ν•˜λ‹€.

κΈ°λŠ₯을 μ‚¬μš©ν•˜λŠ” 고객의 μž…μž₯이 λ˜μ–΄ μΆ”ν›„ μ–΄λ–€ κΈ°λŠ₯이 좔가될 수 μžˆμ„μ§€ 생각해본닀. 이런 고민의 μ‹œκ°„μ„ 가지며 도메인을 μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν–ˆμ„ λ•Œ ν™•μž₯성을 κ³ λ €ν•œ 더 쒋은 섀계와 κ΅¬ν˜„μ΄ λ‚˜μ˜€λŠ” 것 κ°™λ‹€.

 

사내 λ ˆκ±°μ‹œ μ½”λ“œ κ°œμ„ ν•˜κΈ°

λ ˆκ±°μ‹œ μ½”λ“œλ₯Ό μ§λ©΄ν•˜λ©΄μ„œ 이걸 μ–΄λ–»κ²Œ ν•˜λ©΄ κ°œμ„ ν•  수 μžˆμ„μ§€ κ³ λ―Όν•˜κ²Œ λ˜μ—ˆλ‹€. 잘 λŒμ•„κ°€λŠ” μ½”λ“œλ₯Ό κ±΄λ“œλ Έμ„ λ•Œ λ°œμƒν•  수 μžˆλŠ” side effectλ₯Ό ν™•μ‹€νžˆ κ³ λ €ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  μž‘μ€ λΆ€λΆ„λΆ€ν„° ν•˜λ‚˜μ”© λ°”κΏ”λ‚˜κ°€κ³  μžˆλ‹€.

 

- 도메인 클래슀 λ¦¬νŒ©ν„°λ§ : 객체 λž˜ν•‘, 일급 μ»¬λ ‰μ…˜ 적용, ν’λΆ€ν•œ μƒμ„±μž

- μ„œλΉ„μŠ€μ˜ λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 κ°œμ„  : λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ 도메인 클래슀의 μ±…μž„μœΌλ‘œ μœ„μž„

- λ„ˆλ¬΄ λ§Žμ€ μ—­ν• κ³Ό μ±…μž„μ„ 가진 클래슀 μͺΌκ°œκΈ° : ν…ŒμŠ€νŠΈμ— μš©μ΄ν•˜λ„λ‘ 클래슀 뢄리 및 μ˜μ‘΄μ„± μ£Όμž…

 

μΆ”κ°€λ‘œ μ˜ˆμ „ μ„œλ²„λ“€μ˜ 경우 Spring을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  Netty + Hibernate + Armeria λ₯Ό μ‚¬μš©ν•˜λ‹€λ³΄λ‹ˆ νŠΈλžœμž­μ…˜ 처리, μ˜μ‘΄μ„± μ£Όμž…, AOPλ“± Spring의 μ†Œμ€‘ν•¨μ„ λŠλΌκΈ°λ„ ν•˜κ³  μ–΄λ–€ 뢀뢄듀이 λ‹€λ₯Έμ§€ 배울 수 μžˆμ—ˆλ˜ 것 κ°™λ‹€.

μœ„μ„± μ˜μƒκ³Ό GIS λ°μ΄ν„°λ₯Ό λ‹€λ£¨λŠ” λ„λ©”μΈμ΄λ‹€λ³΄λ‹ˆ κ½€ λ³΅μž‘ν•΄ μž‘은 λΆ€λΆ„듀을 μœ„μ£Όλ‘œ κ±΄λ“œλ¦¬κ³  μžˆλŠ”데 μ‘°κΈˆμ”© λ„메인을 μ΄ν•΄ν•΄λ‚˜κ°€λ©° νΌμ§ν•œ λΆ€λΆ„듀도 κ°œμ„ μ‹œμΌœλ‚˜κ°€κ³  μ‹Άλ‹€.

 

 

MSAλ₯Ό ν–₯ν•œ μ—¬μ •κΈ°

기쑴의 ꡬ쑰λ₯Ό μ „λΆ€ κ°ˆμ•„μ—ŽλŠ” μƒˆλ‘œμš΄ κΈ°λŠ₯ μš”κ΅¬μ‚¬ν•­μ΄ μƒκ²¨λ‚˜λ©΄μ„œ 이 뢀뢄에 λŒ€ν•΄ 도맑아 μ™„μ „νžˆ μ„œλ²„ 뢄리λ₯Ό ν•˜κΈ°λ‘œ κ²°μ •ν–ˆλ‹€.

μ„œλ²„λ₯Ό λΆ„λ¦¬ν•˜λ©° μƒˆλ‘­κ²Œ APIλ₯Ό 20개λ₯Ό λ„˜κ²Œ μ§  것 κ°™λ‹€.

νŠΉμ • UI에 Fit ν•˜μ§€ μ•Šκ³  μž¬μ‚¬μš©μ„±μ΄ 높은 API듀을 λ§Œλ“€κΈ° μœ„ν•΄ 고민이 λ§Žμ•„ μ‹œκ°„μ΄ κ½€ 였래 κ±Έλ Έλ‹€. μž¬μ‚¬μš©μ„±κ³Ό μ„±λŠ₯μ΄λΌλŠ” νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό μƒκ°ν•˜λ©° APIλ₯Ό μ„€κ³„ν•˜λŠ” 것이 μ–΄λ €μ› λ‹€.

μΆ”κ°€λ‘œ μ„œλ²„λ₯Ό λΆ„λ¦¬ν•˜λ©° 크게 κ³ λ €ν–ˆλ˜ 뢀뢄은 μ•„λž˜μ™€ κ°™λ‹€.

  • 도메인 κ°„ μ• κ·Έλ¦¬κ±°νŠΈ 잘 λΆ„λ¦¬ν•˜κΈ°
  • 도메인 μ€‘μ‹¬μ˜ ν—₯사고날 μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν•΄ ν™•μž₯μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ κ³ λ €ν•œ ꡬ쑰 μ„€κ³„ν•˜κΈ°
  • 데이터 μœ μ‹€ 없이 λ‹€λ₯Έ μ„œλ²„λ“€κ³Ό 데이터 μ •ν•©μ„± λ§žμΆ”κΈ°

μ„œλ²„κ°€ 쀑간에 λ‹€μš΄λ˜κ±°λ‚˜ μž¬μ‹œμž‘λ˜μ—ˆμ„ λ•Œ 데이터 μœ μ‹€μ΄ μΌμ–΄λ‚˜μ§€ μ•Šλ„λ‘ λ©”μ‹œμ§€ 큐λ₯Ό μ‚¬μš©ν•˜μ˜€λ‹€.

아직 μ™„λ²½νžˆ λ°°ν¬ν•˜μ§€λŠ” λͺ»ν–ˆμ§€λ§Œ 크기가 큰 κΈ°λŠ₯ μš”κ΅¬μ‚¬ν•­μ΄λ‹€λ³΄λ‹ˆ μ–Έμ œλ“  변화에 λŒ€μ‘ν•  수 μžˆλ„λ‘ 섀계에 고민을 ν–ˆκ³  μ—¬μ „νžˆ λŒ€λΉ„ν•˜κ³  μžˆλ‹€.

 

 

λŒμ•„λ³΄λ©°

νšŒμ‚¬ μƒν™œμ„ ν•˜λ©° λ§Žμ€ 것듀을 배운 것 κ°™λ‹€. 

μŠ€ν”„λ¦°νŠΈ λ‹¨μœ„λ‘œ 업무λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ κΈ°λŠ₯ κ΅¬ν˜„μ„ λΉ λ₯΄κ²Œ ν•΄λ‚΄λŠ” 것이 ν•„μš”ν–ˆμ§€λ§Œ μ²˜μŒμ—λŠ” μ½”λ“œμ˜ ν’ˆμ§ˆκ³Ό 객체지ν–₯섀계λ₯Ό μœ„ν•΄ λ§Žμ€ 것듀을 κ³ λ €ν•˜λ‹€ λ³΄λ‹ˆ κ΅¬ν˜„μ΄ λŠ¦μ–΄μ§€λŠ” 상황이 λ°œμƒν–ˆλ‹€.

μŠ€ν”„λ¦°νŠΈ 업무 기간을 λ§žμΆ”κΈ° μœ„ν•΄ μ—¬λŸ¬ μ‹œν–‰μ°©μ˜€λ₯Ό κ²ͺ으며 ꡬ체적인 섀계λ₯Ό λ°”νƒ•μœΌλ‘œ λΉ λ₯Έ κΈ°λŠ₯ 개발과 λ¦¬νŒ©ν„°λ§μ„ 적절히 상황에 따라 νŒλ‹¨ν•˜λ©° μ§„ν–‰ν•˜λŠ” λ‚˜λ§Œμ˜ 방법을 찾을 수 μžˆμ—ˆλ‹€. μ‹€λ¬΄μ—μ„œλŠ” 객체지ν–₯원칙을 μ§€ν‚€λŠ” 것도 λ°˜λ“œμ‹œ ν•„μš”ν•˜μ§€λ§Œ μ–΄λŠ 정도 νƒ€ν˜‘μ΄ ν•„μš”ν•œ 상황이 μžˆμ„ 수 μžˆλ‹€.

맀번 νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό μƒκ°ν•˜λ©° ν˜„μž¬ μƒν™©μ—μ„œ μ΅œμ„ μ˜ 방법을 μ°ΎκΈ° μœ„ν•΄ κ³ λ―Όν•˜λ‹€ 보면 μ‘°κΈˆμ”© κ°œλ°œμžλ‘œμ„œ μ„±μž₯ν•΄λ‚˜κ°ˆ 수 μžˆμ§€ μ•Šμ„κΉŒ μƒκ°ν•œλ‹€.