์ถ์ฒ: https://www.youtube.com/watch?v=We8JKbNQeLo

๐ API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ๋ ๊ฐ๊ฐ ๋ฌด์์ด๋ฉฐ, ๊ทธ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
API๋ ํ๋ก๊ทธ๋จ ๊ฐ ์ฐ๊ฒฐ ๋ค๋ฆฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ํ ๊ธฐ๋ฅ ๋ชจ์, ํ๋ ์์ํฌ๋ ๊ฐ๋ฐ ํ๊ฒฝ ํ์ด๋ฉฐ, ๊ตฌํ ๋ก์ง ์ ๋ฌด ๋ฐ ํ๋ก๊ทธ๋จ์ ํ๋ฆ ์ฃผ๋๊ถ์ ๋ฐ๋ผ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๐ก API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์ ํต์ฌ์ ์ธ ์ฐจ์ด์ ์ ํ ๋ฌธ์ฅ์ผ๋ก ์์ฝํ๋ฉด?
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ API์ ์ฐจ์ด๋ ๊ตฌํ ๋ก์ง์ ์ ๋ฌด์ด๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ฐจ์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ฆ ์ฃผ๋๊ถ์ ๋๊ฐ ๊ฐ์ง๋์ง์ ๋ฌ๋ ค ์์ต๋๋ค.
๋ฐฐ๊ฒฝ์ง์: API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์ ์ธ๊ณ
์ด ์๋ฃ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์ธ ๊ฐ์ง ๋๊ตฌ, ์ฆ API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์ ๊ฐ๋
๊ณผ ์ฐจ์ด์ ์ ๋ช
์พํ๊ฒ ์ค๋ช
ํฉ๋๋ค. ํนํ, ํ๋ ์์ํฌ์ ํต์ฌ์ ์ดํดํ๋ ๋ฐ ๊ฒฐ์ ์ ์ธ ์ญํ ์ ํ๋ ์ ์ด์ ์ญ์ (IoC) ์์น์ ๊น์ด ์๊ฒ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
์ดํด๋ฅผ ๋๊ธฐ ์ํด, ์๋ฃ์ ๋ฑ์ฅํ๋ ์ฉ์ด์ ๋งฅ๋ฝ์ ์ธ ๊ฐ์ง ํต์ฌ ๋ฐฐ๊ฒฝ์ง์์ผ๋ก ๋๋์ด ์ฝ๊ฒ ํ์ด ์ค๋ช
ํฉ๋๋ค.
1. ํต์ฌ ์์น: ์ ์ด์ ์ญ์ (Inversion of Control, IoC)
์๋ฃ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ๊ฐ๋ฅด๋ ๊ฐ์ฅ ์ค์ํ ์ฐจ์ด์ ์ผ๋ก ์ธ๊ธ๋ ๊ฒ์ด ๋ฐ๋ก ํ๋ฆ์ ์ฃผ๋๊ถ์
๋๋ค. ์ด ์ฃผ๋๊ถ์ ์ฐจ์ด๋ฅผ ์ค๋ช
ํ๋ ์ํํธ์จ์ด ๋์์ธ์ ํต์ฌ ์์น์ด ์ ์ด์ ์ญ์ (IoC)์
๋๋ค.

- ์ ์ด์ ์ญ์ (IoC)์ ์ ์:
- ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๊ฐ ๋ค๋ฅธ ํจ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ํธ์ถํ๋ฉฐ ์คํ ํ๋ฆ์ ํต์ ํฉ๋๋ค.
- ํ์ง๋ง IoC๋ ์คํ ํ๋ฆ์ ๋ํ ์ฃผ๋๊ถ์ ๊ฐ๋ฐ์์ ์ฝ๋์์ ํ๋ ์์ํฌ๋ก ๋๊ธฐ๋ ์ค๊ณ ๋ฐฉ์์
๋๋ค.
- ์ด ์์น์ ๊ฐ์ฅ ์ฝ๊ฒ ์ค๋ช
ํ๋ ๋ณ๋ช
์ ๋ฐ๋ก "ํ ๋ฆฌ์ฐ๋ ์์น (Hollywood Principle)" ์
๋๋ค.
- ํ ๋ฆฌ์ฐ๋ ์์น์ ๋น์ :
- "์ ํฌ์๊ฒ ์ ํํ์ง ๋ง์ธ์, ์ ํฌ๊ฐ ์ฐ๋ฝ๋๋ฆฌ๊ฒ ์ต๋๋ค (Don't call us, we'll call you)."
- ๋ง์น ์ํ ์ฐ์
์์ ์ค๋์
์ ๋ณธ ๋ฐฐ์ฐ๊ฐ ์ ์์์๊ฒ ๊ณ์ ์ ํํ ์ ์๊ณ , ์ ์์๊ฐ ํ์ํ ๋๋ง ๋ฐฐ์ฐ์๊ฒ ์ฐ๋ฝํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋ ์์ํฌ๋ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ํฐ ํ(๋ผ๋)์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํ์ํ ๋, ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ํธ์ถํฉ๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ vs. ํ๋ ์์ํฌ (ํ๋ฆ์ ์ฐจ์ด):
| ํน์ง | ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Library) | ํ๋ ์์ํฌ (Framework) |
|---|
| ์ ์ด๊ถ (ํ๋ฆ์ ์ฃผ๋๊ถ) | ์์ฉ ํ๋ก๊ทธ๋จ (๊ฐ๋ฐ์) | ํ๋ ์์ํฌ |
| ์๋ ๋ฐฉ์ | ๊ฐ๋ฐ์๊ฐ ํ์ํ ๋ ๋ฅ๋์ ์ผ๋ก ํจ์ ํธ์ถ | ํ๋ ์์ํฌ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ฅผ ์๋์ ์ผ๋ก ํธ์ถ |
| ๋น์ | ๊ฐ๋ฐ์๊ฐ ๋๊ตฌ๋ฅผ ์ง์ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฒ | ๊ฐ๋ฐ์๊ฐ ํ ์์ ์์ ์ ์ฝ๋๋ฅผ ๋ผ์ ๋ฃ์ผ๋ฉด ํ์ด ์์์ ์คํ์ํค๋ ๊ฒ |
- ์ ์ด ํ๋ฆ ์๊ฐํ (IoC):

2. ๊ธฐ์ ์ ๋ฉ์ปค๋์ฆ: Spring Framework์ ์ด๋
ธํ
์ด์
๋ฐํ์๊ฐ ํ๋ ์์ํฌ์ ์์๋ก ๋ Spring Framework๋ IoC ์์น์ ๊ฐ์ฅ ์ ๊ตฌํํ ๋ํ์ ์ธ ์์์
๋๋ค. ํนํ, ๊ฐ๋ฐ์๊ฐ ์์ฑํ '๋น์ฆ๋์ค ๋ก์ง'์ ํ๋ ์์ํฌ์ ์ฝ๊ฒ ์ฐ๊ฒฐํ๋ ๋ฐ ์ด๋
ธํ
์ด์
(@Annotation)์ด ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค.

