Community

๐Ÿ•Š๏ธ ๊ฐœ๋ฐœ ์„ธ๊ณ„์—์„œ ์ธ๊ธฐ ์žˆ๋Š” 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] ์›๋ณธ:

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค