๐๏ธ ๊ฐ๋ฐ ์ธ๊ณ์์ ์ธ๊ธฐ ์๋ API ์ํคํ ์ฒ ์คํ์ผ
REST (Representational State Transfer) REST๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๊ธฐ ์ํด ๋๋ฆฌ ์ฑํ๋ API ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. ๋ฆฌ์์ค ์กฐ์, ์ํ-๋น์ ์ฅ ๋ฐ ๊ท ์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ํด ํ์ค HTTP ๋ฉ์๋(GET, POST, PUT, DELETE)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. REST API๋ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํด URI(Uniform Resource Identifier)๋ฅผ ์ฌ์ฉํ๋ฉฐ JSON ๋๋ XML๊ณผ ๊ฐ์ ๋ค์ํ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํฉ๋๋ค. ย SOAP (Simple Object Access Protocol) SOAP๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๊ตฌ์กฐํ๋ ์ ๋ณด๋ฅผ ๊ตํํ๊ธฐ ์ํ XML ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ ๋๋ค. ์๊ฒฉํ ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ ๋ฉ์์ง์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ธฐ ์ํด XML ์คํค๋ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. SOAP API๋ ์ผ๋ฐ์ ์ผ๋ก HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ง๋ง SMTP๋ TCP์ ๊ฐ์ ํ๋กํ ์ฝ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. SOAP API๋ ๋์ ์์ค์ ํ๋กํ ์ฝ ์ถ์ํ๋ฅผ ์ ๊ณตํ๊ณ , ์ํธํ ๋ฐ ํธ๋์ญ์ ๊ด๋ฆฌ์ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ํ ๋ฐ ๊ธ์ต ์ฐ์ ์์๋ ๋ณด์์ ์ด์ ๋ก ์ผ๋ฐ์ ์ผ๋ก SOAP๋ฅผ ์ฌ์ฉํฉ๋๋ค. ย SOAP๋ ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ์ ๋ณต์กํ ์ฐ๊ฒฐ์ด ํ์ํ ํ๊ฒฝ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์ํธํ, ๋์งํธ ์๋ช ๋ฐ ์ ๋ขฐํ ์ ์๋ ๋ฉ์์ง๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ง์ํ๋ ์๊ฒฉํ๊ณ ํ์คํ๋ ๋ฉ์์ง ํ๋กํ ์ฝ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ๋ณด์, ์ ๋ขฐ์ฑ ๋ฐ ํธ๋์ญ์ ์ด ์ค์ํ ์๋๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค.ย ย GraphQL GraphQL์ API ์ฟผ๋ฆฌ ์ธ์ด๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํน์ ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์์ฒญํ์ฌ ๋ฐ์ดํฐ ํจ์น์ ๋ํด ์ ์ฐํ๊ณ ํจ์จ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ๊ฐ ์๋ํฌ์ธํธ๊ฐ ๊ณ ์ ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ฐํํ๋ REST์ ๋ฌ๋ฆฌ GraphQL API๋ ๋จ์ผ ์๋ํฌ์ธํธ๊ฐ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ๋ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์๋ต์ ํ์ฑํ ์ ์์ต๋๋ค. ย facebook, GitHub, Shopify, Twitter๋ฑ์ ํ์ฌ๊ฐ ์ฌ์ฉํฉ๋๋ค. ย gRPC (Google Remote Procedure Call) gRPC๋ ๊ตฌ๊ธ์ด ์๊ฒฉ ํ๋ก์์ ํธ์ถ API ๊ตฌ์ถ์ ์ํด ๊ฐ๋ฐํ ๊ณ ์ฑ๋ฅ ์คํ ์์ค ํ๋ ์์ํฌ์ ๋๋ค. protobuf๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. gRPC API๋ ์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ ๋ฐ ์ธ์ฆ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ ์ ์ก์ ์ํด ์ด์ง ์ง๋ ฌํ ๋ฐ HTTP/2๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ์ ํจ์จ์ ์ธ ํต์ ์ ๊ฐ๋ฅ์ผ ํฉ๋๋ค.ย ย gRPC๋ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ถํ๊ฒ ํฉ๋๋ค. ๊ตฌ๊ธ, ๋ทํ๋ฆญ์ค, ์คํ์ด ๋ฑ์ ํ์ฌ๊ฐ ์ฌ์ฉํฉ๋๋ค. ย WebSocket WebSocket์ ๋จ์ผ TCP ์ฐ๊ฒฐ์ ํตํด ์ด์ค ํต์ ์ฑ๋์ ์ ๊ณตํ๋ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. ์์ฒญ-์๋ต ๊ธฐ๋ฐ์ ์ ํต์ ์ธ HTTP์ ๋ฌ๋ฆฌ WebSocket์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ํ์ฉํฉ๋๋ค. ์ด๊ฒ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ฐ๋ณต์ ์ธ ์์ฒญ ์์ด ์๋ก์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ํฉ๋๋ค. WebSocket์ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ , ํ์ ๋๊ตฌ, ์คํธ๋ฆฌ๋ฐ ์๋น์ค์ ๊ฐ์ ์ค์๊ฐ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋ฉ๋๋ค. ย WebSocket์ ์ฌ์ฉํ๋ ๋ฉ์์ง ์ดํ๋ฆฌ์ผ์ด์ ์ Slack, Discord, Trello, Robinhood ๋ฑ์ด ์์ต๋๋ค.ย ย Webhook Webhook๋ HTTP POST ์์ฒญ์ ๋ค๋ฅธ ์์คํ ์ ๋ฏธ๋ฆฌ ์ ์๋ URL๋ก ์ ์กํ์ฌ ํ ์์คํ ์์ ์ด๋ฒคํธ๋ฅผ ์๋์ผ๋ก ์๋ฆฌ๊ฑฐ๋ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ ์์คํ ์ด ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ํต์ ํ ์ ์๋๋ก ํฉ๋๋ค. ํน์ ์ด๋ฒคํธ๋ ์กฐ๊ฑด์ด ๋ฐ์ํ๋ฉด Webhook๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ , Webhook๋ ๋์ ์์คํ ์ ์๋ํฌ์ธํธ๋ก ๊ด๋ จ ๋ฐ์ดํฐ ํ์ด๋ก๋๋ฅผ ์ ์กํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์๋น์ค์ ์์คํ ์ ํตํฉํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ค์๊ฐ ๋ฐ์ดํฐ ๋๊ธฐํ, ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ ๋ฐ ์๋ ์๋ฆผ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ย ๋ฒ์ญ: [https://ducktopia.tistory.com/121] ์๋ณธ: