
[10๋ถ ํ ์ฝํก] ๐โโ๏ธํฐ๋ฒ์ API vs Library vs Framework
๊ฐ๊ฐ์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ์ดํด๋ณด๊ณ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํ ์ ์๋์ง ์ดํดํ๊ธฐ
API๋ "์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ ์ธํฐํ์ด์ค"์ ๋๋ค. ์ด์ ์ฒด์ ๋ ํน์ ์๋น์ค๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ดํ๊ณ , ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ๋๋ ์ญํ ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด์ ์ฌ์ฉ์๋ค์ด ๋ง์ง์ ๊ณต์ ํ๋ ์๋น์ค๋ฅผ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค.
์ง๋๊ฐ ํต์ฌ ์์์ธ๋ฐ, ์ง์ ๊ตฌํํ๊ธฐ์๋ ์ด๋ ต์ต๋๋ค.
์ด๋ Google Maps API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค!
https://maps.googleapis.com/maps/api/geocode/json?address=Seoul&key=YOUR_API_KEY
์ด URL์ ํตํด ์์ฒญ์ ๋ณด๋ด๋ฉด Google Maps API๊ฐ ์์ธ์ ์๋์ ๊ฒฝ๋๋ฅผ ํฌํจํ JSON ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. API๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ค๋ฆฌ ์ญํ ์ ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค!
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋์ ์งํฉ"์
๋๋ค.
๋ง์น ๋์๊ด์์ ํ์ํ ์ฑ
์ ๊ณจ๋ผ ์ฐ๋ฏ์ด ํ์ํ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ฐ์ ธ์ ์ฌ์ฉํฉ๋๋ค.
ํ์๋ค์ ์ฑ์ ์ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.

์ด์ฒ๋ผ ํ๋ก๊ทธ๋จ์ด ํ์ํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ๋ฅ๋์ ์ฌ์ฉ์ ๊ฐ๋ ์ ๋๋ค.
๋ ๋ฆฝ์ฑ์ ๊ฐ์ง โ ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ์ง ์์
์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฅ๋์ ์ผ๋ก ์ฌ์ฉ โ ์ฌ์ฉ์๊ฐ ํ์ํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํจ
์์ โ Apache Commons, Guava, Lombok, jQuery ๋ฑ์ด ์์ต๋๋ค.
ํ๋ ์์ํฌ๋ "์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ํ ํ"์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด ํ ์์์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๊ณ , ํ๋ ์์ํฌ๊ฐ ์คํ ํ๋ฆ์ ์ ์ดํฉ๋๋ค.
์คํ๋ง ํ๋ ์์ํฌ(Spring Framework)๋ฅผ ์ฌ์ฉํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ด ๋๋ค.

์ ์ฝ๋์์ ๊ฐ๋ฐ์๋ hello() ๋ฉ์๋๋ง ์์ฑํ์ง๋ง ์ค์ ์์ฒญ ์ฒ๋ฆฌ ํ๋ฆ์ ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ๋ด๋นํฉ๋๋ค.
ํ๋ ์์ํฌ๋ ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ์ ์ดํ๊ณ , ๊ฐ๋ฐ์๋ ๊ทธ ํ์ ๋ง์ถฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฉ๋๋ค. ์ด ๋๋ฌธ์ ์๋์ ์ธ ์ฌ์ฉ์ด๋ผ๊ณ ํฉ๋๋ค.
ํต์ฌ ์ฐจ์ด์
Library vs API
- API๋ "์ฐ๊ฒฐ ์ธํฐํ์ด์ค"์ด๊ณ , Library๋ "๊ธฐ๋ฅ ์ ๊ณต ์ฝ๋ ๋ชจ์"์ ๋๋ค.
- API๋ ๋จ์ํ "์ด๋ ๊ฒ ์์ฒญํ๋ฉด ์ด๋ฐ ์๋ต์ ์ค๊ฒ"๋ผ๊ณ ๊ฐ์ด๋ํ๋ ๋ฐ๋ฉด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค์ ๊ตฌํ๋ ์ฝ๋์ ๋๋ค.
Library vs Framework
- ์ฃผ๋๊ถ ์ฐจ์ด โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "์ฌ์ฉ์๊ฐ ํ์ํ ๋ ํธ์ถ"ํ๋ ๋ฅ๋์ ์ฌ์ฉ, ํ๋ ์์ํฌ๋ "ํ๋ ์์ํฌ๊ฐ ํ๋ฆ์ ์ ์ด"ํ๋ ์๋์ ์ฌ์ฉ.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "๋๊ตฌ", ํ๋ ์์ํฌ๋ "ํ"์ด๋ผ๊ณ ์ดํดํ๋ฉด ์ฝ์ต๋๋ค.