Ver3.0 ๐ Postman vs Insomnia: API ๊ฐ๋ฐ ๋๊ตฌ ์์ ์ ๋ณต

๐ Postman vs Insomnia: API ๊ฐ๋ฐ ๋๊ตฌ ์์ ์ ๋ณต
ํ์ ๊ธฐ๋ฅ๊ณผ ํ ์คํธ ์๋ํ, ์ด๋ค ๋๊ตฌ๊ฐ ๋น์ ์ ํ๋ก์ ํธ์ ๋ฑ์ผ๊น?
๐ฏ API ๊ฐ๋ฐ ๋๊ตฌ, ์ ์ค์ํ ๊น?
์์ฆ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ API์ ์จ๋ฆํ๊ณ ์์ ๊ฑฐ์ผ. ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ API๋ฅผ ๋ง๋ค๊ณ , ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ๊ทธ API๋ฅผ ํธ์ถํ๊ณ , QA ์์ง๋์ด๋ API๋ฅผ ํ
์คํธํ์ง. ์ด ๋ชจ๋ ๊ณผ์ ์์ ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฑด ๋ฐ๋ก ๊ฐ๋ ฅํ API ๊ฐ๋ฐ ๋๊ตฌ์ผ! ๐ ๏ธ
๋ง์น ๋ชฉ์์๊ฒ ์ข์ ๋ง์น๊ฐ ํ์ํ๋ฏ, ๊ฐ๋ฐ์์๊ฒ๋ ์ ๋๋ก ๋ API ํ
์คํ
๋๊ตฌ๊ฐ ํ์์ผ. ์ค๋์ ๊ทธ ์ค์์๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ ๋๊ตฌ, Postman๊ณผ Insomnia๋ฅผ ๊น์ด ์๊ฒ ๋น๊ตํด๋ณผ ๊ฑฐ์ผ. ๋จ์ํ "์ด๊ฒ ์ข๋ค, ์ ๊ฒ ์ข๋ค"๊ฐ ์๋๋ผ, ์ค์ ํ์
์์ ์ด๋ป๊ฒ ํ์ฉ๋๋์ง, ์ด๋ค ์ํฉ์์ ์ด๋ค ๋๊ตฌ๊ฐ ๋ ์ ํฉํ์ง ํฉํธ ๊ธฐ๋ฐ์ผ๋ก ์์๋ณด์! ๐ช
โข Postman๊ณผ Insomnia์ ๊ธฐ๋ณธ ํน์ง๊ณผ ์ฒ ํ
โข ํ์ ๊ธฐ๋ฅ ์์ธ ๋น๊ต (ํ ์ํฌ์คํ์ด์ค, ๋ฒ์ ๊ด๋ฆฌ, ๊ณต์ ๋ฑ)
โข ํ ์คํธ ์๋ํ ๊ธฐ๋ฅ ์ฌ์ธต ๋ถ์
โข ์ค์ ์ฌ์ฉ ์๋๋ฆฌ์ค๋ณ ์ถ์ฒ
โข ์ฑ๋ฅ, ๊ฐ๊ฒฉ, ํ์ต ๊ณก์ ๋น๊ต
โข ์ค๋ฌด ํ๊ณผ ๋ฒ ์คํธ ํ๋ํฐ์ค
๐ Postman๊ณผ Insomnia, ๋๊ตฌ๋ ๋?
๐ฎ Postman: API ๊ฐ๋ฐ์ ์ค์์ค ์๋ฏธ ๋์ดํ
Postman์ 2012๋
์ ์์๋ API ๊ฐ๋ฐ ํ๋ซํผ์ด์ผ. ์ฒ์์ ๋จ์ํ Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ํ์ง๋ง, ์ง๊ธ์ ์ ์ธ๊ณ 2์ฒ๋ง ๋ช
์ด์์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ๊ฑฐ๋ํ ์ํ๊ณ๋ก ์ฑ์ฅํ์ด. ๐ฎ
Postman์ ๊ฐ์ฅ ํฐ ํน์ง์ "์์ ํ API ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด"์ ์ง์ํ๋ค๋ ๊ฑฐ์ผ. ๋จ์ํ API๋ฅผ ํ
์คํธํ๋ ๊ฒ์ ๋์ด์, ์ค๊ณ๋ถํฐ ๋ฌธ์ํ, ๋ชจ๋ํฐ๋ง, ๋ชจํน(Mocking)๊น์ง ๋ชจ๋ ๊ฑธ ํ ์ ์์ง. ๋ง์น API ๊ฐ๋ฐ์ ์ํ ์ฌ์ธ์ ์๋ฃจ์
๊ฐ์ ๋๋์ด๋๊น? ๐ช
ํนํ ๊ธฐ์
ํ๊ฒฝ์์ ๊ฐ๋ ฅํ๋ฐ, ํ ํ์
๊ธฐ๋ฅ์ด ์ ๋ง ์ ๋์ด ์์ด. ์ฌ๋ฌ ๋ช
์ด ๋์์ ์์
ํ๊ณ , ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ํ๊ณ , API ์ปฌ๋ ์
์ ๊ณต์ ํ๋ ๊ฒ ๋๋ฌด ํธํด. ๋๊ธฐ์
์ด๋ ์ค๊ฒฌ๊ธฐ์
์์ Postman์ ์ ํธํ๋ ์ด์ ๊ฐ ๋ฐ๋ก ์ด๊ฑฐ์ผ! ๐ข
1. ํ ํ์ ๊ธฐ๋ฅ: ์ํฌ์คํ์ด์ค ๊ณต์ , ์ค์๊ฐ ๋๊ธฐํ, ๊ถํ ๊ด๋ฆฌ๊ฐ ํ์ํด
2. ์๋ํ ํ ์คํธ: Collection Runner์ Newman์ผ๋ก CI/CD ํ์ดํ๋ผ์ธ ํตํฉ์ด ์ฌ์
3. ๋ฌธ์ํ: API ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ํผ๋ธ๋ฆฌ์ฑํ ์ ์์ด
4. ๋ชจ๋ํฐ๋ง: ์ค์ผ์ค๋ง๋ ํ ์คํธ๋ก API ์ํ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋ง
5. ์ํ๊ณ: ๋ฐฉ๋ํ ์ปค๋ฎค๋ํฐ, ํํ ๋ฆฌ์ผ, ํตํฉ ์ต์ ๋ค
๐ด Insomnia: ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ
Insomnia๋ 2015๋
์ ๋ฑ์ฅํ ๋น๊ต์ ์ ์ ๋๊ตฌ์ผ. ์ด๋ฆ๋ถํฐ ์ฌ๋ฏธ์์ง? "๋ถ๋ฉด์ฆ"์ด๋ผ๋ ๋ป์ธ๋ฐ, ๋ฐค์ ์ฝ๋ฉํ๋ ๊ฐ๋ฐ์๋ค์ ์ํ ๋๊ตฌ๋ผ๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์์ด. ๐
Insomnia์ ์ฒ ํ์ ๋ช
ํํด: "์ฌํํ๊ณ ๋น ๋ฅด๊ณ ์๋ฆ๋ต๊ฒ". Postman์ด ๊ธฐ๋ฅ์ ํ๋ถํจ์ผ๋ก ์น๋ถํ๋ค๋ฉด, Insomnia๋ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์ฑ๋ฅ์ผ๋ก ์น๋ถํด. UI๊ฐ ์ ๋ง ๊น๋ํ๊ณ ์ง๊ด์ ์ด๋ผ์, ์ฒ์ ์ฌ์ฉํ๋ ์ฌ๋๋ ๊ธ๋ฐฉ ์ต์ํด์ง ์ ์์ด. ๐จ
2019๋
์ Kong์ด๋ผ๋ API ๊ฒ์ดํธ์จ์ด ํ์ฌ์ ์ธ์๋๋ฉด์, Kong์ ์ํ๊ณ์ ํตํฉ๋๋ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋์์ด. ํนํ GraphQL ์ง์์ด ๋ฐ์ด๋๊ณ , gRPC ๊ฐ์ ์ต์ ํ๋กํ ์ฝ๋ ์ ์ง์ํ์ง. ๊ฐ์ธ ๊ฐ๋ฐ์๋ ์๊ท๋ชจ ํ์์ ํนํ ์ฌ๋๋ฐ๋ ๋๊ตฌ์ผ! ๐
1. ์ฌ์ฉ์ ๊ฒฝํ: ์ง๊ด์ ์ด๊ณ ์๋ฆ๋ค์ด ์ธํฐํ์ด์ค, ํ์ต ๊ณก์ ์ด ๋ฎ์
2. ์ฑ๋ฅ: ๊ฐ๋ณ๊ณ ๋น ๋ฅธ ์คํ ์๋, ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ์ ์ด
3. GraphQL: GraphQL ์ฟผ๋ฆฌ ์์ฑ๊ณผ ํ ์คํธ๊ฐ ๋งค์ฐ ํธ๋ฆฌํด
4. ํ๊ฒฝ ๊ด๋ฆฌ: ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ๊ฐ ์ง๊ด์ ์ด๊ณ ๊ฐ๋ ฅํด
5. ํ๋ฌ๊ทธ์ธ: ํ์ฅ ๊ฐ๋ฅํ ํ๋ฌ๊ทธ์ธ ์์คํ
๐ค ํ์ ๊ธฐ๋ฅ ๋๊ฒฐ: ํ์ํฌ์ ์น์๋?
ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ํ์
์ ์ ํ์ด ์๋๋ผ ํ์์ผ. ํผ์์ ๋ชจ๋ ๊ฑธ ๋ค ๋ง๋๋ ์๋๋ ์ง๋ฌ์ง. ๊ทธ๋์ API ๋๊ตฌ์ ํ์
๊ธฐ๋ฅ์ด ์ผ๋ง๋ ์ ๋์ด ์๋์ง๊ฐ ์ ๋ง ์ค์ํด! ๐ฅ
์ด ๋ถ๋ถ์์๋ ์์งํ ๋งํ๋ฉด Postman์ด ์๋์ ์ผ๋ก ์์. Postman์ ์ฒ์๋ถํฐ ํ ํ์
์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์๊ฑฐ๋ . ํ์ง๋ง Insomnia๋ ์ต๊ทผ ์
๋ฐ์ดํธ๋ฅผ ํตํด ํ์
๊ธฐ๋ฅ์ ๋ง์ด ๊ฐ์ ํ์ด. ์์ธํ ์ดํด๋ณด์! ๐
๐ ์ํฌ์คํ์ด์ค์ ์ปฌ๋ ์ ๊ด๋ฆฌ
๐ฃ Postman ์ํฌ์คํ์ด์ค
Postman์ ์ํฌ์คํ์ด์ค๋ ์ ๋ง ๊ฐ๋ ฅํด. Personal, Team, Public ์ธ ๊ฐ์ง ํ์
์ด ์์ด.
Personal Workspace๋ ๊ฐ์ธ ์์
๊ณต๊ฐ์ด๊ณ , Team Workspace๋ ํ์๋ค๊ณผ ์ค์๊ฐ์ผ๋ก ๊ณต์ ๋๋ ๊ณต๊ฐ์ด์ผ. ์ฌ๊ธฐ์ ์ค์ํ ๊ฑด, ํ ์ํฌ์คํ์ด์ค์์๋ ์ค์๊ฐ ๋๊ธฐํ๊ฐ ๋๋ค๋ ๊ฑฐ์ผ! ๋๊ตฐ๊ฐ ์ปฌ๋ ์
์ ์์ ํ๋ฉด ๋ค๋ฅธ ํ์๋ค๋ ์ฆ์ ๋ณผ ์ ์์ง. ๐
Public Workspace๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค๊ณผ API๋ฅผ ๊ณต์ ํ ์ ์๋ ๊ณต๊ฐ์ด์ผ. ์คํ์์ค ํ๋ก์ ํธ๋ ๊ณต๊ฐ API๋ฅผ ๋ง๋ค ๋ ์ ์ฉํด!
๐ฃ Insomnia ์ํฌ์คํ์ด์ค
Insomnia๋ ์ํฌ์คํ์ด์ค ๊ฐ๋
์ด ์์ง๋ง, ์กฐ๊ธ ๋ค๋ฅด๊ฒ ์ ๊ทผํด. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ์ํฌ์คํ์ด์ค์ ํด๋ผ์ฐ๋ ๋๊ธฐํ ๋ฐฉ์์ด์ผ.
Insomnia์ ํ์
์ ์ฃผ๋ก Git ๋๊ธฐํ๋ฅผ ํตํด ์ด๋ฃจ์ด์ ธ. ์ํฌ์คํ์ด์ค๋ฅผ Git ์ ์ฅ์์ ์ฐ๊ฒฐํ๋ฉด, ํ์๋ค์ด pull/push๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ๊ณต์ ํ ์ ์์ด. ๊ฐ๋ฐ์๋ค์๊ฒ ์ต์ํ ๋ฐฉ์์ด์ง! ๐ฟ
์ต๊ทผ์๋ Insomnia Sync๋ผ๋ ํด๋ผ์ฐ๋ ๋๊ธฐํ ๊ธฐ๋ฅ๋ ์ถ๊ฐ๋์์ด. ํ์ง๋ง Postman๋งํผ ์ค์๊ฐ์ฑ์ ๋จ์ด์ ธ.
๋๊ท๋ชจ ํ(10๋ช ์ด์)์ด๋ผ๋ฉด Postman์ Team Workspace๊ฐ ํจ์ฌ ํธํด. ์ค์๊ฐ ๋๊ธฐํ์ ์ถฉ๋ ํด๊ฒฐ ๊ธฐ๋ฅ์ด ์ ๋์ด ์๊ฑฐ๋ . ํ์ง๋ง ์ด๋ฏธ Git ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์ต์ํ ์๊ท๋ชจ ํ์ด๋ผ๋ฉด Insomnia์ Git ๋๊ธฐํ๊ฐ ๋ ์์ฐ์ค๋ฌ์ธ ์ ์์ด!
๐ฅ ๊ถํ ๊ด๋ฆฌ์ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด
ํ์ด ์ปค์ง์๋ก ๊ถํ ๊ด๋ฆฌ๊ฐ ์ค์ํด์ ธ. ๋๊ตฌ๋ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๊ณ , ๋๊ตฌ๋ ์์ ๋ ๊ฐ๋ฅํ๊ณ , ์ด๋ฐ ์์ผ๋ก ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ด์ผ ํ๊ฑฐ๋ . ๐
| ๊ธฐ๋ฅ | Postman | Insomnia |
|---|---|---|
| ์ญํ ๊ธฐ๋ฐ ๊ถํ | โ Admin, Editor, Viewer ๋ฑ ์ธ๋ถํ | โ ๏ธ ์ ํ์ (Pro ํ๋์์๋ง) |
| ์ปฌ๋ ์ ๋ณ ๊ถํ | โ ์ปฌ๋ ์ ๋ง๋ค ๋ค๋ฅธ ๊ถํ ์ค์ ๊ฐ๋ฅ | โ ์ํฌ์คํ์ด์ค ๋จ์๋ง ๊ฐ๋ฅ |
| ์ด๋ ๊ด๋ฆฌ | โ ์ด๋ฉ์ผ ์ด๋, ๋งํฌ ๊ณต์ , SSO ์ง์ | โ ์ด๋ฉ์ผ ์ด๋, ๋งํฌ ๊ณต์ |
| ๊ฐ์ฌ ๋ก๊ทธ | โ Enterprise ํ๋์์ ์ ๊ณต | โ ๋ฏธ์ ๊ณต |
| ํ ํฌ๊ธฐ ์ ํ | ๋ฌด์ ํ (ํ๋๋ณ ์ฐจ์ด) | ํ๋๋ณ ์ ํ ์์ |
๋ณด๋ค์ํผ ๊ถํ ๊ด๋ฆฌ ์ธก๋ฉด์์๋ Postman์ด ํจ์ฌ ๋ ์ธ๋ฐํ๊ณ ๊ฐ๋ ฅํด. ํนํ Enterprise ํ๋์์๋ SSO(Single Sign-On), SAML ์ธ์ฆ, ๊ฐ์ฌ ๋ก๊ทธ ๊ฐ์ ๊ธฐ์ ์ฉ ๊ธฐ๋ฅ๋ค์ด ๋ค ๋ค์ด์์ด. ๋ณด์์ด ์ค์ํ ๊ธ์ต๊ถ์ด๋ ๋๊ธฐ์ ์์๋ ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ด ํ์๊ฑฐ๋ ! ๐ฆ
๐ ๋ฒ์ ๊ด๋ฆฌ์ ๋ณ๊ฒฝ ์ด๋ ฅ
API๋ ๊ณ์ ๋ณํํด. ์๋ก์ด ์๋ํฌ์ธํธ๊ฐ ์ถ๊ฐ๋๊ณ , ํ๋ผ๋ฏธํฐ๊ฐ ๋ฐ๋๊ณ , ๋๋ก๋ ๋กค๋ฐฑ๋ ํด์ผ ํ์ง. ๊ทธ๋์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ ๋ง ์ค์ํด! ๐
Postman์ ์๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ๊ฐ์ถ๊ณ ์์ด. ์ปฌ๋ ์ ์ ์์ ํ ๋๋ง๋ค ์๋์ผ๋ก ์ค๋ ์ท์ ์์ฑํ๊ณ , ์ธ์ ๋ ์ง ์ด์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆด ์ ์์ด. ๋ง์น Git์ commit ๊ฐ์ ๋๋์ด์ผ!
โข Fork ๊ธฐ๋ฅ: ์ปฌ๋ ์ ์ ๋ณต์ฌํด์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ํ ์ ์์ด. ์คํ์ ์ธ ๋ณ๊ฒฝ์ ์๋ํ ๋ ์ ์ฉํด!
โข Merge ๊ธฐ๋ฅ: Forkํ ์ปฌ๋ ์ ์ ๋ณ๊ฒฝ์ฌํญ์ ์๋ณธ์ ๋ณํฉํ ์ ์์ด. Pull Request ๊ฐ์ ์ํฌํ๋ก์ฐ๊ฐ ๊ฐ๋ฅํ์ง!
โข ๋ณ๊ฒฝ ์ด๋ ฅ: ๋๊ฐ, ์ธ์ , ๋ฌด์์ ๋ณ๊ฒฝํ๋์ง ์์ธํ๊ฒ ์ถ์ ํ ์ ์์ด.
โข ์ถฉ๋ ํด๊ฒฐ: ์ฌ๋ฌ ๋ช ์ด ๋์์ ์์ ํ์ ๋ ์ถฉ๋์ ๊ฐ์งํ๊ณ ํด๊ฒฐํ ์ ์์ด.
Insomnia๋ Git ํตํฉ์ ํตํ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ง์ํด. ๊ฐ๋ฐ์๋ค์๊ฒ ์ต์ํ ๋ฐฉ์์ด๋ผ ํ์ต ๊ณก์ ์ด ๋ฎ์!
โข Git Sync: GitHub, GitLab, Bitbucket ๋ฑ๊ณผ ์ง์ ์ฐ๋
โข ๋ธ๋์น ๊ด๋ฆฌ: Git ๋ธ๋์น๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ด
โข ์ปค๋ฐ ํ์คํ ๋ฆฌ: Git์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ํ์ฉ
โข ๋ก์ปฌ ์ฐ์ : ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ์ ์ ์ฅ๋๊ณ , ์ํ ๋๋ง ๋๊ธฐํ
Postman์ ์๋ ๋ฒ์ ๊ด๋ฆฌ๋ ํธ๋ฆฌํ์ง๋ง, ์ ์ฅ ๊ณต๊ฐ์ ๋ง์ด ์ฐจ์งํ ์ ์์ด. ๋ฌด๋ฃ ํ๋์์๋ ์ ํ์ด ์์ผ๋ ์ฃผ์ํด์ผ ํด. Insomnia์ Git ๋๊ธฐํ๋ Git์ ์ ์์์ผ ์ ๋๋ก ํ์ฉํ ์ ์์ด. Git ์ด๋ณด์์๊ฒ๋ ์ง์ ์ฅ๋ฒฝ์ด ๋ ์ ์์ง!
๐ฌ ๋๊ธ๊ณผ ์ปค๋ฎค๋์ผ์ด์
API ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ํ์๋ค๊ณผ ์ํตํ ์ผ์ด ์ ๋ง ๋ง์. "์ด ํ๋ผ๋ฏธํฐ๋ ์ ์ด๋ ๊ฒ ์ค์ ํ์ด?", "์ด ์๋ํฌ์ธํธ ์๋ต์ด ์ด์ํ๋ฐ?" ๊ฐ์ ์ง๋ฌธ๋ค ๋ง์ด์ผ. ๐ญ
๐ฌ Postman ๋๊ธ ์์คํ
Postman์ ์ธ๋ผ์ธ ๋๊ธ ๊ธฐ๋ฅ์ด ์ ๋ง ์ ๋์ด ์์ด. ์ปฌ๋ ์
, ํด๋, ๊ฐ๋ณ ์์ฒญ ์ด๋๋ ๋๊ธ์ ๋ฌ ์ ์๊ณ , ํน์ ํ์์ ๋ฉ์
(@)ํ ์๋ ์์ด.
๋๊ธ์ ๋ต๊ธ์ ๋ฌ ์ ์๊ณ , ํด๊ฒฐ๋จ(Resolved) ํ์๋ ๊ฐ๋ฅํด. ๋ง์น GitHub์ ์ด์ ๋๊ธ ์์คํ
๊ฐ์ ๋๋์ด์ผ! ๐ฏ
์๋ฆผ ์์คํ
๋ ์ ๋์ด ์์ด์, ๋๊ตฐ๊ฐ ๋๋ฅผ ๋ฉ์
ํ๊ฑฐ๋ ๋ด๊ฐ ์์ฑํ ๋๊ธ์ ๋ต๊ธ์ด ๋ฌ๋ฆฌ๋ฉด ์ฆ์ ์๋ฆผ์ ๋ฐ์ ์ ์์ด.
๐ฌ Insomnia ์ปค๋ฎค๋์ผ์ด์
Insomnia๋ ์์ฝ๊ฒ๋ ๋ด์ฅ ๋๊ธ ๊ธฐ๋ฅ์ด ์์ด. ๋์ Git ์ปค๋ฐ ๋ฉ์์ง๋ ์ธ๋ถ ์ปค๋ฎค๋์ผ์ด์
๋๊ตฌ(Slack, Discord ๋ฑ)๋ฅผ ํ์ฉํด์ผ ํด.
์ด๊ฒ ๋จ์ ์ผ ์๋ ์์ง๋ง, ์ด๋ค ํ์๊ฒ๋ ์ฅ์ ์ด ๋ ์๋ ์์ด. ์ด๋ฏธ Slack์ด๋ Jira ๊ฐ์ ๋๊ตฌ๋ก ์ํตํ๊ณ ์๋ค๋ฉด, ๊ตณ์ด ๋ ๋ค๋ฅธ ์ปค๋ฎค๋์ผ์ด์
์ฑ๋์ ๋ง๋ค ํ์๊ฐ ์์ผ๋๊น! ๐คทโโ๏ธ
๐ ๊ณต์ ์ ํผ๋ธ๋ฆฌ์ฑ
์์ฑ๋ API ์ปฌ๋ ์ ์ ํ ์ธ๋ถ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ๊ฑฐ๋, ๊ณต๊ฐ ๋ฌธ์๋ก ๋ง๋ค์ด์ผ ํ ๋๊ฐ ์์ด. ํนํ ์คํ API๋ฅผ ๋ง๋ค ๋๋ ํ์์ง! ๐ข
1. Run in Postman ๋ฒํผ: ์น์ฌ์ดํธ์ ๋ฒํผ์ ์ถ๊ฐํด์, ๋ฐฉ๋ฌธ์๊ฐ ํด๋ฆญ ํ ๋ฒ์ผ๋ก ์ปฌ๋ ์ ์ ์์ ์ Postman์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ด
2. Public Workspace: ์ ์ธ๊ณ์ ๊ณต๊ฐ๋๋ ์ํฌ์คํ์ด์ค. ๊ฒ์๋ ๊ฐ๋ฅํด!
3. ๋งํฌ ๊ณต์ : ํน์ ์ปฌ๋ ์ ์ด๋ ์์ฒญ์ ๋งํฌ๋ฅผ ์์ฑํด์ ๊ณต์
4. JSON ๋ด๋ณด๋ด๊ธฐ: ์ปฌ๋ ์ ์ JSON ํ์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
5. API ๋ฌธ์ ํผ๋ธ๋ฆฌ์ฑ: ์๋์ผ๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ์น์ ํผ๋ธ๋ฆฌ์ฑ (์ ๋ฃ ๊ธฐ๋ฅ)
1. JSON/YAML ๋ด๋ณด๋ด๊ธฐ: ์ํฌ์คํ์ด์ค๋ฅผ ํ์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
2. Git ์ ์ฅ์ ๊ณต์ : GitHub ๋ฑ์ ๊ณต๊ฐ ์ ์ฅ์๋ก ๊ณต์
3. ํ๋ฌ๊ทธ์ธ ํ์ฉ: ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ค์ํ ๊ณต์ ๋ฐฉ์ ์ง์
4. Kong Dev Portal ํตํฉ: Kong ์ฌ์ฉ์๋ผ๋ฉด Dev Portal๊ณผ ์ฐ๋ ๊ฐ๋ฅ
๊ณต์ ์ ํผ๋ธ๋ฆฌ์ฑ ์ธก๋ฉด์์๋ Postman์ด ๋ ๋ค์ํ ์ต์ ์ ์ ๊ณตํด. ํนํ "Run in Postman" ๋ฒํผ์ ์ ๋ง ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด์ผ. ๋ง์ ์ ๋ช API ์๋น์ค๋ค์ด ์ด ๋ฒํผ์ ๋ฌธ์์ ๋ฌ์๋๊ณ ์์ด! ๐
๐ค ํ ์คํธ ์๋ํ: ์ง์ง ์ค๋ ฅ ๋๊ฒฐ!
์, ์ด์ ์ ๋ง ์ค์ํ ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๋ณด์! API ๋๊ตฌ์ ํต์ฌ ๊ฐ์น ์ค ํ๋๊ฐ ๋ฐ๋ก ํ
์คํธ ์๋ํ์ผ. ์๋์ผ๋ก ํ๋ํ๋ ํ
์คํธํ๋ ๊ฑด ์๊ฐ ๋ญ๋น๊ฑฐ๋ . ์๋ํ๋ฅผ ํตํด ๋น ๋ฅด๊ณ ์ ํํ๊ฒ, ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต์ ์ผ๋ก ํ
์คํธํ ์ ์์ด์ผ ํด! ๐ฏ
์ด ๋ถ๋ถ์์๋ ๋ ๋๊ตฌ๊ฐ ๊ฐ์์ ์ฒ ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋ณด์ฌ์ค. Postman์ ๊ฐ๋ ฅํ๊ณ ๋ณต์กํ ์๋ํ๋ฅผ, Insomnia๋ ์ฌํํ๊ณ ์ง๊ด์ ์ธ ์๋ํ๋ฅผ ์งํฅํด. ์ด๋ค ๊ฒ ๋ ๋์์ง๋ ๋น์ ์ ํ์์ ๋ฌ๋ ค ์์ด! ๐ค
โ๏ธ ํ ์คํธ ์คํฌ๋ฆฝํธ ์์ฑ
API ํ ์คํธ์ ๊ธฐ๋ณธ์ ์๋ต์ ๊ฒ์ฆํ๋ ๊ฑฐ์ผ. ์ํ ์ฝ๋๊ฐ 200์ธ์ง, ์๋ต ๋ณธ๋ฌธ์ ํน์ ๋ฐ์ดํฐ๊ฐ ์๋์ง, ์๋ต ์๊ฐ์ด ์ ์ ํ์ง ๋ฑ์ ํ์ธํด์ผ ํ์ง. ๐
Postman์ JavaScript ๊ธฐ๋ฐ์ ํ ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด. Pre-request Script์ Tests ๋ ๊ฐ์ง ์น์ ์ด ์์ด.
Pre-request Script: ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ ์คํ๋๋ ์คํฌ๋ฆฝํธ. ๋ณ์ ์ค์ , ์ธ์ฆ ํ ํฐ ์์ฑ ๋ฑ์ ์ฌ์ฉ
Tests: ์๋ต์ ๋ฐ์ ํ ์คํ๋๋ ์คํฌ๋ฆฝํธ. ์๋ต ๊ฒ์ฆ, ๋ฐ์ดํฐ ์ถ์ถ ๋ฑ์ ์ฌ์ฉ
// Postman ํ
์คํธ ์คํฌ๋ฆฝํธ ์์
// ์ํ ์ฝ๋ ๊ฒ์ฆ
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// ์๋ต ์๊ฐ ๊ฒ์ฆ
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// JSON ์๋ต ๊ฒ์ฆ
pm.test("Response has user data", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.user.name).to.eql("John Doe");
pm.expect(jsonData.user.email).to.include("@example.com");
});
// ํ๊ฒฝ ๋ณ์ ์ค์
pm.test("Save user ID to environment", function () {
var jsonData = pm.response.json();
pm.environment.set("userId", jsonData.user.id);
});
// ๋์ ๋ณ์ ์ฌ์ฉ
pm.test("Check dynamic timestamp", function () {
var timestamp = pm.variables.get("timestamp");
pm.expect(timestamp).to.be.a("string");
});
Postman์ ํ ์คํธ ์คํฌ๋ฆฝํธ๋ Chai.js ์ด์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด. ๋งค์ฐ ํํ๋ ฅ์ด ํ๋ถํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ํ ์คํธ๋ฅผ ์์ฑํ ์ ์์ด. ๋ํ pm ๊ฐ์ฒด๋ฅผ ํตํด Postman์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ทผํ ์ ์์ง! ๐ช
Insomnia๋ JavaScript๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ ๊ทผ ๋ฐฉ์์ด ์กฐ๊ธ ๋ฌ๋ผ. ํ๋ฌ๊ทธ์ธ ์์คํ ์ ํตํด ํ ์คํธ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๋ฐฉ์์ด์ผ.
// Insomnia ํ
์คํธ ํ๋ฌ๊ทธ์ธ ์์ (insomnia-plugin-response-validator)
const response = await context.request.send();
// ์ํ ์ฝ๋ ๊ฒ์ฆ
expect(response.statusCode).to.equal(200);
// ์๋ต ๋ณธ๋ฌธ ๊ฒ์ฆ
const body = JSON.parse(response.body);
expect(body.user.name).to.equal("John Doe");
// ํค๋ ๊ฒ์ฆ
expect(response.headers['content-type']).to.include('application/json');
Insomnia์ ํ ์คํธ๋ Postman๋ณด๋ค ๋ ํตํฉ๋์ด ์์ด. ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๊ฐ๋จํ ๊ฒ์ฆ๋ง ๊ฐ๋ฅํ๊ณ , ๋ณต์กํ ํ ์คํธ๋ฅผ ํ๋ ค๋ฉด ํ๋ฌ๊ทธ์ธ์ ์ค์นํด์ผ ํด. ํ์ง๋ง ์ด๊ฒ ๊ผญ ๋จ์ ๋ง์ ์๋์ผ. ํ์ํ ๊ธฐ๋ฅ๋ง ์ ํ์ ์ผ๋ก ์ถ๊ฐํ ์ ์๋ค๋ ์ฅ์ ๋ ์๊ฑฐ๋ ! ๐จ
๐ Collection Runner์ ์ผ๊ด ์คํ
์ฌ๋ฌ ๊ฐ์ API ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ์คํํ๊ณ ์ถ์ ๋๊ฐ ์์ด. ์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธ โ ๋ฐ์ดํฐ ์กฐํ โ ๋ฐ์ดํฐ ์์ โ ๋ก๊ทธ์์ ๊ฐ์ ์๋๋ฆฌ์ค๋ฅผ ํ ์คํธํ๊ณ ์ถ์ ๋ ๋ง์ด์ผ. ๐โโ๏ธ
Postman์ Collection Runner๋ ์ ๋ง ๊ฐ๋ ฅํด! ์ปฌ๋ ์ ์ ์ฒด๋ ํน์ ํด๋์ ๋ชจ๋ ์์ฒญ์ ์์๋๋ก ์คํํ ์ ์์ด.
์ฃผ์ ๊ธฐ๋ฅ:
โข ๋ฐ๋ณต ์คํ: ๊ฐ์ ์ปฌ๋ ์ ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต ์คํ
โข ๋ฐ์ดํฐ ํ์ผ: CSV๋ JSON ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๊ฐ ํ๋ง๋ค ์คํ (๋ฐ์ดํฐ ๋๋ฆฌ๋ธ ํ ์คํธ!)
โข ์ง์ฐ ์ค์ : ์์ฒญ ์ฌ์ด์ ์ง์ฐ ์๊ฐ ์ถ๊ฐ
โข ํ๊ฒฝ ์ ํ: ์คํํ ํ๊ฒฝ ์ ํ (๊ฐ๋ฐ, ์คํ ์ด์ง, ํ๋ก๋์ ๋ฑ)
โข ๊ฒฐ๊ณผ ๋ฆฌํฌํธ: ์คํ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ณ , ์คํจํ ํ ์คํธ๋ฅผ ํ์ด๋ผ์ดํธ
โข Newman ํตํฉ: CLI์์ ์คํ ๊ฐ๋ฅ (CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉ!)
CSV ํ์ผ์ ์ฌ๋ฌ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ ์ฅํด๋๊ณ , Collection Runner๋ก ์คํํ๋ฉด ๊ฐ ์ฌ์ฉ์๋ง๋ค ๋ก๊ทธ์ธ ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์ํํ ์ ์์ด. ์ด๊ฑฐ ์ง์ง ํธํด! ๐
์๋ฅผ ๋ค์ด, users.csv ํ์ผ:
username,password
user1,pass123
user2,pass456
user3,pass789
์ด๋ ๊ฒ ํ๋ฉด 3๋ฒ์ ๋ก๊ทธ์ธ ํ ์คํธ๊ฐ ์๋์ผ๋ก ์คํ๋ผ!
Insomnia๋ ๊ธฐ๋ณธ์ ์ผ๋ก Collection Runner ๊ฐ์ ๊ธฐ๋ฅ์ด ์์ด. ๋์ ํ๋ฌ๊ทธ์ธ์ด๋ CLI ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํด.
Inso CLI: Insomnia์ ๊ณต์ CLI ๋๊ตฌ์ผ. ์ํฌ์คํ์ด์ค์ ๋ชจ๋ ์์ฒญ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ์ ์์ด.
ํ์ง๋ง Postman์ Collection Runner๋งํผ ์ง๊ด์ ์ด๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ์ง๋ ์์. ํนํ GUI์์ ๋ฐ๋ก ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ Postman์ ๋นํด, Insomnia๋ CLI๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ ์ง์ ์ฅ๋ฒฝ์ด ๋ ์ ์์ด. ๐คทโโ๏ธ
๐ CI/CD ํ์ดํ๋ผ์ธ ํตํฉ
ํ๋์ ์ธ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์์ CI/CD๋ ํ์์ผ! API ํ ์คํธ๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ฉด, ์ฝ๋๊ฐ ํธ์๋ ๋๋ง๋ค ์๋์ผ๋ก ํ ์คํธ๊ฐ ์คํ๋๊ณ , ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋ฐฐํฌ๋ฅผ ๋ง์ ์ ์์ด. ์ด๊ฒ ์ง์ง DevOps์ ํต์ฌ์ด์ง! ๐
Newman์ Postman ์ปฌ๋ ์ ์ ์ปค๋งจ๋๋ผ์ธ์์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ผ. Node.js ๊ธฐ๋ฐ์ด๋ผ์ ์ค์น๋ ์ฌ์!
# Newman ์ค์น
npm install -g newman
# ์ปฌ๋ ์
์คํ
newman run my-collection.json -e my-environment.json
# ๋ฆฌํฌํฐ ์ต์
(HTML, JSON, JUnit ๋ฑ)
newman run my-collection.json --reporters cli,html --reporter-html-export report.html
# ํ๊ฒฝ ๋ณ์ ์ค๋ฒ๋ผ์ด๋
newman run my-collection.json --env-var "baseUrl=https://api.example.com"
Newman์ Jenkins, GitLab CI, GitHub Actions, CircleCI ๋ฑ ์ด๋ค CI/CD ๋๊ตฌ์๋ ์ฝ๊ฒ ํตํฉํ ์ ์์ด. ์๋ฅผ ๋ค์ด GitHub Actions ์ํฌํ๋ก์ฐ๋ ์ด๋ ๊ฒ ์์ฑํ ์ ์์ง:
# .github/workflows/api-tests.yml
name: API Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Newman
run: npm install -g newman
- name: Run API Tests
run: newman run postman-collection.json -e production.json
- name: Upload Test Report
if: always()
uses: actions/upload-artifact@v2
with:
name: test-report
path: newman-report.html
Inso๋ Insomnia์ ๊ณต์ CLI ๋๊ตฌ์ผ. Newman๊ณผ ๋น์ทํ ์ญํ ์ ํ์ง๋ง, ๊ธฐ๋ฅ์ ์ข ๋ ์ ํ์ ์ด์ผ.
# Inso ์ค์น
npm install -g insomnia-inso
# ์ํฌ์คํ์ด์ค์ ๋ชจ๋ ์์ฒญ ์คํ
inso run test "My Workspace"
# ํน์ ํ
์คํธ ์ค์ํธ ์คํ
inso run test "My Workspace" --env "Production"
# ๊ฒฐ๊ณผ๋ฅผ JUnit ํ์์ผ๋ก ์ถ๋ ฅ
inso run test "My Workspace" --reporter junit > results.xml
Inso๋ CI/CD์ ํตํฉํ ์ ์์ง๋ง, Newman๋งํผ ์ฑ์ํ์ง๋ ์์. ํนํ ๋ฆฌํฌํ ์ต์ ์ด ์ ํ์ ์ด๊ณ , ์ปค๋ฎค๋ํฐ ์ง์๋ ์ ์ ํธ์ด์ผ. ํ์ง๋ง ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ ์๋ํ์๋ ์ถฉ๋ถํด! ๐
๐ ๋ชจ๋ํฐ๋ง๊ณผ ์ค์ผ์ค๋ง
ํ๋ก๋์ ํ๊ฒฝ์ API๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ์ถ์ ๋๊ฐ ์์ด. ์๋ฅผ ๋ค์ด, ๋งค ์๊ฐ๋ง๋ค ํฌ์ค์ฒดํฌ ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํด์ ์๋น์ค๊ฐ ์ ์์ธ์ง ํ์ธํ๊ณ , ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ฆผ์ ๋ฐ๊ณ ์ถ์ ๋ ๋ง์ด์ผ. ๐
Postman์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํด! ์ปฌ๋ ์ ์ ์ค์ผ์ค๋งํด์ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋์๋ณด๋์์ ํ์ธํ ์ ์์ด.
์ฃผ์ ๊ธฐ๋ฅ:
โข ์ค์ผ์ค๋ง: 5๋ถ๋ง๋ค, 1์๊ฐ๋ง๋ค, ๋งค์ผ, ๋งค์ฃผ ๋ฑ ๋ค์ํ ์ฃผ๊ธฐ ์ค์
โข ์ง์ญ ์ ํ: ์ ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์์ ๋์์ ํ ์คํธ (๊ธ๋ก๋ฒ ์๋น์ค์ ์ ์ฉ!)
โข ์๋ฆผ: ์ด๋ฉ์ผ, Slack, PagerDuty ๋ฑ์ผ๋ก ์คํจ ์๋ฆผ
โข ๋์๋ณด๋: ์๊ฐ๋ณ ์ฑ๊ณต๋ฅ , ์๋ต ์๊ฐ ๊ทธ๋ํ ๋ฑ ์๊ฐํ
โข ์ด๋ ฅ ์ถ์ : ๊ณผ๊ฑฐ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ์ ์ฅํ๊ณ ๋ถ์ ๊ฐ๋ฅ
๋จ์ ์? ์ ๋ฃ ๊ธฐ๋ฅ์ด๋ผ๋ ๊ฑฐ! ๋ฌด๋ฃ ํ๋์์๋ ์ ํ์ ์ผ๋ก๋ง ์ฌ์ฉํ ์ ์์ด. ๐
Insomnia๋ ์์ฝ๊ฒ๋ ๋ด์ฅ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ด ์์ด. ๋์ Inso CLI๋ฅผ cron job์ด๋ ์ค์ผ์ค๋ฌ์ ๊ฒฐํฉํด์ ์ง์ ๊ตฌํํด์ผ ํด.
์๋ฅผ ๋ค์ด, Linux cron์ ์ฌ์ฉํ๋ค๋ฉด:
# crontab -e
# ๋งค ์๊ฐ๋ง๋ค API ํ
์คํธ ์คํ
0 * * * * /usr/local/bin/inso run test "My Workspace" --env "Production" >> /var/log/api-tests.log 2>&1
์ด ๋ฐฉ์์ ์ ์ฐํ์ง๋ง, ์ง์ ์ค์ ํ๊ณ ๊ด๋ฆฌํด์ผ ํ๋ค๋ ๋ถ๋ด์ด ์์ด. ๋์๋ณด๋๋ ์๋ฆผ ์์คํ ๋ ์ง์ ๊ตฌ์ถํด์ผ ํ๊ณ . ํ์ง๋ง ๋น์ฉ์ด ๋ค์ง ์๋๋ค๋ ์ฅ์ ์ด ์์ง! ๐ฐ
๐งช ๊ณ ๊ธ ํ ์คํธ ์๋๋ฆฌ์ค
์ค์ ํ๋ก์ ํธ์์๋ ๋จ์ํ ํ ์คํธ๋ฅผ ๋์ด์, ๋ณต์กํ ์๋๋ฆฌ์ค๋ฅผ ํ ์คํธํด์ผ ํ ๋๊ฐ ๋ง์. ์๋ฅผ ๋ค์ด:
1. ์ธ์ฆ ํ๋ก์ฐ ํ ์คํธ: ๋ก๊ทธ์ธ โ ํ ํฐ ๋ฐ๊ธฐ โ ํ ํฐ์ผ๋ก API ํธ์ถ โ ํ ํฐ ๊ฐฑ์ โ ๋ก๊ทธ์์
2. CRUD ์ ์ฒด ์ฌ์ดํด: ์์ฑ โ ์กฐํ โ ์์ โ ์ญ์ โ ์ญ์ ํ์ธ
3. ์๋ฌ ํธ๋ค๋ง: ์๋ชป๋ ์ ๋ ฅ, ๊ถํ ์์, ๋ฆฌ์์ค ์์ ๋ฑ ๋ค์ํ ์๋ฌ ์ผ์ด์ค
4. ์ฑ๋ฅ ํ ์คํธ: ๋์ ์์ฒญ, ๋์ฉ๋ ๋ฐ์ดํฐ, ์๋ต ์๊ฐ ์ธก์
5. ์กฐ๊ฑด๋ถ ์คํ: ์ด์ ํ ์คํธ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค์ ํ ์คํธ๋ฅผ ์คํํ๊ฑฐ๋ ์คํต
์ด๋ฐ ๋ณต์กํ ์๋๋ฆฌ์ค์์๋ Postman์ด ํจ์ฌ ๋ ๊ฐ๋ ฅํด. ๋ณ์ ์ค์ฝํ ๊ด๋ฆฌ, ์กฐ๊ฑด๋ถ ๋ก์ง, ๋ฐ๋ณต๋ฌธ, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๋ฑ์ด ๋ชจ๋ ๊ฐ๋ฅํ๊ฑฐ๋ ! ๐ฏ
// Postman ๊ณ ๊ธ ํ
์คํธ ์์: ์กฐ๊ฑด๋ถ ์คํ
pm.test("Login successful", function () {
var jsonData = pm.response.json();
if (jsonData.token) {
// ํ ํฐ์ด ์์ผ๋ฉด ํ๊ฒฝ ๋ณ์์ ์ ์ฅ
pm.environment.set("authToken", jsonData.token);
// ๋ค์ ์์ฒญ ์คํ
postman.setNextRequest("Get User Profile");
} else {
// ํ ํฐ์ด ์์ผ๋ฉด ์๋ฌ ์ฒ๋ฆฌํ๊ณ ํ
์คํธ ์ค๋จ
console.error("Login failed: No token received");
postman.setNextRequest(null);
}
});
// ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๋ค์ค ๊ฒ์ฆ
pm.test("Validate all users", function () {
var users = pm.response.json().users;
users.forEach(function(user) {
pm.expect(user).to.have.property("id");
pm.expect(user).to.have.property("email");
pm.expect(user.email).to.match(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/);
});
});
// ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ (CryptoJS)
var CryptoJS = require('crypto-js');
var signature = CryptoJS.HmacSHA256(pm.request.body.raw, pm.environment.get("secretKey"));
pm.environment.set("signature", signature.toString());
Insomnia์์๋ ํ๋ฌ๊ทธ์ธ์ ํตํด ๋น์ทํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ง๋ง, Postman๋งํผ ์ง๊ด์ ์ด๊ณ ํตํฉ๋์ด ์์ง๋ ์์. ํนํ ์กฐ๊ฑด๋ถ ์คํ์ด๋ ๋ณต์กํ ๋ก์ง์ ๊ตฌํํ๊ธฐ ์ด๋ ค์. ๐ค
| ํ ์คํธ ์๋ํ ๊ธฐ๋ฅ | Postman | Insomnia | ์น์ |
|---|---|---|---|
| ํ ์คํธ ์คํฌ๋ฆฝํธ ์์ฑ | JavaScript, Chai.js, ํ๋ถํ API | JavaScript, ํ๋ฌ๊ทธ์ธ ํ์ | ๐ Postman |
| Collection Runner | ๊ฐ๋ ฅํ GUI ๋ฌ๋, ๋ฐ์ดํฐ ๋๋ฆฌ๋ธ | ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์์, CLI๋ง | ๐ Postman |
| CI/CD ํตํฉ | Newman, ์ฑ์ํ ์ํ๊ณ | Inso CLI, ์ ํ์ | ๐ Postman |
| ๋ชจ๋ํฐ๋ง | ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ, ์๋ ์ค์ผ์ค๋ง | ์์, ์ง์ ๊ตฌํ ํ์ | ๐ Postman |
| ๊ณ ๊ธ ์๋๋ฆฌ์ค | ์กฐ๊ฑด๋ถ ์คํ, ๋ฐ๋ณต, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ ํ์ | ๐ Postman |
| ํ์ต ๊ณก์ | ์ค๊ฐ~๋์ | ๋ฎ์~์ค๊ฐ | ๐ Insomnia |
| ์คํ ์๋ | ๋ณดํต | ๋น ๋ฆ | ๐ Insomnia |
ํ ์คํธ ์๋ํ๊ฐ ํ๋ก์ ํธ์ ํต์ฌ์ด๋ผ๋ฉด Postman์ ๊ฐ๋ ฅ ์ถ์ฒํด! ํนํ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ๊ฑฐ๋, ๋ณต์กํ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค๋ฉด Postman์ด ํจ์ฌ ์ ๋ฆฌํด.
ํ์ง๋ง ๊ฐ๋จํ API ํ ์คํธ๋ง ํ์ํ๊ณ , ๋น ๋ฅธ ์คํ ์๋๋ฅผ ์ํ๋ค๋ฉด Insomnia๋ ์ถฉ๋ถํด. ํนํ ๊ฐ์ธ ํ๋ก์ ํธ๋ ์๊ท๋ชจ ํ์์๋ Insomnia์ ์ฌํํจ์ด ์คํ๋ ค ์ฅ์ ์ด ๋ ์ ์์ด! ๐จ
๐ฐ ๊ฐ๊ฒฉ ์ ์ฑ : ์ง๊ฐ ์ฌ์ ๋ ์ค์ํ์ง!
์๋ฌด๋ฆฌ ์ข์ ๋๊ตฌ๋ผ๋ ๊ฐ๊ฒฉ์ด ๋๋ฌด ๋น์ธ๋ฉด ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ง. ํนํ ์คํํธ์ ์ด๋ ๊ฐ์ธ ๊ฐ๋ฐ์์๊ฒ๋ ๋น์ฉ์ด ์ ๋ง ์ค์ํ ์์์ผ. ๋ ๋๊ตฌ์ ๊ฐ๊ฒฉ ์ ์ฑ ์ ์์ธํ ๋น๊ตํด๋ณด์! ๐ธ
๐ณ Postman ๊ฐ๊ฒฉ ์ ์ฑ
โข ๊ฐ์ธ ์ฌ์ฉ์์๊ฒ ์ถฉ๋ถํ ๊ธฐ๋ฅ
โข ๋ฌด์ ํ ์์ฒญ, ์ปฌ๋ ์ , ํ๊ฒฝ
โข 3๊ฐ์ Postman ํด๋ผ์ฐ๋ ์์ด์ ํธ
โข 25๊ฐ์ ๋ชจ๋ํฐ ์คํ/์
โข 1,000๊ฐ์ API ํธ์ถ/์ (๋ชจ๋ํฐ๋ง)
โข ๊ณต๊ฐ ์ํฌ์คํ์ด์ค ๋ฌด์ ํ
โข ๊ฐ์ธ ์ํฌ์คํ์ด์ค ์ ํ์
๐ผ Basic ํ๋ ($12/user/month)
โข ํ ํ์ ๊ธฐ๋ฅ ์์
โข ํ ์ํฌ์คํ์ด์ค
โข 10,000๊ฐ์ ๋ชจ๋ํฐ ์คํ/์
โข 100,000๊ฐ์ API ํธ์ถ/์
โข ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด
โข SSO (Single Sign-On)
๐ Professional ํ๋ ($29/user/month)
โข ๊ณ ๊ธ ํ์ ๋ฐ ์๋ํ
โข ๋ฌด์ ํ ๋ชจ๋ํฐ ์คํ
โข 1,000,000๊ฐ์ API ํธ์ถ/์
โข API ๋ฌธ์ ํผ๋ธ๋ฆฌ์ฑ
โข Mock ์๋ฒ
โข ๊ณ ๊ธ ๋ฆฌํฌํ
๐ข Enterprise ํ๋ (๋ง์ถค ๊ฐ๊ฒฉ)
โข ๋๊ธฐ์ ์ฉ ๊ธฐ๋ฅ
โข ๋ฌด์ ํ ๋ชจ๋ ๊ธฐ๋ฅ
โข ์ ๋ด ์ง์
โข ๊ฐ์ฌ ๋ก๊ทธ
โข SAML SSO
โข ์จํ๋ ๋ฏธ์ค ์ต์
๐ณ Insomnia ๊ฐ๊ฒฉ ์ ์ฑ
โข ๊ฐ์ธ ์ฌ์ฉ์ ์์ ๋ฌด๋ฃ
โข ๋ก์ปฌ ์ํฌ์คํ์ด์ค ๋ฌด์ ํ
โข ๋ชจ๋ ํต์ฌ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
โข Git ๋๊ธฐํ
โข ํ๋ฌ๊ทธ์ธ ์์คํ
โข GraphQL, gRPC ์ง์
๐ผ Individual ํ๋ ($5/month)
โข ๊ฐ์ธ ์ฌ์ฉ์ ํฅ์
โข ํด๋ผ์ฐ๋ ๋๊ธฐํ
โข ๋ฌด์ ํ ํด๋ผ์ฐ๋ ์ํฌ์คํ์ด์ค
โข ํ๋ฆฌ๋ฏธ์ ํ๋ฌ๊ทธ์ธ
๐ Team ํ๋ ($8/user/month)
โข ํ ํ์ ๊ธฐ๋ฅ
โข ํ ์ํฌ์คํ์ด์ค
โข ์ญํ ๊ธฐ๋ฐ ๊ถํ
โข ํ ๋๊ธฐํ
โข ์ฐ์ ์ง์
๐ข Enterprise ํ๋ (๋ง์ถค ๊ฐ๊ฒฉ)
โข ๋๊ธฐ์ ์ฉ ๊ธฐ๋ฅ
โข SSO
โข ์ ๋ด ์ง์
โข SLA ๋ณด์ฅ
โข ์จํ๋ ๋ฏธ์ค ์ต์
๐ฐ ๊ฐ๊ฒฉ ๋น๊ต ์์ฝ
๋ฌด๋ฃ ์ฌ์ฉ์: Insomnia๊ฐ ๋ ๊ด๋ํด! ๋ชจ๋ ํต์ฌ ๊ธฐ๋ฅ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ด.
๊ฐ์ธ ์ฌ์ฉ์: Insomnia Individual ($5/์)์ด Postman Basic ($12/์)๋ณด๋ค ์ ๋ ดํด.
์๊ท๋ชจ ํ: Insomnia Team ($8/์)์ด Postman Basic ($12/์)๋ณด๋ค ์ ๋ ดํ๊ณ , ๊ธฐ๋ฅ๋ ๋น์ทํด.
๋๊ท๋ชจ ํ: Postman Professional ($29/์)์ด ๋น์ธ์ง๋ง, ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด ํจ์ฌ ๋ง์. ํนํ ๋ชจ๋ํฐ๋ง, ๋ฌธ์ํ, Mock ์๋ฒ ๋ฑ.
๊ธฐ์
: ๋ ๋ค ๋ง์ถค ๊ฐ๊ฒฉ์ด๋ผ ์ง์ ๋น๊ต๋ ์ด๋ ค์. ํ์ํ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ ํํด์ผ ํด!
๐ฏ ๊ฐ๊ฒฉ ๋๋น ๊ฐ์น
Postman์ ๋น์ธ์ง๋ง, ๊ทธ๋งํผ ์ ๊ณตํ๋ ๊ฐ์น๋ ์ปค. ํนํ ํ ํ์
, ์๋ํ, ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ๊ณ ๋ คํ๋ฉด ์ถฉ๋ถํ ๊ฐ์ด์น๋ฅผ ํด.
Insomnia๋ ๊ฐ๊ฒฉ์ด ์ ๋ ดํ๊ณ , ๋ฌด๋ฃ ํ๋๋ ๊ด๋ํด. ์์ฐ์ด ์ ํ์ ์ธ ์คํํธ์
์ด๋ ๊ฐ์ธ ๊ฐ๋ฐ์์๊ฒ ์๋ฒฝํด!
์ฌ๋ฅ๋ท(https://www.jaenung.net)์์ API ๊ฐ๋ฐ ๊ด๋ จ ํ๋ฆฌ๋์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ฉด, ํด๋ผ์ด์ธํธ์ ํ์
ํ ๋ ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ง ๋ฏธ๋ฆฌ ํฉ์ํ๋ ๊ฒ ์ข์. ๋น์ฉ ๋ถ๋ด์ ๋๊ฐ ํ ์ง๋ ๋ช
ํํ ํด์ผ ํ๊ณ ! ๐ผ
๐ ์จ๊ฒจ์ง ๋น์ฉ
๊ฐ๊ฒฉํ์ ๋์จ ๊ธ์ก๋ง ๋ณด๋ฉด ์ ๋ผ! ์จ๊ฒจ์ง ๋น์ฉ๋ ๊ณ ๋ คํด์ผ ํด. ๐ต๏ธโโ๏ธ
โข API ํธ์ถ ์ ํ: ๋ฌด๋ฃ/Basic ํ๋์์๋ ๋ชจ๋ํฐ๋ง API ํธ์ถ ํ์๊ฐ ์ ํ์ ์ด์ผ. ์ด๊ณผํ๋ฉด ์ถ๊ฐ ๋น์ฉ ๋ฐ์!
โข ์ ์ฅ ๊ณต๊ฐ: ๋์ฉ๋ ํ์ผ์ด๋ ๋ง์ ์ปฌ๋ ์ ์ ์ ์ฅํ๋ฉด ์ถ๊ฐ ๋น์ฉ์ด ๋ค ์ ์์ด.
โข ํ ํ์ฅ: ํ์์ด ๋์ด๋ ์๋ก ๋น์ฉ์ด ์ ํ์ ์ผ๋ก ์ฆ๊ฐํด. 10๋ช ํ์ด๋ฉด ์ $290!
โข ํ์ต ๋น์ฉ: ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ๋ ค๋ฉด ํ์ต ์๊ฐ์ด ํ์ํด.
โข ํ๋ฌ๊ทธ์ธ ์์กด์ฑ: ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ํ๋ฌ๊ทธ์ธ์ ์ฐพ๊ณ ์ค์ ํด์ผ ํด. ์๊ฐ์ด ๊ณง ๋น์ฉ!
โข ๋ชจ๋ํฐ๋ง ๋ถ์ฌ: ๋ณ๋์ ๋ชจ๋ํฐ๋ง ์๋ฃจ์ ์ ๊ตฌ์ถํ๊ฑฐ๋ ๊ตฌ๋งคํด์ผ ํ ์ ์์ด.
โข ์ ํ์ ์ธ ์ง์: ๋ฌด๋ฃ ํ๋์์๋ ์ปค๋ฎค๋ํฐ ์ง์๋ง ๊ฐ๋ฅ. ๋ฌธ์ ํด๊ฒฐ์ ์๊ฐ์ด ๋ ๊ฑธ๋ฆด ์ ์์ด.
โข ํตํฉ ๋น์ฉ: CI/CD๋ ๋ค๋ฅธ ๋๊ตฌ์ ํตํฉํ ๋ ์ถ๊ฐ ์ค์ ์ด ํ์ํด.
โก ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ: ์ผ์์ ์ฐจ์ด
๋งค์ผ ์ฌ์ฉํ๋ ๋๊ตฌ๋ผ๋ฉด ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ ๋ง ์ค์ํด! ๋ช ์ด์ ์ฐจ์ด๊ฐ ํ๋ฃจ์ ๋ช ๋ถ, ์ผ์ฃผ์ผ์ ๋ช ์๊ฐ์ ์ฐจ์ด๋ฅผ ๋ง๋ค๊ฑฐ๋ . ์ค์ ์ฌ์ฉ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋น๊ตํด๋ณด์! โก
๐ ์คํ ์๋์ ๋ฆฌ์์ค ์ฌ์ฉ
๐ฃ Postman ์ฑ๋ฅ
Postman์ Electron ๊ธฐ๋ฐ์ด์ผ. Electron์ ์น ๊ธฐ์ ๋ก ๋ฐ์คํฌํฑ ์ฑ์ ๋ง๋๋ ํ๋ ์์ํฌ์ธ๋ฐ, ํธ๋ฆฌํ์ง๋ง ๋ฆฌ์์ค๋ฅผ ๋ง์ด ๋จน๋๋ค๋ ๋จ์ ์ด ์์ด. ๐
์ค์ ์ธก์ ๊ฒฐ๊ณผ:
โข ์์ ์๊ฐ: 3-5์ด
โข ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ: 200-400MB (๊ธฐ๋ณธ ์ํ)
โข CPU ์ฌ์ฉ: ์ค๊ฐ ์์ค
โข ๋์ฉ๋ ์๋ต ์ฒ๋ฆฌ: ๋๋ฆด ์ ์์
ํนํ ์ปฌ๋ ์
์ด ๋ง๊ฑฐ๋, ํฐ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋๋ ค์ง ์ ์์ด. ํ์ง๋ง ์ต๊ทผ ๋ฒ์ ์์๋ ๋ง์ด ๊ฐ์ ๋์์ด!
๐ฃ Insomnia ์ฑ๋ฅ
Insomnia๋ Electron ๊ธฐ๋ฐ์ด์ง๋ง, ๋ ๊ฐ๋ณ๊ฒ ์ต์ ํ๋์ด ์์ด. "๋ถ๋ฉด์ฆ"์ด๋ผ๋ ์ด๋ฆ๋ต๊ฒ ๋ฐค์ ์์
ํด๋ ๋ถ๋ด์ด ์ ์ด! ๐ด
์ค์ ์ธก์ ๊ฒฐ๊ณผ:
โข ์์ ์๊ฐ: 1-2์ด
โข ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ: 100-200MB (๊ธฐ๋ณธ ์ํ)
โข CPU ์ฌ์ฉ: ๋ฎ์ ์์ค
โข ๋์ฉ๋ ์๋ต ์ฒ๋ฆฌ: ๋น ๋ฅด๊ณ ์์ ์
์ ๋ฐ์ ์ผ๋ก Postman๋ณด๋ค ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ค๋ ํ๊ฐ๋ฅผ ๋ฐ์. ํนํ ์ ์ฌ์ ์ปดํจํฐ์์ ์ฐจ์ด๊ฐ ํ์คํ ๋๊ปด์ ธ!
Postman ์ฌ์ฉ์: ๋ถํ์ํ ์ปฌ๋ ์ ์ ์์นด์ด๋ธํ๊ณ , ํฐ ์๋ต์ ์คํธ๋ฆฌ๋ฐ ๋ชจ๋๋ก ์ฒ๋ฆฌํด. ๊ทธ๋ฆฌ๊ณ ์ฃผ๊ธฐ์ ์ผ๋ก ์บ์๋ฅผ ์ ๋ฆฌํ๋ฉด ์ฑ๋ฅ์ด ๊ฐ์ ๋ผ!
Insomnia ์ฌ์ฉ์: ํ๋ฌ๊ทธ์ธ์ ๋๋ฌด ๋ง์ด ์ค์นํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ด. ํ์ํ ๊ฒ๋ง ์ค์นํ๊ณ , ์ฌ์ฉํ์ง ์๋ ๊ฑด ๋นํ์ฑํํด!
๐จ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ UX
UI/UX๋ ์ฃผ๊ด์ ์ธ ๋ถ๋ถ์ด์ง๋ง, ๋ช ํํ ์ฐจ์ด๊ฐ ์์ด. ๋ ๋๊ตฌ์ ๋์์ธ ์ฒ ํ์ด ์์ ํ ๋ค๋ฅด๊ฑฐ๋ ! ๐จ
Postman์ UI๋ "๊ธฐ๋ฅ ์ค์ฌ"์ด์ผ. ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค ๋ณด๋ ํ๋ฉด์ด ๋ณต์กํด ๋ณด์ผ ์ ์์ด.
์ฅ์ :
โข ๋ชจ๋ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ ๊ทผ ๊ฐ๋ฅ
โข ํญ ๊ธฐ๋ฐ ์ธํฐํ์ด์ค๋ก ์ฌ๋ฌ ์์ฒญ์ ๋์์ ์์
โข ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅํ ๋ ์ด์์
โข ๋คํฌ ๋ชจ๋ ์ง์
๋จ์ :
โข ์ฒ์ ๋ณด๋ฉด ์๋๋ ์ ์์
โข ๋ฉ๋ด์ ์ต์ ์ด ๋ง์์ ์ํ๋ ๊ธฐ๋ฅ ์ฐพ๊ธฐ ์ด๋ ค์ธ ์ ์์
โข ๋๋๋ก UI๊ฐ ๋ฒ๋ฒ ๊ฑฐ๋ฆผ
Insomnia์ UI๋ "๋ฏธ๋๋ฉ๋ฆฌ์ฆ"์ด์ผ. ๊น๋ํ๊ณ ์๋ฆ๋ค์ด ๋์์ธ์ผ๋ก ์ ๋ช ํด!
์ฅ์ :
โข ์ง๊ด์ ์ด๊ณ ๋ฐฐ์ฐ๊ธฐ ์ฌ์
โข ์๋ฆ๋ค์ด ๋์์ธ (๊ฐ๋ฐ์๋ค ์ฌ์ด์์ "๊ฐ์ฅ ์์ API ๋๊ตฌ"๋ก ๋ถ๋ฆผ)
โข ๋น ๋ฅธ ํค๋ณด๋ ๋จ์ถํค
โข ํ๋ฅญํ ๋คํฌ ๋ชจ๋
๋จ์ :
โข ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์จ๊ฒจ์ ธ ์์ด์ ์ฐพ๊ธฐ ์ด๋ ค์ธ ์ ์์
โข ์ปค์คํฐ๋ง์ด์ง ์ต์ ์ด ์ ํ์
โข ํญ ๊ด๋ฆฌ๊ฐ Postman๋งํผ ์ ์ฐํ์ง ์์
๐ ํน์ ํ๋กํ ์ฝ ์ง์
REST API๋ง ํ ์คํธํ๋ ์๋๋ ์ง๋ฌ์ด! GraphQL, gRPC, WebSocket ๊ฐ์ ๋ค์ํ ํ๋กํ ์ฝ์ ์ง์ํ๋์ง๋ ์ค์ํด. ๐
| ํ๋กํ ์ฝ | Postman | Insomnia | ๋น๊ณ |
|---|---|---|---|
| REST API | โ ์๋ฒฝ ์ง์ | โ ์๋ฒฝ ์ง์ | ๋ ๋ค ํ๋ฅญํจ |
| GraphQL | โ ์ง์ (๊ธฐ๋ณธ) | โ ์ง์ (๋ฐ์ด๋จ) | Insomnia๊ฐ ๋ ๋์ |
| gRPC | โ ์ง์ (๋ฒ ํ) | โ ์ง์ (์์ ์ ) | Insomnia๊ฐ ๋จผ์ ์ง์ |
| WebSocket | โ ์ง์ | โ ์ง์ | ๋ ๋ค ๊ธฐ๋ณธ ์ง์ |
| SOAP | โ ์ง์ | โ ๏ธ ์ ํ์ | Postman์ด ๋์ |
| Server-Sent Events | โ ๏ธ ์ ํ์ | โ ์ง์ | Insomnia๊ฐ ๋์ |
GraphQL์ ์ฃผ๋ก ์ฌ์ฉํ๋ค๋ฉด Insomnia๋ฅผ ๊ฐ๋ ฅ ์ถ์ฒํด! Insomnia์ GraphQL ์ง์์ ์ ๋ง ๋ฐ์ด๋๊ฑฐ๋ .
โข ์๋ ์์ฑ: ์คํค๋ง๋ฅผ ๋ถ๋ฌ์ค๋ฉด ์ฟผ๋ฆฌ ์์ฑ ์ ์๋ ์์ฑ ์ ๊ณต
โข ์คํค๋ง ํ์: ์๊ฐ์ ์ผ๋ก ์คํค๋ง๋ฅผ ํ์ํ๊ณ ๋ฌธ์ ํ์ธ
โข ๋ณ์ ๊ด๋ฆฌ: GraphQL ๋ณ์๋ฅผ ์ง๊ด์ ์ผ๋ก ๊ด๋ฆฌ
โข ํ๋๊ทธ๋จผํธ: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋๊ทธ๋จผํธ ์ง์
Postman๋ GraphQL์ ์ง์ํ์ง๋ง, Insomnia๋งํผ ์ธ๋ จ๋์ง๋ ์์. GraphQL ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ Insomnia๊ฐ ์ธ๊ธฐ ์๋ ์ด์ ๊ฐ ๋ฐ๋ก ์ด๊ฑฐ์ผ! ๐
๐ฑ ํฌ๋ก์ค ํ๋ซํผ ์ง์
์ฌ๋ฌ ๊ธฐ๊ธฐ์์ ์์ ํ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ํฌ๋ก์ค ํ๋ซํผ ์ง์์ด ์ค์ํด! ๐ป๐ฑ
๐ฅ๏ธ Postman ํ๋ซํผ
โข Windows โ
โข macOS โ
โข Linux โ
โข Web ๋ฒ์ โ
(์ ํ์ )
โข ๋ชจ๋ฐ์ผ โ
Postman์ ์น ๋ฒ์ ๋ ์ ๊ณตํด! ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ด์ ํธ๋ฆฌํด. ํ์ง๋ง ๋ฐ์คํฌํฑ ์ฑ๋งํผ ๊ธฐ๋ฅ์ด ์์ ํ์ง๋ ์์.
๐ฅ๏ธ Insomnia ํ๋ซํผ
โข Windows โ
โข macOS โ
โข Linux โ
โข Web ๋ฒ์ โ
โข ๋ชจ๋ฐ์ผ โ
Insomnia๋ ๋ฐ์คํฌํฑ ์ ์ฉ์ด์ผ. ์น ๋ฒ์ ์ด๋ ๋ชจ๋ฐ์ผ ์ฑ์ ์์ด. ํ์ง๋ง ๋ฐ์คํฌํฑ ์ฑ์ ํ์ง์ ์ ๋ง ์ข์!
๐ ํ์ต ๊ณก์ ๊ณผ ์ปค๋ฎค๋ํฐ
์๋ก์ด ๋๊ตฌ๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ์ผ๋ง๋ ์๊ฐ์ด ๊ฑธ๋ฆด๊น? ๋งํ์ ๋ ๋์์ ๋ฐ์ ์ ์์๊น? ์ด๋ฐ ๊ฒ๋ค๋ ์ ๋ง ์ค์ํ ๊ณ ๋ ค์ฌํญ์ด์ผ! ๐
๐ ํ์ต ๋์ด๋
๐ Postman ํ์ต
์ด๊ธ (1-2์ผ)
โข ๊ธฐ๋ณธ ์์ฒญ ๋ณด๋ด๊ธฐ
โข ์ปฌ๋ ์
๋ง๋ค๊ธฐ
โข ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ
์ค๊ธ (1-2์ฃผ)
โข ํ
์คํธ ์คํฌ๋ฆฝํธ ์์ฑ
โข Collection Runner ์ฌ์ฉ
โข ํ ์ํฌ์คํ์ด์ค ํ์ฉ
๊ณ ๊ธ (1-2๊ฐ์)
โข ๋ณต์กํ ์๋ํ ์๋๋ฆฌ์ค
โข Newman CI/CD ํตํฉ
โข ๋ชจ๋ํฐ๋ง ์ค์
โข Mock ์๋ฒ ๊ตฌ์ถ
์ ๋ฐ์ ์ผ๋ก ์ค๊ฐ ์์ค์ ํ์ต ๊ณก์ . ๊ธฐ๋ณธ์ ์ฝ์ง๋ง, ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์๊ฐ์ด ํ์ํด!
๐ Insomnia ํ์ต
์ด๊ธ (๋ช ์๊ฐ)
โข ๊ธฐ๋ณธ ์์ฒญ ๋ณด๋ด๊ธฐ
โข ์ํฌ์คํ์ด์ค ๋ง๋ค๊ธฐ
โข ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ
์ค๊ธ (๋ฉฐ์น )
โข GraphQL ์ฟผ๋ฆฌ ์์ฑ
โข Git ๋๊ธฐํ ์ค์
โข ํ๋ฌ๊ทธ์ธ ์ค์น
๊ณ ๊ธ (1-2์ฃผ)
โข ์ปค์คํ
ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ
โข Inso CLI ํ์ฉ
โข ๊ณ ๊ธ ํ๊ฒฝ ์ค์
์ ๋ฐ์ ์ผ๋ก ๋ฎ์ ํ์ต ๊ณก์ . ์ง๊ด์ ์ธ UI ๋๋ถ์ ๋น ๋ฅด๊ฒ ์ตํ ์ ์์ด!
Postman:
โข ๊ณต์ ๋ฌธ์๊ฐ ๋งค์ฐ ์์ธํจ
โข Postman Learning Center (๋ฌด๋ฃ ์ฝ์ค)
โข YouTube์ ์๋ง์ ํํ ๋ฆฌ์ผ
โข Udemy, Coursera ๋ฑ์ ์ ๋ฃ ๊ฐ์
โข ํ๊ตญ์ด ์๋ฃ๋ ๋ง์
Insomnia:
โข ๊ณต์ ๋ฌธ์๊ฐ ๊ฐ๊ฒฐํ๊ณ ๋ช ํํจ
โข ์ปค๋ฎค๋ํฐ ํํ ๋ฆฌ์ผ
โข YouTube ์์ (Postman๋ณด๋ค ์ ์)
โข ํ๊ตญ์ด ์๋ฃ๋ ์ ํ์
์ฌ๋ฅ๋ท(https://www.jaenung.net)์์ API ๊ฐ๋ฐ ๊ด๋ จ ๋ฉํ ๋ฅผ ์ฐพ์์ 1:1๋ก ๋ฐฐ์ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ! ์ค๋ฌด ๊ฒฝํ์ด ์๋ ๊ฐ๋ฐ์์๊ฒ ์ง์ ๋ฐฐ์ฐ๋ฉด ํจ์ฌ ๋น ๋ฅด๊ฒ ์ตํ ์ ์๊ฑฐ๋ . ๐ฏ
๐ฅ ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ
ํ๋ฐํ ์ปค๋ฎค๋ํฐ๋ ๋๊ตฌ์ ์๋ช ๋ ฅ์ด์ผ! ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋น ๋ฅด๊ฒ ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์๊ณ , ์๋ก์ด ์์ด๋์ด๋ ์ป์ ์ ์๊ฑฐ๋ . ๐
Postman์ ๊ฑฐ๋ํ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ด!
โข ์ฌ์ฉ์ ์: 2์ฒ๋ง ๋ช ์ด์
โข ๊ณต๊ฐ ์ํฌ์คํ์ด์ค: ์๋ง ๊ฐ
โข ํฌ๋ผ: ๋งค์ฐ ํ๋ฐํจ
โข Stack Overflow: ์๋ง ๊ฐ์ ์ง๋ฌธ/๋ต๋ณ
โข GitHub: ๋ง์ ์์ ์ ํตํฉ ํ๋ก์ ํธ
โข ๋ธ๋ก๊ทธ: ๊ณต์ ๋ธ๋ก๊ทธ์์ ์ ๊ธฐ์ ์ผ๋ก ํ๊ณผ ์ ๋ฐ์ดํธ ๊ณต์
โข ์ด๋ฒคํธ: POST/CON ๊ฐ์ ์ฐ๋ก ์ปจํผ๋ฐ์ค
๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๊ฒ์๋ง ํด๋ ๋๋ถ๋ถ ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์์ด! ๐
Insomnia๋ ์์ง๋ง ์ด์ ์ ์ธ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด!
โข ์ฌ์ฉ์ ์: ์์ญ๋ง ๋ช (์ ํํ ์์น ๋น๊ณต๊ฐ)
โข GitHub: ์คํ์์ค ํ๋ก์ ํธ๋ก ํ๋ฐํ ๊ธฐ์ฌ
โข Discord: ๊ณต์ Discord ์๋ฒ์์ ์ค์๊ฐ ์ํต
โข ํ๋ฌ๊ทธ์ธ: ์ปค๋ฎค๋ํฐ๊ฐ ๋ง๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ
โข Stack Overflow: Postman๋ณด๋ค ์ ์ง๋ง ์ฆ๊ฐ ์ค
์ปค๋ฎค๋ํฐ๊ฐ ์์ ๋งํผ ๋ ์น๋ฐํ๊ณ , ๊ฐ๋ฐํ๊ณผ์ ์ํต๋ ํ๋ฐํด! ๐ฌ
๐ ํ์ฅ์ฑ๊ณผ ํตํฉ
๋ค๋ฅธ ๋๊ตฌ๋ค๊ณผ ์ผ๋ง๋ ์ ํตํฉ๋๋์ง๋ ์ค์ํด! ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ ์ฌ๋ฌ ๋๊ตฌ์ ์กฐํฉ์ด๋๊น. ๐
| ํตํฉ ๋์ | Postman | Insomnia |
|---|---|---|
| Git (GitHub, GitLab) | โ API ํตํฉ | โ ์ง์ ๋๊ธฐํ |
| CI/CD (Jenkins, GitHub Actions) | โ Newman์ผ๋ก ์ฌ์ | โ Inso CLI ์ฌ์ฉ |
| Slack | โ ์๋ฆผ, ๊ณต์ | โ ๏ธ ์ ํ์ |
| Jira | โ ์ด์ ์ฐ๋ | โ ์์ |
| Swagger/OpenAPI | โ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ | โ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ |
| AWS API Gateway | โ ์ง์ ํตํฉ | โ ๏ธ ์๋ ์ค์ |
| Kong Gateway | โ ๏ธ ๊ธฐ๋ณธ ์ง์ | โ ๊น์ ํตํฉ |
| VS Code | โ ํ์ฅ ํ๋ก๊ทธ๋จ | โ ํ์ฅ ํ๋ก๊ทธ๋จ |
Postman์ ๋ ๋ง์ ํตํฉ ์ต์ ์ ์ ๊ณตํด. ํนํ ์ํฐํ๋ผ์ด์ฆ ๋๊ตฌ๋ค๊ณผ์ ํตํฉ์ด ์ ๋์ด ์์ด. Insomnia๋ Kong ์ํ๊ณ์์ ํตํฉ์ด ํนํ ๊ฐ๋ ฅํ๊ณ , Git ์ค์ฌ ์ํฌํ๋ก์ฐ์ ์ต์ ํ๋์ด ์์ด! ๐ฏ
๐ฏ ์ค์ ์ฌ์ฉ ์๋๋ฆฌ์ค: ์ด๋ค ์ํฉ์ ๋ญ ์จ์ผ ํ ๊น?
์ด๋ก ์ ์ถฉ๋ถํ ๋ดค์ผ๋, ์ด์ ์ค์ ์ด์ผ! ๋ค์ํ ์ํฉ์์ ์ด๋ค ๋๊ตฌ๊ฐ ๋ ์ ํฉํ์ง ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณด์. ์ค์ ํ๋ก์ ํธ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ์ถ์ฒํด์ค๊ฒ! ๐ผ
๐ข ์๋๋ฆฌ์ค 1: ๋๊ธฐ์ ๊ฐ๋ฐํ (20๋ช ์ด์)
โข ์ฌ๋ฌ ํ์ด ์์ญ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ
โข ์๊ฒฉํ ๋ณด์ ์ ์ฑ ๊ณผ ๊ท์ ์ค์ ํ์
โข CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ๋์ด ์์
โข ์ ๊ธฐ์ ์ธ API ๋ชจ๋ํฐ๋ง ํ์
โข ์ธ๋ถ ํํธ๋์ API ๋ฌธ์ ๊ณต์
์ถ์ฒ: ๐ Postman Professional/Enterprise
์ด์ :
โข ํ ์ํฌ์คํ์ด์ค์ ๊ถํ ๊ด๋ฆฌ๊ฐ ํ์ํจ
โข SSO, SAML ๊ฐ์ ์ํฐํ๋ผ์ด์ฆ ๋ณด์ ๊ธฐ๋ฅ
โข ์๋ ๋ชจ๋ํฐ๋ง์ผ๋ก 24/7 API ์ํ ์ถ์
โข API ๋ฌธ์ ์๋ ์์ฑ ๋ฐ ํผ๋ธ๋ฆฌ์ฑ
โข Newman์ผ๋ก CI/CD ํตํฉ์ด ์ฌ์
โข ๊ฐ์ฌ ๋ก๊ทธ๋ก ๊ท์ ์ค์ ๊ฐ๋ฅ
๋น์ฉ์ ๋์ง๋ง, ์ ๊ณตํ๋ ๊ฐ์น๋ฅผ ๊ณ ๋ คํ๋ฉด ์ถฉ๋ถํ ํฌ์ํ ๋งํด! ๐ฐ
๐ ์๋๋ฆฌ์ค 2: ์คํํธ์ (5-10๋ช )
โข ๋น ๋ฅธ ๊ฐ๋ฐ ์๋๊ฐ ์ค์
โข ์์ฐ์ด ์ ํ์
โข GraphQL API ๊ฐ๋ฐ ์ค
โข Git ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ ์ฌ์ฉ
โข ๊ฐ๋จํ ํ์ ๊ธฐ๋ฅ๋ง ํ์
์ถ์ฒ: ๐ Insomnia Team
์ด์ :
โข ๊ฐ๊ฒฉ์ด ์ ๋ ดํจ ($8/user/month)
โข GraphQL ์ง์์ด ๋ฐ์ด๋จ
โข Git ๋๊ธฐํ๋ก ๊ธฐ์กด ์ํฌํ๋ก์ฐ์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ
โข ๋น ๋ฅธ ์คํ ์๋๋ก ์์ฐ์ฑ ํฅ์
โข ํ์ต ๊ณก์ ์ด ๋ฎ์ ๋น ๋ฅด๊ฒ ํ์ ๋์ ๊ฐ๋ฅ
์คํํธ์ ์๊ฒ๋ ๋น์ฉ ๋๋น ํจ์จ์ด ์ต๊ณ ์ผ! ๐ฏ
๐ค ์๋๋ฆฌ์ค 3: ํ๋ฆฌ๋์ ๊ฐ๋ฐ์
โข ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ํ๋ก์ ํธ ๋์ ์งํ
โข ๊ฐ ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅธ API ํ๊ฒฝ
โข ๋น์ฉ ์ต์ํ ํ์
โข ๊ฐ๋จํ ํ ์คํธ์ ๋ฌธ์ํ
โข ํด๋ผ์ด์ธํธ์ ๊ฐ๋ ๊ณต์ ํ์
์ถ์ฒ: ๐ Insomnia Free ๋๋ Postman Free
์ด์ :
โข ๋ ๋ค ๋ฌด๋ฃ๋ก ์ถฉ๋ถํ ๊ธฐ๋ฅ ์ ๊ณต
โข Insomnia๋ ๋ก์ปฌ ์ฐ์ ์ด๋ผ ํ๋ผ์ด๋ฒ์ ์ข์
โข Postman์ ๊ณต์ ๊ธฐ๋ฅ์ด ๋ ํธ๋ฆฌํจ
โข ํ๋ก์ ํธ๋ณ๋ก ์ํฌ์คํ์ด์ค ๋ถ๋ฆฌ ๊ฐ๋ฅ
๊ฐ์ธ์ ์ผ๋ก๋ Insomnia Free๋ฅผ ์ถ์ฒํ์ง๋ง, ํด๋ผ์ด์ธํธ๊ฐ Postman์ ์ ํธํ๋ค๋ฉด Postman์ ์ฌ์ฉํ๋ ๊ฒ ๋์. ํ์ ์ด ์ค์ํ๋๊น! ๐ค
๐ ์๋๋ฆฌ์ค 4: ํ์/์ด๋ณด ๊ฐ๋ฐ์
โข API ๊ฐ๋ฐ์ ์ฒ์ ๋ฐฐ์ฐ๋ ์ค
โข ๊ฐ์ธ ํ๋ก์ ํธ๋ ๊ณผ์ ์ํ
โข ๋น์ฉ ์ง๋ถ ๋ถ๊ฐ
โข ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๋๊ตฌ ํ์
โข ํ์ต ์๋ฃ๊ฐ ๋ง์ผ๋ฉด ์ข์
์ถ์ฒ: ๐ Postman Free
์ด์ :
โข ๋ฌด๋ฃ๋ก ๋ชจ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
โข ํ์ต ์๋ฃ๊ฐ ํ๋ถํจ (ํ๊ตญ์ด ํฌํจ)
โข ์ปค๋ฎค๋ํฐ๊ฐ ํฌ๊ณ ํ๋ฐํจ
โข ์ทจ์ ์ ์ค๋ฌด์์๋ ๋ง์ด ์ฌ์ฉ
โข Public Workspace๋ก ํฌํธํด๋ฆฌ์ค ๋ง๋ค๊ธฐ ์ข์
Postman์ ๋ฐฐ์๋๋ฉด ์ทจ์ ํ ๋๋ ์ ๋ฆฌํด! ๋ง์ ํ์ฌ์์ ์ฌ์ฉํ๊ฑฐ๋ . ๐
๐ฌ ์๋๋ฆฌ์ค 5: API ํ ์คํธ ์๋ํ ์ค์ฌ ํ๋ก์ ํธ
โข QA ํ์ด API ํ ์คํธ ์๋ํ ๊ตฌ์ถ
โข ๋ณต์กํ ํ ์คํธ ์๋๋ฆฌ์ค ํ์
โข CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉ ํ์
โข ์ ๊ธฐ์ ์ธ ํ๊ท ํ ์คํธ
โข ์์ธํ ํ ์คํธ ๋ฆฌํฌํธ ํ์
์ถ์ฒ: ๐ Postman Professional
์ด์ :
โข Collection Runner๊ฐ ๊ฐ๋ ฅํจ
โข ๋ฐ์ดํฐ ๋๋ฆฌ๋ธ ํ ์คํธ ์ง์
โข Newman์ผ๋ก CI/CD ํตํฉ ์ฌ์
โข ๋ชจ๋ํฐ๋ง์ผ๋ก ์ ๊ธฐ ์คํ ๊ฐ๋ฅ
โข ์์ธํ ํ ์คํธ ๋ฆฌํฌํธ ์์ฑ
โข ์กฐ๊ฑด๋ถ ์คํ, ๋ฐ๋ณต๋ฌธ ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ
ํ ์คํธ ์๋ํ์์๋ Postman์ด ์๋์ ์ด์ผ! ๐ค
๐ ์๋๋ฆฌ์ค 6: GraphQL ์ค์ฌ ํ๋ก์ ํธ
โข GraphQL API ๊ฐ๋ฐ ๋ฐ ํ ์คํธ
โข ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋ฎคํ ์ด์
โข ์คํค๋ง ํ์๊ณผ ๋ฌธ์ํ ์ค์
โข ํ๋๊ทธ๋จผํธ ์ฌ์ฌ์ฉ
โข ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ ํ์
์ถ์ฒ: ๐ Insomnia
์ด์ :
โข GraphQL ์ง์์ด ์ต๊ณ ์์ค
โข ์คํค๋ง ์๋ ์์ฑ๊ณผ ๊ฒ์ฆ
โข ์๊ฐ์ ์คํค๋ง ํ์
โข ํ๋๊ทธ๋จผํธ ๊ด๋ฆฌ ํธ๋ฆฌ
โข ๋น ๋ฅธ ์คํ ์๋
GraphQL ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ Insomnia๊ฐ ์ธ๊ธฐ ์๋ ๋ฐ๋ ๋ค ์ด์ ๊ฐ ์์ด! ๐จ
๐๏ธ ์๋๋ฆฌ์ค 7: ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ
โข ์์ญ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค
โข ์๋น์ค ๊ฐ ๋ณต์กํ ์์กด์ฑ
โข ๊ฐ ์๋น์ค๋ง๋ค ๋ค๋ฅธ ํ ๋ด๋น
โข API ๊ณ์ฝ ๊ด๋ฆฌ ์ค์
โข ๋ฌธ์ํ์ Mock ์๋ฒ ํ์
์ถ์ฒ: ๐ Postman Professional
์ด์ :
โข ์๋น์ค๋ณ๋ก ์ปฌ๋ ์ ๋ถ๋ฆฌ ๊ด๋ฆฌ
โข ํ ์ํฌ์คํ์ด์ค๋ก ์๋น์ค๋ณ ๊ถํ ์ค์
โข Mock ์๋ฒ๋ก ์์กด์ฑ ์์ด ๊ฐ๋ฐ ๊ฐ๋ฅ
โข API ๋ฌธ์ ์๋ ์์ฑ ๋ฐ ๊ณต์
โข ๋ฒ์ ๊ด๋ฆฌ๋ก API ๊ณ์ฝ ์ถ์
๋ง์ดํฌ๋ก์๋น์ค ํ๊ฒฝ์์๋ Postman์ ์กฐ์งํ ๊ธฐ๋ฅ์ด ๋น์ ๋ฐํด! โจ
๐ฎ ๋ฏธ๋ ์ ๋ง๊ณผ ํธ๋ ๋
๊ธฐ์ ์ ๊ณ์ ๋ฐ์ ํ๊ณ ์์ด. ๋ ๋๊ตฌ๋ ๋์์์ด ์งํํ๊ณ ์์ง. ์์ผ๋ก ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ ์ง, ์ด๋ค ํธ๋ ๋๋ฅผ ์ฃผ๋ชฉํด์ผ ํ ์ง ์์๋ณด์! ๐
๐ Postman์ ๋ฏธ๋
1. API-First ๊ฐ๋ฐ ํ๋ซํผ
Postman์ ๋จ์ํ ํ ์คํ ๋๊ตฌ๋ฅผ ๋์ด์ "API-First ๊ฐ๋ฐ ํ๋ซํผ"์ผ๋ก ์งํํ๊ณ ์์ด. API ์ค๊ณ๋ถํฐ ๊ฐ๋ฐ, ํ ์คํธ, ๋ฌธ์ํ, ๋ชจ๋ํฐ๋ง, ๊ฑฐ๋ฒ๋์ค๊น์ง ์ ์ฒด ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ํ๋ซํผ์ ๋ชฉํ๋ก ํด.
2. AI ํตํฉ
์ต๊ทผ Postman์ AI ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์์ด. ์๋ฅผ ๋ค์ด, API ์๋ต์ ๋ถ์ํด์ ์๋์ผ๋ก ํ ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ฑฐ๋, ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๊ธฐ๋ฅ ๋ฑ์ด์ผ. ๐ค
3. ํ์ ๊ฐํ
์ค์๊ฐ ํ์ ๊ธฐ๋ฅ์ ๋์ฑ ๊ฐํํ๊ณ ์์ด. ๋ง์น Google Docs์ฒ๋ผ ์ฌ๋ฌ ๋ช ์ด ๋์์ API๋ฅผ ํธ์งํ๊ณ , ๋ณ๊ฒฝ์ฌํญ์ ์ฆ์ ๋ณผ ์ ์๊ฒ ํ๋ ๊ฑฐ์ง.
4. ์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ ํ๋
๋๊ธฐ์ ๊ณ ๊ฐ์ ์ํ ๊ฑฐ๋ฒ๋์ค, ๊ท์ ์ค์, ๋ณด์ ๊ธฐ๋ฅ์ ๊ณ์ ์ถ๊ฐํ๊ณ ์์ด. API ๋ณด์ ์ค์บ, ์๋ ๊ท์ ์ค์ ์ฒดํฌ ๋ฑ์ด ์์ ๋์ด ์์ด.
5. ์ํ๊ณ ํ์ฅ
๋ ๋ง์ ์๋ํํฐ ๋๊ตฌ์์ ํตํฉ์ ์ถ๊ฐํ๊ณ , API ๋ง์ผํ๋ ์ด์ค๋ฅผ ํ์ฅํ๊ณ ์์ด. ๊ฐ๋ฐ์๋ค์ด API๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฒฌํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฑฐ์ผ.
๐ Insomnia์ ๋ฏธ๋
1. Kong ์ํ๊ณ ํตํฉ
Kong์ ์ธ์๋ ํ, Kong Gateway, Kong Mesh ๋ฑ Kong ์ ํ๊ตฐ๊ณผ์ ๊น์ ํตํฉ์ ์งํํ๊ณ ์์ด. API Gateway ์ค์ ์ Insomnia์์ ์ง์ ํ ์ ์๊ฒ ๋๋ ๊ฑฐ์ง. ๐
2. ๊ฐ๋ฐ์ ๊ฒฝํ ์ต์ ํ
Insomnia์ ํต์ฌ ๊ฐ์น์ธ "๊ฐ๋ฐ์ ๊ฒฝํ"์ ๋์ฑ ๊ฐํํ๊ณ ์์ด. ๋ ๋น ๋ฅด๊ณ , ๋ ์ง๊ด์ ์ด๊ณ , ๋ ์๋ฆ๋ค์ด ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ ๋ชฉํ์ผ.
3. ์ต์ ํ๋กํ ์ฝ ์ง์
gRPC, WebSocket, Server-Sent Events ๊ฐ์ ์ต์ ํ๋กํ ์ฝ ์ง์์ ๊ณ์ ๊ฐ์ ํ๊ณ ์์ด. ํนํ gRPC ์ง์์ ์ ๊ณ ์ต๊ณ ์์ค์ ๋ชฉํ๋ก ํด.
4. ์คํ์์ค ์ปค๋ฎค๋ํฐ
Insomnia๋ ์คํ์์ค ํ๋ก์ ํธ์ผ. ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌ๋ฅผ ์ ๊ทน ๋ฐ์๋ค์ด๊ณ , ํฌ๋ช ํ๊ฒ ๊ฐ๋ฐํ๋ ๊ฑธ ์ค์ํ๊ฒ ์๊ฐํด. ์์ผ๋ก๋ ์ด ์ฒ ํ์ ์ ์งํ ๊ฑฐ์ผ.
5. ํ๋ฌ๊ทธ์ธ ์ํ๊ณ
ํ๋ฌ๊ทธ์ธ ์์คํ ์ ๋์ฑ ๊ฐํํด์, ๊ฐ๋ฐ์๋ค์ด ์ํ๋ ๊ธฐ๋ฅ์ ์ง์ ์ถ๊ฐํ ์ ์๊ฒ ํ๊ณ ์์ด. ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ ๋ง์ผํ๋ ์ด์ค๋ ํ๋ ์ค์ด์ผ.
๐ API ๊ฐ๋ฐ ๋๊ตฌ์ ํธ๋ ๋
1. AI/ML ํตํฉ
AI๊ฐ API ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ , ์ด์ ํจํด์ ๊ฐ์งํ๊ณ , ์ต์ ํ ์ ์์ ํ๋ ์๋๊ฐ ์ค๊ณ ์์ด. ๐ค
2. ๋ณด์ ์ค์ฌ ๊ฐ๋ฐ
API ๋ณด์์ด ์ ์ ์ค์ํด์ง๊ณ ์์ด. ์๋ ๋ณด์ ์ค์บ, ์ทจ์ฝ์ ํ์ง, ๊ท์ ์ค์ ์ฒดํฌ๊ฐ ํ์ ๊ธฐ๋ฅ์ด ๋ ๊ฑฐ์ผ. ๐
3. ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ
๋ชจ๋ ๊ฒ์ด ํด๋ผ์ฐ๋๋ก ์ด๋ํ๊ณ ์์ด. API ๋๊ตฌ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ผ๋ก ์งํํ๊ณ , Kubernetes, ์๋น์ค ๋ฉ์ ๊ฐ์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ธฐ์ ๊ณผ ํตํฉ๋ ๊ฑฐ์ผ. โ๏ธ
4. ํ์ ๊ฐํ
์๊ฒฉ ๊ทผ๋ฌด๊ฐ ์ผ๋ฐํ๋๋ฉด์, ์ค์๊ฐ ํ์ ๊ธฐ๋ฅ์ด ๋์ฑ ์ค์ํด์ง๊ณ ์์ด. ๋ง์น Figma๊ฐ ๋์์ธ ํ์ ์ ํ์ ํ๋ฏ์ด, API ๋๊ตฌ๋ ํ์ ์ ํ์ ํ ๊ฑฐ์ผ. ๐ฅ
5. ์ ์ฝ๋/๋ ธ์ฝ๋
๋น๊ฐ๋ฐ์๋ API๋ฅผ ์ฝ๊ฒ ํ ์คํธํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ์ ์ฝ๋/๋ ธ์ฝ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๊ฑฐ์ผ. ์๊ฐ์ ์ํฌํ๋ก์ฐ ๋น๋ ๊ฐ์ ๊ฑฐ์ง. ๐จ
6. API ๊ฑฐ๋ฒ๋์ค
๋๊ธฐ์ ์์ ์๋ฐฑ ๊ฐ์ API๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ๊ฑฐ๋ฒ๋์ค๊ฐ ํ์์ผ. API ํ์ค ์ค์, ๋ฒ์ ๊ด๋ฆฌ, ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ ๊ฐ์ ๊ธฐ๋ฅ์ด ์ค์ํด์ง ๊ฑฐ์ผ. ๐
๋ ๋๊ตฌ ๋ชจ๋ ๋ฐฐ์๋๋ ๊ฒ ์ข์! Postman๊ณผ Insomnia๋ ๊ฐ์์ ๊ฐ์ ์ด ์๊ณ , ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋๊ตฌ๋ฅผ ์ ํํ ์ ์์ด์ผ ํด. ํนํ ํ๋ฆฌ๋์๋ ์ปจ์คํดํธ๋ผ๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ๋๊ตฌ์ ๋ง์ถฐ์ค ์ ์์ด์ผ ํ๊ฑฐ๋ .
๊ทธ๋ฆฌ๊ณ API ๊ฐ๋ฐ ํธ๋ ๋๋ฅผ ๊ณ์ ์ฃผ์ํด! GraphQL, gRPC, WebSocket ๊ฐ์ ์๋ก์ด ํ๋กํ ์ฝ๋ค์ ์ตํ๋๋ฉด, ๋ ๋ง์ ๊ธฐํ๊ฐ ์๊ธธ ๊ฑฐ์ผ. ์ฌ๋ฅ๋ท์์๋ ์ด๋ฐ ์ต์ ๊ธฐ์ ์ ๋ค๋ฃฐ ์ ์๋ ๊ฐ๋ฐ์์ ๋ํ ์์๊ฐ ๊ณ์ ๋๊ณ ์์ด! ๐
๐ช ์ค๋ฌด ํ๊ณผ ๋ฒ ์คํธ ํ๋ํฐ์ค
์ด๋ก ์ ์ถฉ๋ถํ ๋ฐฐ์ ์ผ๋, ์ด์ ์ค์ ์์ ๋ฐ๋ก ์จ๋จน์ ์ ์๋ ํ๋ค์ ๊ณต์ ํ ๊ฒ! ์๋ ๊ฐ์ ์ค๋ฌด ๊ฒฝํ์์ ์ป์ ๋ ธํ์ฐ์ผ. ๐ฏ
๐ Postman ์ค๋ฌด ํ
๊ฐ๋ฐ, ์คํ ์ด์ง, ํ๋ก๋์ ํ๊ฒฝ๋ง๋ค ๋ค๋ฅธ URL๊ณผ ์ค์ ์ ์ฌ์ฉํ์์? ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ํ๊ฒฝ์ ์ ํํ ์ ์์ด!
// Pre-request Script์์ ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ
const baseUrl = pm.environment.get("baseUrl");
const apiKey = pm.environment.get("apiKey");
pm.request.url = baseUrl + "/users";
pm.request.headers.add({
key: "X-API-Key",
value: apiKey
});
์ปฌ๋ ์ ์ ์ ๊ตฌ์กฐํํ๋ฉด ๋์ค์ ์ฐพ๊ธฐ๋ ์ฝ๊ณ , ํ์๋ค๋ ์ดํดํ๊ธฐ ์ฌ์!
์ถ์ฒ ๊ตฌ์กฐ:
๐ ํ๋ก์ ํธ๋ช
๐ ์ธ์ฆ (Authentication)
๐ ๋ก๊ทธ์ธ
๐ ๋ก๊ทธ์์
๐ ํ ํฐ ๊ฐฑ์
๐ ์ฌ์ฉ์ (Users)
๐ ์ฌ์ฉ์ ๋ชฉ๋ก ์กฐํ
๐ ์ฌ์ฉ์ ์์ฑ
๐ ์ฌ์ฉ์ ์์
๐ ์ฌ์ฉ์ ์ญ์
๐ ์ํ (Products)
๐ ์ํ ๋ชฉ๋ก ์กฐํ
๐ ์ํ ์์ธ ์กฐํ
...
๋ชจ๋ ์์ฒญ์์ ๋ฐ๋ณต๋๋ ๋ก์ง(์ธ์ฆ ํ ํฐ ์ถ๊ฐ, ํ์์คํฌํ ์์ฑ ๋ฑ)์ ์ปฌ๋ ์ ๋ ๋ฒจ์ Pre-request Script์ ์์ฑํด!
// ์ปฌ๋ ์
๋ ๋ฒจ Pre-request Script
// ๋ชจ๋ ์์ฒญ์ ์๋์ผ๋ก ์ ์ฉ๋จ
// ํ ํฐ์ด ๋ง๋ฃ๋์๋์ง ์ฒดํฌ
const tokenExpiry = pm.environment.get("tokenExpiry");
const now = Date.now();
if (!tokenExpiry || now > tokenExpiry) {
// ํ ํฐ ๊ฐฑ์ ๋ก์ง
pm.sendRequest({
url: pm.environment.get("baseUrl") + "/auth/refresh",
method: "POST",
header: {
"Content-Type": "application/json"
},
body: {
mode: "raw",
raw: JSON.stringify({
refreshToken: pm.environment.get("refreshToken")
})
}
}, function(err, response) {
if (!err) {
const newToken = response.json().accessToken;
const newExpiry = Date.now() + 3600000; // 1์๊ฐ
pm.environment.set("accessToken", newToken);
pm.environment.set("tokenExpiry", newExpiry);
}
});
}
ํ ์คํธ๋ ๋จ์ํ ์ํ ์ฝ๋๋ง ์ฒดํฌํ๋ ๊ฒ ์๋์ผ. ์๋ต ๊ตฌ์กฐ, ๋ฐ์ดํฐ ํ์ , ๋น์ฆ๋์ค ๋ก์ง๊น์ง ๊ฒ์ฆํด์ผ ํด!
// ์ฒด๊ณ์ ์ธ ํ
์คํธ ์์
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response time is acceptable", function () {
pm.expect(pm.response.responseTime).to.be.below(1000);
});
pm.test("Response has correct structure", function () {
const jsonData = pm.response.json();
// ํ์ ํ๋ ์ฒดํฌ
pm.expect(jsonData).to.have.property("data");
pm.expect(jsonData).to.have.property("meta");
// ๋ฐ์ดํฐ ํ์
์ฒดํฌ
pm.expect(jsonData.data).to.be.an("array");
pm.expect(jsonData.meta.total).to.be.a("number");
});
pm.test("Data validation", function () {
const jsonData = pm.response.json();
// ๋น์ฆ๋์ค ๋ก์ง ๊ฒ์ฆ
jsonData.data.forEach(function(item) {
pm.expect(item.id).to.be.a("number");
pm.expect(item.email).to.match(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/);
pm.expect(item.status).to.be.oneOf(["active", "inactive", "pending"]);
});
});
API ํ ์คํธ๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ฉด, ์ฝ๋ ๋ณ๊ฒฝ ์๋ง๋ค ์๋์ผ๋ก ํ ์คํธ๊ฐ ์คํ๋ผ!
# GitHub Actions ์์
name: API Tests
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install Newman
run: |
npm install -g newman
npm install -g newman-reporter-htmlextra
- name: Run API Tests
run: |
newman run postman-collection.json \
-e production.json \
--reporters cli,htmlextra \
--reporter-htmlextra-export report.html
- name: Upload Test Report
if: always()
uses: actions/upload-artifact@v2
with:
name: test-report
path: report.html
- name: Notify on Failure
if: failure()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: 'API Tests Failed!'
webhook_url: ${{ secrets.SLACK_WEBHOOK }}
๐ Insomnia ์ค๋ฌด ํ
Insomnia์ ํ ํ๋ฆฟ ํ๊ทธ๋ ์ ๋ง ๊ฐ๋ ฅํด! ๋์ ๊ฐ์ ์ฝ๊ฒ ์์ฑํ ์ ์์ด.
// URL์์ ํ
ํ๋ฆฟ ํ๊ทธ ์ฌ์ฉ
{{ _.baseUrl }}/users/{{ _.userId }}
// ํค๋์์ ์ฌ์ฉ
Authorization: Bearer {{ _.accessToken }}
// ๋ฐ๋์์ ์ฌ์ฉ
{
"timestamp": "{{ timestamp }}",
"uuid": "{{ uuid }}",
"randomEmail": "{{ faker.internet.email }}"
}
ํ์์ Git์ ์ฌ์ฉํ๋ค๋ฉด, Insomnia์ Git ๋๊ธฐํ๋ฅผ ์ ๊ทน ํ์ฉํด! ๋ธ๋์น๋ณ๋ก ๋ค๋ฅธ API ์ค์ ์ ๊ด๋ฆฌํ ์ ์์ด.
1. ์ํฌ์คํ์ด์ค๋ฅผ Git ์ ์ฅ์์ ์ฐ๊ฒฐ
2. ๊ธฐ๋ฅ ๊ฐ๋ฐ ์ ์ ๋ธ๋์น ์์ฑ
3. API ๋ณ๊ฒฝ์ฌํญ์ ๋ธ๋์น์ ์ปค๋ฐ
4. Pull Request๋ก ๋ฆฌ๋ทฐ
5. ๋จธ์ง ํ ํ์๋ค์ด pull
์ด๋ ๊ฒ ํ๋ฉด API ๋ณ๊ฒฝ์ฌํญ๋ ์ฝ๋์ฒ๋ผ ๋ฒ์ ๊ด๋ฆฌํ ์ ์์ด! ๐ฟ
Insomnia์ ์ง์ง ํ์ ํ๋ฌ๊ทธ์ธ์ ์์ด! ํ์ํ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ถ๊ฐํ ์ ์๊ฑฐ๋ .
โข insomnia-plugin-response-validator: ์๋ต ๊ฒ์ฆ
โข insomnia-plugin-jq: JSON ์ฟผ๋ฆฌ ๋ฐ ๋ณํ
โข insomnia-plugin-faker: ๊ฐ์ง ๋ฐ์ดํฐ ์์ฑ
โข insomnia-plugin-aws-cognito-auth: AWS Cognito ์ธ์ฆ
โข insomnia-plugin-default-headers: ๊ธฐ๋ณธ ํค๋ ์๋ ์ถ๊ฐ
ํ๋ฌ๊ทธ์ธ ์ค์น๋ ์ ๋ง ์ฌ์! Preferences > Plugins์์ ๊ฒ์ํด์ ์ค์นํ๋ฉด ๋ผ.
GraphQL์ ์ฌ์ฉํ๋ค๋ฉด, ์คํค๋ง๋ฅผ ๋จผ์ ๋ถ๋ฌ์! ๊ทธ๋ฌ๋ฉด ์ฟผ๋ฆฌ ์์ฑ ์ ์๋ ์์ฑ์ด ์ ๊ณต๋ผ.
1. GraphQL ์์ฒญ ์์ฑ
2. Schema ํญ์์ "Refresh Schema" ํด๋ฆญ
3. Query ํญ์์ ์ฟผ๋ฆฌ ์์ฑ ์ Ctrl+Space๋ก ์๋ ์์ฑ
4. Docs ํญ์์ ์คํค๋ง ๋ฌธ์ ํ์ธ
์ด๋ ๊ฒ ํ๋ฉด GraphQL API ๊ฐ๋ฐ ์๋๊ฐ ์์ฒญ ๋นจ๋ผ์ ธ! โก
Insomnia๋ ํค๋ณด๋ ๋จ์ถํค๊ฐ ์ ๋ง ์ ๋์ด ์์ด. ๋ง์ฐ์ค ์์ด๋ ๋๋ถ๋ถ์ ์์ ์ ํ ์ ์์ง!
โข Ctrl/Cmd + N: ์ ์์ฒญ
โข Ctrl/Cmd + E: ํ๊ฒฝ ๊ด๋ฆฌ
โข Ctrl/Cmd + Enter: ์์ฒญ ์ ์ก
โข Ctrl/Cmd + K: ๋น ๋ฅธ ๊ฒ์
โข Ctrl/Cmd + P: ์์ฒญ ๋น ๋ฅธ ์ ํ
โข Ctrl/Cmd + [: ์ด์ ์์ฒญ
โข Ctrl/Cmd + ]: ๋ค์ ์์ฒญ
๋จ์ถํค๋ฅผ ์ตํ๋ฉด ์์ฐ์ฑ์ด 2๋ฐฐ๋ ์ฌ๋ผ๊ฐ! ๐ช
๐ฏ ๊ณตํต ๋ฒ ์คํธ ํ๋ํฐ์ค
1. ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ปฌ๋ ์ ์ ํ๋์ฝ๋ฉ
API ํค, ๋น๋ฐ๋ฒํธ, ํ ํฐ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ปฌ๋ ์ ์ ์ง์ ๋ฃ์ง ๋ง! ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ , ํ๊ฒฝ ํ์ผ์ Git์ ์ปค๋ฐํ์ง ๋ง.
2. ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฌด๋ถ๋ณํ ํ ์คํธ
ํ๋ก๋์ API๋ฅผ ํ ์คํธํ ๋๋ ์กฐ์ฌํด! ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ด. ๊ฐ๋ฅํ๋ฉด ์ฝ๊ธฐ ์ ์ฉ ์์ฒญ๋ง ํ๊ฑฐ๋, ํ ์คํธ ๊ณ์ ์ ์ฌ์ฉํด.
3. ํ ์คํธ ์์ด ์๋ํ
Collection Runner๋ CI/CD์ ํตํฉํ๊ธฐ ์ ์ ๋ฐ๋์ ํ ์คํธ๋ฅผ ์์ฑํด! ํ ์คํธ ์๋ ์๋ํ๋ ์๋ฏธ๊ฐ ์์ด.
4. ๋ฌธ์ํ ์ํ
์ปฌ๋ ์ ์ ์ค๋ช ์ ์ถ๊ฐํด! ๋์ค์ ๋ค๋ฅธ ์ฌ๋(๋๋ ๋ฏธ๋์ ๋)์ด ๋ดค์ ๋ ์ดํดํ ์ ์๊ฒ ํด์ผ ํด.
5. ๋ฒ์ ๊ด๋ฆฌ ๋ฌด์
API๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ปฌ๋ ์ ๋ ์ ๋ฐ์ดํธํด์ผ ํด. ์ค๋๋ ์ปฌ๋ ์ ์ ํผ๋๋ง ๊ฐ์ค์์ผ.
์ปฌ๋ ์ ์ ๋ง๋ค ๋ ๊ฐ ์์ฒญ์ ์ค๋ช ์ ์ถ๊ฐํ๋ ์ต๊ด์ ๋ค์ฌ! ์ด๋ค ํ๋ผ๋ฏธํฐ๊ฐ ํ์์ธ์ง, ์ด๋ค ์๋ต์ ๊ธฐ๋ํ๋์ง, ์ด๋ค ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋์ง ๋ฑ์ ์ ์ด๋๋ฉด, ๋์ค์ ์ ๋ง ์ ์ฉํด.
Postman์ Markdown์ ์ง์ํ๋๊น, ์์๊ฒ ํฌ๋งทํ ํ ์๋ ์์ด. Insomnia๋ ์ค๋ช ํ๋๋ฅผ ์ ๊ณตํ๋ ํ์ฉํด! ๐
๐ฌ ๊ฒฐ๋ก : ๋น์ ์ ์ ํ์?
์, ์ฌ๊ธฐ๊น์ง Postman๊ณผ Insomnia๋ฅผ ๊น์ด ์๊ฒ ๋น๊ตํด๋ดค์ด! ์ ๋ง ๊ธด ์ฌ์ ์ด์์ง? ๐ ์ด์ ์ ๋ฆฌํด๋ณด์!
๐ฃ Postman์ ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ
โ
๋๊ท๋ชจ ํ (10๋ช
์ด์)
โ
๋ณต์กํ ํ
์คํธ ์๋ํ ํ์
โ
CI/CD ํ์ดํ๋ผ์ธ ํตํฉ ํ์
โ
API ๋ชจ๋ํฐ๋ง ํ์
โ
์ํฐํ๋ผ์ด์ฆ ๋ณด์ ๊ธฐ๋ฅ ํ์
โ
API ๋ฌธ์ ์๋ ์์ฑ ๋ฐ ํผ๋ธ๋ฆฌ์ฑ
โ
Mock ์๋ฒ ํ์
โ
ํ๋ถํ ํ์ต ์๋ฃ ์ ํธ
โ
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ
ํ๋ง๋๋ก: ๊ธฐ๋ฅ์ด ๋ง๊ณ ๊ฐ๋ ฅํ์ง๋ง, ๊ทธ๋งํผ ๋ณต์กํ๊ณ ๋น์ธ. ๋๊ท๋ชจ ํ๋ก์ ํธ๋ ๊ธฐ์
ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ด! ๐ข
๐ฃ Insomnia๋ฅผ ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ
โ
์๊ท๋ชจ ํ ๋๋ ๊ฐ์ธ
โ
๋น ๋ฅธ ์คํ ์๋ ์ค์
โ
๊น๋ํ UI ์ ํธ
โ
GraphQL ์ค์ฌ ํ๋ก์ ํธ
โ
Git ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ
โ
์์ฐ ์ ํ์
โ
๊ฐ๋จํ ํ์
๋ง ํ์
โ
์ต์ ํ๋กํ ์ฝ (gRPC ๋ฑ) ์ฌ์ฉ
โ
Kong Gateway ์ฌ์ฉ
ํ๋ง๋๋ก: ์ฌํํ๊ณ ๋น ๋ฅด๊ณ ์ ๋ ดํด. ๊ฐ์ธ ๊ฐ๋ฐ์๋ ์คํํธ์
์ ์๋ฒฝํด! ๐
์์งํ ๋งํ๋ฉด, ๋ ๋ค ํ๋ฅญํ ๋๊ตฌ์ผ! "์ด๋ค ๊ฒ ๋ ๋์๊ฐ?"๋ผ๋ ์ง๋ฌธ์๋ ์ ๋ต์ด ์์ด. ๋น์ ์ ์ํฉ, ํ์ ํฌ๊ธฐ, ํ๋ก์ ํธ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฑฐ๋ .
๋ง์ฝ ๋ด๊ฐ ์ ํํด์ผ ํ๋ค๋ฉด?
๋๊ธฐ์ ํ๋ก์ ํธ: Postman Professional
์คํํธ์ : Insomnia Team
๊ฐ์ธ ํ๋ก์ ํธ: Insomnia Free
ํ์ต ๋ชฉ์ : Postman Free
GraphQL ํ๋ก์ ํธ: Insomnia
ํ ์คํธ ์๋ํ ์ค์ฌ: Postman Professional
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ๋ค๋ฉด ๋ ๋ค ๋ฐฐ์๋๋ ๊ฑธ ์ถ์ฒํด! ๊ฐ ๋๊ตฌ์ ๊ฐ์ ์ ์ดํดํ๊ณ , ์ํฉ์ ๋ง๊ฒ ์ ํํ ์ ์๋ ๋ฅ๋ ฅ์ด ์ค์ํด. ๐
๋๊ตฌ๋ ๋๊ตฌ์ผ ๋ฟ์ด์ผ. ์ค์ํ ๊ฑด API๋ฅผ ์ ์ค๊ณํ๊ณ , ํ ์คํธํ๊ณ , ๋ฌธ์ํํ๋ ๊ฒ์ด์ง. Postman์ ์ฐ๋ Insomnia๋ฅผ ์ฐ๋ , ์๋๋ฉด ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฐ๋ , ํต์ฌ ์์น์ ๊ฐ์:
1. ์ผ๊ด์ฑ: ํ ์ ์ฒด๊ฐ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์์ ํด์ผ ํด
2. ๋ฌธ์ํ: API๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด ์ธ๋ชจ์์ด
3. ํ ์คํธ: ์๋ํ๋ ํ ์คํธ๋ ํ์์ผ
4. ํ์ : ํผ์ ์ผํ๋ ์๋๋ ์ง๋ฌ์ด
5. ์ง์์ ๊ฐ์ : ๊ณ์ ๋ฐฐ์ฐ๊ณ ๊ฐ์ ํด์ผ ํด
์ด๋ฐ ์์น์ ์งํค๋ฉด์ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ค๋ฉด, ์ด๋ค ๋๊ตฌ๋ฅผ ์ ํํ๋ ์ฑ๊ณตํ ์ ์์ด! ๐ช
๐ ๋น์ ์ API ๊ฐ๋ฐ ์ฌ์ ์ ํ์ด์ ๋น์ด! ๐
์ด ๊ธ์ด ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋ผ. ๊ถ๊ธํ ์ ์ด ์๊ฑฐ๋, ๋ ์๊ณ ์ถ์ ๋ด์ฉ์ด ์๋ค๋ฉด ์ธ์ ๋ ๋ฌผ์ด๋ด!
๊ทธ๋ฆฌ๊ณ API ๊ฐ๋ฐ ๊ด๋ จ ํ๋ก์ ํธ๋ ๋ฉํ ๋ง์ด ํ์ํ๋ค๋ฉด, ์ฌ๋ฅ๋ท์์ ์ ๋ฌธ๊ฐ๋ค์ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ! ๐ฏ
Happy API Testing! ๐
๐ ํต์ฌ ์์ฝ
Postman: ๊ฐ๋ ฅํ ๊ธฐ๋ฅ, ๋๊ท๋ชจ ํ, ์ํฐํ๋ผ์ด์ฆ, ํ
์คํธ ์๋ํ ์ต๊ฐ ๐ช
Insomnia: ์ฌํํ UX, ๋น ๋ฅธ ์๋, ์ ๋ ดํ ๊ฐ๊ฒฉ, GraphQL ์ต๊ณ โก
์ ํ ๊ธฐ์ค: ํ ํฌ๊ธฐ, ์์ฐ, ํ๋ก์ ํธ ์๊ตฌ์ฌํญ, ๊ธฐ์ ์คํ ๐ฏ
์ต๊ณ ์ ์ ๋ต: ๋ ๋ค ๋ฐฐ์ฐ๊ณ , ์ํฉ์ ๋ง๊ฒ ์ ํํ๊ธฐ! ๐
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.