Skip to content

Latest commit

Β 

History

History
158 lines (105 loc) Β· 7.09 KB

Framework VS Library.md

File metadata and controls

158 lines (105 loc) Β· 7.09 KB

ν”„λ ˆμž„μ›Œν¬ VS 라이브러리

ν”„λ ˆμž„μ›Œν¬(Framework)λž€?

μ›ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„μ— μ§‘μ€‘ν•˜μ—¬ κ°œλ°œν•  수 μžˆλ„λ‘ μΌμ •ν•œ ν˜•νƒœμ™€ ν•„μš”ν•œ κΈ°λŠ₯을 κ°–μΆ”κ³  μžˆλŠ” 골격, λΌˆλŒ€

  • 개발 μ‹œμ— ν•„μˆ˜μ μΈ μ½”λ“œ, μ•Œκ³ λ¦¬μ¦˜, DB 연동과 같은 κΈ°λŠ₯듀을 μœ„ν•΄ μ–΄λŠ 정도 λΌˆλŒ€(ꡬ쑰)λ₯Ό μ œκ³΅ν•œλ‹€.
  • κ°œλ°œμžλŠ” μ΄λŸ¬ν•œ λΌˆλŒ€ μœ„μ—μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ—¬ κ°œλ°œν•œλ‹€.
  • μ•±/μ›Ή/μ„œλ²„ λ“±μ˜ ꡬ동, λ©”λͺ¨λ¦¬ 관리, 이벀트 루프 λ“±μ˜ κ³΅ν†΅λœ 뢀뢄은 ν”„λ ˆμž„μ›Œν¬κ°€ κ΄€λ¦¬ν•˜λ©°, μ‚¬μš©μžλŠ” ν”„λ ˆμž„μ›Œν¬κ°€ μ •ν•΄μ€€ λ°©μ‹λŒ€λ‘œ κ΅¬ν˜„ν•œλ‹€.

ν”„λ ˆμž„μ›Œν¬μ˜ νŠΉμ§•

  • νŠΉμ • κ°œλ…λ“€μ˜ 좔상화λ₯Ό μ œκ³΅ν•˜λŠ” μ—¬λŸ¬ ν΄λž˜μŠ€λ‚˜ μ»΄ν¬λ„ŒνŠΈλ‘œ κ΅¬μ„±λ˜μ–΄μžˆλ‹€.
  • 좔상적인 κ°œλ…λ“€μ΄ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 같이 μž‘μ—…ν•˜λŠ” 방법을 μ •μ˜ν•œλ‹€.
  • μ»΄ν¬λ„ŒνŠΈλ“€μ˜ μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
  • 높은 μˆ˜μ€€μ—μ„œ νŒ¨ν„΄λ“€μ˜ 쑰직화가 κ°€λŠ₯ν•˜λ‹€.

ν”„λ ˆμž„μ›Œν¬ μ˜ˆμ‹œ

  • Java μ„œλ²„ κ°œλ°œμ— μ‚¬μš©λ˜λŠ” Spring
  • JavaScript μ„œλ²„ κ°œλ°œμ— μ‚¬μš©λ˜λŠ” Node.js
  • Python μ„œλ²„ κ°œλ°œμ— μ‚¬μš©λ˜λŠ” Django, Flask
  • μ•ˆλ“œλ‘œμ΄λ“œ μ•± κ°œλ°œμ— μ‚¬μš©λ˜λŠ” Android
  • iOS μ•± κ°œλ°œμ— μ‚¬μš©λ˜λŠ” Cocoa Touch
  • μ›Ή κ°œλ°œμ— μ‚¬μš©λ˜λŠ” Angular, Vue.js λ“±
  • μžλ°” 기반의 JSPλ₯Ό μœ„ν•œ Structs
  • λ£¨λΉ„λ‘œ μž‘μ†‘λœ MVC νŒ¨ν„΄μ„ μ΄μš©ν•˜λŠ” Ruby on Rails

라이브러리(Library)λž€?

μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•  λ•Œ, 컴퓨터 ν”„λ‘œκ·Έλž¨μ΄ μ‚¬μš©ν•˜λŠ” λΉ„νœ˜λ°œμ„± μžμ›μ˜ λͺ¨μž„

  • νŠΉμ • κΈ°λŠ₯을 λͺ¨μ•„λ‘” μ½”λ“œμ™€ ν•¨μˆ˜λ“€μ˜ μ§‘ν•©μœΌλ‘œ, μ½”λ“œ μž‘μ„± μ‹œ ν™œμš© κ°€λŠ₯ν•œ 도ꡬ듀이닀.
  • κ°œλ°œμžκ°€ λ§Œλ“  ν΄λž˜μŠ€μ—μ„œ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜λ©°, ν•„μš”ν•œ 클래슀λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방식이닀.

라이브러리 μ˜ˆμ‹œ

  • Python pip둜 μ„€μΉ˜ν•œ tensorflow, beautifulsoup
  • C++의 ν‘œμ€€ ν…œν”Œλ¦Ώ 라이브러리 STL
  • Node.jsμ—μ„œ npm으둜 μ„€μΉ˜ν•œ λͺ¨λ“ˆ
  • HTML의 ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ μ‘°μž‘μ„ λ‹¨μˆœν™”ν•˜λŠ” JQuery
  • μ›Ήμ—μ„œ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ κ°œλ°œμ— μ‚¬μš©λ˜λŠ” React.js


ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 곡톡점

일반적인 λ¬Έμ œλ“€μ„ 더 μ‰½κ²Œ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ κ°œλ°œμžλ“€μ΄ μž‘μ„±ν•œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œμ΄λ‹€.


ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 차이

ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 κ°€μž₯ 큰 μ°¨μ΄λŠ” μ œμ–΄ 흐름에 λŒ€ν•œ 주도성이 λˆ„κ΅¬μ—κ²Œ/어디에 μžˆλŠ”κ°€μ΄λ‹€.

  • ν”„λ ˆμž„μ›Œν¬λŠ” 전체적인 흐름을 μŠ€μŠ€λ‘œκ°€ μ₯κ³  있으며 μ‚¬μš©μžλŠ” κ·Έ μ•ˆμ—μ„œ ν•„μš”ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€.
  • λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ‚¬μš©μžκ°€ 전체적인 흐름을 λ§Œλ“€λ©° ν•„μš”μ— 따라 라이브러리λ₯Ό κ°€μ Έλ‹€ μ“΄λ‹€.

정리

  • 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 흐름을 μ‚¬μš©μžκ°€ 직접 λŠ₯λ™μ μœΌλ‘œ μ œμ–΄ν•˜λ©°, λ™μž‘ν•˜λŠ” 쀑에 ν•„μš”ν•œ κΈ°λŠ₯이 μžˆμ„ λ•Œ λŠ₯λ™μ μœΌλ‘œ 라이브러리λ₯Ό μ‚¬μš©ν•  뿐이닀.
    λ°˜λ©΄μ— ν”„λ ˆμž„μ›Œν¬λŠ” 거꾸둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œκ°€ ν”„λ ˆμž„μ›Œν¬μ— μ˜ν•΄ μˆ˜λ™μ μœΌλ‘œ μ‚¬μš©λ˜λ©°, 보톡 ν”„λ ˆμž„μ›Œν¬ μœ„μ— κ°œλ°œν•œ 클래슀λ₯Ό 등둝해두고, ν”„λ ˆμž„μ›Œν¬κ°€ 흐름을 μ£Όλ„ν•˜λŠ” 쀑에 κ°œλ°œμžκ°€ λ§Œλ“  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ λ§Œλ“œλŠ” 방식이닀.
  • ν”„λ ˆμž„μ›Œν¬λŠ” λΆ„λͺ…ν•œ μ œμ–΄μ˜ μ—­μ „ κ°œλ…μ΄ μ μš©λ˜μ–΄μžˆμ–΄μ•Ό ν•œλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλŠ” ν”„λ ˆμž„μ›Œν¬κ°€ μ§œλ†“μ€ ν‹€μ—μ„œ μˆ˜λ™μ μœΌλ‘œ λ™μž‘ν•΄μ•Ό ν•œλ‹€.

μ œμ–΄μ˜ μ—­μ „(IoC, Inversion of Control)μ΄λž€?

