[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ™†โ€โ™€๏ธํ‹ฐ๋ฒ„์˜ API vs Library vs Framework

์Šฌยท2025๋…„ 2์›” 25์ผ

ํ•„์ˆ˜์˜์ƒ

๋ชฉ๋ก ๋ณด๊ธฐ
36/40
post-thumbnail

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ™†โ€โ™€๏ธํ‹ฐ๋ฒ„์˜ API vs Library vs Framework

๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด๊ณ  ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ


API (Application Programming Interface)

API๋Š” "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋‹ด๋‹นํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค"์ž…๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ๋‚˜ ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•˜๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

API ์˜ˆ์‹œ

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์‚ฌ์šฉ์ž๋“ค์ด ๋ง›์ง‘์„ ๊ณต์œ ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.
์ง€๋„๊ฐ€ ํ•ต์‹ฌ ์š”์†Œ์ธ๋ฐ, ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ์—๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
์ด๋•Œ Google Maps API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

  1. ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์ด Google Maps API์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. Google Maps API๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ์š”์ฒญ url

https://maps.googleapis.com/maps/api/geocode/json?address=Seoul&key=YOUR_API_KEY

์ด URL์„ ํ†ตํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด Google Maps API๊ฐ€ ์„œ์šธ์˜ ์œ„๋„์™€ ๊ฒฝ๋„๋ฅผ ํฌํ•จํ•œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. API๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์˜ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

API ํŠน์ง•

  • ๊ตฌํ˜„๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์–‘๋งŒ ์ •์˜๋จ โ†’ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋ชฐ๋ผ๋„ ๋จ
  • ์ ‘๊ทผ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Œ โ†’ ์˜ˆ: Java API, ์—ฌ๋Ÿฌ ๊ธฐ์—…์˜ ์˜คํ”ˆ API

Library

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” "ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ"์ž…๋‹ˆ๋‹ค.
๋งˆ์น˜ ๋„์„œ๊ด€์—์„œ ํ•„์š”ํ•œ ์ฑ…์„ ๊ณจ๋ผ ์“ฐ๋“ฏ์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Library ์˜ˆ์‹œ

ํ•™์ƒ๋“ค์˜ ์„ฑ์ ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ•™์ƒ๋“ค์˜ ์„ฑ์ ์„ ๋ฌธ์ž์—ด๋กœ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
  2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•ด ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•  ๋•Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋Šฅ๋™์  ์‚ฌ์šฉ์˜ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

Library ํŠน์ง•

  • ๋…๋ฆฝ์„ฑ์„ ๊ฐ€์ง โ†’ ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜์ง€ ์•Š์Œ

  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋Šฅ๋™์ ์œผ๋กœ ์‚ฌ์šฉ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•จ

  • ์˜ˆ์‹œ โ†’ Apache Commons, Guava, Lombok, jQuery ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Framework

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” "์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ‹€"์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ด ํ‹€ ์•ˆ์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋˜๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

Framework ์˜ˆ์‹œ

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Spring Framework)๋ฅผ ์‚ฌ์šฉํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ๊ฐํ•ด ๋ด…๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์ฝ”๋“œ์—์„œ ๊ฐœ๋ฐœ์ž๋Š” hello() ๋ฉ”์„œ๋“œ๋งŒ ์ž‘์„ฑํ–ˆ์ง€๋งŒ ์‹ค์ œ ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„์€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ ํ‹€์— ๋งž์ถฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์ˆ˜๋™์ ์ธ ์‚ฌ์šฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Framework ํŠน์ง•

  • ์ƒํ˜ธ ํ˜‘๋ ฅํ•˜๋Š” ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ง‘ํ•ฉ โ†’ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์ด ๊ตฌ์กฐ์ ์œผ๋กœ ๊ฒฐํ•ฉ๋จ
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜ํ•ด ์ œ์–ด๋จ (์ˆ˜๋™์  ์‚ฌ์šฉ) โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์‹คํ–‰ ํ๋ฆ„์„ ์ฃผ๋„
  • ์˜ˆ์‹œ โ†’ Spring Framework, JUnit, Ruby on Rails ๋“ฑ

ํ•ต์‹ฌ ์ฐจ์ด์ 

Library vs API

  • API๋Š” "์—ฐ๊ฒฐ ์ธํ„ฐํŽ˜์ด์Šค"์ด๊ณ , Library๋Š” "๊ธฐ๋Šฅ ์ œ๊ณต ์ฝ”๋“œ ๋ชจ์Œ"์ž…๋‹ˆ๋‹ค.
  • API๋Š” ๋‹จ์ˆœํžˆ "์ด๋ ‡๊ฒŒ ์š”์ฒญํ•˜๋ฉด ์ด๋Ÿฐ ์‘๋‹ต์„ ์ค„๊ฒŒ"๋ผ๊ณ  ๊ฐ€์ด๋“œํ•˜๋Š” ๋ฐ˜๋ฉด์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‹ค์ œ ๊ตฌํ˜„๋œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

Library vs Framework

  • ์ฃผ๋„๊ถŒ ์ฐจ์ด โ†’ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” "์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•  ๋•Œ ํ˜ธ์ถœ"ํ•˜๋Š” ๋Šฅ๋™์  ์‚ฌ์šฉ, ํ”„๋ ˆ์ž„์›Œํฌ๋Š” "ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ๋ฆ„์„ ์ œ์–ด"ํ•˜๋Š” ์ˆ˜๋™์  ์‚ฌ์šฉ.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” "๋„๊ตฌ", ํ”„๋ ˆ์ž„์›Œํฌ๋Š” "ํ‹€"์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€