-
Spring Framework๋?
- Java ์ธ์ด ๊ธฐ๋ฐ์ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ ์ค ํ๋์
๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ ์ค์ ์ด๋ ๊ธฐ๋ฐ ์ฝ๋๋ฅผ ์์ฑํ ํ์ ์์ด, ํต์ฌ ๊ธฐ๋ฅ(๋น์ฆ๋์ค ๋ก์ง)์ ์ง์คํ ์ ์๋๋ก ๋ค์ํ ๊ธฐ๋ฐ ํ๊ฒฝ๊ณผ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
์ด๋
ธํ
์ด์
(@Annotation)์ ์ญํ :
- ์ด๋
ธํ
์ด์
์ Java ์ฝ๋์ ์ถ๊ฐํ๋ ๋ฉํ๋ฐ์ดํฐ(metadata)์
๋๋ค. ์ฆ, ์ฝ๋ ์์ฒด์ ๋์์ ์๋์ง๋ง, ํ๋ ์์ํฌ์๊ฒ ์ด ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง์ ๋ํ '์ง์นจ'์ ์ ๊ณตํฉ๋๋ค.
- ์์:
@Controller: ์ด ํด๋์ค๋ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ค๊ณ Spring์๊ฒ ์๋ ค์ค๋๋ค.
@Service: ์ด ํด๋์ค๋ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ ์๋น์ค ๊ณ์ธต์ ์ญํ ์ ํ๋ค๊ณ ์๋ ค์ค๋๋ค.
-
IoC์ ์ด๋
ธํ
์ด์
์ ์ฐ๊ฒฐ:
- ์๋ฃ์์ ์ธ๊ธํ๋ฏ์ด, ๊ฐ๋ฐ์๋ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ ์ด๋
ธํ
์ด์
์ ๋ถ์
๋๋ค .
- ํ๋ฆ: ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด โ\rightarrowโโ Spring Framework(์ฃผ๋๊ถ ๋ณด์ ์)๊ฐ ์์ฒญ์ ๋ฐ์์ โ\rightarrowโโ ์ด๋
ธํ
์ด์
(์ง์นจ)์ ํ์ธํ๊ณ โ\rightarrowโโ๊ฐ๋ฐ์๊ฐ ์์ฑํ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถ(๋งคํ)ํฉ๋๋ค.
- ์ฆ, ๊ฐ๋ฐ์๋
@Controller์ ๊ฐ์ ์ด๋
ธํ
์ด์
์ ํตํด ์์ ์ด ์์ฑํ ์ฝ๋๋ฅผ "์ฌ๊ธฐ์ ๋ผ์ ๋ฃ์ด์ฃผ์ธ์" ๋ผ๊ณ ์์ฒญํ๋ฉฐ, Spring์ด "์๊ฒ ์ต๋๋ค. ์ด ์์ ์ ์ ๊ฐ ํธ์ถํด๋๋ฆฌ์ฃ " ๋ผ๊ณ ์๋ตํ๋ ๋ฐฉ์์ผ๋ก IoC๊ฐ ์คํ๋ฉ๋๋ค.
-
์คํ๋ง ํ๋ ์์ํฌ์ ์ด์ :
- ์คํ๋ง ํ๋ ์์ํฌ๋ ๋ณต์กํ ์น ์์ฒญ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฑ ๋ฐ๋ณต์ ์ด๊ณ ๊ธฐ๋ฐ์ด ๋๋ ์์
์ ๋์ ์ฒ๋ฆฌํ์ฌ, ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ก์ง (์: ๋ง์ง ๊ณต์ , ์์ฝ ์ฒ๋ฆฌ)์๋ง ์ง์คํ ์ ์๋๋ก ๋๋ ์ญํ ์ ํฉ๋๋ค.
1. API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ ์ค๋ช
๊ฐ์
- ๋ฐํ ๋ชฉํ: ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํต์ฌ ๊ฐ๋
์ธ API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ ์ธ ๊ฐ์ง์ ๋ํด ์ค๋ช
ํ๋ค.
- ๋ฐํ ์ฃผ์์ : ๋ฐํ์๊ฐ ํ์ตํ๋ฉฐ ์ด๋ ต๊ณ ์ ๋งคํ๋ ๊ฐ๋
๋ค์ ์ต๋ํ ์ฝ๊ฒ ํ์ด์ ์ค๋ช
ํ๋ ๊ฒ์ ์ค์ ์ ๋๋ค.

2. API (Application Programming Interface) ์ ์ ๋ฐ ํน์ง

2.1. API์ ์ ์์ ์ญํ
- API ์ฝ์ด: API๋ Application Programming Interface์ ์ฝ์ด์ด๋ค.
- API์ ์ญํ : API๋ ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์ฐ๊ฒฐ์ ์์ผ์ฃผ๋ ๋ค๋ฆฌ ์ญํ ์ ํ๋ค.
- API ํน์ง:
- ๊ตฌํ ๋ด์ฉ๊ณผ๋ ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ ๋ฐฉ๋ฒ๋ง ์ ์๋์ด ์๋ค.
- API์ ๋ฐ๋ผ ๊ถํ์ด ํ์ํ ์ ์๋ค.
- API์ ์์: ์๋ฐ API์ ์ฌ๋ฌ ๊ธฐ์
๋ค์ ์คํ API๊ฐ ์๋ค.
2.2. API ์์: ์ง๋ ์๋น์ค ๊ณต์ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ
- ๋ฌธ์ ์ํฉ ์ค์ :
- ์ฌ์ฉ์๋ผ๋ฆฌ ๋ง์ง ์์น๋ฅผ ์ง๋๋ก ๊ณต์ ํ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค.
- ๊ฐ๋ฐ์๊ฐ ์ง์ ์ง๋๋ฅผ ๋ง๋ค๊ธฐ์๋ ์๊ฐ ์๋ชจ๊ฐ ํฌ๊ณ ์ ํ๋๊ฐ ๋ฎ์ ์ ์์ผ๋ฏ๋ก, ๊ธฐ์กด์ ์ง๋ ์๋น์ค๋ฅผ ์ด์ฉํ๊ณ ์ ํ๋ค.
- API ํ์ฉ ๊ณผ์ :
- ๊ฐ๋ฐ์๊ฐ ๋ง๋๋ ๋ง์ง ๊ณต์ ํ๋ก๊ทธ๋จ์์ ์ธ๋ถ ์ง๋ ์๋น์ค(์ง์ฌ)๋ฅผ ์ด์ฉํ๋ ค๊ณ ํ๋ค.
- ์ง๋ ์๋น์ค ์ ๊ณต ๊ธฐ์
(์ง์ฌ)์ "์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ฐ ์์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๊ฐ ์ํ๋ ์ง๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ค๊ฒ"๋ผ๊ณ ์ฌ์ฉ๋ฒ์ ์ ์ํ๋ค.
- API์ ์ญํ ํ์ธ:
- ๊ฐ๋ฐ์๋ ์ง์ฌ๊ฐ ์ ํ URL ๊ฒฝ๋ก๋ฅผ ํตํด ์์ฒญ์ ๋ณด๋ด๊ณ ์ํ๋ ์ง๋ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋ค.
- ์ด๋, ๊ฐ๋ฐ์์ ํ๋ก๊ทธ๋จ๊ณผ ์ง์ฌ์ ์ง๋ ์๋น์ค ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ๋ค๋ฆฌ ์ญํ ์ ํ๋ ๊ฒ์ด ๋ฐ๋ก API์ด๋ค.
- ๊ฐ๋ฐ์๋ API๋ฅผ ํตํด ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ์ ์ด์ฉํ๊ฒ ๋๋ค.
2.3. ๊ตฌ๊ธ ํด๋ผ์ฐ๋ API ์์
- ๊ตฌ๊ธ API ํํฉ: ๊ตฌ๊ธ ํด๋ผ์ฐ๋ ํ๋ ์ด์ค ํ์ด์ง์ ๊ฐ๋ฉด ๋ถ์ผ๋ณ๋ก ๋งค์ฐ ๋ค์ํ API๊ฐ ์ ๊ณต๋๋ค.
- ์ง๋ ๊ด๋ จ API: ๊ตฌ์ฒด์ ์ผ๋ก ์ง๋ ๋ถ์ผ์ API๋ฅผ ํ์ธํด ๋ณด๋ฉด, ๋ค์ํ ๊ธฐ๋ฅ๋ณ๋ก ์ธ๋ถํ๋ API๋ค์ ๋ณผ ์ ์๋ค.
- ๊ฐ๋ฐ ํ์ฉ ๋ฐฉ์: ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ํ์ํ ๊ธฐ๋ฅ์ด ์๋ค๋ฉด, ์ํ๋ API๋ฅผ ์ฐพ์์ ํ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฐ์ ์์ํ๊ฒ ์งํํ๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค.
3. ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Library) ์ ์ ๋ฐ ํน์ง
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ฏธ: ๋จ์ด ์์ฒด๊ฐ ๋์๊ด์ ์๋ฏธํ๋ฉฐ, ๋์๊ด์ ์ด์ฉํ๋ฏ ํ์ํ ๊ธฐ๋ฅ์ ๋น๋ ค ์ฐ๋ ๊ฐ๋
์ด๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์: ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํด ํ์ํ ๊ธฐ๋ฅ์ด๋ ํจ์๋ฅผ ๋ชจ์ ๋์ ์ํํธ์จ์ด๋ฅผ ์๋ฏธํ๋ค.
- ์์ฃผ ์ฌ์ฉํ๋ ํจ์๋ ๊ธฐ๋ฅ๋ค์ ๋ชจ์ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ง:
- ๋
๋ฆฝ์ฑ: ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฅ๋์ ์ฌ์ฉ: ์์ฉ ํ๋ก๊ทธ๋จ(๊ฐ๋ฐ์๊ฐ ๋ง๋ ์ฝ๋)์ด ๋ฅ๋์ ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ํน์ง์ด๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฅ๋์ ์ฌ์ฉ ์์:
- ํ๋ก๊ทธ๋จ ๋ชฉํ: ํ์๋ค์ ์ฑ์ ํ๊ท ์ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ ๋ค.
- ์ฒ๋ฆฌ ๊ณผ์ : ํ์ ์ฑ์ ์ด ๋ด๊ธด ๋ฌธ์์ด์ ์
๋ ฅ๋ฐ์ ๊ฐ์ ํ์ฑํ๊ณ , ์ํ๋ ํ๊ท ๊ฐ์ ๋ฐํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
- ์ฝ๋์ ํ๋ฆ: ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ฉ ํ๋ก๊ทธ๋จ ์ฝ๋ ๋ด์์ ํ์ํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ์ฌ ํ๊ท ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข
๋ฅ ์์: ์ํ์น ์ฝ๋ชฌ์ค ํธ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ jQuery ๋ฑ์ด ์๋ค.