μ–΄λ– ν•œ 일을 ν•˜λ„λ‘ λ§Œλ“€μ–΄μ§„ ν”„λ ˆμž„μ›Œν¬μ— μ œμ–΄ κΆŒν•œμ„ λ„˜κΉ€μœΌλ‘œμ¨ ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œκ°€ μ‹ κ²½ 써야 ν•  것을 μ€„μ΄λŠ” μ „λž΅

  • 라이브러리의 경우, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 흐름을 μ‚¬μš©μžκ°€ 직접 μ œμ–΄ν•΄μ•Ό ν•˜μ§€λ§Œ ν”„λ ˆμž„μ›Œν¬μ˜ 경우, μ½”λ“œλ₯Ό μ—°κ²°ν•  수 μžˆλŠ” μœ„μΉ˜λ₯Ό μ œκ³΅ν•˜κ³  ν•„μš”μ— 따라 μ‚¬μš©μžκ°€ μ—°κ²°ν•œ μ½”λ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” μ œμ–΄ 흐름 κΆŒν•œμ„ 가지고 μžˆλ‹€.



λΉ„μœ λ‘œ μ΄ν•΄ν•˜κΈ°

  • μ•„μ§κΉŒμ§€ κ°œλ…μ΄ λͺ¨ν˜Έν•˜λ©΄ μ•„λž˜μ˜ λΉ„μœ λ₯Ό 보자.

1

ν”„λ ˆμž„μ›Œν¬λŠ” μ°¨, λΉ„ν–‰κΈ°, 배와 같은 νƒˆ 것이닀.
μ‚¬λžŒμ΄ νƒ€μ„œ 엔진 켜고, κΈ°μ–΄ λ„£κ³ , ν•Έλ“€ 돌리고, νƒˆ 것을 μ‘°μž‘ν•œλ‹€.

λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 톱, 망치, μ‚½κ³Ό 같은 도ꡬ(μ—°μž₯)이닀.
μ‚¬λžŒμ΄ λ“€κ³  썰고, λ‹€λ₯Έ λ„κ΅¬λ‘œ λ°”κΎΈκ³ , λ‚΄λ €μΉ˜κ±°λ‚˜ 땅을 νŒ” 수 μžˆλ‹€.

도ꡬλ₯Ό μ“Έ λ•Œ, κΈ‰ν•˜λ©΄ 썰어야 ν•  곳을 망치둜 내렀쳐도 되고, 땅을 νŒŒμ•Όν•  곳을 ν†±μœΌλ‘œ 긁어내도 λœλ‹€.
μ‚¬λžŒμ€ 도ꡬλ₯Ό μ„ νƒν•˜λŠ” μž…μž₯이기 λ•Œλ¬Έμ—, μ–΄λ–€ 도ꡬλ₯Ό μ‚¬μš©ν•˜λ“  μ›ν•˜λŠ” 것을 λ§Œλ“€μ–΄λ‚Ό 수만 있으면 λœλ‹€.

λ°˜λ©΄μ— νƒˆ 것은 정해진 곳으둜만 λ‹€λ…€μ•Ό ν•œλ‹€.
μ°¨λ₯Ό 타고 ν•˜λŠ˜μ„ λ‚ κ±°λ‚˜, λ°°λ₯Ό 타고 λ•…μœΌλ‘œ 갈 μˆ˜λŠ” μ—†λ‹€.
λͺ©μ μ— 맞게 λ§Œλ“€μ–΄μ Έ 있기 λ•Œλ¬Έμ— 정해진 κ·œμΉ™μ— 맞좰 엔진, κΈ°μ–΄, 핸듀을 잘 μ‘°μž‘ν•΄μ•Ό ν•œλ‹€.

2

ν”„λ ˆμž„μ›Œν¬λŠ” 집이닀.
이미 지어진 집에 μ‚¬λžŒμ΄ λ“€μ–΄κ°€μ„œ μƒν™œν•œλ‹€.

λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 가ꡬ이닀.
ν•„μš”ν•œ 가ꡬ듀을 집에 λ°°μΉ˜ν•˜μ—¬ μ‚¬λžŒμ΄ μ‚¬μš©ν•œλ‹€.

μ§‘μ—μ„œ μƒν™œν•˜λ©΄μ„œ, 의자λ₯Ό 옷걸이처럼 쓰기도 ν•˜κ³  ν‘Ήμ‹ ν•œ 무언가λ₯Ό λ² κ³  잘 μˆ˜λ„ μžˆλ‹€.
λͺ©μ μ— 맞게 λ‹€μ–‘ν•œ 가ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ 큰 λ¬Έμ œκ°€ μ—†λ‹€.

집은 이미 지어져 있기 λ•Œλ¬Έμ—, μ›ν•˜λŠ” 방을 μƒˆλ‘­κ²Œ λ§Œλ“€κ±°λ‚˜ 방을 μ—†μ• κΈ°κ°€ 맀우 νž˜λ“€λ‹€.
보톡 기쑴에 지어진 ꡬ쑰에 λ§žλŠ” μƒν™œμ„ ν•œλ‹€.


의문점이 생길 μˆ˜λ„ μžˆλŠ” 것듀

1. ν”„λ ˆμž„μ›Œν¬κ°€ λͺ©μ κ³Ό λ§žμ§€ μ•ŠλŠ” κ²½μš°λŠ”?

  • λ‹¨μˆœν•˜κ²Œ ν”„λ ˆμž„μ›Œν¬λ₯Ό 잘λͺ» κ°€μ Έλ‹€ μ“΄ 것이닀.
  • λͺ©μ μ— κ°€κΉŒμš΄ ν”„λ ˆμž„μ›Œν¬λ₯Ό 찾으면 λŒ€λΆ€λΆ„ μžˆμ„ 것이고 μ—†κ±°λ‚˜ μ°ΎκΈ° νž˜λ“€λ©΄ λΉ„μŠ·ν•œ ν”„λ ˆμž„μ›Œν¬λ₯Ό 라이브러리 λ‹¨κ³„μ—μ„œ λ³€κ²½ν•΄ ν”„λ ˆμž„μ›Œν¬λ‘œ λ§Œλ“€λ©΄ λœλ‹€.

2. ν”„λ ˆμž„μ›Œν¬ 없이 개발이 κ°€λŠ₯ν• κΉŒ?

  • λ‹Ήμ—°νžˆ κ°€λŠ₯ν•˜λ‹€.
  • ν•˜μ§€λ§Œ κΈ°μ‘΄ ν”„λ ˆμž„μ›Œν¬κ°€ μ œκ³΅ν•˜λ˜ λͺ¨λ“  것을 λ‹€μ‹œ λ§Œλ“€ λŠ₯λ ₯κ³Ό μ‹œκ°„μ΄ μžˆμ–΄μ•Ό ν•œλ‹€.
  • 슀슀둜 λ§Œλ“  ν”„λ ˆμž„μ›Œν¬λŠ” 버그도 슀슀둜 μž‘μ•„μ•Ό ν•˜λŠ” λ°˜λ©΄μ—, 남듀이 λ§Œλ“€μ–΄λ†“μ€ ν”„λ ˆμž„μ›Œν¬λŠ” μ“°λŠ” μ‚¬λžŒμ΄ λ§ŽκΈ°μ— μˆ˜μ •μ΄λ‚˜ μ—…λ°μ΄νŠΈκ°€ λΉ λ₯΄λ‹€.
  • λ§Œμ•½ κΈ°λŠ₯이 λ§ˆμŒμ— 듀지 μ•Šλ‹€λ©΄, ν”„λ ˆμž„μ›Œν¬λ₯Ό κ³ μ³μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. λ‹€μ‹œ λ§Œλ“œλŠ” κ²ƒλ³΄λ‹€λŠ” 훨씬 적은 μžμ›μ΄ λ“€ 것이닀.
  • 내일 λ‹Ήμž₯ μ§€λ°©μ—μ„œ μ„œμšΈλ‘œ μΆœκ·Όν•΄μ•Ό ν•˜λŠ”λ°, μ°¨λ₯Ό 직접 λ§Œλ“€μ–΄μ„œ 타고 κ°€μ•Όν•œλ‹€κ³  μƒκ°ν•΄λ³΄μž.


λ©΄μ ‘ λŒ€λΉ„

  • ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 μ°¨μ΄λŠ”?



Reference

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%B0%A8%EC%9D%B4-%EC%A0%95%EB%A6%AC

https://www.youtube.com/watch?v=G9Dl5FiaOQ4