4. ํ๋ ์์ํฌ (Framework) ์ ์ ๋ฐ ํน์ง

4.1. ํ๋ ์์ํฌ์ ์ ์์ ๋ชฉ์
- ๋จ์ด ์๋ฏธ: ํ๋ ์(Frame)์ 'ํ' ๋๋ '๋ผ๋'๋ฅผ ์๋ฏธํ๊ณ , ์ํฌ(Work)๋ '์ผํ๋ค'๋ฅผ ์๋ฏธํ๋ค.
- ์ ์ถ๋ ์๋ฏธ: ํ๋ ์์ํฌ๋ ์ด๋ค ํ ์์์ ์ผํ๋ ๊ฒ์ผ๋ก ์ ์ถ๋ ์ ์๋ค.
- ๊ณต์ ์ ์: ์ํํธ์จ์ด๋ ์ํํธ์จ์ด ์๋ฃจ์
๊ฐ๋ฐ์ ์์ํ๊ฒ ํ๊ธฐ ์ํด ์ ๊ณต๋๋ ์ํํธ์จ์ด ํ๊ฒฝ ํ์ด๋ค.
- ๊ฐ๋ฐ์ ์ญํ : ๊ฐ๋ฐ์๋ ์ด ํ๊ฒฝ ํ(ํ๋ ์์ํฌ) ๋ด์์ ์์ ์ด ์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋๋ค.
4.2. ํ๋ ์์ํฌ ์์: ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๊ฒฝํ ๋น๊ต
- ํ๋ ์์ํฌ ์ฌ์ฉ ๊ฒฝํ (๋ ๋ฒจ 2):
- ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ค.
- ์ด ๊ฒฝํ์์๋ ์ปจํธ๋กค๋ฌ๋ง ์์ฑํ๋ฉด ์คํ๋ง์ด ์์ฒญ์ ์ฒ๋ฆฌํด ์ฃผ์๋ค.
- ์ฒ๋ฆฌ ๊ณผ์ : ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์์ฑํ๊ธฐ ์ํด ์์ฒญ์ ์ ํฅํ๊ณ , ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ๊ณ , ์ด๋
ธํ
์ด์
์ ๋ถ์ธ ํ ๋ก์ง์ ์์ฑํ๋ค.
- ํ๋ ์์ํฌ์ ์ญํ : ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ์ธ๋ถ ์์ฒญ์ ๋ฐ์์, ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฒ๋ฆฌ ๋ก์ง์ ๊ฐ์ง ์ปจํธ๋กค๋ฌ๋ฅผ ๋งคํ์์ผ ์ฃผ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์คํ์์ผ ์ฃผ์๋ค.
- ํ๋ ์์ํฌ ๋ฏธ์ฌ์ฉ ๊ฒฝํ (ํ์ฌ ๋ฏธ์
):
- ํ์ฌ ๋ฏธ์
์์๋ ์๋ฒ๋ฅผ ์ง์ ๋ง๋ค๊ณ ์์ผ๋ฉฐ, ์๋ธ ์์คํ
, ๋ธ๋์น ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ ์ ์๋
Request ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉํ๊ณ ์๋ค.
- ๋ํ, ์ปจํธ๋กค๋ฌ๋ ์ง์ ๋งคํ์์ผ ์ค์ผ ํ๋ฉฐ, ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค์ด์ ๋น์ฆ๋์ค ๋ก์ง์ ์์ฑํด์ผ ํ๋ค.
- ๋น๊ต ๊ฒฐ๊ณผ: ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ์์ ๋๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ํด์ผ ํ ์ผ์ด ํจ์ฌ ๋ง๋ค.
- ๊ฒฐ๋ก : ์คํ๋ง ํ๋ ์์ํฌ๋ ๊ฐ๋ฐ์๋ค์ด ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋๋ก ๊ธฐ๋ฐ์ ๋ค์ ธ๋์ ๊ฒ์ด๋ค.
4.3. ํ๋ ์์ํฌ์ ํต์ฌ ํน์ง: ์๋์ ์ฌ์ฉ
- ํ๋ ์์ํฌ์ ๊ตฌ์ฑ: ์ํธ ํ๋ ฅํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์งํฉ์ด๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ ์ฃผ๋๊ถ: ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋ ์์ํฌ๋ฅผ ์๋์ ์ผ๋ก ์ฌ์ฉํ๋ค.
- ์ด๋ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํด ๋ฅ๋์ ์ผ๋ก ํธ์ถ๋๋ ๊ฒ๊ณผ ๋๋น๋๋ค.
- ์๋์ ์ฌ์ฉ ์์:
- ๊ฐ๋ฐ์๋ ํน์ URL์ ๊ฑฐ์ณ ์ํ๋ ๋น์ฆ๋์ค ๋ก์ง(๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋)์ ์์ฑํ๋ค.
- ํ๋ฆ ์ฃผ๋๊ถ: ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ(๋ฆฌํ์คํธ)์ ์ฒ๋ฆฌํ๊ณ , ์ปจํธ๋กค๋ฌ๋ฅผ ๋งคํํ ํ, ํ๋ ์์ํฌ๊ฐ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ๋น์ฆ๋์ค ๋ก์ง์ ํธ์ถํ๋ค.
- ๊ด์ ์ฐจ์ด: ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์ ์ฝ๋๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ์ง๋ง, ํ๋ ์์ํฌ๋ ํ๋ ์์ํฌ๊ฐ ํ ์ผ์ ๋ค ํ ํ์ ๊ฐ๋ฐ์ ์ฝ๋๋ฅผ ํธ์ถํ๋ค.
- ๊ฒฐ๋ก : ์ด๋ฌํ ๋งฅ๋ฝ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋ ์์ํฌ์ ์ํด ์๋์ ์ผ๋ก ์ฌ์ฉ๋๋ ํน์ง์ด ๋ํ๋๋ค.
- ํ๋ ์์ํฌ ์ข
๋ฅ ์์: ์คํ๋ง ํ๋ ์์ํฌ, ์ฝ๋์ด๊ทธ๋์ดํฐ, ๋ฃจ๋น์จ ๋ ์ผ์ฆ, ์ฅ๊ณ ๋ฑ์ด ์๋ค.
5. ํต์ฌ ๊ฐ๋
๋น๊ต ๋ฐ ๊ฒฐ๋ก
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ API ์ฐจ์ด์ : ๊ตฌํ ๋ก์ง์ ์ ๋ฌด์ด๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ ์ฐจ์ด์ : ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ฆ ์ฃผ๋๊ถ์ ํ๋ ์์ํฌ๊ฐ ๊ฐ์ง๊ณ ์๋๋, ์๋๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ฐ์ง๊ณ ์๋๋์ ์ฐจ์ด์ด๋ค.
| ๊ตฌ๋ถ | ๋๊ฐ ํธ์ถํ๋๊ฐ? (์ฃผ๋๊ถ) | ์ญํ ๋น์ | ๊ตฌํ ๋ด์ฉ |
|---|
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ์ํ ๋ ๋ฅ๋์ ์ผ๋ก ํธ์ถ | ๋ด๊ฐ ๋ถ๋ฅด๋ ์ ๋ฌธ ๋๊ตฌ(Tool) | ๊ตฌํ ๋ก์ง ํฌํจ (ํจ์ ์งํฉ) |
| API | ์๋ฐฉ ํ๋ก๊ทธ๋จ ๊ฐ์ ์ฐ๊ฒฐ ๊ท์ฝ | ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ค๋ฆฌ(Bridge) | ๊ตฌํ ๋ด์ฉ๊ณผ๋ ๋
๋ฆฝ์ (์ฌ์ฉ๋ฒ๋ง ์ ์) |
| ํ๋ ์์ํฌ | ํ๋ ์์ํฌ๊ฐ ์ ์ฒด ํ๋ฆ์ ์ ์ดํ๋ฉฐ ๊ฐ๋ฐ์ ์ฝ๋๋ฅผ ์๋์ ์ผ๋ก ํธ์ถ | ์ ํด์ง ์ค๊ณ๋๋ฅผ ๊ฐ์ง ๊ฑด์ถ ๋ผ๋(Blueprint) | ์ ์ฒด ๊ตฌ์กฐ ๋ฐ ํ๋ฆ ๊ด๋ฆฌ |